import { Text } from "../../doc/src"; import { ChangedRange } from "../../state/src"; import { DecorationSet } from "./decoration"; import { Viewport } from "./viewport"; export declare class HeightOracle { doc: Text; lineWrapping: boolean; heightSamples: { [key: number]: boolean; }; lineHeight: number; charWidth: number; lineLength: number; heightChanged: boolean; heightForGap(from: number, to: number): number; heightForLine(length: number): number; setDoc(doc: Text): this; mustRefresh(lineHeights: number[]): boolean; refresh(whiteSpace: string, lineHeight: number, charWidth: number, lineLength: number, knownHeights: number[]): boolean; } export declare class MeasuredHeights { readonly from: number; readonly heights: number[]; index: number; constructor(from: number, heights: number[]); readonly more: boolean; } export declare class LineHeight { readonly start: number; readonly end: number; readonly top: number; readonly height: number; readonly line: HeightMapLine | null; constructor(start: number, end: number, top: number, height: number, line: HeightMapLine | null); readonly bottom: number; readonly textTop: number; readonly textBottom: number; readonly hasCollapsedRanges: boolean; } export declare abstract class HeightMap { length: number; height: number; outdated: boolean; constructor(length: number, // The number of characters covered height: number, // Height of this part of the document outdated?: boolean); abstract size: number; abstract heightAt(pos: number, doc: Text, bias?: -1 | 1, offset?: number): number; abstract lineAt(height: number, doc: Text, offset?: number): LineHeight; abstract lineViewport(pos: number, doc: Text, offset?: number): Viewport; abstract decomposeLeft(to: number, target: HeightMap[], node: HeightMap, oracle: HeightOracle, newTo: number): void; abstract decomposeRight(to: number, target: HeightMap[], node: HeightMap, oracle: HeightOracle, newFrom: number): void; abstract updateHeight(oracle: HeightOracle, offset?: number, force?: boolean, measured?: MeasuredHeights): HeightMap; abstract toString(): void; abstract forEachLine(from: number, to: number, offset: number, oracle: HeightOracle, f: (height: LineHeight) => void): void; setHeight(oracle: HeightOracle, height: number): void; replace(from: number, to: number, nodes: HeightMap[], oracle: HeightOracle, newFrom: number, newTo: number): HeightMap; applyChanges(decorations: ReadonlyArray, oracle: HeightOracle, changes: ReadonlyArray): HeightMap; static empty(): HeightMapLine; static of(nodes: HeightMap[]): HeightMap; } declare class HeightMapLine extends HeightMap { deco: number[]; constructor(length: number, height: number, deco?: number[]); readonly size: number; heightAt(pos: number, doc: Text, bias: 1 | -1): number; lineAt(height: number, doc: Text, offset?: number): LineHeight; lineViewport(pos: number, doc: Text, offset?: number): Viewport; replace(from: number, to: number, nodes: HeightMap[], oracle: HeightOracle, newFrom: number, newTo: number): HeightMap; decomposeLeft(to: number, target: HeightMap[], node: HeightMap, oracle: HeightOracle, newTo: number): void; decomposeRight(from: number, target: HeightMap[], node: HeightMap, oracle: HeightOracle, newFrom: number): void; joinLine(from: number, to: number, node: HeightMapLine): HeightMap; updateHeight(oracle: HeightOracle, offset?: number, force?: boolean, measured?: MeasuredHeights): this; toString(): string; forEachLine(from: number, to: number, offset: number, oracle: HeightOracle, f: (height: LineHeight) => void): void; readonly hasCollapsedRanges: boolean; } export {};