using Codecrete.SwissQRBill.Generator;
namespace DocumentOperator.Application.Common.Interfaces;
///
/// Interface for Swiss QR Code processing operations.
/// Extracts and parses Swiss QR Codes from PDF documents.
///
public interface ISwissQrCodeProcessor
{
///
/// Extracts and parses Swiss QR Code from a PDF document.
/// Returns both parsed Bill object and raw QR text lines.
///
/// PDF document as byte array
/// Optional: Specific page numbers to scan (1-indexed). If null, scans all pages starting with last page.
/// Cancellation token
/// Tuple: (Parsed Codecrete Bill, Raw QR lines as string array)
///
/// Thrown when no Swiss QR Code is found in the specified pages
///
///
/// Thrown when PDF processing fails
///
Task<(Bill Bill, string[] RawLines)> ExtractSwissQrCodeAsync(
byte[] pdfBytes,
int[]? pageNumbers = null,
CancellationToken cancellationToken = default);
}