type WrappedText = string[];
type Position = {
    line: number;
    column: number;
};
export declare class Cursor {
    readonly measuredText: MeasuredText;
    readonly selection: number;
    readonly offset: number;
    constructor(measuredText: MeasuredText, offset?: number, selection?: number);
    static fromText(text: string, columns: number, offset?: number, selection?: number): Cursor;
    render(cursorChar: string, mask: string, invert: (text: string) => string): string;
    left(): Cursor;
    right(): Cursor;
    up(): Cursor;
    down(): Cursor;
    startOfLine(): Cursor;
    endOfLine(): Cursor;
    nextWord(): Cursor;
    prevWord(): Cursor;
    private modifyText;
    insert(insertString: string): Cursor;
    del(): Cursor;
    backspace(): Cursor;
    deleteToLineStart(): Cursor;
    deleteToLineEnd(): Cursor;
    deleteWordBefore(): Cursor;
    deleteWordAfter(): Cursor;
    private isOverWordChar;
    equals(other: Cursor): boolean;
    private isAtStart;
    private isAtEnd;
    get text(): string;
    private get columns();
    private getPosition;
    private getOffset;
}
export declare class MeasuredText {
    readonly text: string;
    readonly columns: number;
    private wrappedLines;
    constructor(text: string, columns: number);
    private measureWrappedText;
    getWrappedText(): WrappedText;
    private getLine;
    getOffsetFromPosition(position: Position): number;
    getLineLength(line: number): number;
    getPositionFromOffset(offset: number): Position;
    get lineCount(): number;
    equals(other: MeasuredText): boolean;
}
export {};
