namespace SIGCM2.Application.Products.Pricing;

/// <summary>
/// PRD-003 — Servicio de consulta de precio vigente de un Product para una fecha civil (Cat2).
/// Contrato forward para PRC-001 (tasación).
///
/// Retorna null si no existe historial de precios para el producto en la fecha indicada.
/// La política de fallback (usar Product.BasePrice o lanzar ProductSinPrecioActivoException)
/// queda en el consumidor (OQ-B: Product.BasePrice es ortogonal a ProductPrices).
/// </summary>
public interface IProductPricingService
{
    /// <summary>
    /// Devuelve el precio cuya ventana [PriceValidFrom, PriceValidTo] cubre la fecha civil dada,
    /// o null si ningún registro de precio cubre esa fecha.
    /// </summary>
    Task<decimal?> GetPriceAtAsync(int productId, DateOnly date, CancellationToken ct = default);
}
