<?php

declare(strict_types=1);

namespace App\Shared\Domain\Contract;

/**
 * Contrat minimal pour acceder a un site depuis un module qui n'est pas Sites.
 *
 * Permet a du code Core/Shared (commandes de seed, fixtures, etc.) de
 * recuperer un Site par son nom sans importer directement depuis le module
 * Sites — ce qui violerait la regle "jamais d'import direct entre modules"
 * (cf. CLAUDE.md section "Regles d'architecture").
 *
 * Implementation concrete : App\Module\Sites\Infrastructure\Doctrine\DoctrineSiteRepository
 * (via SiteRepositoryInterface qui etend ce contrat).
 */
interface SiteProviderInterface
{
    public function findByName(string $name): ?SiteInterface;
}
