/** * Composites neutral grey (128,128,128) over each ignoredRegion (fractional * 0-1 coordinates) so masked content — timestamps, live counters, ads — * contributes nothing to any downstream pixel comparison. Shared by every * comparison path (whole-image hash, per-cell grid hash, AI vision) so a * region masked once is actually ignored everywhere, not just in the * cheapest check. */ export declare function applyMask(imagePath: string, ignoredRegions: Array<{ x: number; y: number; width: number; height: number; }>): Promise; /** * Generates a pixelmatch diff image highlighting changed pixels in red. * Applies the same ignoredRegions mask as screenshotDiffPercent so masked * zones don't show as "changed" in the visual output. * Returns a PNG Buffer suitable for upload to S3. */ export declare function generatePixelmatchDiff(pathA: string, pathB: string, ignoredRegions?: Array<{ x: number; y: number; width: number; height: number; }>): Promise; export declare function screenshotDiffPercent(pathA: string, pathB: string, ignoredRegions?: Array<{ x: number; y: number; width: number; height: number; }>): Promise<{ pHashDistance: number; changeLevel: 'IDENTICAL' | 'MINOR' | 'MODERATE' | 'SIGNIFICANT'; }>; /** * Grid-based layout analysis: divides screenshots into a 3×3 grid and computes * pHash per cell. Returns which regions changed and where, for the VisualDiff.changes field. * Uses sharp's `extract` to crop each cell before hashing. */ export declare function gridLayoutDiff(pathA: string, pathB: string, ignoredRegions?: Array<{ x: number; y: number; width: number; height: number; }>): Promise>;