import { EditorGroupLayout, GroupDirection, GroupOrientation, GroupsArrangement, GroupsOrder, IAuxiliaryEditorPart, IEditorGroupContextKeyProvider, IEditorDropTargetDelegate, IEditorSideGroup, IEditorWorkingSet, IFindGroupScope, IMergeGroupOptions, IEditorWorkingSetOptions, IEditorPart, IModalEditorPart, IEditorGroupActivationEvent } from "../../../services/editor/common/editorGroupsService.js";
import { IEditorGroupsService } from "../../../services/editor/common/editorGroupsService.service.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { GroupIdentifier, IEditorPartOptions } from "../../../common/editor.js";
import { EditorPart, IEditorPartUIState, MainEditorPart } from "./editorPart.js";
import { IEditorGroupView, IEditorPartsView } from "./editor.js";
import { IInstantiationService } from "../../../../platform/instantiation/common/instantiation.js";
import { IAuxiliaryEditorPartOpenOptions } from "./auxiliaryEditorPart.js";
import { MultiWindowParts } from "../../part.js";
import { IStorageService } from "../../../../platform/storage/common/storage.service.js";
import { IThemeService } from "../../../../platform/theme/common/themeService.service.js";
import { IAuxiliaryWindowOpenOptions } from "../../../services/auxiliaryWindow/browser/auxiliaryWindowService.js";
import { IAuxiliaryWindowService } from "../../../services/auxiliaryWindow/browser/auxiliaryWindowService.service.js";
import { ContextKeyValue, IContextKey, RawContextKey } from "../../../../platform/contextkey/common/contextkey.js";
import { IContextKeyService } from "../../../../platform/contextkey/common/contextkey.service.js";
import { DeepPartial } from "../../../../base/common/types.js";
import { IModalEditorPartOptions } from "../../../../platform/editor/common/editor.js";
interface IEditorPartsUIState {
    readonly auxiliary: IAuxiliaryEditorPartState[];
    readonly mru: number[];
}
interface IAuxiliaryEditorPartState extends IAuxiliaryWindowOpenOptions {
    readonly state: IEditorPartUIState;
}
interface IModalEditorPartState {
    readonly maximized: boolean;
    readonly size?: {
        readonly width: number;
        readonly height: number;
    };
    readonly position?: {
        readonly left: number;
        readonly top: number;
    };
}
interface IEditorPartsMemento {
    "editorparts.state"?: IEditorPartsUIState;
    "editorparts.modalState"?: IModalEditorPartState;
}
export declare class EditorParts extends MultiWindowParts<EditorPart, IEditorPartsMemento> implements IEditorGroupsService, IEditorPartsView {
    protected readonly instantiationService: IInstantiationService;
    private readonly storageService;
    private readonly auxiliaryWindowService;
    private readonly contextKeyService;
    readonly _serviceBrand: undefined;
    readonly mainPart: MainEditorPart;
    private mostRecentActiveParts;
    constructor(instantiationService: IInstantiationService, storageService: IStorageService, themeService: IThemeService, auxiliaryWindowService: IAuxiliaryWindowService, contextKeyService: IContextKeyService);
    private registerListeners;
    protected createMainEditorPart(): MainEditorPart;
    private readonly mapPartToInstantiationService;
    private modalPartInstantiationService;
    getScopedInstantiationService(part: IEditorPart): IInstantiationService;
    private readonly _onDidCreateAuxiliaryEditorPart;
    readonly onDidCreateAuxiliaryEditorPart: import("../../../../base/common/event.js").Event<IAuxiliaryEditorPart>;
    createAuxiliaryEditorPart(options?: IAuxiliaryEditorPartOpenOptions): Promise<IAuxiliaryEditorPart>;
    private modalEditorPart;
    get activeModalEditorPart(): IModalEditorPart | undefined;
    private modalEditorMaximized;
    private modalEditorSize;
    private modalEditorPosition;
    createModalEditorPart(options?: IModalEditorPartOptions): Promise<IModalEditorPart>;
    registerPart(part: EditorPart): IDisposable;
    protected unregisterPart(part: EditorPart): void;
    private registerEditorPartListeners;
    private doUpdateMostRecentActive;
    private getGroupsLabel;
    protected getPartByDocument(document: Document): EditorPart;
    getPart(group: IEditorGroupView | GroupIdentifier): EditorPart;
    getPart(element: HTMLElement): EditorPart;
    private static readonly EDITOR_PARTS_UI_STATE_STORAGE_KEY;
    private static readonly MODAL_EDITOR_STATE_STORAGE_KEY;
    private readonly workspaceMemento;
    private readonly profileMemento;
    private _isReady;
    get isReady(): boolean;
    private readonly whenReadyPromise;
    readonly whenReady: Promise<void>;
    private readonly whenRestoredPromise;
    readonly whenRestored: Promise<void>;
    private restoreParts;
    private loadState;
    protected saveState(): void;
    private saveModalState;
    private createState;
    private restoreState;
    get hasRestorableState(): boolean;
    private onDidChangeMementoState;
    private applyState;
    private static readonly EDITOR_WORKING_SETS_STORAGE_KEY;
    private editorWorkingSets;
    saveWorkingSet(name: string): IEditorWorkingSet;
    getWorkingSets(): IEditorWorkingSet[];
    deleteWorkingSet(workingSet: IEditorWorkingSet): void;
    applyWorkingSet(workingSet: IEditorWorkingSet | "empty", options?: IEditorWorkingSetOptions): Promise<boolean>;
    private indexOfWorkingSet;
    private saveWorkingSets;
    private readonly _onDidActiveGroupChange;
    readonly onDidChangeActiveGroup: import("../../../../base/common/event.js").Event<IEditorGroupView>;
    private readonly _onDidAddGroup;
    readonly onDidAddGroup: import("../../../../base/common/event.js").Event<IEditorGroupView>;
    private readonly _onDidRemoveGroup;
    readonly onDidRemoveGroup: import("../../../../base/common/event.js").Event<IEditorGroupView>;
    private readonly _onDidMoveGroup;
    readonly onDidMoveGroup: import("../../../../base/common/event.js").Event<IEditorGroupView>;
    private readonly _onDidActivateGroup;
    readonly onDidActivateGroup: import("../../../../base/common/event.js").Event<IEditorGroupActivationEvent>;
    private readonly _onDidChangeGroupIndex;
    readonly onDidChangeGroupIndex: import("../../../../base/common/event.js").Event<IEditorGroupView>;
    private readonly _onDidChangeGroupLocked;
    readonly onDidChangeGroupLocked: import("../../../../base/common/event.js").Event<IEditorGroupView>;
    private readonly _onDidChangeGroupMaximized;
    readonly onDidChangeGroupMaximized: import("../../../../base/common/event.js").Event<boolean>;
    get activeGroup(): IEditorGroupView;
    get sideGroup(): IEditorSideGroup;
    get groups(): IEditorGroupView[];
    get count(): number;
    getGroups(order?: GroupsOrder): IEditorGroupView[];
    getGroup(identifier: GroupIdentifier): IEditorGroupView | undefined;
    private assertGroupView;
    activateGroup(group: IEditorGroupView | GroupIdentifier): IEditorGroupView;
    getSize(group: IEditorGroupView | GroupIdentifier): {
        width: number;
        height: number;
    };
    setSize(group: IEditorGroupView | GroupIdentifier, size: {
        width: number;
        height: number;
    }): void;
    arrangeGroups(arrangement: GroupsArrangement, group?: IEditorGroupView | GroupIdentifier): void;
    toggleMaximizeGroup(group?: IEditorGroupView | GroupIdentifier): void;
    toggleExpandGroup(group?: IEditorGroupView | GroupIdentifier): void;
    restoreGroup(group: IEditorGroupView | GroupIdentifier): IEditorGroupView;
    applyLayout(layout: EditorGroupLayout): void;
    getLayout(): EditorGroupLayout;
    get orientation(): GroupOrientation;
    setGroupOrientation(orientation: GroupOrientation): void;
    findGroup(scope: IFindGroupScope, source?: IEditorGroupView | GroupIdentifier, wrap?: boolean): IEditorGroupView | undefined;
    addGroup(location: IEditorGroupView | GroupIdentifier, direction: GroupDirection): IEditorGroupView;
    removeGroup(group: IEditorGroupView | GroupIdentifier): void;
    moveGroup(group: IEditorGroupView | GroupIdentifier, location: IEditorGroupView | GroupIdentifier, direction: GroupDirection): IEditorGroupView;
    mergeGroup(group: IEditorGroupView | GroupIdentifier, target: IEditorGroupView | GroupIdentifier, options?: IMergeGroupOptions): boolean;
    mergeAllGroups(target: IEditorGroupView | GroupIdentifier, options?: IMergeGroupOptions): boolean;
    copyGroup(group: IEditorGroupView | GroupIdentifier, location: IEditorGroupView | GroupIdentifier, direction: GroupDirection): IEditorGroupView;
    createEditorDropTarget(container: HTMLElement, delegate: IEditorDropTargetDelegate): IDisposable;
    private readonly globalContextKeys;
    private readonly scopedContextKeys;
    private registerGroupsContextKeyListeners;
    private updateGlobalContextKeys;
    bind<T extends ContextKeyValue>(contextKey: RawContextKey<T>, group: IEditorGroupView): IContextKey<T>;
    private readonly contextKeyProviders;
    private readonly registeredContextKeys;
    registerContextKeyProvider<T extends ContextKeyValue>(provider: IEditorGroupContextKeyProvider<T>): IDisposable;
    private readonly contextKeyProviderDisposables;
    private registerGroupContextKeyProvidersListeners;
    private updateRegisteredContextKey;
    get partOptions(): IEditorPartOptions;
    get onDidChangeEditorPartOptions(): import("../../../../base/common/event.js").Event<import("../../../common/editor.js").IEditorPartOptionsChangeEvent>;
    enforcePartOptions(options: DeepPartial<IEditorPartOptions>): IDisposable;
}
export {};
