using System.Runtime.Serialization;
using System.Text.Json.Serialization;
using ProtonVPN.OperatingSystems.WebAuthn.Serialization;
namespace ProtonVPN.OperatingSystems.WebAuthn.Enums;
///
/// Defines hints as to how clients might communicate with a particular authenticator in order to obtain an assertion for a specific credential.
///
/// https://www.w3.org/TR/webauthn/#enum-transport
[Flags]
[JsonConverter(typeof(JsonCustomEnumConverter))]
public enum AuthenticatorTransport : uint
{
///
/// No transport restrictions.
///
[EnumMember(Value = "NULL")]
#pragma warning disable CA1008 // Enums should have zero value
NoRestrictions = 0,
#pragma warning restore CA1008 // Enums should have zero value
///
/// Universal Serial Bus (USB).
///
/// Corresponds to WEBAUTHN_CTAP_TRANSPORT_USB.
[EnumMember(Value = "usb")]
USB = PInvoke.WEBAUTHN_CTAP_TRANSPORT_USB,
///
/// Near Field Communication (NFC).
///
/// Corresponds to WEBAUTHN_CTAP_TRANSPORT_NFC.
[EnumMember(Value = "nfc")]
NFC = PInvoke.WEBAUTHN_CTAP_TRANSPORT_NFC,
///
/// Bluetooth Low Energy (BLE).
///
/// Corresponds to WEBAUTHN_CTAP_TRANSPORT_BLE.
[EnumMember(Value = "ble")]
BLE = PInvoke.WEBAUTHN_CTAP_TRANSPORT_BLE,
///
/// Hybrid Transport (QR Code).
///
/// Corresponds to WEBAUTHN_CTAP_TRANSPORT_HYBRID.
[EnumMember(Value = "hybrid")]
Hybrid = PInvoke.WEBAUTHN_CTAP_TRANSPORT_HYBRID,
/// Corresponds to WEBAUTHN_CTAP_TRANSPORT_TEST.
Test = PInvoke.WEBAUTHN_CTAP_TRANSPORT_TEST,
///
/// Client device-specific transport.
///
/// Corresponds to WEBAUTHN_CTAP_TRANSPORT_INTERNAL.
[EnumMember(Value = "internal")]
Internal = PInvoke.WEBAUTHN_CTAP_TRANSPORT_INTERNAL
}