using OtpNet; namespace EnvelopeGenerator.Application.Contracts { public interface IAuthenticator { string GenerateCode(int length); string GenerateTotpSecretKey(int? length = null); byte[] GenerateTotpQrCode(string userEmail, string secretKey, string? issuer = null, string? totpUrlFormat = null, int? pixelsPerModule = null); byte[] GenerateTotpQrCode(string userEmail, int? length = null, string? issuer = null, string? totpUrlFormat = null, int? pixelsPerModule = null); string GenerateTotp(string secretKey, int step = 30); bool VerifyTotp(string totpCode, string secretKey, int step = 30, VerificationWindow? window = null); } }