// <auto-generated/>

#nullable disable

using System;
using System.ComponentModel;
using OpenAI;

namespace OpenAI.Responses
{
    internal readonly partial struct InternalResponseStreamEventType : IEquatable<InternalResponseStreamEventType>
    {
        private readonly string _value;
        private const string ResponseAudioDeltaValue = "response.audio.delta";
        private const string ResponseAudioDoneValue = "response.audio.done";
        private const string ResponseAudioTranscriptDeltaValue = "response.audio_transcript.delta";
        private const string ResponseAudioTranscriptDoneValue = "response.audio_transcript.done";
        private const string ResponseCodeInterpreterCallCodeDeltaValue = "response.code_interpreter_call_code.delta";
        private const string ResponseCodeInterpreterCallCodeDoneValue = "response.code_interpreter_call_code.done";
        private const string ResponseCodeInterpreterCallCompletedValue = "response.code_interpreter_call.completed";
        private const string ResponseCodeInterpreterCallInProgressValue = "response.code_interpreter_call.in_progress";
        private const string ResponseCodeInterpreterCallInterpretingValue = "response.code_interpreter_call.interpreting";
        private const string ResponseCompletedValue = "response.completed";
        private const string ResponseContentPartAddedValue = "response.content_part.added";
        private const string ResponseContentPartDoneValue = "response.content_part.done";
        private const string ResponseCreatedValue = "response.created";
        private const string ErrorValue = "error";
        private const string ResponseFileSearchCallCompletedValue = "response.file_search_call.completed";
        private const string ResponseFileSearchCallInProgressValue = "response.file_search_call.in_progress";
        private const string ResponseFileSearchCallSearchingValue = "response.file_search_call.searching";
        private const string ResponseFunctionCallArgumentsDeltaValue = "response.function_call_arguments.delta";
        private const string ResponseFunctionCallArgumentsDoneValue = "response.function_call_arguments.done";
        private const string ResponseInProgressValue = "response.in_progress";
        private const string ResponseFailedValue = "response.failed";
        private const string ResponseIncompleteValue = "response.incomplete";
        private const string ResponseOutputItemAddedValue = "response.output_item.added";
        private const string ResponseOutputItemDoneValue = "response.output_item.done";
        private const string ResponseRefusalDeltaValue = "response.refusal.delta";
        private const string ResponseRefusalDoneValue = "response.refusal.done";
        private const string ResponseOutputTextAnnotationAddedValue = "response.output_text.annotation.added";
        private const string ResponseOutputTextDeltaValue = "response.output_text.delta";
        private const string ResponseOutputTextDoneValue = "response.output_text.done";
        private const string ResponseReasoningSummaryPartAddedValue = "response.reasoning_summary_part.added";
        private const string ResponseReasoningSummaryPartDoneValue = "response.reasoning_summary_part.done";
        private const string ResponseReasoningSummaryTextDeltaValue = "response.reasoning_summary_text.delta";
        private const string ResponseReasoningSummaryTextDoneValue = "response.reasoning_summary_text.done";
        private const string ResponseWebSearchCallCompletedValue = "response.web_search_call.completed";
        private const string ResponseWebSearchCallInProgressValue = "response.web_search_call.in_progress";
        private const string ResponseWebSearchCallSearchingValue = "response.web_search_call.searching";
        private const string ResponseImageGenerationCallCompletedValue = "response.image_generation_call.completed";
        private const string ResponseImageGenerationCallGeneratingValue = "response.image_generation_call.generating";
        private const string ResponseImageGenerationCallInProgressValue = "response.image_generation_call.in_progress";
        private const string ResponseImageGenerationCallPartialImageValue = "response.image_generation_call.partial_image";
        private const string ResponseMcpCallArgumentsDeltaValue = "response.mcp_call.arguments_delta";
        private const string ResponseMcpCallArgumentsDoneValue = "response.mcp_call.arguments_done";
        private const string ResponseMcpCallCompletedValue = "response.mcp_call.completed";
        private const string ResponseMcpCallFailedValue = "response.mcp_call.failed";
        private const string ResponseMcpCallInProgressValue = "response.mcp_call.in_progress";
        private const string ResponseMcpListToolsCompletedValue = "response.mcp_list_tools.completed";
        private const string ResponseMcpListToolsFailedValue = "response.mcp_list_tools.failed";
        private const string ResponseMcpListToolsInProgressValue = "response.mcp_list_tools.in_progress";
        private const string ResponseQueuedValue = "response.queued";
        private const string ResponseReasoningDeltaValue = "response.reasoning.delta";
        private const string ResponseReasoningDoneValue = "response.reasoning.done";
        private const string ResponseReasoningSummaryDeltaValue = "response.reasoning_summary.delta";
        private const string ResponseReasoningSummaryDoneValue = "response.reasoning_summary.done";

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

            _value = value;
        }

        internal static InternalResponseStreamEventType ResponseAudioDelta { get; } = new InternalResponseStreamEventType(ResponseAudioDeltaValue);

        internal static InternalResponseStreamEventType ResponseAudioDone { get; } = new InternalResponseStreamEventType(ResponseAudioDoneValue);

        internal static InternalResponseStreamEventType ResponseAudioTranscriptDelta { get; } = new InternalResponseStreamEventType(ResponseAudioTranscriptDeltaValue);

        internal static InternalResponseStreamEventType ResponseAudioTranscriptDone { get; } = new InternalResponseStreamEventType(ResponseAudioTranscriptDoneValue);

        internal static InternalResponseStreamEventType ResponseCodeInterpreterCallCodeDelta { get; } = new InternalResponseStreamEventType(ResponseCodeInterpreterCallCodeDeltaValue);

        internal static InternalResponseStreamEventType ResponseCodeInterpreterCallCodeDone { get; } = new InternalResponseStreamEventType(ResponseCodeInterpreterCallCodeDoneValue);

        internal static InternalResponseStreamEventType ResponseCodeInterpreterCallCompleted { get; } = new InternalResponseStreamEventType(ResponseCodeInterpreterCallCompletedValue);

        internal static InternalResponseStreamEventType ResponseCodeInterpreterCallInProgress { get; } = new InternalResponseStreamEventType(ResponseCodeInterpreterCallInProgressValue);

        internal static InternalResponseStreamEventType ResponseCodeInterpreterCallInterpreting { get; } = new InternalResponseStreamEventType(ResponseCodeInterpreterCallInterpretingValue);

        internal static InternalResponseStreamEventType ResponseCompleted { get; } = new InternalResponseStreamEventType(ResponseCompletedValue);

        internal static InternalResponseStreamEventType ResponseContentPartAdded { get; } = new InternalResponseStreamEventType(ResponseContentPartAddedValue);

        internal static InternalResponseStreamEventType ResponseContentPartDone { get; } = new InternalResponseStreamEventType(ResponseContentPartDoneValue);

        internal static InternalResponseStreamEventType ResponseCreated { get; } = new InternalResponseStreamEventType(ResponseCreatedValue);

        internal static InternalResponseStreamEventType Error { get; } = new InternalResponseStreamEventType(ErrorValue);

        internal static InternalResponseStreamEventType ResponseFileSearchCallCompleted { get; } = new InternalResponseStreamEventType(ResponseFileSearchCallCompletedValue);

        internal static InternalResponseStreamEventType ResponseFileSearchCallInProgress { get; } = new InternalResponseStreamEventType(ResponseFileSearchCallInProgressValue);

        internal static InternalResponseStreamEventType ResponseFileSearchCallSearching { get; } = new InternalResponseStreamEventType(ResponseFileSearchCallSearchingValue);

        internal static InternalResponseStreamEventType ResponseFunctionCallArgumentsDelta { get; } = new InternalResponseStreamEventType(ResponseFunctionCallArgumentsDeltaValue);

        internal static InternalResponseStreamEventType ResponseFunctionCallArgumentsDone { get; } = new InternalResponseStreamEventType(ResponseFunctionCallArgumentsDoneValue);

        internal static InternalResponseStreamEventType ResponseInProgress { get; } = new InternalResponseStreamEventType(ResponseInProgressValue);

        internal static InternalResponseStreamEventType ResponseFailed { get; } = new InternalResponseStreamEventType(ResponseFailedValue);

        internal static InternalResponseStreamEventType ResponseIncomplete { get; } = new InternalResponseStreamEventType(ResponseIncompleteValue);

        internal static InternalResponseStreamEventType ResponseOutputItemAdded { get; } = new InternalResponseStreamEventType(ResponseOutputItemAddedValue);

        internal static InternalResponseStreamEventType ResponseOutputItemDone { get; } = new InternalResponseStreamEventType(ResponseOutputItemDoneValue);

        internal static InternalResponseStreamEventType ResponseRefusalDelta { get; } = new InternalResponseStreamEventType(ResponseRefusalDeltaValue);

        internal static InternalResponseStreamEventType ResponseRefusalDone { get; } = new InternalResponseStreamEventType(ResponseRefusalDoneValue);

        internal static InternalResponseStreamEventType ResponseOutputTextAnnotationAdded { get; } = new InternalResponseStreamEventType(ResponseOutputTextAnnotationAddedValue);

        internal static InternalResponseStreamEventType ResponseOutputTextDelta { get; } = new InternalResponseStreamEventType(ResponseOutputTextDeltaValue);

        internal static InternalResponseStreamEventType ResponseOutputTextDone { get; } = new InternalResponseStreamEventType(ResponseOutputTextDoneValue);

        internal static InternalResponseStreamEventType ResponseReasoningSummaryPartAdded { get; } = new InternalResponseStreamEventType(ResponseReasoningSummaryPartAddedValue);

        internal static InternalResponseStreamEventType ResponseReasoningSummaryPartDone { get; } = new InternalResponseStreamEventType(ResponseReasoningSummaryPartDoneValue);

        internal static InternalResponseStreamEventType ResponseReasoningSummaryTextDelta { get; } = new InternalResponseStreamEventType(ResponseReasoningSummaryTextDeltaValue);

        internal static InternalResponseStreamEventType ResponseReasoningSummaryTextDone { get; } = new InternalResponseStreamEventType(ResponseReasoningSummaryTextDoneValue);

        internal static InternalResponseStreamEventType ResponseWebSearchCallCompleted { get; } = new InternalResponseStreamEventType(ResponseWebSearchCallCompletedValue);

        internal static InternalResponseStreamEventType ResponseWebSearchCallInProgress { get; } = new InternalResponseStreamEventType(ResponseWebSearchCallInProgressValue);

        internal static InternalResponseStreamEventType ResponseWebSearchCallSearching { get; } = new InternalResponseStreamEventType(ResponseWebSearchCallSearchingValue);

        internal static InternalResponseStreamEventType ResponseImageGenerationCallCompleted { get; } = new InternalResponseStreamEventType(ResponseImageGenerationCallCompletedValue);

        internal static InternalResponseStreamEventType ResponseImageGenerationCallGenerating { get; } = new InternalResponseStreamEventType(ResponseImageGenerationCallGeneratingValue);

        internal static InternalResponseStreamEventType ResponseImageGenerationCallInProgress { get; } = new InternalResponseStreamEventType(ResponseImageGenerationCallInProgressValue);

        internal static InternalResponseStreamEventType ResponseImageGenerationCallPartialImage { get; } = new InternalResponseStreamEventType(ResponseImageGenerationCallPartialImageValue);

        internal static InternalResponseStreamEventType ResponseMcpCallArgumentsDelta { get; } = new InternalResponseStreamEventType(ResponseMcpCallArgumentsDeltaValue);

        internal static InternalResponseStreamEventType ResponseMcpCallArgumentsDone { get; } = new InternalResponseStreamEventType(ResponseMcpCallArgumentsDoneValue);

        internal static InternalResponseStreamEventType ResponseMcpCallCompleted { get; } = new InternalResponseStreamEventType(ResponseMcpCallCompletedValue);

        internal static InternalResponseStreamEventType ResponseMcpCallFailed { get; } = new InternalResponseStreamEventType(ResponseMcpCallFailedValue);

        internal static InternalResponseStreamEventType ResponseMcpCallInProgress { get; } = new InternalResponseStreamEventType(ResponseMcpCallInProgressValue);

        internal static InternalResponseStreamEventType ResponseMcpListToolsCompleted { get; } = new InternalResponseStreamEventType(ResponseMcpListToolsCompletedValue);

        internal static InternalResponseStreamEventType ResponseMcpListToolsFailed { get; } = new InternalResponseStreamEventType(ResponseMcpListToolsFailedValue);

        internal static InternalResponseStreamEventType ResponseMcpListToolsInProgress { get; } = new InternalResponseStreamEventType(ResponseMcpListToolsInProgressValue);

        internal static InternalResponseStreamEventType ResponseQueued { get; } = new InternalResponseStreamEventType(ResponseQueuedValue);

        internal static InternalResponseStreamEventType ResponseReasoningDelta { get; } = new InternalResponseStreamEventType(ResponseReasoningDeltaValue);

        internal static InternalResponseStreamEventType ResponseReasoningDone { get; } = new InternalResponseStreamEventType(ResponseReasoningDoneValue);

        internal static InternalResponseStreamEventType ResponseReasoningSummaryDelta { get; } = new InternalResponseStreamEventType(ResponseReasoningSummaryDeltaValue);

        internal static InternalResponseStreamEventType ResponseReasoningSummaryDone { get; } = new InternalResponseStreamEventType(ResponseReasoningSummaryDoneValue);

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

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

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

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

        public bool Equals(InternalResponseStreamEventType 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;
    }
}
