. */ declare(strict_types=1); namespace FireflyIII\Repositories\Account; use Carbon\Carbon; use FireflyIII\Models\Account; use FireflyIII\Models\TransactionJournal; use FireflyIII\User; use Illuminate\Support\Collection; /** * Interface AccountRepositoryInterface. */ interface AccountRepositoryInterface { /** * Moved here from account CRUD. * * @param array $types * * @return int */ public function count(array $types): int; /** * Moved here from account CRUD. * * @param Account $account * @param Account $moveTo * * @return bool */ public function destroy(Account $account, Account $moveTo): bool; /** * @param int $accountId * * @return Account */ public function find(int $accountId): Account; /** * @param string $number * @param array $types * * @return Account */ public function findByAccountNumber(string $number, array $types): Account; /** * @param string $iban * @param array $types * * @return Account */ public function findByIban(string $iban, array $types): Account; /** * @param string $name * @param array $types * * @return Account */ public function findByName(string $name, array $types): Account; /** * @param array $accountIds * * @return Collection */ public function getAccountsById(array $accountIds): Collection; /** * @param array $types * * @return Collection */ public function getAccountsByType(array $types): Collection; /** * @param array $types * * @return Collection */ public function getActiveAccountsByType(array $types): Collection; /** * @return Account */ public function getCashAccount(): Account; /** * Returns the date of the very last transaction in this account. * * @param Account $account * * @return Carbon */ public function newestJournalDate(Account $account): Carbon; /** * Returns the date of the very first transaction in this account. * * @param Account $account * * @return TransactionJournal */ public function oldestJournal(Account $account): TransactionJournal; /** * Returns the date of the very first transaction in this account. * * @param Account $account * * @return Carbon */ public function oldestJournalDate(Account $account): Carbon; /** * @param User $user */ public function setUser(User $user); /** * @param array $data * * @return Account */ public function store(array $data): Account; /** * @param Account $account * @param array $data * * @return Account */ public function update(Account $account, array $data): Account; }