import type { PdfElement } from '../../models/PdfElement.js'; /** * Element-level geometry and type helpers shared by the screenshot and page * continuity heuristics. Pure functions with no I/O so they can be unit-tested * without rendering a PDF. */ export interface NormalizedBox { top: number; left: number; width: number; height: number; } /** * Normalize a bounding box (array or object form) to { top, left, width, height }. * Mirrors the historical PdfCleanComposer behaviour (uses `||` fallbacks) so the * existing cleaning/cover paths keep the exact same numbers. */ export declare function normalizeBoundingBox(boundingBox: any): NormalizedBox; export declare function isImageElement(element: PdfElement): boolean; /** * Broad text test used by screenshot detection: paragraph / heading / text or an * h1..h6 tag. Matches the original PdfCleanComposer.isTextElement. */ export declare function isTextElement(element: PdfElement): boolean; export declare function boundingBoxArea(element: PdfElement): number; /** * Spread of an image cluster across the page (0-1), the minimum of the width and * height coverage of the union bounding box. High only when images are spread in * BOTH dimensions, which distinguishes a tiled cover from a single banner. */ export declare function computeImageDistribution(imageElements: PdfElement[], pageWidth: number, pageHeight: number): { distributionScore: number; widthCoverage: number; heightCoverage: number; }; //# sourceMappingURL=elementUtils.d.ts.map