import { ITextModel } from "../model.js";
import { OffsetEdit, SingleOffsetEdit } from "./offsetEdit.js";
import { OffsetRange } from "./offsetRange.js";
import { Position } from "./position.js";
import { Range } from "./range.js";
import { SingleTextEdit, TextEdit } from "./textEdit.js";
import { TextLength } from "./textLength.js";
export declare abstract class PositionOffsetTransformerBase {
    abstract getOffset(position: Position): number;
    getOffsetRange(range: Range): OffsetRange;
    abstract getPosition(offset: number): Position;
    getRange(offsetRange: OffsetRange): Range;
    getOffsetEdit(edit: TextEdit): OffsetEdit;
    getSingleOffsetEdit(edit: SingleTextEdit): SingleOffsetEdit;
    getSingleTextEdit(edit: SingleOffsetEdit): SingleTextEdit;
    getTextEdit(edit: OffsetEdit): TextEdit;
}
export declare class PositionOffsetTransformer extends PositionOffsetTransformerBase {
    readonly text: string;
    private readonly lineStartOffsetByLineIdx;
    private readonly lineEndOffsetByLineIdx;
    constructor(text: string);
    getOffset(position: Position): number;
    private _validatePosition;
    getPosition(offset: number): Position;
    getTextLength(offsetRange: OffsetRange): TextLength;
    get textLength(): TextLength;
    getLineLength(lineNumber: number): number;
}
export declare function getPositionOffsetTransformerFromTextModel(textModel: ITextModel): PositionOffsetTransformerBase;
