// <auto-generated/>

#nullable disable

using System;
using System.ComponentModel;
using OpenAI;

namespace OpenAI.Responses
{
    internal readonly partial struct InternalModelIdsResponses : IEquatable<InternalModelIdsResponses>
    {
        private readonly string _value;
        private const string Gpt41Value = "gpt-4.1";
        private const string Gpt41MiniValue = "gpt-4.1-mini";
        private const string Gpt41NanoValue = "gpt-4.1-nano";
        private const string Gpt4120250414Value = "gpt-4.1-2025-04-14";
        private const string Gpt41Mini20250414Value = "gpt-4.1-mini-2025-04-14";
        private const string Gpt41Nano20250414Value = "gpt-4.1-nano-2025-04-14";
        private const string O4MiniValue = "o4-mini";
        private const string O4Mini20250416Value = "o4-mini-2025-04-16";
        private const string O3Value = "o3";
        private const string O320250416Value = "o3-2025-04-16";
        private const string O3MiniValue = "o3-mini";
        private const string O3Mini20250131Value = "o3-mini-2025-01-31";
        private const string O1Value = "o1";
        private const string O120241217Value = "o1-2024-12-17";
        private const string O1PreviewValue = "o1-preview";
        private const string O1Preview20240912Value = "o1-preview-2024-09-12";
        private const string O1MiniValue = "o1-mini";
        private const string O1Mini20240912Value = "o1-mini-2024-09-12";
        private const string Gpt4oValue = "gpt-4o";
        private const string Gpt4o20241120Value = "gpt-4o-2024-11-20";
        private const string Gpt4o20240806Value = "gpt-4o-2024-08-06";
        private const string Gpt4o20240513Value = "gpt-4o-2024-05-13";
        private const string Gpt4oAudioPreviewValue = "gpt-4o-audio-preview";
        private const string Gpt4oAudioPreview20241001Value = "gpt-4o-audio-preview-2024-10-01";
        private const string Gpt4oAudioPreview20241217Value = "gpt-4o-audio-preview-2024-12-17";
        private const string Gpt4oAudioPreview20250603Value = "gpt-4o-audio-preview-2025-06-03";
        private const string Gpt4oMiniAudioPreviewValue = "gpt-4o-mini-audio-preview";
        private const string Gpt4oMiniAudioPreview20241217Value = "gpt-4o-mini-audio-preview-2024-12-17";
        private const string Gpt4oSearchPreviewValue = "gpt-4o-search-preview";
        private const string Gpt4oMiniSearchPreviewValue = "gpt-4o-mini-search-preview";
        private const string Gpt4oSearchPreview20250311Value = "gpt-4o-search-preview-2025-03-11";
        private const string Gpt4oMiniSearchPreview20250311Value = "gpt-4o-mini-search-preview-2025-03-11";
        private const string Chatgpt4oLatestValue = "chatgpt-4o-latest";
        private const string CodexMiniLatestValue = "codex-mini-latest";
        private const string Gpt4oMiniValue = "gpt-4o-mini";
        private const string Gpt4oMini20240718Value = "gpt-4o-mini-2024-07-18";
        private const string Gpt4TurboValue = "gpt-4-turbo";
        private const string Gpt4Turbo20240409Value = "gpt-4-turbo-2024-04-09";
        private const string Gpt40125PreviewValue = "gpt-4-0125-preview";
        private const string Gpt4TurboPreviewValue = "gpt-4-turbo-preview";
        private const string Gpt41106PreviewValue = "gpt-4-1106-preview";
        private const string Gpt4VisionPreviewValue = "gpt-4-vision-preview";
        private const string Gpt4Value = "gpt-4";
        private const string Gpt40314Value = "gpt-4-0314";
        private const string Gpt40613Value = "gpt-4-0613";
        private const string Gpt432kValue = "gpt-4-32k";
        private const string Gpt432k0314Value = "gpt-4-32k-0314";
        private const string Gpt432k0613Value = "gpt-4-32k-0613";
        private const string Gpt35TurboValue = "gpt-3.5-turbo";
        private const string Gpt35Turbo16kValue = "gpt-3.5-turbo-16k";
        private const string Gpt35Turbo0301Value = "gpt-3.5-turbo-0301";
        private const string Gpt35Turbo0613Value = "gpt-3.5-turbo-0613";
        private const string Gpt35Turbo1106Value = "gpt-3.5-turbo-1106";
        private const string Gpt35Turbo0125Value = "gpt-3.5-turbo-0125";
        private const string Gpt35Turbo16k0613Value = "gpt-3.5-turbo-16k-0613";
        private const string O1ProValue = "o1-pro";
        private const string O1Pro20250319Value = "o1-pro-2025-03-19";
        private const string O3ProValue = "o3-pro";
        private const string O3Pro20250610Value = "o3-pro-2025-06-10";
        private const string ComputerUsePreviewValue = "computer-use-preview";
        private const string ComputerUsePreview20250311Value = "computer-use-preview-2025-03-11";

        public InternalModelIdsResponses(string value)
        {
            Argument.AssertNotNull(value, nameof(value));

            _value = value;
        }

        internal static InternalModelIdsResponses Gpt41 { get; } = new InternalModelIdsResponses(Gpt41Value);

        internal static InternalModelIdsResponses Gpt41Mini { get; } = new InternalModelIdsResponses(Gpt41MiniValue);

        internal static InternalModelIdsResponses Gpt41Nano { get; } = new InternalModelIdsResponses(Gpt41NanoValue);

        internal static InternalModelIdsResponses Gpt4120250414 { get; } = new InternalModelIdsResponses(Gpt4120250414Value);

        internal static InternalModelIdsResponses Gpt41Mini20250414 { get; } = new InternalModelIdsResponses(Gpt41Mini20250414Value);

        internal static InternalModelIdsResponses Gpt41Nano20250414 { get; } = new InternalModelIdsResponses(Gpt41Nano20250414Value);

        internal static InternalModelIdsResponses O4Mini { get; } = new InternalModelIdsResponses(O4MiniValue);

        internal static InternalModelIdsResponses O4Mini20250416 { get; } = new InternalModelIdsResponses(O4Mini20250416Value);

        internal static InternalModelIdsResponses O3 { get; } = new InternalModelIdsResponses(O3Value);

        internal static InternalModelIdsResponses O320250416 { get; } = new InternalModelIdsResponses(O320250416Value);

        internal static InternalModelIdsResponses O3Mini { get; } = new InternalModelIdsResponses(O3MiniValue);

        internal static InternalModelIdsResponses O3Mini20250131 { get; } = new InternalModelIdsResponses(O3Mini20250131Value);

        internal static InternalModelIdsResponses O1 { get; } = new InternalModelIdsResponses(O1Value);

        internal static InternalModelIdsResponses O120241217 { get; } = new InternalModelIdsResponses(O120241217Value);

        internal static InternalModelIdsResponses O1Preview { get; } = new InternalModelIdsResponses(O1PreviewValue);

        internal static InternalModelIdsResponses O1Preview20240912 { get; } = new InternalModelIdsResponses(O1Preview20240912Value);

        internal static InternalModelIdsResponses O1Mini { get; } = new InternalModelIdsResponses(O1MiniValue);

        internal static InternalModelIdsResponses O1Mini20240912 { get; } = new InternalModelIdsResponses(O1Mini20240912Value);

        internal static InternalModelIdsResponses Gpt4o { get; } = new InternalModelIdsResponses(Gpt4oValue);

        internal static InternalModelIdsResponses Gpt4o20241120 { get; } = new InternalModelIdsResponses(Gpt4o20241120Value);

        internal static InternalModelIdsResponses Gpt4o20240806 { get; } = new InternalModelIdsResponses(Gpt4o20240806Value);

        internal static InternalModelIdsResponses Gpt4o20240513 { get; } = new InternalModelIdsResponses(Gpt4o20240513Value);

        internal static InternalModelIdsResponses Gpt4oAudioPreview { get; } = new InternalModelIdsResponses(Gpt4oAudioPreviewValue);

        internal static InternalModelIdsResponses Gpt4oAudioPreview20241001 { get; } = new InternalModelIdsResponses(Gpt4oAudioPreview20241001Value);

        internal static InternalModelIdsResponses Gpt4oAudioPreview20241217 { get; } = new InternalModelIdsResponses(Gpt4oAudioPreview20241217Value);

        internal static InternalModelIdsResponses Gpt4oAudioPreview20250603 { get; } = new InternalModelIdsResponses(Gpt4oAudioPreview20250603Value);

        internal static InternalModelIdsResponses Gpt4oMiniAudioPreview { get; } = new InternalModelIdsResponses(Gpt4oMiniAudioPreviewValue);

        internal static InternalModelIdsResponses Gpt4oMiniAudioPreview20241217 { get; } = new InternalModelIdsResponses(Gpt4oMiniAudioPreview20241217Value);

        internal static InternalModelIdsResponses Gpt4oSearchPreview { get; } = new InternalModelIdsResponses(Gpt4oSearchPreviewValue);

        internal static InternalModelIdsResponses Gpt4oMiniSearchPreview { get; } = new InternalModelIdsResponses(Gpt4oMiniSearchPreviewValue);

        internal static InternalModelIdsResponses Gpt4oSearchPreview20250311 { get; } = new InternalModelIdsResponses(Gpt4oSearchPreview20250311Value);

        internal static InternalModelIdsResponses Gpt4oMiniSearchPreview20250311 { get; } = new InternalModelIdsResponses(Gpt4oMiniSearchPreview20250311Value);

        internal static InternalModelIdsResponses Chatgpt4oLatest { get; } = new InternalModelIdsResponses(Chatgpt4oLatestValue);

        internal static InternalModelIdsResponses CodexMiniLatest { get; } = new InternalModelIdsResponses(CodexMiniLatestValue);

        internal static InternalModelIdsResponses Gpt4oMini { get; } = new InternalModelIdsResponses(Gpt4oMiniValue);

        internal static InternalModelIdsResponses Gpt4oMini20240718 { get; } = new InternalModelIdsResponses(Gpt4oMini20240718Value);

        internal static InternalModelIdsResponses Gpt4Turbo { get; } = new InternalModelIdsResponses(Gpt4TurboValue);

        internal static InternalModelIdsResponses Gpt4Turbo20240409 { get; } = new InternalModelIdsResponses(Gpt4Turbo20240409Value);

        internal static InternalModelIdsResponses Gpt40125Preview { get; } = new InternalModelIdsResponses(Gpt40125PreviewValue);

        internal static InternalModelIdsResponses Gpt4TurboPreview { get; } = new InternalModelIdsResponses(Gpt4TurboPreviewValue);

        internal static InternalModelIdsResponses Gpt41106Preview { get; } = new InternalModelIdsResponses(Gpt41106PreviewValue);

        internal static InternalModelIdsResponses Gpt4VisionPreview { get; } = new InternalModelIdsResponses(Gpt4VisionPreviewValue);

        internal static InternalModelIdsResponses Gpt4 { get; } = new InternalModelIdsResponses(Gpt4Value);

        internal static InternalModelIdsResponses Gpt40314 { get; } = new InternalModelIdsResponses(Gpt40314Value);

        internal static InternalModelIdsResponses Gpt40613 { get; } = new InternalModelIdsResponses(Gpt40613Value);

        internal static InternalModelIdsResponses Gpt432k { get; } = new InternalModelIdsResponses(Gpt432kValue);

        internal static InternalModelIdsResponses Gpt432k0314 { get; } = new InternalModelIdsResponses(Gpt432k0314Value);

        internal static InternalModelIdsResponses Gpt432k0613 { get; } = new InternalModelIdsResponses(Gpt432k0613Value);

        internal static InternalModelIdsResponses Gpt35Turbo { get; } = new InternalModelIdsResponses(Gpt35TurboValue);

        internal static InternalModelIdsResponses Gpt35Turbo16k { get; } = new InternalModelIdsResponses(Gpt35Turbo16kValue);

        internal static InternalModelIdsResponses Gpt35Turbo0301 { get; } = new InternalModelIdsResponses(Gpt35Turbo0301Value);

        internal static InternalModelIdsResponses Gpt35Turbo0613 { get; } = new InternalModelIdsResponses(Gpt35Turbo0613Value);

        internal static InternalModelIdsResponses Gpt35Turbo1106 { get; } = new InternalModelIdsResponses(Gpt35Turbo1106Value);

        internal static InternalModelIdsResponses Gpt35Turbo0125 { get; } = new InternalModelIdsResponses(Gpt35Turbo0125Value);

        internal static InternalModelIdsResponses Gpt35Turbo16k0613 { get; } = new InternalModelIdsResponses(Gpt35Turbo16k0613Value);

        internal static InternalModelIdsResponses O1Pro { get; } = new InternalModelIdsResponses(O1ProValue);

        internal static InternalModelIdsResponses O1Pro20250319 { get; } = new InternalModelIdsResponses(O1Pro20250319Value);

        internal static InternalModelIdsResponses O3Pro { get; } = new InternalModelIdsResponses(O3ProValue);

        internal static InternalModelIdsResponses O3Pro20250610 { get; } = new InternalModelIdsResponses(O3Pro20250610Value);

        internal static InternalModelIdsResponses ComputerUsePreview { get; } = new InternalModelIdsResponses(ComputerUsePreviewValue);

        internal static InternalModelIdsResponses ComputerUsePreview20250311 { get; } = new InternalModelIdsResponses(ComputerUsePreview20250311Value);

        public static bool operator ==(InternalModelIdsResponses left, InternalModelIdsResponses right) => left.Equals(right);

        public static bool operator !=(InternalModelIdsResponses left, InternalModelIdsResponses right) => !left.Equals(right);

        public static implicit operator InternalModelIdsResponses(string value) => new InternalModelIdsResponses(value);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object obj) => obj is InternalModelIdsResponses other && Equals(other);

        public bool Equals(InternalModelIdsResponses other) => string.Equals(_value, other._value, StringComparison.InvariantCultureIgnoreCase);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value != null ? StringComparer.InvariantCultureIgnoreCase.GetHashCode(_value) : 0;

        public override string ToString() => _value;
    }
}
