import { PddlSyntaxNode } from "./parser/PddlSyntaxNode";
export declare class PddlPosition {
    readonly line: number;
    readonly character: number;
    constructor(line: number, character: number);
    atOrBefore(other: PddlPosition): boolean;
    toString(): string;
}
/**
 * This is a local version of the vscode Range class, but because the parser is used in both the extension (client)
 * and the language server, where the Range class is defined separately, we need a single proprietary implementation,
 * which is converted to the VS Code class specific to the two distinct client/server environment.
 */
export declare class PddlRange {
    private _start;
    private _end;
    constructor(details: {
        start: PddlPosition;
        end: PddlPosition;
    });
    static createRange(details: {
        startLine: number;
        startCharacter: number;
        endLine: number;
        endCharacter: number;
    }): PddlRange;
    static createSingleCharacterRange(details: {
        line: number;
        character: number;
    }): PddlRange;
    static createSingleLineRange(details: {
        line: number;
        /** Start character */ start: number;
        /** End character */ end?: number;
        /** Length */ length?: number;
    }): PddlRange;
    static createFullLineRange(line: number): PddlRange;
    static createUnknown(): PddlRange;
    includes(positionAtOffset: PddlPosition): boolean;
    get start(): PddlPosition;
    get end(): PddlPosition;
    toString(): string;
}
/**
 * Abstract document position resolve. It translates document text offsets to Position or Range.
 */
export declare abstract class DocumentPositionResolver {
    abstract resolveToPosition(offset: number): PddlPosition;
    abstract resolveToOffset(position: PddlPosition): number;
    resolveToRange(start: number, end: number): PddlRange;
    rangeIncludesOffset(range: PddlRange, offset: number): boolean;
    nodeToRange(node: PddlSyntaxNode): PddlRange;
}
export declare class SimpleDocumentPositionResolver extends DocumentPositionResolver {
    readonly documentText: string;
    private readonly lineLengths;
    constructor(documentText: string);
    resolveToOffset(position: PddlPosition): number;
    resolveToPosition(offset: number): PddlPosition;
}
