. */ declare(strict_types=1); namespace FireflyIII\Repositories\Rule; use FireflyIII\Models\Rule; use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleTrigger; use FireflyIII\User; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Support\Collection; /** * Interface RuleRepositoryInterface. */ interface RuleRepositoryInterface { public function count(): int; public function destroy(Rule $rule): bool; public function duplicate(Rule $rule): Rule; public function find(int $ruleId): ?Rule; /** * Get all the users rules. */ public function getAll(): Collection; public function getFirstRuleGroup(): RuleGroup; public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup): int; public function getPrimaryTrigger(Rule $rule): string; public function getRuleActions(Rule $rule): Collection; public function getRuleTriggers(Rule $rule): Collection; /** * Return search query for rule. */ public function getSearchQuery(Rule $rule): string; /** * Get all the users rules that trigger on storage. */ public function getStoreRules(): Collection; /** * Get all the users rules that trigger on update. */ public function getUpdateRules(): Collection; public function maxOrder(RuleGroup $ruleGroup): int; public function moveRule(Rule $rule, RuleGroup $ruleGroup, int $order): Rule; public function resetRuleOrder(RuleGroup $ruleGroup): bool; public function searchRule(string $query, int $limit): Collection; public function setOrder(Rule $rule, int $newOrder): void; public function setUser(null|Authenticatable|User $user): void; public function store(array $data): Rule; public function storeAction(Rule $rule, array $values): RuleAction; public function storeTrigger(Rule $rule, array $values): RuleTrigger; public function update(Rule $rule, array $data): Rule; }