<?php

declare(strict_types=1);

namespace App\Repository\Contract;

use App\Entity\Absence;
use App\Entity\Employee;
use DateTimeImmutable;
use DateTimeInterface;

interface AbsenceReadRepositoryInterface
{
    /**
     * @param list<Employee> $employees
     *
     * @return list<Absence>
     */
    public function findForPrint(DateTimeImmutable $from, DateTimeImmutable $to, array $employees): array;

    /**
     * @param list<Employee> $employees
     *
     * @return list<Absence>
     */
    public function findByDateAndEmployees(DateTimeImmutable $date, array $employees): array;

    /**
     * @return list<Absence>
     */
    public function findByEmployeeAndDateRange(Employee $employee, DateTimeInterface $from, DateTimeInterface $to): array;
}
