. */ declare(strict_types=1); namespace FireflyIII\Repositories\UserGroups\Account; use FireflyIII\Models\Account; use FireflyIII\Models\TransactionCurrency; use FireflyIII\User; use Illuminate\Support\Collection; /** * Interface AccountRepositoryInterface */ interface AccountRepositoryInterface { /** * @param User $user * * @return void */ public function setUser(User $user): void; /** * @param int $accountId * * @return Account|null */ public function find(int $accountId): ?Account; /** * @param string $name * @param array $types * * @return Account|null */ public function findByName(string $name, array $types): ?Account; /** * @param Account $account * * @return TransactionCurrency|null */ public function getAccountCurrency(Account $account): ?TransactionCurrency; /** * @param array $accountIds * * @return Collection */ public function getAccountsById(array $accountIds): Collection; /** * @param array $types * @param array|null $sort * * @return Collection */ public function getAccountsByType(array $types, ?array $sort = []): Collection; /** * @param array $types * * @return Collection */ public function getActiveAccountsByType(array $types): Collection; /** * Return meta value for account. Null if not found. * * @param Account $account * @param string $field * * @return null|string */ public function getMetaValue(Account $account, string $field): ?string; /** * @param string $query * @param array $types * @param int $limit * * @return Collection */ public function searchAccount(string $query, array $types, int $limit): Collection; }