import type { jsPDF as JsPdf } from 'jspdf'; import { type WorkPdfStyledTextRun } from './work-pdf-vector-text'; /** One extractable PDF text run in page-local CSS pixels (origin: page top-left). */ export interface WorkPdfTextRun { fontSize: number; height: number; text: string; width: number; x: number; y: number; } export interface WorkPdfPageBounds { height: number; left: number; top: number; width: number; } export interface WorkPdfPagePoints { pageHeightPoints: number; pageWidthPoints: number; } /** * Maps measured client rectangles into page-local PDF text runs. Rectangles * outside the page, empty text, or glyphs the active PDF font set cannot encode * are omitted (fail soft) rather than inventing geometry. */ export declare function workPdfTextRunsFromClientRects(text: string, rects: ReadonlyArray<{ height: number; left: number; top: number; width: number; }>, page: WorkPdfPageBounds, fontSize: number): WorkPdfTextRun[]; /** * Collects searchable Latin text from a live capture root that has already been * positioned for one physical page. Missing layout geometry yields no runs. * Color and font style travel with each run for vector paint. */ export declare function collectWorkPdfTextRuns(root: HTMLElement, page: WorkPdfPageBounds): WorkPdfStyledTextRun[]; /** * Invisible Helvetica overlay for search/select. Prefer * {@link appendWorkPdfVectorTextLayer} after clearing raster text regions for * production export; this helper remains for encoding regression tests. */ export declare function appendWorkPdfInvisibleTextLayer(pdf: JsPdf, runs: readonly WorkPdfTextRun[], pageCss: Pick, pagePoints: WorkPdfPagePoints): void;