<?php

declare(strict_types=1);

namespace App\Administration\Application\Port;

use App\Administration\Domain\Model\SchoolCalendar\CalendarEntry;
use App\Administration\Domain\Model\SchoolCalendar\SchoolZone;

/**
 * Port pour fournir les données officielles du calendrier scolaire.
 */
interface OfficialCalendarProvider
{
    /**
     * Retourne les jours fériés officiels pour une année académique.
     *
     * @return CalendarEntry[]
     */
    public function joursFeries(string $academicYear): array;

    /**
     * Retourne les vacances scolaires pour une zone et une année académique.
     *
     * @return CalendarEntry[]
     */
    public function vacancesParZone(SchoolZone $zone, string $academicYear): array;

    /**
     * Retourne toutes les entrées officielles (fériés + vacances) pour une zone.
     *
     * @return CalendarEntry[]
     */
    public function toutesEntreesOfficielles(SchoolZone $zone, string $academicYear): array;
}
