<?php

declare(strict_types=1);

namespace App\Shared\Domain\Contract;

/**
 * Contrat de LECTURE de l'identité, consommé hors du module Core.
 * Les écritures (setPassword, setters HR…) restent sur le concret Core\Domain\Entity\User.
 */
interface UserInterface
{
    public function getId(): ?int;

    public function getUserIdentifier(): string;

    public function getUsername(): ?string;

    /** @return list<string> */
    public function getRoles(): array;

    public function getFirstName(): ?string;

    public function getLastName(): ?string;

    public function getAvatarUrl(): ?string;

    public function getIsEmployee(): bool;

    /** @return list<string> */
    public function getEffectivePermissions(): array;
}
