import * as monaco from 'monaco-editor';
import { Interval, ReadonlyInterval, Prefer } from './types';
type Callback = (intervals: readonly ReadonlyInterval[]) => void;
export declare function SynchronizedIntervals(editor: monaco.editor.ICodeEditor, isMethod: boolean): {
    readonly buffer: Interval[];
    exclude: (startLine: number, startColumn: number, endLine: number, endColumn: number) => void;
    attach: (callback: Callback) => void;
    detach: (callback: Callback) => void;
    dispose: () => void;
    show: () => void;
    hide: () => void;
};
export declare function copyIntervals(intervals: Interval[]): Interval[];
/**
 * @param {Interval} interval
 * @param {Interval[]} excludedIntervals
 * @param {Prefer} prefer - used in case the whole interval is excluded.
 *  - if `prefer` is 0 then the interval is deleted.
 *  - if `prefer` is -1 then the interval placed at the beginning of the interval which excludes it.
 *  - if `prefer` is +1 then the interval placed at the end of the interval which excludes it
 */
export declare function excludeIntervals(interval: Interval, excludedIntervals: Interval[], prefer: Prefer): Interval[];
export {};
