import { BasePart, Part } from '.';
import { Modal } from '../ui/modal';
import { TemplateResult } from '@blinkk/selective-edit';
import { DataStorage } from '../../utility/dataStorage';
import { EditorState } from '../state';
import { LiveEditor } from '../editor';
import { SitePart } from './menu/site';
import { UsersPart } from './menu/users';
import { WorkspacesPart } from './menu/workspaces';
export interface MenuPartConfig {
    /**
     * State class for working with editor state.
     */
    state: EditorState;
    storage: DataStorage;
}
export interface MenuParts {
    site: SitePart;
    users: UsersPart;
    workspaces: WorkspacesPart;
}
export declare class MenuPart extends BasePart implements Part {
    config: MenuPartConfig;
    isDocked: boolean;
    modal?: Modal;
    parts: MenuParts;
    constructor(config: MenuPartConfig);
    protected createModal(editor: LiveEditor): Modal;
    classesForPart(): Record<string, boolean>;
    /**
     * Close the menu when it is not docked.
     */
    close(): void;
    /**
     * Dock the menu.
     */
    dock(): void;
    loadProject(): void;
    /**
     * Open the menu when it is not docked.
     */
    open(): void;
    template(editor: LiveEditor): TemplateResult;
    templateActionDocking(editor: LiveEditor): TemplateResult;
    templateActionClose(editor: LiveEditor): TemplateResult;
    templateContent(editor: LiveEditor): TemplateResult;
    templateMenu(editor: LiveEditor): TemplateResult;
    templateStructure(editor: LiveEditor): TemplateResult;
    /**
     * Toggle the menu when it is not docked.
     */
    toggle(): void;
    /**
     * Undock the menu.
     */
    undock(): void;
}
