<?php

namespace MintyPHP\Repository\User;

/** Contract for read-only user lookups by ID, UUID, email, and authorization snapshots. */
interface UserReadRepositoryInterface
{
    public function findAuthzSnapshot(int $userId): ?array;

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

    public function findByUuid(string $uuid): ?array;

    public function findByEmail(string $email): ?array;

    public function listPrivilegedUserIdsByPermissionKeys(array $permissionKeys): array;

    public function listIdsForAutoDeactivate(int $days, array $excludedUserIds, int $limit = 500): array;

    public function listIdsForAutoDelete(int $days, array $excludedUserIds, int $limit = 500): array;
}
