using DocumentService.Application.Common.DTOs;
namespace DocumentService.Application.Common.Interfaces;
///
/// Defines PDF digital-signing operations for the application boundary.
///
public interface IPdfDigitalSignatureService
{
///
/// Creates a digital signature for the provided PDF bytes and returns
/// a new signed PDF document.
///
/// Source PDF content stream.
/// Destination stream for signed PDF output.
/// Optional signing options that map to PDF signature metadata fields.
/// Optional image stream for signature appearance.
/// Cancellation token for cooperative cancellation.
Task SignPdfAsync(Stream inputPdf, Stream outputPdf, PdfSignOptionsDto? options = null, Stream? image = null, CancellationToken cancellationToken = default);
///
/// Checks whether the provided PDF contains signature field(s) and whether
/// those signatures are cryptographically valid.
///
/// PDF content stream to inspect.
/// Cancellation token for cooperative cancellation.
/// A structured result containing signature presence and per-signature details.
Task CheckPdfSignatureAsync(Stream inputPdf, CancellationToken cancellationToken = default);
}