<?php

declare(strict_types=1);

namespace App\Administration\Application\Port;

use App\Administration\Application\Dto\PaginatedResult;
use App\Administration\Application\Query\GetStudentsImageRights\StudentImageRightsDto;

/**
 * Read-model port for paginated student image rights queries (CQRS read side).
 *
 * @phpstan-type Result = PaginatedResult<StudentImageRightsDto>
 */
interface PaginatedStudentImageRightsReader
{
    /**
     * @return PaginatedResult<StudentImageRightsDto>
     */
    public function findPaginated(
        string $tenantId,
        ?string $status,
        ?string $search,
        int $page,
        int $limit,
    ): PaginatedResult;

    /**
     * Returns all students (no pagination) for export purposes.
     *
     * @return StudentImageRightsDto[]
     */
    public function findAll(
        string $tenantId,
        ?string $status,
    ): array;
}
