using General_Ledger_Service.DTOs.Bank; using General_Ledger_Service.DTOs.Common; namespace General_Ledger_Service.Interfaces.Services { public interface IBankService { Task CreateBankAccountAsync(CreateBankAccountRequest request); Task ImportStatementLinesAsync(long bankAccountId, Stream fileStream); Task ReconcileStatementLineAsync(long stmtLineId, ReconcileStatementLineRequest request); Task ListCashAndBankAccountsAsync(string? accountType); Task CreateCashAccountAsync(CreateCashAccountRequest request); Task ListCashAccountTypesAsync(); /// Renames a cash account — the only field a default cash account allows changing. Task UpdateCashAccountAsync(long cashAccountId, UpdateCashAccountRequest request); /// Activates/deactivates a cash account. Throws if deactivating the default one. Task SetCashAccountStatusAsync(long cashAccountId, SetCashAccountStatusRequest request); /// Deletes a cash account. Throws if it is the default one. Task DeleteCashAccountAsync(long cashAccountId); } }