using ROLAC.API.Entities;

namespace ROLAC.API.Services.Disbursement;

/// <summary>Data needed to render one printed check (header + ledger stub lines).</summary>
public class CheckPrintModel
{
    public ChurchProfile Issuer  { get; set; } = null!;
    public Check         Check   { get; set; } = null!;
    public List<CheckLine> Lines { get; set; } = [];
    public string        AmountInWords { get; set; } = "";

    // Captured receipt e-signature, populated only when rendering a signed receipt.
    public byte[]?       SignatureImage       { get; set; }
    public string        SignatureContentType { get; set; } = "image/png";
}

public interface ICheckPrintService
{
    /// <summary>Renders the 8.5"x11" check (check + two ledger stubs) to a PDF stream.</summary>
    Task<Stream> RenderPdfAsync(CheckPrintModel model);

    /// <summary>
    /// Renders a receipt PDF acknowledging a signed check: check info, the disbursement
    /// detail lines, and the embedded e-signature image with the signer name and timestamp.
    /// </summary>
    Task<Stream> RenderReceiptPdfAsync(CheckPrintModel model);
}
