using Managing.Domain.Accounts;
using Managing.Domain.Users;

namespace Managing.Application.Abstractions.Services;

public interface IAccountService
{
    Task<Account> CreateAccount(User user, Account account);
    bool DeleteAccount(User user, string name);
    IEnumerable<Account> GetAccountsByUser(User user, bool hideSecrets = true);
    IEnumerable<Account> GetAccounts(bool hideSecrets, bool getBalance);
    Task<Account> GetAccount(string name, bool hideSecrets, bool getBalance);
    Task<Account> GetAccountByUser(User user, string name, bool hideSecrets, bool getBalance);
    Task<Account> GetAccountByKey(string key, bool hideSecrets, bool getBalance);
    IEnumerable<Account> GetAccountsBalancesByUser(User user, bool hideSecrets = true);
}