// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;
using System.Linq;

namespace OpenAI.RealtimeConversation
{
    internal partial class InternalRealtimeResponse
    {
        internal IDictionary<string, BinaryData> SerializedAdditionalRawData { get; set; }
        internal InternalRealtimeResponse(string id, ConversationStatus status, InternalRealtimeResponseStatusDetails statusDetails, IEnumerable<ConversationItem> output, ConversationTokenUsage usage)
        {
            Argument.AssertNotNull(id, nameof(id));
            Argument.AssertNotNull(output, nameof(output));
            Argument.AssertNotNull(usage, nameof(usage));

            Id = id;
            Status = status;
            StatusDetails = statusDetails;
            Output = output.ToList();
            Usage = usage;
        }

        internal InternalRealtimeResponse(InternalRealtimeResponseObject @object, string id, ConversationStatus status, InternalRealtimeResponseStatusDetails statusDetails, IReadOnlyList<ConversationItem> output, ConversationTokenUsage usage, IDictionary<string, BinaryData> serializedAdditionalRawData)
        {
            Object = @object;
            Id = id;
            Status = status;
            StatusDetails = statusDetails;
            Output = output;
            Usage = usage;
            SerializedAdditionalRawData = serializedAdditionalRawData;
        }

        internal InternalRealtimeResponse()
        {
        }

        public InternalRealtimeResponseObject Object { get; } = InternalRealtimeResponseObject.RealtimeResponse;

        public string Id { get; }
        public ConversationStatus Status { get; }
        public InternalRealtimeResponseStatusDetails StatusDetails { get; }
        public ConversationTokenUsage Usage { get; }
    }
}
