import { IPosition, Position } from "./position.js";
export interface IRange {
    readonly startLineNumber: number;
    readonly startColumn: number;
    readonly endLineNumber: number;
    readonly endColumn: number;
}
export declare class Range {
    readonly startLineNumber: number;
    readonly startColumn: number;
    readonly endLineNumber: number;
    readonly endColumn: number;
    constructor(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number);
    isEmpty(): boolean;
    static isEmpty(range: IRange): boolean;
    containsPosition(position: IPosition): boolean;
    static containsPosition(range: IRange, position: IPosition): boolean;
    static strictContainsPosition(range: IRange, position: IPosition): boolean;
    containsRange(range: IRange): boolean;
    static containsRange(range: IRange, otherRange: IRange): boolean;
    strictContainsRange(range: IRange): boolean;
    static strictContainsRange(range: IRange, otherRange: IRange): boolean;
    plusRange(range: IRange): Range;
    static plusRange(a: IRange, b: IRange): Range;
    intersectRanges(range: IRange): Range | null;
    static intersectRanges(a: IRange, b: IRange): Range | null;
    equalsRange(other: IRange | null | undefined): boolean;
    static equalsRange(a: IRange | null | undefined, b: IRange | null | undefined): boolean;
    getEndPosition(): Position;
    static getEndPosition(range: IRange): Position;
    getStartPosition(): Position;
    static getStartPosition(range: IRange): Position;
    toString(): string;
    setEndPosition(endLineNumber: number, endColumn: number): Range;
    setStartPosition(startLineNumber: number, startColumn: number): Range;
    collapseToStart(): Range;
    static collapseToStart(range: IRange): Range;
    collapseToEnd(): Range;
    static collapseToEnd(range: IRange): Range;
    delta(lineCount: number): Range;
    static fromPositions(start: IPosition, end?: IPosition): Range;
    static lift(range: undefined | null): null;
    static lift(range: IRange): Range;
    static lift(range: IRange | undefined | null): Range | null;
    static isIRange(obj: any): obj is IRange;
    static areIntersectingOrTouching(a: IRange, b: IRange): boolean;
    static areIntersecting(a: IRange, b: IRange): boolean;
    static compareRangesUsingStarts(a: IRange | null | undefined, b: IRange | null | undefined): number;
    static compareRangesUsingEnds(a: IRange, b: IRange): number;
    static spansMultipleLines(range: IRange): boolean;
    toJSON(): IRange;
}
