using DocumentService.Application.Common.DTOs;
namespace DocumentService.Client.Interfaces;
///
/// Orchestrated multi-step workflows that combine multiple DocumentService operations into
/// a single, higher-level call. Prefer these over manually chaining individual clients.
///
public interface IWorkflowsClient
{
///
/// Validates the PDF and extracts its Swiss QR Code in a single call.
/// Validation runs first; extraction is only attempted on valid documents.
///
/// PDF file as byte array.
///
/// false (default) – returns a parsed object.
/// true – returns raw QR text lines without parsing.
///
///
/// true (default) – throws when the PDF fails validation.
/// false – returns null instead, allowing the caller to handle the case without a try/catch.
///
/// Cancellation token.
///
/// Swiss QR Code extraction result, or null if the document is invalid and
/// is false.
///
///
/// Thrown when the PDF fails validation and is true.
///
Task ExtractSwissQrCodeValidatedAsync(
byte[] pdfBytes,
bool raw = false,
bool throwIfInvalid = true,
CancellationToken cancellationToken = default);
///
/// PDF file as a stream.
///
///
/// Cancellation token.
Task ExtractSwissQrCodeValidatedAsync(
Stream pdfStream,
bool raw = false,
bool throwIfInvalid = true,
CancellationToken cancellationToken = default);
///
/// Absolute or relative path to the PDF file.
///
///
/// Cancellation token.
Task ExtractSwissQrCodeValidatedAsync(
string filePath,
bool raw = false,
bool throwIfInvalid = true,
CancellationToken cancellationToken = default);
}