<?php

declare(strict_types=1);

namespace App\Module\Core\Domain\Repository;

use App\Shared\Domain\Contract\UserInterface;
use DateTimeInterface;

interface UserRepositoryInterface
{
    public function findById(int $id): ?UserInterface;

    /**
     * @param int[] $ids
     *
     * @return list<UserInterface>
     */
    public function findByIds(array $ids): array;

    /**
     * @return list<UserInterface>
     */
    public function findByRole(string $role): array;

    /**
     * @return list<UserInterface>
     */
    public function findActiveEmployees(DateTimeInterface $date): array;

    public function findOneByUsername(string $username): ?UserInterface;
}
