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

using System;
using System.ComponentModel;
using Pulumi;

namespace Pulumi.AzureJustrun
{
    /// <summary>
    /// Specifies whether data in the container may be accessed publicly and the level of access.
    /// </summary>
    [EnumType]
    public readonly struct PublicAccess : IEquatable<PublicAccess>
    {
        private readonly string _value;

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

        public static PublicAccess Container { get; } = new PublicAccess("Container");
        public static PublicAccess Blob { get; } = new PublicAccess("Blob");
        public static PublicAccess None { get; } = new PublicAccess("None");

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

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

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is PublicAccess other && Equals(other);
        public bool Equals(PublicAccess 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 SKU name. Required for account creation; optional for update. Note that in older versions, SKU name was called accountType.
    /// </summary>
    [EnumType]
    public readonly struct StorageSkuName : IEquatable<StorageSkuName>
    {
        private readonly string _value;

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

        public static StorageSkuName Standard_LRS { get; } = new StorageSkuName("Standard_LRS");
        public static StorageSkuName Standard_GRS { get; } = new StorageSkuName("Standard_GRS");
        public static StorageSkuName Standard_RAGRS { get; } = new StorageSkuName("Standard_RAGRS");
        public static StorageSkuName Standard_ZRS { get; } = new StorageSkuName("Standard_ZRS");
        public static StorageSkuName Premium_LRS { get; } = new StorageSkuName("Premium_LRS");
        public static StorageSkuName Premium_ZRS { get; } = new StorageSkuName("Premium_ZRS");
        public static StorageSkuName Standard_GZRS { get; } = new StorageSkuName("Standard_GZRS");
        public static StorageSkuName Standard_RAGZRS { get; } = new StorageSkuName("Standard_RAGZRS");

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

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

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

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

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