///
import type { Event, Disposable } from '@difizen/mana-common';
import { DisposableCollection, Emitter } from '@difizen/mana-common';
import type { GeneralMenuItem, ActionMenuItem, MenuPath } from '@difizen/mana-core';
import { MenuItem } from '@difizen/mana-core';
import { CommandRegistry, MenuRegistry } from '@difizen/mana-core';
import type { MenuData, MenuItemState } from './menu-protocol';
export declare const MenuPathSymbol: unique symbol;
/**
* Factory for instantiating toolbars.
*/
export declare const MenuFactory: unique symbol;
export interface MenuFactory {
(menuPath: MenuPath): Menu;
}
/**
* The toolbar manager, a toolbar instance should be created with view.
*/
export declare class Menu implements Disposable {
protected toDispose: DisposableCollection;
protected _disposed: boolean;
get disposed(): boolean;
protected disposedEventEmitter: Emitter;
onDisposed: Event;
current: any;
states: Map;
root: GeneralMenuItem;
protected readonly commands: CommandRegistry;
protected readonly menus: MenuRegistry;
protected readonly menuPath: MenuPath;
constructor(commands: CommandRegistry, menus: MenuRegistry, menuPath: MenuPath);
setCurrent(current: any): void;
sort: (left: MenuItem, right: MenuItem) => number;
protected commandIsEnabled(command: string): boolean;
execute(item: ActionMenuItem, data?: MenuData): Promise | undefined;
setState: (item: MenuItemState) => void;
getState: (item: MenuItemState | MenuItem) => MenuItemState | undefined;
removeItemState(key: string): void;
protected isGroup(item: MenuItem): boolean;
protected doRenderList(list: readonly MenuItem[]): React.ReactNode;
renderMenuList: (list: readonly MenuItem[], inMenu?: boolean) => React.ReactNode;
renderMenuItem(item: MenuItem, root?: boolean): string | number | boolean | Iterable | import("react/jsx-runtime").JSX.Element | null | undefined;
dispose(): void;
isVisible(item: MenuItem): boolean;
isEnable(item: MenuItem): boolean;
}
//# sourceMappingURL=menu.d.ts.map