. */ declare(strict_types=1); namespace FireflyIII\Repositories\Recurring; use Carbon\Carbon; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\Recurrence; use FireflyIII\Models\RecurrenceRepetition; use FireflyIII\User; use Illuminate\Support\Collection; /** * Interface RecurringRepositoryInterface * * @package FireflyIII\Repositories\Recurring */ interface RecurringRepositoryInterface { /** * Returns all of the user's recurring transactions. * * @return Collection */ public function getActive(): Collection; /** * Get the notes. * * @param Recurrence $recurrence * * @return string */ public function getNoteText(Recurrence $recurrence): string; /** * Generate events in the date range. * * @param RecurrenceRepetition $repetition * @param Carbon $start * @param Carbon $end * * @throws FireflyException * * @return array */ public function getOccurrencesInRange(RecurrenceRepetition $repetition, Carbon $start, Carbon $end): array; /** * Calculate the next X iterations starting on the date given in $date. * Returns an array of Carbon objects. * * @param RecurrenceRepetition $repetition * @param Carbon $date * @param int $count * * @throws FireflyException * @return array */ public function getXOccurrences(RecurrenceRepetition $repetition, Carbon $date, int $count): array; /** * Parse the repetition in a string that is user readable. * * @param RecurrenceRepetition $repetition * * @return string */ public function repetitionDescription(RecurrenceRepetition $repetition): string; /** * Set user for in repository. * * @param User $user */ public function setUser(User $user): void; /** * @param array $data * * @throws FireflyException * @return Recurrence */ public function store(array $data): Recurrence; }