export interface TextRange { readonly start: number; readonly length: number; } export declare namespace TextRange { function create(start: number, length: number): TextRange; function fromBounds(start: number, end: number): TextRange; function getEnd(range: TextRange): number; function contains(range: TextRange, position: number): boolean; function containsRange(range: TextRange, span: TextRange): boolean; function overlaps(range: TextRange, position: number): boolean; function overlapsRange(range: TextRange, other: TextRange): boolean; function extend(range: TextRange, extension: TextRange): TextRange; function combine(ranges: TextRange[]): TextRange | undefined; } export interface Position { line: number; character: number; } export declare namespace Position { function print(value: Position): string; } export interface Range { start: Position; end: Position; } export declare namespace Range { function print(value: Range): string; } export declare function comparePositions(a: Position, b: Position): 1 | -1 | 0; export declare function getEmptyPosition(): Position; export declare function doRangesOverlap(a: Range, b: Range): boolean; export declare function doRangesIntersect(a: Range, b: Range): boolean; export declare function isPositionInRange(range: Range, position: Position): boolean; export declare function isRangeInRange(range: Range, containedRange: Range): boolean; export declare function positionsAreEqual(a: Position, b: Position): boolean; export declare function rangesAreEqual(a: Range, b: Range): boolean; export declare function getEmptyRange(): Range; export declare function isEmptyPosition(pos: Position): boolean; export declare function isEmptyRange(range: Range): boolean; export declare function extendRange(range: Range, extension: Range): void; export declare function combineRange(ranges: Range[]): Range | undefined;