using DocumentService.Client.Models.Requests; namespace DocumentService.Client.Interfaces; /// /// Client for PDF operations (merge, annotate, stamp). /// public interface IPdfOperationsClient { // ==================== MERGE OPERATIONS ==================== /// /// Merges multiple PDFs (multipart). /// /// PDF file streams to merge /// Optional page ranges per PDF (e.g., "1-3,5") /// Cancellation token /// Merged PDF as stream Task MergeAsync(IEnumerable pdfStreams, List? pageRanges = null, CancellationToken cancellationToken = default); /// /// Merges multiple PDFs (Base64). /// /// PDF files as byte arrays /// Optional page ranges per PDF (e.g., "1-3,5") /// Cancellation token /// Merged PDF as stream Task MergeAsync(IEnumerable pdfByteArrays, List? pageRanges = null, CancellationToken cancellationToken = default); // ==================== ANNOTATION OPERATIONS ==================== /// /// Adds annotation to PDF (multipart). /// /// PDF file stream /// Annotation request with coordinates and style /// Cancellation token /// Annotated PDF as stream Task AnnotateAsync(Stream pdfStream, AddAnnotationBase64Request request, CancellationToken cancellationToken = default); /// /// Adds annotation to PDF (Base64). /// /// PDF file as byte array /// Annotation request with coordinates and style /// Cancellation token /// Annotated PDF as stream Task AnnotateAsync(byte[] pdfBytes, AddAnnotationBase64Request request, CancellationToken cancellationToken = default); // ==================== STAMP OPERATIONS ==================== /// /// Adds stamp to PDF (multipart). /// /// PDF file stream /// Stamp request with position and style /// Cancellation token /// Stamped PDF as stream Task StampAsync(Stream pdfStream, AddStampBase64Request request, CancellationToken cancellationToken = default); /// /// Adds stamp to PDF (Base64). /// /// PDF file as byte array /// Stamp request with position and style /// Cancellation token /// Stamped PDF as stream Task StampAsync(byte[] pdfBytes, AddStampBase64Request request, CancellationToken cancellationToken = default); }