<filename>sdk/dotnet/Tailnet/Enums.cs// *** 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.TailscaleNative.Tailnet
{
    [EnumType]
    public readonly struct AclRuleAction : IEquatable<AclRuleAction>
    {
        private readonly string _value;

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

        public static AclRuleAction Accept { get; } = new AclRuleAction("accept");

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

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

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is AclRuleAction other && Equals(other);
        public bool Equals(AclRuleAction 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 SshRuleAction : IEquatable<SshRuleAction>
    {
        private readonly string _value;

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

        public static SshRuleAction Check { get; } = new SshRuleAction("check");
        public static SshRuleAction Accept { get; } = new SshRuleAction("accept");

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

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

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

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

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