import { PageStyles } from './styles.js';
import { DomPainterInput, PageDecorationProvider, PaintSnapshot, PositionMapping, RulerOptions, FlowMode } from './renderer.js';
export { DOM_CLASS_NAMES } from './constants.js';
export type { DomClassName } from './constants.js';
export { generateRulerDefinition, generateRulerDefinitionFromPx, createRulerElement, ensureRulerStyles, clampHandlePosition, calculateMarginFromHandle, RULER_CLASS_NAMES, } from './ruler/index.js';
export type { RulerDefinition, RulerConfig, RulerConfigPx, RulerTick, CreateRulerElementOptions, } from './ruler/index.js';
export type { RulerOptions } from './renderer.js';
export type { PaintSnapshot, PaintSnapshotAnnotationEntity, PaintSnapshotStructuredContentBlockEntity, PaintSnapshotStructuredContentInlineEntity, PaintSnapshotImageEntity, PaintSnapshotEntities, } from './renderer.js';
export type { DomPainterInput, PositionMapping } from './renderer.js';
export type { RenderedLineInfo } from './runs/index.js';
export { sanitizeUrl, linkMetrics, applyRunDataAttributes } from './runs/index.js';
export { applySquareWrapExclusionsToLines } from './utils/anchor-helpers.js';
export { buildImagePmSelector, buildInlineImagePmSelector } from './images/image-selectors.js';
export { assertPmPositions, assertFragmentPmPositions, validateRenderedElement, logValidationSummary, resetValidationStats, getValidationStats, globalValidationStats, } from './pm-position-validation.js';
export type { PmPositionValidationStats } from './pm-position-validation.js';
export type LayoutMode = 'vertical' | 'horizontal' | 'book';
export type { FlowMode } from './renderer.js';
export type { PageDecorationPayload, PageDecorationProvider } from './renderer.js';
export type DomPainterOptions = {
    pageStyles?: PageStyles;
    layoutMode?: LayoutMode;
    flowMode?: FlowMode;
    /** Gap between pages in pixels (default: 24px for vertical, 20px for horizontal) */
    pageGap?: number;
    headerProvider?: PageDecorationProvider;
    footerProvider?: PageDecorationProvider;
    /**
     * Feature-flagged page virtualization.
     * When enabled (vertical mode only), the painter renders only a sliding window of pages
     * with top/bottom spacers representing offscreen content height.
     */
    virtualization?: {
        enabled?: boolean;
        /** Max number of pages in DOM at any time. Default: 5 */
        window?: number;
        /** Extra pages to render before/after the window (per side). Default: 0 */
        overscan?: number;
        /**
         * Gap between pages used for spacer math (px). When set, container gap is overridden
         * to this value during virtualization. Defaults to the effective `pageGap`.
         */
        gap?: number;
        /** Optional mount padding-top override (px) used in scroll mapping; defaults to computed style. */
        paddingTop?: number;
    };
    /**
     * Per-page ruler options.
     * When enabled, renders a horizontal ruler at the top of each page showing
     * inch marks and optionally margin handles for interactive margin adjustment.
     */
    ruler?: RulerOptions;
    /** Called with the paint snapshot after each paint cycle completes. */
    onPaintSnapshot?: (snapshot: PaintSnapshot) => void;
    /** Render nonprinting formatting marks such as spaces, tabs, and paragraph marks. */
    showFormattingMarks?: boolean;
    /** Built-in SDT chrome rendering mode. */
    contentControlsChrome?: 'default' | 'none';
};
export type DomPainterHandle = {
    paint(input: DomPainterInput, mount: HTMLElement, mapping?: PositionMapping): void;
    setProviders(header?: PageDecorationProvider, footer?: PageDecorationProvider): void;
    setVirtualizationPins(pageIndices: number[] | null | undefined): void;
    getMountedPageIndices(): number[];
    onScroll(): void;
    setZoom(zoom: number): void;
    setScrollContainer(el: HTMLElement | null): void;
    setShowFormattingMarks(showFormattingMarks: boolean): void;
};
/**
 * Thin pass-through factory: instantiates DomPainter with the supplied options
 * and returns a stable handle that exposes only the rendering-stage API.
 *
 * The handle accepts only `DomPainterInput` (resolvedLayout-only).
 * Header/footer decoration providers must supply both `fragments` and `items`
 * on their `PageDecorationPayload`.
 */
export declare const createDomPainter: (options: DomPainterOptions) => DomPainterHandle;
//# sourceMappingURL=index.d.ts.map