import * as monaco from 'monaco-editor';
/**
 * Exctract ranges between startToken and endToken
 */
export declare function extractRangesFromTokens(editor: monaco.editor.ICodeEditor, startToken: string, endToken: string, isRegex?: boolean): monaco.Range[];
export interface LockCodeOptions {
    /**
     * Error message displayed in a tooltip when an edit failed
     */
    errorMessage?: string;
    /**
     * Allows edit coming from a specific source
     */
    allowChangeFromSources: string[];
    /**
     * Only take some decorations into account
     */
    decorationFilter: (decoration: monaco.editor.IModelDecoration) => boolean;
    /**
     * if true: when an edit block comes, either all the edit are applied or none
     */
    transactionMode?: boolean;
    /**
     * Should undo/redo be ignored
     */
    allowUndoRedo?: boolean;
}
export declare function lockCodeWithDecoration(editor: monaco.editor.ICodeEditor, lockOptions: LockCodeOptions): monaco.IDisposable;
export declare function lockCodeWithoutDecoration(editor: monaco.editor.ICodeEditor, lockOptions: LockCodeOptions): monaco.IDisposable;
export declare function hideCodeWithoutDecoration(editor: monaco.editor.ICodeEditor, decorationFilter: (decoration: monaco.editor.IModelDecoration) => boolean): monaco.IDisposable;
/**
 * Collapse everything from ranges
 */
export declare function collapseCodeSectionsFromRanges(editor: monaco.editor.ICodeEditor, ranges: monaco.IRange[]): Promise<void>;
/**
 * Collapse everything between startToken and endToken
 */
export declare function collapseCodeSections(editor: monaco.editor.ICodeEditor, startToken: string, endToken: string, isRegex?: boolean): Promise<void>;
interface IDecorationProvider {
    provideDecorations(model: monaco.editor.ITextModel): monaco.editor.IModelDeltaDecoration[];
}
export declare function registerTextDecorationProvider(provider: IDecorationProvider): monaco.IDisposable;
export declare function runOnAllEditors(cb: (editor: monaco.editor.ICodeEditor) => monaco.IDisposable): monaco.IDisposable;
export declare function preventAlwaysConsumeTouchEvent(editor: monaco.editor.ICodeEditor): void;
export declare function mapClipboard(editor: monaco.editor.ICodeEditor, { toClipboard, fromClipboard }: {
    toClipboard: (data: string) => string;
    fromClipboard: (data: string) => string;
}): monaco.IDisposable;
export {};
