// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;

namespace OpenAI.RealtimeConversation
{
    internal partial class InternalRealtimeRequestResponseCreateCommandResponse
    {
        internal IDictionary<string, BinaryData> SerializedAdditionalRawData { get; set; }
        public InternalRealtimeRequestResponseCreateCommandResponse(bool commit, bool cancelPrevious)
        {
            Commit = commit;
            CancelPrevious = cancelPrevious;
            AppendInputItems = new ChangeTrackingList<ConversationItem>();
            InputItems = new ChangeTrackingList<ConversationItem>();
            Modalities = new ChangeTrackingList<InternalRealtimeRequestSessionUpdateCommandSessionModality>();
            Tools = new ChangeTrackingList<ConversationTool>();
        }

        internal InternalRealtimeRequestResponseCreateCommandResponse(bool commit, bool cancelPrevious, IList<ConversationItem> appendInputItems, IList<ConversationItem> inputItems, string instructions, IList<InternalRealtimeRequestSessionUpdateCommandSessionModality> modalities, ConversationVoice? voice, float? temperature, BinaryData maxOutputTokens, IList<ConversationTool> tools, BinaryData toolChoice, ConversationAudioFormat? outputAudioFormat, IDictionary<string, BinaryData> serializedAdditionalRawData)
        {
            Commit = commit;
            CancelPrevious = cancelPrevious;
            AppendInputItems = appendInputItems;
            InputItems = inputItems;
            Instructions = instructions;
            Modalities = modalities;
            Voice = voice;
            Temperature = temperature;
            MaxOutputTokens = maxOutputTokens;
            Tools = tools;
            ToolChoice = toolChoice;
            OutputAudioFormat = outputAudioFormat;
            SerializedAdditionalRawData = serializedAdditionalRawData;
        }

        internal InternalRealtimeRequestResponseCreateCommandResponse()
        {
        }

        public bool Commit { get; }
        public bool CancelPrevious { get; }
        public IList<ConversationItem> AppendInputItems { get; }
        public IList<ConversationItem> InputItems { get; }
        public string Instructions { get; set; }
        public IList<InternalRealtimeRequestSessionUpdateCommandSessionModality> Modalities { get; }
        public ConversationVoice? Voice { get; set; }
        public float? Temperature { get; set; }
        public BinaryData MaxOutputTokens { get; set; }
        public IList<ConversationTool> Tools { get; }
        public BinaryData ToolChoice { get; set; }
        public ConversationAudioFormat? OutputAudioFormat { get; set; }
    }
}
