import { LayoutRect } from '../../../dom-observer/DomSelectionGeometry.js';
export type VisibleTextOffsetGeometryOptions = {
    containers: HTMLElement[];
    zoom: number;
    pageHeight: number;
    pageGap: number;
};
/**
 * Measures a visible-text offset within a DOM root from a concrete DOM boundary.
 *
 * This is used for note overlays because `EditorView.domAtPos()` can resolve the
 * active note selection to the correct hidden-editor DOM boundary even when the
 * ProseMirror position lands inside tracked-change wrapper structure. Measuring the
 * boundary as visible text gives us a stable bridge from the hidden editor DOM to
 * the painted note DOM.
 */
export declare function measureVisibleTextOffset(root: HTMLElement, boundaryNode: Node, boundaryOffset: number): number | null;
export declare function measureVisibleTextOffsetInContainers(containers: readonly HTMLElement[], boundaryNode: Node, boundaryOffset: number): number | null;
export declare function resolveVisibleTextBoundary(containers: readonly HTMLElement[], textOffset: number, affinity?: 'forward' | 'backward'): {
    node: Text;
    offset: number;
} | null;
export declare function computeCaretRectFromVisibleTextOffset(options: VisibleTextOffsetGeometryOptions, textOffset: number): LayoutRect | null;
export declare function computeSelectionRectsFromVisibleTextOffsets(options: VisibleTextOffsetGeometryOptions, fromOffset: number, toOffset: number): LayoutRect[] | null;
//# sourceMappingURL=VisibleTextOffsetGeometry.d.ts.map