using Managing.Domain.Accounts; using Managing.Domain.Users; using static Managing.Common.Enums; namespace Managing.Application.Abstractions.Services; public interface IAccountService { Task CreateAccount(User user, Account account); bool DeleteAccount(User user, string name); IEnumerable GetAccountsByUser(User user, bool hideSecrets = true); Task> GetAccountsByUserAsync(User user, bool hideSecrets = true, bool getBalance = false); Task> GetAccounts(bool hideSecrets, bool getBalance); Task> GetAccountsAsync(bool hideSecrets, bool getBalance); Task GetAccount(string name, bool hideSecrets, bool getBalance); public Task GetAccountByUser(User user, string name, bool hideSecrets, bool getBalance); public Task GetAccountByKey(string key, bool hideSecrets, bool getBalance); /// /// Gets an account by name directly from the repository. /// /// The name of the account to find /// Whether to hide sensitive information /// Whether to fetch the current balance /// The found account or null if not found Task GetAccountByAccountName(string accountName, bool hideSecrets = true, bool getBalance = false); IEnumerable GetAccountsBalancesByUser(User user, bool hideSecrets = true); Task> GetAccountsBalancesByUserAsync(User user, bool hideSecrets = true); Task GetGmxClaimableSummaryAsync(User user, string accountName); Task SwapGmxTokensAsync(User user, string accountName, Ticker fromTicker, Ticker toTicker, double amount, string orderType = "market", double? triggerRatio = null, double allowedSlippage = 0.5); Task SendTokenAsync(User user, string accountName, string recipientAddress, Ticker ticker, decimal amount, int? chainId = null); }