import { type VisualThreshold } from './thresholds.js'; export type ComparePngImagesInput = { expectedPath: string; actualPath: string; diffPath?: string; threshold?: VisualThreshold; strict?: boolean; }; export type ImageDimensions = { width: number; height: number; }; export type VisualDiffCategory = 'dimension-mismatch' | 'broad-framing-or-layout' | 'localized-change' | 'sparse-text-or-antialiasing' | 'color-or-token-drift'; export type VisualDiffBoundingBox = { x: number; y: number; width: number; height: number; }; export type VisualDiffDiagnostics = { summary: string; categories: VisualDiffCategory[]; boundingBox?: VisualDiffBoundingBox; changedAreaRatio?: number; density?: number; colorDelta?: { average: number; max: number; }; distribution?: { horizontal: { left: number; center: number; right: number; }; vertical: { top: number; middle: number; bottom: number; }; }; likelyCauses: string[]; }; export type ImageDiffResult = { status: 'pass' | 'warn' | 'fail'; classification: 'visual-match' | 'visual-diff' | 'visual-dimension-mismatch'; width?: number; height?: number; expected: ImageDimensions; actual: ImageDimensions; diffPixels: number; diffRatio: number; dimensionMismatch: boolean; threshold?: VisualThreshold; thresholdReason?: 'maxDiffPixels' | 'maxDiffPixelRatio'; diffPath?: string; diagnostics?: VisualDiffDiagnostics; }; export declare function comparePngImages(input: ComparePngImagesInput): Promise; export declare function formatVisualDiagnosticsDetails(diagnostics: VisualDiffDiagnostics | undefined): string | undefined;