/**
 * Derive visual line box ranges inside a root element for TTS read-along.
 *
 * Cloud TTS (Polly, Google, etc.) only provides word/sentence character offsets.
 * “Lines” are layout-dependent (wrap, zoom, font size), so we compute them in
 * the browser from the same DOM Range already used for word highlighting.
 */
/**
 * Intersect `range` with the contents of `root` (document order).
 * Returns null if there is no non-empty intersection.
 */
export declare function intersectRangeWithElement(range: Range, root: Element): Range | null;
/**
 * Returns one Range per visual line that intersects `focus`, expanded to the
 * full width of each line within `root`. Falls back to `[intersectedFocus]`
 * when layout or caret APIs are unavailable.
 */
export declare function visualLineRangesForFocusInRoot(root: Element, focus: Range): Range[];
