<?php
declare(strict_types=1);

namespace ROITheme\Shared\Domain\Contracts;

/**
 * Contrato para obtener el contexto de la pagina actual
 *
 * Abstrae la obtencion de datos del contexto actual (WordPress).
 * Permite testear UseCases sin dependencia de WordPress.
 *
 * v1.1: Renombrado de ExclusionEvaluatorInterface (nombre semantico incorrecto)
 *       El nombre refleja que PROVEE contexto, no que EVALUA.
 *
 * Metodos: 1 (cumple ISP < 5 metodos)
 *
 * @package ROITheme\Shared\Domain\Contracts
 */
interface PageContextProviderInterface
{
    /**
     * Obtiene el contexto actual para evaluacion de exclusiones
     *
     * @return array{
     *     post_id: int,
     *     categories: array<array{term_id: int, slug: string, name: string}>,
     *     url: string,
     *     request_uri: string,
     *     post_type: string
     * }
     */
    public function getCurrentContext(): array;
}
