import { Position, Range } from '@theia/core/shared/vscode-languageserver-protocol';
import { RecursivePartial } from '@theia/core/lib/common/types';
import * as monaco from '@theia/monaco-editor-core';
import { Selection } from '@theia/editor/lib/browser';
export interface MonacoRangeReplace {
    insert: monaco.IRange;
    replace: monaco.IRange;
}
export declare namespace MonacoRangeReplace {
    function is(v: Partial<monaco.IRange> | MonacoRangeReplace): v is MonacoRangeReplace;
}
export declare class MonacoToProtocolConverter {
    asPosition(lineNumber: undefined | null, column: undefined | null): {};
    asPosition(lineNumber: number, column: undefined | null): Pick<Position, 'line'>;
    asPosition(lineNumber: undefined | null, column: number): Pick<Position, 'character'>;
    asPosition(lineNumber: number, column: number): Position;
    asPosition(lineNumber: number | undefined | null, column: number | undefined | null): Partial<Position>;
    asRange(range: undefined): undefined;
    asRange(range: monaco.IRange): Range;
    asRange(range: monaco.IRange | undefined): Range | undefined;
    asRange(range: monaco.IRange | {
        insert: monaco.IRange;
        replace: monaco.IRange;
    }): Range;
    asRange(range: Partial<monaco.IRange>): RecursivePartial<Range>;
    asRange(range: Partial<monaco.IRange> | undefined): RecursivePartial<Range> | undefined;
    asSelection(selection: monaco.Selection | null): Selection;
}
//# sourceMappingURL=monaco-to-protocol-converter.d.ts.map