// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;
using OpenAI;
using OpenAI.Realtime;

namespace OpenAI.Audio
{
    public partial class AudioTranscriptionOptions
    {
        private protected IDictionary<string, BinaryData> _additionalBinaryDataProperties;

        internal AudioTranscriptionOptions(string language, string prompt, AudioTranscriptionFormat? responseFormat, float? temperature, InternalVadConfig chunkingStrategy, BinaryData @file, InternalCreateTranscriptionRequestModel model, IList<BinaryData> internalTimestampGranularities, bool? stream, IList<InternalTranscriptionInclude> internalInclude, IDictionary<string, BinaryData> additionalBinaryDataProperties)
        {
            // Plugin customization: ensure initialization of collections
            Language = language;
            Prompt = prompt;
            ResponseFormat = responseFormat;
            Temperature = temperature;
            ChunkingStrategy = chunkingStrategy;
            File = @file;
            Model = model;
            InternalTimestampGranularities = internalTimestampGranularities ?? new ChangeTrackingList<BinaryData>();
            Stream = stream;
            InternalInclude = internalInclude ?? new ChangeTrackingList<InternalTranscriptionInclude>();
            _additionalBinaryDataProperties = additionalBinaryDataProperties;
        }

        public string Language { get; set; }

        public string Prompt { get; set; }

        public AudioTranscriptionFormat? ResponseFormat { get; set; }

        public float? Temperature { get; set; }

        internal InternalVadConfig ChunkingStrategy { get; set; }

        internal IDictionary<string, BinaryData> SerializedAdditionalRawData
        {
            get => _additionalBinaryDataProperties;
            set => _additionalBinaryDataProperties = value;
        }
    }
}
