import { Event } from "../../../../base/common/event.js";
import { DisposableStore } from "../../../../base/common/lifecycle.js";
import { URI } from "../../../../base/common/uri.js";
import { IEditor, IDiffEditor } from "../../../../editor/common/editorCommon.js";
import { IResourceEditorInput, ITextResourceEditorInput, IEditorOptions, IResourceEditorInputIdentifier } from "../../../../platform/editor/common/editor.js";
import { IEditorWillOpenEvent, IEditorCloseEvent, IVisibleEditorPane, EditorsOrder, IEditorIdentifier, GroupIdentifier, IEditorPane, IUntitledTextResourceEditorInput, ITextResourceDiffEditorInput, IResourceDiffEditorInput, ITextDiffEditorPane, IUntypedEditorInput, IFindEditorOptions, IRevertOptions } from "../../../common/editor.js";
import { EditorInput } from "../../../common/editor/editorInput.js";
import { IEditorGroup, ICloseEditorOptions, IEditorGroupsContainer } from "./editorGroupsService.js";
import { IEditorsChangeEvent, SIDE_GROUP_TYPE, ACTIVE_GROUP_TYPE, AUX_WINDOW_GROUP_TYPE, IOpenEditorsOptions, IUntypedEditorReplacement, ISaveEditorsOptions, ISaveEditorsResult, ISaveAllEditorsOptions, IRevertAllEditorsOptions } from "./editorService.js";
export declare const IEditorService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IEditorService>;
export interface IEditorService {
    readonly _serviceBrand: undefined;
    readonly onDidActiveEditorChange: Event<void>;
    readonly onDidVisibleEditorsChange: Event<void>;
    readonly onDidEditorsChange: Event<IEditorsChangeEvent>;
    readonly onWillOpenEditor: Event<IEditorWillOpenEvent>;
    readonly onDidCloseEditor: Event<IEditorCloseEvent>;
    readonly activeEditorPane: IVisibleEditorPane | undefined;
    readonly activeEditor: EditorInput | undefined;
    readonly activeTextEditorControl: IEditor | IDiffEditor | undefined;
    readonly activeTextEditorLanguageId: string | undefined;
    readonly visibleEditorPanes: readonly IVisibleEditorPane[];
    readonly visibleEditors: readonly EditorInput[];
    readonly visibleTextEditorControls: readonly (IEditor | IDiffEditor)[];
    getVisibleTextEditorControls(order: EditorsOrder): readonly (IEditor | IDiffEditor)[];
    readonly editors: readonly EditorInput[];
    readonly count: number;
    getEditors(order: EditorsOrder, options?: {
        excludeSticky?: boolean;
    }): readonly IEditorIdentifier[];
    openEditor(editor: IResourceEditorInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | AUX_WINDOW_GROUP_TYPE): Promise<IEditorPane | undefined>;
    openEditor(editor: ITextResourceEditorInput | IUntitledTextResourceEditorInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | AUX_WINDOW_GROUP_TYPE): Promise<IEditorPane | undefined>;
    openEditor(editor: ITextResourceDiffEditorInput | IResourceDiffEditorInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | AUX_WINDOW_GROUP_TYPE): Promise<ITextDiffEditorPane | undefined>;
    openEditor(editor: IUntypedEditorInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | AUX_WINDOW_GROUP_TYPE): Promise<IEditorPane | undefined>;
    openEditor(editor: EditorInput, options?: IEditorOptions, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | AUX_WINDOW_GROUP_TYPE): Promise<IEditorPane | undefined>;
    openEditors(editors: IUntypedEditorInput[], group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | AUX_WINDOW_GROUP_TYPE, options?: IOpenEditorsOptions): Promise<readonly IEditorPane[]>;
    replaceEditors(replacements: IUntypedEditorReplacement[], group: IEditorGroup | GroupIdentifier): Promise<void>;
    isOpened(editor: IResourceEditorInputIdentifier): boolean;
    isVisible(editor: EditorInput): boolean;
    closeEditor(editor: IEditorIdentifier, options?: ICloseEditorOptions): Promise<void>;
    closeEditors(editors: readonly IEditorIdentifier[], options?: ICloseEditorOptions): Promise<void>;
    findEditors(resource: URI, options?: IFindEditorOptions): readonly IEditorIdentifier[];
    findEditors(editor: IResourceEditorInputIdentifier, options?: IFindEditorOptions): readonly IEditorIdentifier[];
    save(editors: IEditorIdentifier | IEditorIdentifier[], options?: ISaveEditorsOptions): Promise<ISaveEditorsResult>;
    saveAll(options?: ISaveAllEditorsOptions): Promise<ISaveEditorsResult>;
    revert(editors: IEditorIdentifier | IEditorIdentifier[], options?: IRevertOptions): Promise<boolean>;
    revertAll(options?: IRevertAllEditorsOptions): Promise<boolean>;
    createScoped(editorGroupsContainer: IEditorGroupsContainer | "main", disposables: DisposableStore): IEditorService;
}
