//
#nullable disable
using System;
using System.ComponentModel;
using OpenAI;
namespace OpenAI.Files
{
public readonly partial struct FileUploadPurpose : IEquatable
{
private readonly string _value;
private const string AssistantsValue = "assistants";
private const string BatchValue = "batch";
private const string FineTuneValue = "fine-tune";
private const string VisionValue = "vision";
private const string UserDataValue = "user_data";
private const string EvalsValue = "evals";
public FileUploadPurpose(string value)
{
Argument.AssertNotNull(value, nameof(value));
_value = value;
}
public static FileUploadPurpose Assistants { get; } = new FileUploadPurpose(AssistantsValue);
public static FileUploadPurpose Batch { get; } = new FileUploadPurpose(BatchValue);
public static FileUploadPurpose FineTune { get; } = new FileUploadPurpose(FineTuneValue);
public static FileUploadPurpose Vision { get; } = new FileUploadPurpose(VisionValue);
public static bool operator ==(FileUploadPurpose left, FileUploadPurpose right) => left.Equals(right);
public static bool operator !=(FileUploadPurpose left, FileUploadPurpose right) => !left.Equals(right);
public static implicit operator FileUploadPurpose(string value) => new FileUploadPurpose(value);
public static implicit operator FileUploadPurpose?(string value) => value == null ? null : new FileUploadPurpose(value);
[EditorBrowsable(EditorBrowsableState.Never)]
public override bool Equals(object obj) => obj is FileUploadPurpose other && Equals(other);
public bool Equals(FileUploadPurpose 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;
}
}