import { Event } from '@vscode/monaco-editor/esm/vs/base/common/event';
import { IApplyEditsOptions, IEditorPropertiesChangeData, IResolvedTextEditorConfiguration, ITextEditorConfigurationUpdate, IUndoStopOptions, TextEditorRevealType } from '@workbench-stack/extension-api';
import { ICodeEditor } from '@vscode/monaco-editor/esm/vs/editor/browser/editorBrowser';
import { IRange, Range } from '@vscode/monaco-editor/esm/vs/editor/common/core/range';
import { ISelection, Selection } from '@vscode/monaco-editor/esm/vs/editor/common/core/selection';
import * as editorCommon from '@vscode/monaco-editor/esm/vs/editor/common/editorCommon';
import { ISingleEditOperation, ITextModel } from '@vscode/monaco-editor/esm/vs/editor/common/model';
import { IModelService, ICommonEditor } from '@workbench-stack/core';
export interface IFocusTracker {
    onGainedFocus(): void;
    onLostFocus(): void;
}
export declare class MainThreadTextEditorProperties {
    readonly selections: Selection[];
    readonly options: IResolvedTextEditorConfiguration;
    readonly visibleRanges: Range[];
    static readFromEditor(previousProperties: MainThreadTextEditorProperties, model: ITextModel, codeEditor: ICodeEditor): MainThreadTextEditorProperties;
    private static _readSelectionsFromCodeEditor;
    private static _readOptionsFromCodeEditor;
    private static _readVisibleRangesFromCodeEditor;
    constructor(selections: Selection[], options: IResolvedTextEditorConfiguration, visibleRanges: Range[]);
    generateDelta(oldProps: MainThreadTextEditorProperties, selectionChangeSource: string): IEditorPropertiesChangeData;
    private static _selectionsEqual;
    private static _rangesEqual;
    private static _optionsEqual;
}
export declare class MainThreadTextEditor {
    private _id;
    private _model;
    private _modelService;
    private _modelListeners;
    private _codeEditor;
    private _focusTracker;
    private _codeEditorListeners;
    private _properties;
    private readonly _onPropertiesChanged;
    constructor(id: string, model: ITextModel, codeEditor: ICodeEditor, focusTracker: IFocusTracker, modelService: IModelService);
    dispose(): void;
    private _updatePropertiesNow;
    private _setProperties;
    getId(): string;
    getModel(): ITextModel;
    getCodeEditor(): ICodeEditor;
    hasCodeEditor(codeEditor: ICodeEditor): boolean;
    setCodeEditor(codeEditor: ICodeEditor): void;
    isVisible(): boolean;
    getProperties(): MainThreadTextEditorProperties;
    get onPropertiesChanged(): Event<IEditorPropertiesChangeData>;
    setSelections(selections: ISelection[]): void;
    private _setIndentConfiguration;
    setConfiguration(newConfiguration: ITextEditorConfigurationUpdate): void;
    setDecorations(key: string, ranges: editorCommon.IDecorationOptions[]): void;
    setDecorationsFast(key: string, _ranges: number[]): void;
    revealRange(range: IRange, revealType: TextEditorRevealType): void;
    isFocused(): boolean;
    matches(editor: ICommonEditor): boolean;
    applyEdits(versionIdCheck: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): boolean;
    insertSnippet(template: string, ranges: IRange[], opts: IUndoStopOptions): boolean;
}
