// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;
using System.Linq;
using OpenAI.Assistants;
using OpenAI.Audio;
using OpenAI.Chat;
using OpenAI.Embeddings;
using OpenAI.Images;
using OpenAI.Moderations;
using OpenAI.RealtimeConversation;
using OpenAI.Responses;
using OpenAI.VectorStores;

namespace OpenAI
{
    internal static partial class OpenAIModelFactory
    {
        public static VectorStoreFileCounts VectorStoreFileCounts(int inProgress = default, int completed = default, int failed = default, int cancelled = default, int total = default)
        {

            return new VectorStoreFileCounts(
                inProgress,
                completed,
                failed,
                cancelled,
                total,
                additionalBinaryDataProperties: null);
        }

        public static VectorStoreExpirationPolicy VectorStoreExpirationPolicy(int days = default, VectorStoreExpirationAnchor anchor = default)
        {

            return new VectorStoreExpirationPolicy(days, anchor, additionalBinaryDataProperties: null);
        }

        public static VectorStoreCreationOptions VectorStoreCreationOptions(IEnumerable<string> fileIds = default, string name = default, IDictionary<string, string> metadata = default, VectorStoreExpirationPolicy expirationPolicy = default, FileChunkingStrategy chunkingStrategy = default)
        {
            fileIds ??= new ChangeTrackingList<string>();
            metadata ??= new ChangeTrackingDictionary<string, string>();

            return new VectorStoreCreationOptions(
                fileIds?.ToList(),
                name,
                metadata,
                expirationPolicy,
                chunkingStrategy,
                additionalBinaryDataProperties: null);
        }

        public static VectorStoreModificationOptions VectorStoreModificationOptions(string name = default, IDictionary<string, string> metadata = default, VectorStoreExpirationPolicy expirationPolicy = default)
        {
            metadata ??= new ChangeTrackingDictionary<string, string>();

            return new VectorStoreModificationOptions(name, metadata, expirationPolicy, additionalBinaryDataProperties: null);
        }

        public static VectorStoreFileAssociationError VectorStoreFileAssociationError(VectorStoreFileAssociationErrorCode code = default, string message = default)
        {

            return new VectorStoreFileAssociationError(code, message, additionalBinaryDataProperties: null);
        }

        public static FileChunkingStrategy FileChunkingStrategy(string @type = default)
        {

            return new InternalUnknownFileChunkingStrategyResponseParamProxy(@type, additionalBinaryDataProperties: null);
        }

        public static VectorStoreBatchFileJob VectorStoreBatchFileJob(DateTimeOffset createdAt = default, string vectorStoreId = default, VectorStoreBatchFileJobStatus status = default, string batchId = default, VectorStoreFileCounts fileCounts = default, object @object = default)
        {

            return new VectorStoreBatchFileJob(
                createdAt,
                vectorStoreId,
                status,
                batchId,
                fileCounts,
                @object,
                additionalBinaryDataProperties: null);
        }

        public static ResponseReasoningOptions ResponseReasoningOptions(ResponseReasoningEffortLevel? reasoningEffortLevel = default, ResponseReasoningSummaryVerbosity? reasoningSummaryVerbosity = default)
        {

            return new ResponseReasoningOptions(reasoningEffortLevel, reasoningSummaryVerbosity, additionalBinaryDataProperties: null);
        }

        public static ResponseTextOptions ResponseTextOptions(ResponseTextFormat textFormat = default)
        {

            return new ResponseTextOptions(textFormat, additionalBinaryDataProperties: null);
        }

        public static FileSearchToolRankingOptions FileSearchToolRankingOptions(FileSearchToolRanker? ranker = default, float? scoreThreshold = default)
        {

            return new FileSearchToolRankingOptions(ranker, scoreThreshold, additionalBinaryDataProperties: null);
        }

        public static WebSearchToolLocation WebSearchToolLocation(string @type = default)
        {

            return new InternalUnknownResponsesWebSearchLocation(@type, additionalBinaryDataProperties: null);
        }

        public static ResponseMessageAnnotation ResponseMessageAnnotation(string kind = default)
        {

            return new InternalUnknownResponsesOutputTextAnnotation(kind.ToResponseMessageAnnotationKind(), additionalBinaryDataProperties: null);
        }

        public static ComputerCallAction ComputerCallAction(string kind = default)
        {

            return new UnknownResponsesComputerCallItemAction(kind.ToComputerCallActionKind(), additionalBinaryDataProperties: null);
        }

        public static ComputerCallSafetyCheck ComputerCallSafetyCheck(string id = default, string code = default, string message = default)
        {

            return new ComputerCallSafetyCheck(id, code, message, additionalBinaryDataProperties: null);
        }

        public static FileSearchCallResult FileSearchCallResult(string fileId = default, string text = default, string filename = default, IDictionary<string, BinaryData> attributes = default, float? score = default)
        {
            attributes ??= new ChangeTrackingDictionary<string, BinaryData>();

            return new FileSearchCallResult(
                fileId,
                text,
                filename,
                attributes,
                score,
                additionalBinaryDataProperties: null);
        }

        public static ResponseError ResponseError(string code = default, string message = default)
        {

            return new ResponseError(code, message, additionalBinaryDataProperties: null);
        }

        public static ResponseIncompleteStatusDetails ResponseIncompleteStatusDetails(ResponseIncompleteStatusReason? reason = default)
        {

            return new ResponseIncompleteStatusDetails(reason, additionalBinaryDataProperties: null);
        }

        public static ResponseTokenUsage ResponseTokenUsage(int inputTokenCount = default, int outputTokenCount = default, int totalTokenCount = default, ResponseOutputTokenUsageDetails outputTokenDetails = default)
        {

            return new ResponseTokenUsage(inputTokenCount, outputTokenCount, totalTokenCount, outputTokenDetails, additionalBinaryDataProperties: null);
        }

        public static ResponseOutputTokenUsageDetails ResponseOutputTokenUsageDetails(int reasoningTokenCount = default)
        {

            return new ResponseOutputTokenUsageDetails(reasoningTokenCount, additionalBinaryDataProperties: null);
        }

        public static ThreadCreationOptions ThreadCreationOptions(IDictionary<string, string> metadata = default, ToolResources toolResources = default, IEnumerable<MessageCreationOptions> internalMessages = default)
        {
            metadata ??= new ChangeTrackingDictionary<string, string>();
            internalMessages ??= new ChangeTrackingList<MessageCreationOptions>();

            return new ThreadCreationOptions(metadata, toolResources, internalMessages?.ToList(), additionalBinaryDataProperties: null);
        }

        public static MessageCreationOptions MessageCreationOptions(IEnumerable<MessageCreationAttachment> attachments = default, IDictionary<string, string> metadata = default, Assistants.MessageRole role = default, IEnumerable<MessageContent> content = default)
        {
            attachments ??= new ChangeTrackingList<MessageCreationAttachment>();
            metadata ??= new ChangeTrackingDictionary<string, string>();
            content ??= new ChangeTrackingList<MessageContent>();

            return new MessageCreationOptions(attachments?.ToList(), metadata, role, content?.ToList(), additionalBinaryDataProperties: null);
        }

        public static MessageCreationAttachment MessageCreationAttachment(string fileId = default, IEnumerable<ToolDefinition> tools = default)
        {
            tools ??= new ChangeTrackingList<ToolDefinition>();

            return new MessageCreationAttachment(fileId, tools?.ToList(), additionalBinaryDataProperties: null);
        }

        public static CodeInterpreterToolDefinition CodeInterpreterToolDefinition()
        {

            return new CodeInterpreterToolDefinition("code_interpreter", additionalBinaryDataProperties: null);
        }

        public static ToolDefinition ToolDefinition(string @type = default)
        {

            return new UnknownAssistantToolDefinition(@type, additionalBinaryDataProperties: null);
        }

        public static FileSearchRankingOptions FileSearchRankingOptions(FileSearchRanker? ranker = default, float scoreThreshold = default)
        {

            return new FileSearchRankingOptions(ranker, scoreThreshold, additionalBinaryDataProperties: null);
        }

        public static FileSearchToolResources FileSearchToolResources(IEnumerable<string> vectorStoreIds = default, IEnumerable<VectorStoreCreationHelper> newVectorStores = default)
        {
            vectorStoreIds ??= new ChangeTrackingList<string>();
            newVectorStores ??= new ChangeTrackingList<VectorStoreCreationHelper>();

            return new FileSearchToolResources(vectorStoreIds?.ToList(), newVectorStores?.ToList(), additionalBinaryDataProperties: null);
        }

        public static VectorStoreCreationHelper VectorStoreCreationHelper(IEnumerable<string> fileIds = default, IDictionary<string, string> metadata = default, FileChunkingStrategy chunkingStrategy = default)
        {
            fileIds ??= new ChangeTrackingList<string>();
            metadata ??= new ChangeTrackingDictionary<string, string>();

            return new VectorStoreCreationHelper(fileIds?.ToList(), metadata, chunkingStrategy, additionalBinaryDataProperties: null);
        }

        public static RunError RunError(RunErrorCode code = default, string message = default)
        {

            return new RunError(code, message, additionalBinaryDataProperties: null);
        }

        public static RunIncompleteDetails RunIncompleteDetails(RunIncompleteReason? reason = default)
        {

            return new RunIncompleteDetails(reason, additionalBinaryDataProperties: null);
        }

        public static RunTokenUsage RunTokenUsage(int outputTokenCount = default, int inputTokenCount = default, int totalTokenCount = default)
        {

            return new RunTokenUsage(outputTokenCount, inputTokenCount, totalTokenCount, additionalBinaryDataProperties: null);
        }

        public static RunCreationOptions RunCreationOptions(string assistantId = default, bool? stream = default, AssistantResponseFormat responseFormat = default, string modelOverride = default, string instructionsOverride = default, string additionalInstructions = default, IEnumerable<MessageCreationOptions> internalMessages = default, bool? allowParallelToolCalls = default, IEnumerable<ToolDefinition> toolsOverride = default, IDictionary<string, string> metadata = default, float? temperature = default, float? nucleusSamplingFactor = default, int? maxInputTokenCount = default, int? maxOutputTokenCount = default, RunTruncationStrategy truncationStrategy = default, ToolConstraint toolConstraint = default, ChatReasoningEffortLevel? reasoningEffortLevel = default)
        {
            internalMessages ??= new ChangeTrackingList<MessageCreationOptions>();
            toolsOverride ??= new ChangeTrackingList<ToolDefinition>();
            metadata ??= new ChangeTrackingDictionary<string, string>();

            return new RunCreationOptions(
                assistantId,
                stream,
                responseFormat,
                modelOverride,
                instructionsOverride,
                additionalInstructions,
                internalMessages?.ToList(),
                allowParallelToolCalls,
                toolsOverride?.ToList(),
                metadata,
                temperature,
                nucleusSamplingFactor,
                maxInputTokenCount,
                maxOutputTokenCount,
                truncationStrategy,
                toolConstraint,
                reasoningEffortLevel,
                additionalBinaryDataProperties: null);
        }

        public static RunModificationOptions RunModificationOptions(IDictionary<string, string> metadata = default)
        {
            metadata ??= new ChangeTrackingDictionary<string, string>();

            return new RunModificationOptions(metadata, additionalBinaryDataProperties: null);
        }

        public static ToolOutput ToolOutput(string toolCallId = default, string output = default)
        {

            return new ToolOutput(toolCallId, output, additionalBinaryDataProperties: null);
        }

        public static RunStepDetails RunStepDetails(string @type = default)
        {

            return new UnknownRunStepObjectStepDetails(@type, additionalBinaryDataProperties: null);
        }

        public static RunStepToolCall RunStepToolCall(string id = default, string kind = default)
        {

            return new UnknownRunStepDetailsToolCallsObjectToolCallsObject(id, kind.ToRunStepToolCallKind(), additionalBinaryDataProperties: null);
        }

        public static RunStepCodeInterpreterOutput RunStepCodeInterpreterOutput(string @type = default)
        {

            return new UnknownRunStepDetailsToolCallsCodeObjectCodeInterpreterOutputsObject(@type, additionalBinaryDataProperties: null);
        }

        public static RunStepFileSearchResult RunStepFileSearchResult(string fileId = default, string fileName = default, float score = default, IEnumerable<RunStepFileSearchResultContent> content = default)
        {
            content ??= new ChangeTrackingList<RunStepFileSearchResultContent>();

            return new RunStepFileSearchResult(fileId, fileName, score, content?.ToList(), additionalBinaryDataProperties: null);
        }

        public static RunStepFileSearchResultContent RunStepFileSearchResultContent(string text = default, RunStepFileSearchResultContentKind kind = default)
        {

            return new RunStepFileSearchResultContent(text, kind, additionalBinaryDataProperties: null);
        }

        public static RunStepError RunStepError(RunStepErrorCode code = default, string message = default)
        {

            return new RunStepError(code, message, additionalBinaryDataProperties: null);
        }

        public static RunStepTokenUsage RunStepTokenUsage(int outputTokenCount = default, int inputTokenCount = default, int totalTokenCount = default)
        {

            return new RunStepTokenUsage(outputTokenCount, inputTokenCount, totalTokenCount, additionalBinaryDataProperties: null);
        }

        public static ThreadModificationOptions ThreadModificationOptions(IDictionary<string, string> metadata = default, ToolResources toolResources = default)
        {
            metadata ??= new ChangeTrackingDictionary<string, string>();

            return new ThreadModificationOptions(metadata, toolResources, additionalBinaryDataProperties: null);
        }

        public static ConversationInputTranscriptionOptions ConversationInputTranscriptionOptions(ConversationTranscriptionModel? model = default)
        {

            return new ConversationInputTranscriptionOptions(model, additionalBinaryDataProperties: null);
        }

        public static ConversationTurnDetectionOptions ConversationTurnDetectionOptions(string kind = default)
        {

            return new UnknownRealtimeTurnDetection(kind.ToConversationTurnDetectionKind(), additionalBinaryDataProperties: null);
        }

        public static ConversationTool ConversationTool(string kind = default)
        {

            return new UnknownRealtimeTool(new ConversationToolKind(kind), additionalBinaryDataProperties: null);
        }

        public static ConversationFunctionTool ConversationFunctionTool(string name = default, string description = default, BinaryData parameters = default)
        {

            return new ConversationFunctionTool(ConversationToolKind.Function, additionalBinaryDataProperties: null, name, description, parameters);
        }

        public static ConversationContentPart ConversationContentPart(string kind = default)
        {

            return new UnknownRealtimeContentPart(new ConversationContentPartKind(kind), additionalBinaryDataProperties: null);
        }

        public static ConversationUpdate ConversationUpdate(string eventId = default, string kind = default)
        {

            return new UnknownRealtimeServerEvent(eventId, kind.ToConversationUpdateKind(), additionalBinaryDataProperties: null);
        }

        public static ConversationInputAudioCommittedUpdate ConversationInputAudioCommittedUpdate(string eventId = default, string previousItemId = default, string itemId = default)
        {

            return new ConversationInputAudioCommittedUpdate(eventId, ConversationUpdateKind.InputAudioCommitted, additionalBinaryDataProperties: null, previousItemId, itemId);
        }

        public static ConversationInputAudioClearedUpdate ConversationInputAudioClearedUpdate(string eventId = default)
        {

            return new ConversationInputAudioClearedUpdate(eventId, ConversationUpdateKind.InputAudioCleared, additionalBinaryDataProperties: null);
        }

        public static ConversationInputSpeechStartedUpdate ConversationInputSpeechStartedUpdate(string eventId = default, string itemId = default, int audioStartMs = default)
        {

            return new ConversationInputSpeechStartedUpdate(eventId, ConversationUpdateKind.InputSpeechStarted, additionalBinaryDataProperties: null, itemId, audioStartMs);
        }

        public static ConversationInputSpeechFinishedUpdate ConversationInputSpeechFinishedUpdate(string eventId = default, string itemId = default, int audioEndMs = default)
        {

            return new ConversationInputSpeechFinishedUpdate(eventId, ConversationUpdateKind.InputSpeechStopped, additionalBinaryDataProperties: null, itemId, audioEndMs);
        }

        public static ConversationInputTranscriptionFinishedUpdate ConversationInputTranscriptionFinishedUpdate(string eventId = default, string itemId = default, int contentIndex = default, string transcript = default)
        {

            return new ConversationInputTranscriptionFinishedUpdate(
                eventId,
                ConversationUpdateKind.InputTranscriptionFinished,
                additionalBinaryDataProperties: null,
                itemId,
                contentIndex,
                transcript);
        }

        public static ConversationItemTruncatedUpdate ConversationItemTruncatedUpdate(string eventId = default, string itemId = default, int contentIndex = default, int audioEndMs = default)
        {

            return new ConversationItemTruncatedUpdate(
                eventId,
                ConversationUpdateKind.ItemTruncated,
                additionalBinaryDataProperties: null,
                itemId,
                contentIndex,
                audioEndMs);
        }

        public static ConversationItemDeletedUpdate ConversationItemDeletedUpdate(string eventId = default, string itemId = default)
        {

            return new ConversationItemDeletedUpdate(eventId, ConversationUpdateKind.ItemDeleted, additionalBinaryDataProperties: null, itemId);
        }

        public static ConversationTokenUsage ConversationTokenUsage(ConversationInputTokenUsageDetails inputTokenDetails = default, ConversationOutputTokenUsageDetails outputTokenDetails = default, int inputTokenCount = default, int outputTokenCount = default, int totalTokenCount = default)
        {

            return new ConversationTokenUsage(
                inputTokenDetails,
                outputTokenDetails,
                inputTokenCount,
                outputTokenCount,
                totalTokenCount,
                additionalBinaryDataProperties: null);
        }

        public static ConversationInputTokenUsageDetails ConversationInputTokenUsageDetails(int audioTokenCount = default, int cachedTokenCount = default, int textTokenCount = default)
        {

            return new ConversationInputTokenUsageDetails(audioTokenCount, cachedTokenCount, textTokenCount, additionalBinaryDataProperties: null);
        }

        public static ConversationOutputTokenUsageDetails ConversationOutputTokenUsageDetails(int textTokenCount = default, int audioTokenCount = default)
        {

            return new ConversationOutputTokenUsageDetails(textTokenCount, audioTokenCount, additionalBinaryDataProperties: null);
        }

        public static ConversationItemStreamingTextFinishedUpdate ConversationItemStreamingTextFinishedUpdate(string eventId = default, string responseId = default, string itemId = default, int outputIndex = default, int contentIndex = default, string text = default)
        {

            return new ConversationItemStreamingTextFinishedUpdate(
                eventId,
                ConversationUpdateKind.ItemStreamingPartTextFinished,
                additionalBinaryDataProperties: null,
                responseId,
                itemId,
                outputIndex,
                contentIndex,
                text);
        }

        public static ConversationItemStreamingAudioTranscriptionFinishedUpdate ConversationItemStreamingAudioTranscriptionFinishedUpdate(string eventId = default, string responseId = default, string itemId = default, int outputIndex = default, int contentIndex = default, string transcript = default)
        {

            return new ConversationItemStreamingAudioTranscriptionFinishedUpdate(
                eventId,
                ConversationUpdateKind.ItemStreamingPartAudioTranscriptionFinished,
                additionalBinaryDataProperties: null,
                responseId,
                itemId,
                outputIndex,
                contentIndex,
                transcript);
        }

        public static ConversationItemStreamingAudioFinishedUpdate ConversationItemStreamingAudioFinishedUpdate(string eventId = default, string responseId = default, string itemId = default, int outputIndex = default, int contentIndex = default)
        {

            return new ConversationItemStreamingAudioFinishedUpdate(
                eventId,
                ConversationUpdateKind.ItemStreamingPartAudioFinished,
                additionalBinaryDataProperties: null,
                responseId,
                itemId,
                outputIndex,
                contentIndex);
        }

        public static ConversationRateLimitsUpdate ConversationRateLimitsUpdate(string eventId = default, IEnumerable<ConversationRateLimitDetailsItem> allDetails = default)
        {
            allDetails ??= new ChangeTrackingList<ConversationRateLimitDetailsItem>();

            return new ConversationRateLimitsUpdate(eventId, ConversationUpdateKind.RateLimitsUpdated, additionalBinaryDataProperties: null, allDetails?.ToList());
        }

        public static ConversationRateLimitDetailsItem ConversationRateLimitDetailsItem(string name = default, int maximumCount = default, int remainingCount = default, TimeSpan timeUntilReset = default)
        {

            return new ConversationRateLimitDetailsItem(name, maximumCount, remainingCount, timeUntilReset, additionalBinaryDataProperties: null);
        }

        public static ModerationResultCollection ModerationResultCollection(string id = default, string model = default, IEnumerable<ModerationResult> results = default)
        {
            results ??= new ChangeTrackingList<ModerationResult>();

            return new ModerationResultCollection(id, model, results?.ToList());
        }

        public static ModerationResult ModerationResult(bool flagged = default)
        {

            return new ModerationResult(flagged, additionalBinaryDataProperties: null);
        }

        public static MessageFailureDetails MessageFailureDetails(MessageFailureReason reason = default)
        {

            return new MessageFailureDetails(reason, additionalBinaryDataProperties: null);
        }

        public static MessageModificationOptions MessageModificationOptions(IDictionary<string, string> metadata = default)
        {
            metadata ??= new ChangeTrackingDictionary<string, string>();

            return new MessageModificationOptions(metadata, additionalBinaryDataProperties: null);
        }

        public static ImageGenerationOptions ImageGenerationOptions(GeneratedImageQuality? quality = default, GeneratedImageFormat? responseFormat = default, GeneratedImageSize? size = default, GeneratedImageStyle? style = default, InternalCreateImageRequestModel? model = default, string prompt = default, long? n = default, string endUserId = default)
        {

            return new ImageGenerationOptions(
                quality,
                responseFormat,
                size,
                style,
                model,
                prompt,
                n,
                endUserId,
                additionalBinaryDataProperties: null);
        }

        public static GeneratedImageCollection GeneratedImageCollection(DateTimeOffset created = default, IEnumerable<GeneratedImage> data = default)
        {
            data ??= new ChangeTrackingList<GeneratedImage>();

            return new GeneratedImageCollection(created, data?.ToList());
        }

        public static GeneratedImage GeneratedImage(string revisedPrompt = default, BinaryData imageBytes = default, Uri imageUri = default)
        {

            return new GeneratedImage(revisedPrompt, imageBytes, imageUri, additionalBinaryDataProperties: null);
        }

        public static ImageEditOptions ImageEditOptions(InternalCreateImageEditRequestModel? model = default, BinaryData image = default, string prompt = default, BinaryData mask = default, long? n = default, GeneratedImageSize? size = default, GeneratedImageFormat? responseFormat = default, string endUserId = default)
        {

            return new ImageEditOptions(
                model,
                image,
                prompt,
                mask,
                n,
                size,
                responseFormat,
                endUserId,
                additionalBinaryDataProperties: null);
        }

        public static ImageVariationOptions ImageVariationOptions(InternalCreateImageVariationRequestModel? model = default, BinaryData image = default, long? n = default, GeneratedImageSize? size = default, GeneratedImageFormat? responseFormat = default, string endUserId = default)
        {

            return new ImageVariationOptions(
                model,
                image,
                n,
                size,
                responseFormat,
                endUserId,
                additionalBinaryDataProperties: null);
        }

        public static EmbeddingTokenUsage EmbeddingTokenUsage(int inputTokenCount = default, int totalTokenCount = default)
        {

            return new EmbeddingTokenUsage(inputTokenCount, totalTokenCount, additionalBinaryDataProperties: null);
        }

        public static ChatTokenUsage ChatTokenUsage(int outputTokenCount = default, int inputTokenCount = default, int totalTokenCount = default, ChatOutputTokenUsageDetails outputTokenDetails = default, ChatInputTokenUsageDetails inputTokenDetails = default)
        {

            return new ChatTokenUsage(
                outputTokenCount,
                inputTokenCount,
                totalTokenCount,
                outputTokenDetails,
                inputTokenDetails,
                additionalBinaryDataProperties: null);
        }

        public static ChatOutputTokenUsageDetails ChatOutputTokenUsageDetails(int reasoningTokenCount = default, int audioTokenCount = default, int acceptedPredictionTokenCount = default, int rejectedPredictionTokenCount = default)
        {

            return new ChatOutputTokenUsageDetails(reasoningTokenCount, audioTokenCount, acceptedPredictionTokenCount, rejectedPredictionTokenCount, additionalBinaryDataProperties: null);
        }

        public static ChatInputTokenUsageDetails ChatInputTokenUsageDetails(int audioTokenCount = default, int cachedTokenCount = default)
        {

            return new ChatInputTokenUsageDetails(audioTokenCount, cachedTokenCount, additionalBinaryDataProperties: null);
        }

        public static ChatMessage ChatMessage(ChatMessageContent content = default, string role = default)
        {

            return new InternalUnknownChatMessage(content, role.ToChatMessageRole(), additionalBinaryDataProperties: null);
        }

        public static SystemChatMessage SystemChatMessage(ChatMessageContent content = default, string participantName = default)
        {

            return new SystemChatMessage(content, ChatMessageRole.System, additionalBinaryDataProperties: null, participantName);
        }

        public static DeveloperChatMessage DeveloperChatMessage(ChatMessageContent content = default, string participantName = default)
        {

            return new DeveloperChatMessage(content, ChatMessageRole.Developer, additionalBinaryDataProperties: null, participantName);
        }

        public static UserChatMessage UserChatMessage(ChatMessageContent content = default, string participantName = default)
        {

            return new UserChatMessage(content, ChatMessageRole.User, additionalBinaryDataProperties: null, participantName);
        }

        public static AssistantChatMessage AssistantChatMessage(ChatMessageContent content = default, string refusal = default, string participantName = default, IEnumerable<ChatToolCall> toolCalls = default, ChatFunctionCall functionCall = default, ChatOutputAudioReference outputAudioReference = default)
        {
            toolCalls ??= new ChangeTrackingList<ChatToolCall>();

            return new AssistantChatMessage(
                content,
                ChatMessageRole.Assistant,
                additionalBinaryDataProperties: null,
                refusal,
                participantName,
                toolCalls?.ToList(),
                functionCall,
                outputAudioReference);
        }

        public static ChatOutputAudioReference ChatOutputAudioReference(string id = default)
        {

            return new ChatOutputAudioReference(id, additionalBinaryDataProperties: null);
        }

        public static ChatFunctionCall ChatFunctionCall(string functionName = default, BinaryData functionArguments = default)
        {

            return new ChatFunctionCall(functionName, functionArguments, additionalBinaryDataProperties: null);
        }

        public static ToolChatMessage ToolChatMessage(ChatMessageContent content = default, string toolCallId = default)
        {

            return new ToolChatMessage(content, ChatMessageRole.Tool, additionalBinaryDataProperties: null, toolCallId);
        }

        public static FunctionChatMessage FunctionChatMessage(ChatMessageContent content = default, string functionName = default)
        {

            return new FunctionChatMessage(content, ChatMessageRole.Function, additionalBinaryDataProperties: null, functionName);
        }

        public static ChatResponseFormat ChatResponseFormat(string @type = default)
        {

            return new InternalUnknownChatResponseFormat(@type, additionalBinaryDataProperties: null);
        }

        public static ChatAudioOptions ChatAudioOptions(ChatOutputAudioVoice outputAudioVoice = default, ChatOutputAudioFormat outputAudioFormat = default)
        {

            return new ChatAudioOptions(outputAudioVoice, outputAudioFormat, additionalBinaryDataProperties: null);
        }

        public static ChatFunction ChatFunction(string functionName = default, string functionDescription = default, BinaryData functionParameters = default)
        {

            return new ChatFunction(functionName, functionDescription, functionParameters, additionalBinaryDataProperties: null);
        }

        public static ChatOutputAudio ChatOutputAudio(string id = default, DateTimeOffset expiresAt = default, string transcript = default, BinaryData audioBytes = default)
        {

            return new ChatOutputAudio(id, expiresAt, transcript, audioBytes, additionalBinaryDataProperties: null);
        }

        public static ChatTokenLogProbabilityDetails ChatTokenLogProbabilityDetails(string token = default, float logProbability = default, ReadOnlyMemory<byte>? utf8Bytes = default, IEnumerable<ChatTokenTopLogProbabilityDetails> topLogProbabilities = default)
        {
            topLogProbabilities ??= new ChangeTrackingList<ChatTokenTopLogProbabilityDetails>();

            return new ChatTokenLogProbabilityDetails(token, logProbability, utf8Bytes, topLogProbabilities?.ToList(), additionalBinaryDataProperties: null);
        }

        public static ChatTokenTopLogProbabilityDetails ChatTokenTopLogProbabilityDetails(string token = default, float logProbability = default, ReadOnlyMemory<byte>? utf8Bytes = default)
        {

            return new ChatTokenTopLogProbabilityDetails(token, logProbability, utf8Bytes, additionalBinaryDataProperties: null);
        }

        public static AssistantCreationOptions AssistantCreationOptions(string name = default, string description = default, string instructions = default, IDictionary<string, string> metadata = default, float? temperature = default, string model = default, IEnumerable<ToolDefinition> tools = default, ToolResources toolResources = default, AssistantResponseFormat responseFormat = default, float? nucleusSamplingFactor = default, ChatReasoningEffortLevel? reasoningEffortLevel = default)
        {
            metadata ??= new ChangeTrackingDictionary<string, string>();
            tools ??= new ChangeTrackingList<ToolDefinition>();

            return new AssistantCreationOptions(
                name,
                description,
                instructions,
                metadata,
                temperature,
                model,
                tools?.ToList(),
                toolResources,
                responseFormat,
                nucleusSamplingFactor,
                reasoningEffortLevel,
                additionalBinaryDataProperties: null);
        }

        public static ToolResources ToolResources(CodeInterpreterToolResources codeInterpreter = default, FileSearchToolResources fileSearch = default)
        {

            return new ToolResources(codeInterpreter, fileSearch, additionalBinaryDataProperties: null);
        }

        public static CodeInterpreterToolResources CodeInterpreterToolResources(IEnumerable<string> fileIds = default)
        {
            fileIds ??= new ChangeTrackingList<string>();

            return new CodeInterpreterToolResources(fileIds?.ToList(), additionalBinaryDataProperties: null);
        }

        public static AssistantModificationOptions AssistantModificationOptions(string name = default, string description = default, string instructions = default, IDictionary<string, string> metadata = default, float? temperature = default, string model = default, IEnumerable<ToolDefinition> defaultTools = default, ToolResources toolResources = default, AssistantResponseFormat responseFormat = default, float? nucleusSamplingFactor = default, ChatReasoningEffortLevel? reasoningEffortLevel = default)
        {
            metadata ??= new ChangeTrackingDictionary<string, string>();
            defaultTools ??= new ChangeTrackingList<ToolDefinition>();

            return new AssistantModificationOptions(
                name,
                description,
                instructions,
                metadata,
                temperature,
                model,
                defaultTools?.ToList(),
                toolResources,
                responseFormat,
                nucleusSamplingFactor,
                reasoningEffortLevel,
                additionalBinaryDataProperties: null);
        }

        public static TranscribedWord TranscribedWord(string word = default, TimeSpan startTime = default, TimeSpan endTime = default)
        {

            return new TranscribedWord(word, startTime, endTime, additionalBinaryDataProperties: null);
        }

        public static TranscribedSegment TranscribedSegment(int id = default, string text = default, float temperature = default, float compressionRatio = default, TimeSpan startTime = default, TimeSpan endTime = default, int seekOffset = default, ReadOnlyMemory<int> tokenIds = default, float averageLogProbability = default, float noSpeechProbability = default)
        {

            return new TranscribedSegment(
                id,
                text,
                temperature,
                compressionRatio,
                startTime,
                endTime,
                seekOffset,
                tokenIds,
                averageLogProbability,
                noSpeechProbability,
                additionalBinaryDataProperties: null);
        }

        public static AssistantResponseFormat AssistantResponseFormat(string @type = default)
        {

            return new InternalUnknownAssistantResponseFormat(@type, additionalBinaryDataProperties: null);
        }

        public static ChatFunctionChoice ChatFunctionChoice(string predefinedFunctionChoice = default)
        {

            return new ChatFunctionChoice(predefinedFunctionChoice);
        }

        public static ChatToolChoice ChatToolChoice()
        {

            return new ChatToolChoice(additionalBinaryDataProperties: null);
        }

        public static ChatMessageContent ChatMessageContent()
        {

            return new ChatMessageContent(additionalBinaryDataProperties: null);
        }

        public static ChatMessageContentPart ChatMessageContentPart(ChatMessageContentPartKind kind = default, string text = default, InternalChatCompletionRequestMessageContentPartImageImageUrl imageUri = default, string refusal = default, InternalChatCompletionRequestMessageContentPartAudioInputAudio inputAudio = default, InternalChatCompletionRequestMessageContentPartFileFile fileFile = default)
        {

            return new ChatMessageContentPart(
                kind,
                text,
                imageUri,
                refusal,
                inputAudio,
                fileFile,
                serializedAdditionalRawData: null);
        }

        public static StreamingChatOutputAudioUpdate StreamingChatOutputAudioUpdate(string id = default, DateTimeOffset? expiresAt = default, string transcriptUpdate = default, BinaryData audioBytesUpdate = default)
        {

            return new StreamingChatOutputAudioUpdate(id, expiresAt, transcriptUpdate, audioBytesUpdate, additionalBinaryDataProperties: null);
        }

        public static StreamingChatFunctionCallUpdate StreamingChatFunctionCallUpdate(string functionName = default, BinaryData functionArgumentsUpdate = default)
        {

            return new StreamingChatFunctionCallUpdate(functionName, functionArgumentsUpdate, additionalBinaryDataProperties: null);
        }

        public static RunStepUpdateCodeInterpreterOutput RunStepUpdateCodeInterpreterOutput(string @type = default)
        {

            return new UnknownRunStepDeltaStepDetailsToolCallsCodeObjectCodeInterpreterOutputsObject(@type, additionalBinaryDataProperties: null);
        }
    }
}
