<?php

namespace MintyPHP\Repository\Audit;

interface UserLifecycleAuditRepositoryInterface
{
    public function create(array $row): int|false;

    public function updateStatus(int $id, string $status, ?string $reasonCode = null): bool;

    public function listPaged(array $filters): array;

    public function listFilterOptions(int $limit = 200): array;

    public function find(int $id): ?array;

    public function findDeleteEventForRestore(int $id, bool $forUpdate = false): ?array;

    public function markRestored(int $id, int $restoredBy, int $restoredUserId): bool;

    public function purgeOlderThanDays(int $days): int;
}
