<?php

declare(strict_types=1);

namespace App\Module\Sites\Application\Service;

use App\Module\Sites\Domain\Entity\Site;

/**
 * Contrat de resolution du site courant pour l'outillage opt-in
 * "site-aware" (ticket 4 module Sites).
 *
 * Facilite le test de l'extension et du processor en permettant un mock
 * sans dependre de l'implementation concrete (qui garde `final` pour
 * l'immutabilite du service en prod).
 *
 * Retourne `null` dans trois cas (cf. CurrentSiteProvider) :
 *  - module Sites desactive dans config/modules.php
 *  - pas d'user authentifie
 *  - user sans currentSite positionne
 */
interface CurrentSiteProviderInterface
{
    public function get(): ?Site;
}
