// *** WARNING: this file was generated by the 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.AzureNextGen.DesktopVirtualization.V20201019Preview
{
    /// <summary>
    /// Resource Type of ApplicationGroup.
    /// </summary>
    [EnumType]
    public readonly struct ApplicationGroupType : IEquatable<ApplicationGroupType>
    {
        private readonly string _value;

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

        public static ApplicationGroupType RemoteApp { get; } = new ApplicationGroupType("RemoteApp");
        public static ApplicationGroupType Desktop { get; } = new ApplicationGroupType("Desktop");

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

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

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

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

        public override string ToString() => _value;
    }

    /// <summary>
    /// Specifies whether this published application can be launched with command line arguments provided by the client, command line arguments specified at publish time, or no command line arguments at all.
    /// </summary>
    [EnumType]
    public readonly struct CommandLineSetting : IEquatable<CommandLineSetting>
    {
        private readonly string _value;

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

        public static CommandLineSetting DoNotAllow { get; } = new CommandLineSetting("DoNotAllow");
        public static CommandLineSetting Allow { get; } = new CommandLineSetting("Allow");
        public static CommandLineSetting Require { get; } = new CommandLineSetting("Require");

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

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

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

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

        public override string ToString() => _value;
    }

    /// <summary>
    /// HostPool type for desktop.
    /// </summary>
    [EnumType]
    public readonly struct HostPoolType : IEquatable<HostPoolType>
    {
        private readonly string _value;

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

        public static HostPoolType Personal { get; } = new HostPoolType("Personal");
        public static HostPoolType Pooled { get; } = new HostPoolType("Pooled");

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

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

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is HostPoolType other && Equals(other);
        public bool Equals(HostPoolType 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 type of the load balancer.
    /// </summary>
    [EnumType]
    public readonly struct LoadBalancerType : IEquatable<LoadBalancerType>
    {
        private readonly string _value;

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

        public static LoadBalancerType BreadthFirst { get; } = new LoadBalancerType("BreadthFirst");
        public static LoadBalancerType DepthFirst { get; } = new LoadBalancerType("DepthFirst");
        public static LoadBalancerType Persistent { get; } = new LoadBalancerType("Persistent");

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

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

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

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

        public override string ToString() => _value;
    }

    /// <summary>
    /// PersonalDesktopAssignment type for HostPool.
    /// </summary>
    [EnumType]
    public readonly struct PersonalDesktopAssignmentType : IEquatable<PersonalDesktopAssignmentType>
    {
        private readonly string _value;

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

        public static PersonalDesktopAssignmentType Automatic { get; } = new PersonalDesktopAssignmentType("Automatic");
        public static PersonalDesktopAssignmentType Direct { get; } = new PersonalDesktopAssignmentType("Direct");

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

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

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is PersonalDesktopAssignmentType other && Equals(other);
        public bool Equals(PersonalDesktopAssignmentType 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 type of preferred application group type, default to Desktop Application Group
    /// </summary>
    [EnumType]
    public readonly struct PreferredAppGroupType : IEquatable<PreferredAppGroupType>
    {
        private readonly string _value;

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

        public static PreferredAppGroupType None { get; } = new PreferredAppGroupType("None");
        public static PreferredAppGroupType Desktop { get; } = new PreferredAppGroupType("Desktop");
        public static PreferredAppGroupType RailApplications { get; } = new PreferredAppGroupType("RailApplications");

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

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

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is PreferredAppGroupType other && Equals(other);
        public bool Equals(PreferredAppGroupType 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 type of resetting the token.
    /// </summary>
    [EnumType]
    public readonly struct RegistrationTokenOperation : IEquatable<RegistrationTokenOperation>
    {
        private readonly string _value;

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

        public static RegistrationTokenOperation Delete { get; } = new RegistrationTokenOperation("Delete");
        public static RegistrationTokenOperation None { get; } = new RegistrationTokenOperation("None");
        public static RegistrationTokenOperation Update { get; } = new RegistrationTokenOperation("Update");

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

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

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

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

        public override string ToString() => _value;
    }

    /// <summary>
    /// Resource Type of Application.
    /// </summary>
    [EnumType]
    public readonly struct RemoteApplicationType : IEquatable<RemoteApplicationType>
    {
        private readonly string _value;

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

        public static RemoteApplicationType InBuilt { get; } = new RemoteApplicationType("InBuilt");
        public static RemoteApplicationType MsixApplication { get; } = new RemoteApplicationType("MsixApplication");

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

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

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is RemoteApplicationType other && Equals(other);
        public bool Equals(RemoteApplicationType 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 type of single sign on Secret Type.
    /// </summary>
    [EnumType]
    public readonly struct SSOSecretType : IEquatable<SSOSecretType>
    {
        private readonly string _value;

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

        public static SSOSecretType SharedKey { get; } = new SSOSecretType("SharedKey");
        public static SSOSecretType Certificate { get; } = new SSOSecretType("Certificate");
        public static SSOSecretType SharedKeyInKeyVault { get; } = new SSOSecretType("SharedKeyInKeyVault");
        public static SSOSecretType CertificateInKeyVault { get; } = new SSOSecretType("CertificateInKeyVault");

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

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

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

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

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