. */ declare(strict_types=1); namespace FireflyIII\Repositories\RuleGroup; use FireflyIII\Models\RuleGroup; use FireflyIII\User; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Support\Collection; /** * Interface RuleGroupRepositoryInterface. */ interface RuleGroupRepositoryInterface { /** * Make sure rule group order is correct in DB. */ public function correctRuleGroupOrder(): void; public function count(): int; public function destroy(RuleGroup $ruleGroup, ?RuleGroup $moveTo): bool; /** * Delete everything. */ public function destroyAll(): void; public function find(int $ruleGroupId): ?RuleGroup; public function findByTitle(string $title): ?RuleGroup; /** * Get all rule groups. */ public function get(): Collection; public function getActiveGroups(): Collection; public function getActiveRules(RuleGroup $group): Collection; public function getActiveStoreRules(RuleGroup $group): Collection; public function getActiveUpdateRules(RuleGroup $group): Collection; /** * Also inactive groups. */ public function getAllRuleGroupsWithRules(?string $filter): Collection; public function getHighestOrderRuleGroup(): int; public function getRuleGroupsWithRules(?string $filter): Collection; public function getRules(RuleGroup $group): Collection; /** * Get highest possible order for a rule group. */ public function maxOrder(): int; public function resetOrder(): bool; public function resetRuleOrder(RuleGroup $ruleGroup): bool; public function searchRuleGroup(string $query, int $limit): Collection; public function setOrder(RuleGroup $ruleGroup, int $newOrder): void; public function setUser(null|Authenticatable|User $user): void; public function store(array $data): RuleGroup; public function update(RuleGroup $ruleGroup, array $data): RuleGroup; }