using System.Collections.Specialized;
namespace SimpleOTP.DependencyInjection;
///
/// Provides options for the One-Time Password service.
///
public class OtpOptions
{
///
/// The name of the issuer.
///
public required string Issuer { get; set; }
///
/// The issuer domain.
///
///
/// IMPORTANT: Using this property will imply adherence to the Apple specification.
///
public string? IssuerDomain { get; set; }
///
/// The algorithm to use.
///
public OtpAlgorithm Algorithm { get; set; } = OtpAlgorithm.SHA1;
///
/// The number of digits in the OTP code.
///
public int Digits { get; set; } = 6;
///
/// The number of seconds between each OTP code.
///
public int Period { get; set; } = 30;
///
/// The type of One-Time Password to generate.
///
public OtpType Type { get; set; } = OtpType.Totp;
///
/// The format of OTP URIs.
///
public OtpUriFormat UriFormat { get; set; } = OtpUriFormat.Google | OtpUriFormat.Minimal;
///
/// The tolerance span for the OTP codes validation.
///
public ToleranceSpan ToleranceSpan { get; set; } = ToleranceSpan.Default;
///
/// Custom properties to place in OTP URIs.
///
public NameValueCollection CustomProperties { get; } = [];
}