// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;

namespace OpenAI.RealtimeConversation
{
    public partial class ConversationTokenUsage
    {
        internal IDictionary<string, BinaryData> SerializedAdditionalRawData { get; set; }
        internal ConversationTokenUsage(int totalTokens, int inputTokens, int outputTokens, ConversationInputTokenUsageDetails inputTokenDetails, ConversationOutputTokenUsageDetails outputTokenDetails)
        {
            Argument.AssertNotNull(inputTokenDetails, nameof(inputTokenDetails));
            Argument.AssertNotNull(outputTokenDetails, nameof(outputTokenDetails));

            TotalTokens = totalTokens;
            InputTokens = inputTokens;
            OutputTokens = outputTokens;
            InputTokenDetails = inputTokenDetails;
            OutputTokenDetails = outputTokenDetails;
        }

        internal ConversationTokenUsage(int totalTokens, int inputTokens, int outputTokens, ConversationInputTokenUsageDetails inputTokenDetails, ConversationOutputTokenUsageDetails outputTokenDetails, IDictionary<string, BinaryData> serializedAdditionalRawData)
        {
            TotalTokens = totalTokens;
            InputTokens = inputTokens;
            OutputTokens = outputTokens;
            InputTokenDetails = inputTokenDetails;
            OutputTokenDetails = outputTokenDetails;
            SerializedAdditionalRawData = serializedAdditionalRawData;
        }

        internal ConversationTokenUsage()
        {
        }

        public int TotalTokens { get; }
        public int InputTokens { get; }
        public int OutputTokens { get; }
        public ConversationInputTokenUsageDetails InputTokenDetails { get; }
        public ConversationOutputTokenUsageDetails OutputTokenDetails { get; }
    }
}
