import { type PdfFontInput, type PreparedEmbeddedFont } from "./font-embedding.js"; import { type PdfRenderableText, type PdfRenderedPage } from "./pdf-renderer.js"; import type { PdfGraphic } from "./phase4-types.js"; import type { PdfPhase3DividerNode, PdfDocumentPhase3, PdfPhase3ContainerNode, PdfPhase3HeadingNode, PdfPhase3Link, PdfPhase3Margins, PdfPhase3Node, PdfPhase3ParagraphNode, PdfPhase3PreformattedNode } from "./phase3-types.js"; export interface PreparedPhase3Fonts { embedded: Map; measureCache: Map; } export interface NormalizedPhase3Document { children: PdfPhase3Node[]; meta: NonNullable; page: { height: number; margins: PdfPhase3Margins; width: number; }; } interface TextLineLayout { ascent: number; direction: "auto" | "ltr" | "rtl"; font: PdfFontInput; fontSize: number; height: number; lineHeight: number; spaceCount: number; text: string; textAlign: "center" | "justify" | "left" | "right"; width: number; wordSpacing: number; x: number; } export interface TextBlockLayout { boxHeight: number; boxWidth: number; height: number; lines: TextLineLayout[]; marginBottom: number; marginLeft: number; marginRight: number; marginTop: number; paddingBottom: number; paddingLeft: number; paddingRight: number; paddingTop: number; } export interface ContainerLayout { anchors: Array<{ height: number; id: string; left: number; top: number; width: number; }>; boxHeight: number; height: number; marginBottom: number; marginLeft: number; marginRight: number; marginTop: number; texts: Array & { ascent: number; id?: string; kind: "heading" | "paragraph" | "preformatted"; level?: 1 | 2 | 3 | 4 | 5 | 6; link?: PdfPhase3Link; top: number; x: number; }>; graphics: Array<{ bottom: number; graphic: PdfGraphic; top: number; }>; width: number; } export interface Phase3LinePlacement { blockId?: string; kind: "heading" | "paragraph" | "preformatted"; level?: 1 | 2 | 3 | 4 | 5 | 6; link?: PdfPhase3Link; pageIndex: number; rect: [number, number, number, number]; text: string; } export interface Phase3AnchorPlacement { id: string; kind: "container" | "heading" | "paragraph"; level?: 1 | 2 | 3 | 4 | 5 | 6; pageIndex: number; rect: [number, number, number, number]; title?: string; } export declare const MAX_CONTAINER_DEPTH = 100; export declare const DEFAULT_DIVIDER_COLOR: { space: "rgb"; r: number; g: number; b: number; }; export declare function isTextNode(node: PdfPhase3Node): node is PdfPhase3HeadingNode | PdfPhase3ParagraphNode | PdfPhase3PreformattedNode; export declare function normalizePhase3Document(document: PdfDocumentPhase3): NormalizedPhase3Document; export declare function preparePhase3Fonts(document: PdfDocumentPhase3): Promise; export declare function layoutContainerNode(node: PdfPhase3ContainerNode, availableWidth: number, fonts: PreparedPhase3Fonts): Promise; export declare function layoutTopLevelTextNode(node: PdfPhase3HeadingNode | PdfPhase3ParagraphNode | PdfPhase3PreformattedNode, availableWidth: number, fonts: PreparedPhase3Fonts): Promise; export declare function resolveDividerLayout(node: PdfPhase3DividerNode, availableWidth: number): { boxHeight: number; marginBottom: number; marginLeft: number; marginRight: number; marginTop: number; strokeWidth: number; width: number; }; export declare function analyzePhase3Document(document: PdfDocumentPhase3): Promise<{ meta: NonNullable; page: NormalizedPhase3Document["page"]; pages: PdfRenderedPage[]; }>; export declare function analyzePhase3DocumentDetailed(document: PdfDocumentPhase3): Promise<{ anchors: Phase3AnchorPlacement[]; linePlacements: Phase3LinePlacement[]; meta: NonNullable; page: NormalizedPhase3Document["page"]; pages: PdfRenderedPage[]; }>; export declare function renderPhase3Document(document: PdfDocumentPhase3): Promise; export {}; //# sourceMappingURL=phase3-render.d.ts.map