using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using PuppeteerSharp.Media;
namespace GestionIntegral.Api.Services.Pdf
{
    /// 
    /// Define las opciones de configuración para la generación de un PDF.
    /// 
    public class PdfGenerationOptions
    {
        public PaperFormat? Format { get; set; } = PaperFormat.A4;
        public MarginOptions? Margin { get; set; }
        public string? HeaderTemplate { get; set; }
        public string? FooterTemplate { get; set; }
        public bool PrintBackground { get; set; } = true;
        public bool Landscape { get; set; } = false;
    }
    /// 
    /// Servicio para generar documentos PDF a partir de plantillas Razor.
    /// 
    public interface IPdfGeneratorService
    {
        /// 
        /// Genera un archivo PDF a partir de una plantilla Razor y un modelo de datos.
        /// 
        /// El tipo del modelo de datos.
        /// La ruta relativa de la plantilla Razor (ej: "Controllers/Reportes/Templates/MiReporte.cshtml").
        /// El objeto con los datos para rellenar la plantilla.
        /// Opciones de configuración para el PDF (márgenes, formato, etc.).
        /// Un array de bytes representando el archivo PDF generado.
        Task GeneratePdfFromRazorTemplateAsync(string templatePath, T model, PdfGenerationOptions? options = null);
    }
}