using System.Globalization; using NodaTime; using DysonNetwork.Pass.Features.Auth; using DysonNetwork.Pass.Features.Auth.OpenId; using DysonNetwork.Common.Models; namespace DysonNetwork.Pass.Features.Account.Interfaces; public interface IAccountService { static void SetCultureInfo(Models.Account account) { } static void SetCultureInfo(string? languageCode) { } Task PurgeAccountCache(Models.Account account); Task LookupAccount(string probe); Task LookupAccountByConnection(string identifier, string provider); Task GetAccountLevel(Guid accountId); Task CreateAccount( string name, string nick, string email, string? password, string language = "en-US", bool isEmailVerified = false, bool isActivated = false ); Task CreateAccount(OidcUserInfo userInfo); Task RequestAccountDeletion(Models.Account account); Task RequestPasswordReset(Models.Account account); Task CheckAuthFactorExists(Models.Account account, AccountAuthFactorType type); Task CreateAuthFactor(Models.Account account, AccountAuthFactorType type, string? secret); Task EnableAuthFactor(AccountAuthFactor factor, string? code); Task DisableAuthFactor(AccountAuthFactor factor); Task DeleteAuthFactor(AccountAuthFactor factor); Task SendFactorCode(Models.Account account, AccountAuthFactor factor, string? hint = null); Task VerifyFactorCode(AccountAuthFactor factor, string code); Task UpdateSessionLabel(Models.Account account, Guid sessionId, string label); Task DeleteSession(Models.Account account, Guid sessionId); Task CreateContactMethod(Models.Account account, AccountContactType type, string content); Task VerifyContactMethod(Models.Account account, AccountContact contact); Task SetContactMethodPrimary(Models.Account account, AccountContact contact); Task DeleteContactMethod(Models.Account account, AccountContact contact); Task GrantBadge(Models.Account account, Badge badge); Task RevokeBadge(Models.Account account, Guid badgeId); Task ActiveBadge(Models.Account account, Guid badgeId); Task EnsureAccountProfileCreated(); }