using DysonNetwork.Shared.Models; using MagicOnion; namespace DysonNetwork.Shared.Services; public interface IAccountService : IService { /// /// Removes all cached data for the specified account /// Task PurgeAccountCache(Account account); /// /// Looks up an account by username or contact information /// /// Username or contact information to search for /// The matching account if found, otherwise null Task LookupAccount(string probe); /// /// Looks up an account by external authentication provider connection /// /// The provider's unique identifier for the user /// The name of the authentication provider /// The matching account if found, otherwise null Task LookupAccountByConnection(string identifier, string provider); /// /// Gets the account level for the specified account ID /// /// The ID of the account /// The account level if found, otherwise null Task GetAccountLevel(Guid accountId); /// /// Creates a new account with the specified details /// /// The account username /// The display name/nickname /// The primary email address /// The account password (optional, can be set later) /// The preferred language (defaults to en-US) /// Whether the email is verified (defaults to false) /// Whether the account is activated (defaults to false) /// The newly created account Task CreateAccount( string name, string nick, string email, string? password, string language = "en-US", bool isEmailVerified = false, bool isActivated = false ); /// /// Creates a new account using OpenID Connect user information /// /// The OpenID Connect user information /// The newly created account Task CreateAccount(OidcUserInfo userInfo); }