. */ declare(strict_types=1); namespace FireflyIII\Helpers\Collector; use Carbon\Carbon; use FireflyIII\User; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Collection; /** * Interface GroupCollectorInterface */ interface GroupCollectorInterface { /** * Return the groups. * * @return Collection */ public function getGroups(): Collection; /** * Same as getGroups but everything is in a paginator. * * @return LengthAwarePaginator */ public function getPaginatedGroups(): LengthAwarePaginator; /** * Define which accounts can be part of the source and destination transactions. * * @param Collection $accounts * * @return GroupCollectorInterface */ public function setAccounts(Collection $accounts): GroupCollectorInterface; /** * Limit the number of returned entries. * * @param int $limit * * @return GroupCollectorInterface */ public function setLimit(int $limit): GroupCollectorInterface; /** * Set the page to get. * * @param int $page * * @return GroupCollectorInterface */ public function setPage(int $page): GroupCollectorInterface; /** * Set the start and end time of the results to return. * * @param Carbon $start * @param Carbon $end * * @return GroupCollectorInterface */ public function setRange(Carbon $start, Carbon $end): GroupCollectorInterface; /** * Limit the included transaction types. * * @param array $types * * @return GroupCollectorInterface */ public function setTypes(array $types): GroupCollectorInterface; /** * Set the user object and start the query. * * @param User $user * * @return GroupCollectorInterface */ public function setUser(User $user): GroupCollectorInterface; /** * Will include the source and destination account names and types. * * @return GroupCollectorInterface */ public function withAccountInformation(): GroupCollectorInterface; /** * Include bill name + ID. * * @return GroupCollectorInterface */ public function withBillInformation(): GroupCollectorInterface; /** * Will include budget ID + name, if any. * * @return GroupCollectorInterface */ public function withBudgetInformation(): GroupCollectorInterface; /** * Will include category ID + name, if any. * * @return GroupCollectorInterface */ public function withCategoryInformation(): GroupCollectorInterface; }