// *** WARNING: this file was generated by pulumigen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.ComponentModel;
using Pulumi;

namespace Pulumi.ScalewayInstances.Servers
{
    /// <summary>
    /// The boot type to use
    /// </summary>
    [EnumType]
    public readonly struct BootType : IEquatable<BootType>
    {
        private readonly string _value;

        private BootType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static BootType Local { get; } = new BootType("local");
        public static BootType Bootscript { get; } = new BootType("bootscript");
        public static BootType Rescue { get; } = new BootType("rescue");

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

        public static explicit operator string(BootType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is BootType other && Equals(other);
        public bool Equals(BootType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    /// <summary>
    /// The bootscript arch
    /// </summary>
    [EnumType]
    public readonly struct ScalewayInstanceV1BootscriptArch : IEquatable<ScalewayInstanceV1BootscriptArch>
    {
        private readonly string _value;

        private ScalewayInstanceV1BootscriptArch(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1BootscriptArch X8664 { get; } = new ScalewayInstanceV1BootscriptArch("x86_64");
        public static ScalewayInstanceV1BootscriptArch Arm { get; } = new ScalewayInstanceV1BootscriptArch("arm");

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

        public static explicit operator string(ScalewayInstanceV1BootscriptArch value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1BootscriptArch other && Equals(other);
        public bool Equals(ScalewayInstanceV1BootscriptArch other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1ImageArch : IEquatable<ScalewayInstanceV1ImageArch>
    {
        private readonly string _value;

        private ScalewayInstanceV1ImageArch(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ImageArch X8664 { get; } = new ScalewayInstanceV1ImageArch("x86_64");
        public static ScalewayInstanceV1ImageArch Arm { get; } = new ScalewayInstanceV1ImageArch("arm");

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

        public static explicit operator string(ScalewayInstanceV1ImageArch value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ImageArch other && Equals(other);
        public bool Equals(ScalewayInstanceV1ImageArch other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1ImageState : IEquatable<ScalewayInstanceV1ImageState>
    {
        private readonly string _value;

        private ScalewayInstanceV1ImageState(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ImageState Available { get; } = new ScalewayInstanceV1ImageState("available");
        public static ScalewayInstanceV1ImageState Creating { get; } = new ScalewayInstanceV1ImageState("creating");
        public static ScalewayInstanceV1ImageState Error { get; } = new ScalewayInstanceV1ImageState("error");

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

        public static explicit operator string(ScalewayInstanceV1ImageState value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ImageState other && Equals(other);
        public bool Equals(ScalewayInstanceV1ImageState other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1PlacementGroupPolicyMode : IEquatable<ScalewayInstanceV1PlacementGroupPolicyMode>
    {
        private readonly string _value;

        private ScalewayInstanceV1PlacementGroupPolicyMode(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1PlacementGroupPolicyMode Optional { get; } = new ScalewayInstanceV1PlacementGroupPolicyMode("optional");
        public static ScalewayInstanceV1PlacementGroupPolicyMode Enforced { get; } = new ScalewayInstanceV1PlacementGroupPolicyMode("enforced");

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

        public static explicit operator string(ScalewayInstanceV1PlacementGroupPolicyMode value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1PlacementGroupPolicyMode other && Equals(other);
        public bool Equals(ScalewayInstanceV1PlacementGroupPolicyMode other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1PlacementGroupPolicyType : IEquatable<ScalewayInstanceV1PlacementGroupPolicyType>
    {
        private readonly string _value;

        private ScalewayInstanceV1PlacementGroupPolicyType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1PlacementGroupPolicyType MaxAvailability { get; } = new ScalewayInstanceV1PlacementGroupPolicyType("max_availability");
        public static ScalewayInstanceV1PlacementGroupPolicyType LowLatency { get; } = new ScalewayInstanceV1PlacementGroupPolicyType("low_latency");

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

        public static explicit operator string(ScalewayInstanceV1PlacementGroupPolicyType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1PlacementGroupPolicyType other && Equals(other);
        public bool Equals(ScalewayInstanceV1PlacementGroupPolicyType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    /// <summary>
    /// The private NIC state
    /// </summary>
    [EnumType]
    public readonly struct ScalewayInstanceV1PrivateNICState : IEquatable<ScalewayInstanceV1PrivateNICState>
    {
        private readonly string _value;

        private ScalewayInstanceV1PrivateNICState(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1PrivateNICState Available { get; } = new ScalewayInstanceV1PrivateNICState("available");
        public static ScalewayInstanceV1PrivateNICState Syncing { get; } = new ScalewayInstanceV1PrivateNICState("syncing");
        public static ScalewayInstanceV1PrivateNICState SyncingError { get; } = new ScalewayInstanceV1PrivateNICState("syncing_error");

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

        public static explicit operator string(ScalewayInstanceV1PrivateNICState value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1PrivateNICState other && Equals(other);
        public bool Equals(ScalewayInstanceV1PrivateNICState other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1ServerAllowedActionsItem : IEquatable<ScalewayInstanceV1ServerAllowedActionsItem>
    {
        private readonly string _value;

        private ScalewayInstanceV1ServerAllowedActionsItem(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ServerAllowedActionsItem Poweron { get; } = new ScalewayInstanceV1ServerAllowedActionsItem("poweron");
        public static ScalewayInstanceV1ServerAllowedActionsItem Backup { get; } = new ScalewayInstanceV1ServerAllowedActionsItem("backup");
        public static ScalewayInstanceV1ServerAllowedActionsItem StopInPlace { get; } = new ScalewayInstanceV1ServerAllowedActionsItem("stop_in_place");
        public static ScalewayInstanceV1ServerAllowedActionsItem Poweroff { get; } = new ScalewayInstanceV1ServerAllowedActionsItem("poweroff");
        public static ScalewayInstanceV1ServerAllowedActionsItem Terminate { get; } = new ScalewayInstanceV1ServerAllowedActionsItem("terminate");
        public static ScalewayInstanceV1ServerAllowedActionsItem Reboot { get; } = new ScalewayInstanceV1ServerAllowedActionsItem("reboot");

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

        public static explicit operator string(ScalewayInstanceV1ServerAllowedActionsItem value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ServerAllowedActionsItem other && Equals(other);
        public bool Equals(ScalewayInstanceV1ServerAllowedActionsItem other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    /// <summary>
    /// The server arch
    /// </summary>
    [EnumType]
    public readonly struct ScalewayInstanceV1ServerArch : IEquatable<ScalewayInstanceV1ServerArch>
    {
        private readonly string _value;

        private ScalewayInstanceV1ServerArch(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ServerArch X8664 { get; } = new ScalewayInstanceV1ServerArch("x86_64");
        public static ScalewayInstanceV1ServerArch Arm { get; } = new ScalewayInstanceV1ServerArch("arm");

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

        public static explicit operator string(ScalewayInstanceV1ServerArch value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ServerArch other && Equals(other);
        public bool Equals(ScalewayInstanceV1ServerArch other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1ServerBootType : IEquatable<ScalewayInstanceV1ServerBootType>
    {
        private readonly string _value;

        private ScalewayInstanceV1ServerBootType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ServerBootType Local { get; } = new ScalewayInstanceV1ServerBootType("local");
        public static ScalewayInstanceV1ServerBootType Bootscript { get; } = new ScalewayInstanceV1ServerBootType("bootscript");
        public static ScalewayInstanceV1ServerBootType Rescue { get; } = new ScalewayInstanceV1ServerBootType("rescue");

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

        public static explicit operator string(ScalewayInstanceV1ServerBootType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ServerBootType other && Equals(other);
        public bool Equals(ScalewayInstanceV1ServerBootType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    /// <summary>
    /// The server state
    /// </summary>
    [EnumType]
    public readonly struct ScalewayInstanceV1ServerState : IEquatable<ScalewayInstanceV1ServerState>
    {
        private readonly string _value;

        private ScalewayInstanceV1ServerState(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ServerState Running { get; } = new ScalewayInstanceV1ServerState("running");
        public static ScalewayInstanceV1ServerState Stopped { get; } = new ScalewayInstanceV1ServerState("stopped");
        public static ScalewayInstanceV1ServerState StoppedInPlace { get; } = new ScalewayInstanceV1ServerState("stopped in place");
        public static ScalewayInstanceV1ServerState Starting { get; } = new ScalewayInstanceV1ServerState("starting");
        public static ScalewayInstanceV1ServerState Stopping { get; } = new ScalewayInstanceV1ServerState("stopping");
        public static ScalewayInstanceV1ServerState Locked { get; } = new ScalewayInstanceV1ServerState("locked");

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

        public static explicit operator string(ScalewayInstanceV1ServerState value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ServerState other && Equals(other);
        public bool Equals(ScalewayInstanceV1ServerState other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    /// <summary>
    /// CPU architecture
    /// </summary>
    [EnumType]
    public readonly struct ScalewayInstanceV1ServerTypeArch : IEquatable<ScalewayInstanceV1ServerTypeArch>
    {
        private readonly string _value;

        private ScalewayInstanceV1ServerTypeArch(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ServerTypeArch X8664 { get; } = new ScalewayInstanceV1ServerTypeArch("x86_64");
        public static ScalewayInstanceV1ServerTypeArch Arm { get; } = new ScalewayInstanceV1ServerTypeArch("arm");

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

        public static explicit operator string(ScalewayInstanceV1ServerTypeArch value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ServerTypeArch other && Equals(other);
        public bool Equals(ScalewayInstanceV1ServerTypeArch other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem : IEquatable<ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem>
    {
        private readonly string _value;

        private ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem Local { get; } = new ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem("local");
        public static ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem Bootscript { get; } = new ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem("bootscript");
        public static ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem Rescue { get; } = new ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem("rescue");

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

        public static explicit operator string(ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem other && Equals(other);
        public bool Equals(ScalewayInstanceV1ServerTypeCapabilitiesPropertiesBootTypesItem other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1VolumeServerState : IEquatable<ScalewayInstanceV1VolumeServerState>
    {
        private readonly string _value;

        private ScalewayInstanceV1VolumeServerState(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1VolumeServerState Available { get; } = new ScalewayInstanceV1VolumeServerState("available");
        public static ScalewayInstanceV1VolumeServerState Snapshotting { get; } = new ScalewayInstanceV1VolumeServerState("snapshotting");
        public static ScalewayInstanceV1VolumeServerState Error { get; } = new ScalewayInstanceV1VolumeServerState("error");
        public static ScalewayInstanceV1VolumeServerState Fetching { get; } = new ScalewayInstanceV1VolumeServerState("fetching");
        public static ScalewayInstanceV1VolumeServerState Resizing { get; } = new ScalewayInstanceV1VolumeServerState("resizing");
        public static ScalewayInstanceV1VolumeServerState Saving { get; } = new ScalewayInstanceV1VolumeServerState("saving");
        public static ScalewayInstanceV1VolumeServerState Hotsyncing { get; } = new ScalewayInstanceV1VolumeServerState("hotsyncing");

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

        public static explicit operator string(ScalewayInstanceV1VolumeServerState value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1VolumeServerState other && Equals(other);
        public bool Equals(ScalewayInstanceV1VolumeServerState other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1VolumeServerTemplateVolumeType : IEquatable<ScalewayInstanceV1VolumeServerTemplateVolumeType>
    {
        private readonly string _value;

        private ScalewayInstanceV1VolumeServerTemplateVolumeType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1VolumeServerTemplateVolumeType LSsd { get; } = new ScalewayInstanceV1VolumeServerTemplateVolumeType("l_ssd");
        public static ScalewayInstanceV1VolumeServerTemplateVolumeType BSsd { get; } = new ScalewayInstanceV1VolumeServerTemplateVolumeType("b_ssd");

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

        public static explicit operator string(ScalewayInstanceV1VolumeServerTemplateVolumeType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1VolumeServerTemplateVolumeType other && Equals(other);
        public bool Equals(ScalewayInstanceV1VolumeServerTemplateVolumeType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1VolumeServerVolumeType : IEquatable<ScalewayInstanceV1VolumeServerVolumeType>
    {
        private readonly string _value;

        private ScalewayInstanceV1VolumeServerVolumeType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1VolumeServerVolumeType LSsd { get; } = new ScalewayInstanceV1VolumeServerVolumeType("l_ssd");
        public static ScalewayInstanceV1VolumeServerVolumeType BSsd { get; } = new ScalewayInstanceV1VolumeServerVolumeType("b_ssd");

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

        public static explicit operator string(ScalewayInstanceV1VolumeServerVolumeType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1VolumeServerVolumeType other && Equals(other);
        public bool Equals(ScalewayInstanceV1VolumeServerVolumeType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1VolumeState : IEquatable<ScalewayInstanceV1VolumeState>
    {
        private readonly string _value;

        private ScalewayInstanceV1VolumeState(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1VolumeState Available { get; } = new ScalewayInstanceV1VolumeState("available");
        public static ScalewayInstanceV1VolumeState Snapshotting { get; } = new ScalewayInstanceV1VolumeState("snapshotting");
        public static ScalewayInstanceV1VolumeState Error { get; } = new ScalewayInstanceV1VolumeState("error");
        public static ScalewayInstanceV1VolumeState Fetching { get; } = new ScalewayInstanceV1VolumeState("fetching");
        public static ScalewayInstanceV1VolumeState Resizing { get; } = new ScalewayInstanceV1VolumeState("resizing");
        public static ScalewayInstanceV1VolumeState Saving { get; } = new ScalewayInstanceV1VolumeState("saving");
        public static ScalewayInstanceV1VolumeState Hotsyncing { get; } = new ScalewayInstanceV1VolumeState("hotsyncing");

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

        public static explicit operator string(ScalewayInstanceV1VolumeState value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1VolumeState other && Equals(other);
        public bool Equals(ScalewayInstanceV1VolumeState other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1VolumeSummaryVolumeType : IEquatable<ScalewayInstanceV1VolumeSummaryVolumeType>
    {
        private readonly string _value;

        private ScalewayInstanceV1VolumeSummaryVolumeType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1VolumeSummaryVolumeType LSsd { get; } = new ScalewayInstanceV1VolumeSummaryVolumeType("l_ssd");
        public static ScalewayInstanceV1VolumeSummaryVolumeType BSsd { get; } = new ScalewayInstanceV1VolumeSummaryVolumeType("b_ssd");
        public static ScalewayInstanceV1VolumeSummaryVolumeType Unified { get; } = new ScalewayInstanceV1VolumeSummaryVolumeType("unified");

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

        public static explicit operator string(ScalewayInstanceV1VolumeSummaryVolumeType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1VolumeSummaryVolumeType other && Equals(other);
        public bool Equals(ScalewayInstanceV1VolumeSummaryVolumeType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct ScalewayInstanceV1VolumeVolumeType : IEquatable<ScalewayInstanceV1VolumeVolumeType>
    {
        private readonly string _value;

        private ScalewayInstanceV1VolumeVolumeType(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static ScalewayInstanceV1VolumeVolumeType LSsd { get; } = new ScalewayInstanceV1VolumeVolumeType("l_ssd");
        public static ScalewayInstanceV1VolumeVolumeType BSsd { get; } = new ScalewayInstanceV1VolumeVolumeType("b_ssd");
        public static ScalewayInstanceV1VolumeVolumeType Unified { get; } = new ScalewayInstanceV1VolumeVolumeType("unified");

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

        public static explicit operator string(ScalewayInstanceV1VolumeVolumeType value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is ScalewayInstanceV1VolumeVolumeType other && Equals(other);
        public bool Equals(ScalewayInstanceV1VolumeVolumeType other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

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