/// <reference types="react" />
import type { Disposable } from '@difizen/mana-common';
import { DisposableCollection } from '@difizen/mana-common';
import { CommandRegistry, MenuRegistry, ToolbarItem, ToolbarRegistry } from '@difizen/mana-core';
import type { ToolbarItemState } from './toolbar-protocol';
/**
 * Factory for instantiating toolbars.
 */
export declare const ToolbarFactory: unique symbol;
export interface ToolbarFactory {
    (): Toolbar;
}
export interface ToolbarOption {
    divider?: 'item' | 'group';
}
/**
 * The toolbar manager, a toolbar instance should be created with view.
 */
export declare class Toolbar implements Disposable {
    protected toDispose: DisposableCollection;
    protected _disposed: boolean;
    get disposed(): boolean;
    get onDispose(): import("@difizen/mana-common").Event<void>;
    currentArgs: any | any[];
    states: Map<string, ToolbarItemState>;
    tooltip?: {
        placement: string;
    } | undefined;
    protected readonly commands: CommandRegistry;
    protected readonly menus: MenuRegistry;
    protected readonly toolbarRegistry: ToolbarRegistry;
    constructor(commands: CommandRegistry, menus: MenuRegistry, toolbarRegistry: ToolbarRegistry);
    setCurrentArgs(current: any): void;
    sort(left: ToolbarItem, right: ToolbarItem): number;
    get visibleItems(): ToolbarItem[];
    isInline(item: ToolbarItem): boolean;
    renderToolbar(inlines: ToolbarItem[], more: ToolbarItem[]): import("react/jsx-runtime").JSX.Element;
    renderMore(items: ToolbarItem[]): React.ReactNode;
    renderInlineDivider(key: string | undefined): import("react/jsx-runtime").JSX.Element;
    renderInlines(items: ToolbarItem[]): React.ReactNode;
    renderItem(data: any, item: ToolbarItem, state: ToolbarItemState): React.ReactNode;
    protected getItemProps(_data: any, _item: ToolbarItem, state: ToolbarItemState): {
        className: string;
    };
    protected renderItemContent(data: any, item: ToolbarItem, state: ToolbarItemState): import("react/jsx-runtime").JSX.Element;
    protected execute(item: ToolbarItem, data: any[]): Promise<unknown> | undefined;
    getState: (item: ToolbarItemState | ToolbarItem) => ToolbarItemState | undefined;
    setState: (item: ToolbarItemState) => void;
    dispose(): void;
}
//# sourceMappingURL=toolbar.d.ts.map