namespace DocumentOperator.Application.Common.DTOs;

/// <summary>
/// PDF/A validation result including conformance level and validation errors/warnings
/// </summary>
public record PdfAValidationResult
{
    /// <summary>
    /// Whether the PDF is valid (no errors)
    /// </summary>
    public bool IsValid { get; init; }

    /// <summary>
    /// PDF version (e.g., "1.4", "1.7")
    /// </summary>
    public string PdfVersion { get; init; } = string.Empty;

    /// <summary>
    /// Number of pages in the PDF
    /// </summary>
    public int PageCount { get; init; }

    /// <summary>
    /// File size in bytes
    /// </summary>
    public long FileSize { get; init; }

    /// <summary>
    /// Whether the PDF is encrypted
    /// </summary>
    public bool Encrypted { get; init; }

    /// <summary>
    /// PDF/A version (e.g., "PDF/A-1b", "PDF/A-2a", "PDF/A-3u") or null if not PDF/A compliant
    /// </summary>
    public string? PdfAVersion { get; init; }

    /// <summary>
    /// Whether the PDF conforms to PDF/A standard
    /// </summary>
    public bool PdfACompliant { get; init; }

    /// <summary>
    /// Validation errors (e.g., "PDF/A documents cannot be encrypted")
    /// </summary>
    public IReadOnlyList<string> Errors { get; init; } = [];

    /// <summary>
    /// Validation warnings (e.g., "Manual verification recommended: All fonts must be embedded")
    /// </summary>
    public IReadOnlyList<string> Warnings { get; init; } = [];
}
