import { SVGTemplateResult } from 'lit';
import { IBeforeRenderOptions, ICheckedOptions, ICommandBase, IContextMenuCommand, IEnabledOptions, IExecuteOptions, MenuItemType, iPoint, ObjectLikeMap } from './types.js';
/**
 * An object representing a single menu item in the menu.
 */
export declare class MenuItem {
    type: MenuItemType;
    target?: string | string[];
    visible?: boolean | ((args: IEnabledOptions) => boolean);
    id: string;
    label?: string;
    children?: (ICommandBase | IContextMenuCommand)[];
    enabled?: boolean | ((args: IEnabledOptions) => boolean);
    checked?: boolean | ((args: ICheckedOptions) => boolean);
    execute?: ((args: IExecuteOptions) => void);
    beforeRender?: ((ctx: IBeforeRenderOptions) => void);
    icon?: SVGTemplateResult;
    title?: string;
    constructor(init: ICommandBase);
    /**
     * @returns Whether this command has a sub-command.
     */
    get hasChildren(): boolean;
    /**
     * Executes the `enabled()` function, when specified in the command options.
     *
     * @returns `true` when the command should be active in the UI.
     */
    isEnabled(store: ObjectLikeMap<object>, target: HTMLElement | SVGElement, workspace: HTMLElement, customData: unknown): boolean;
    /**
     * Executes the `visible()` function, when specified in the command options.
     *
     * @returns `true` when the command should be rendered in the UI.
     */
    isVisible(store: ObjectLikeMap<object>, target: HTMLElement | SVGElement, workspace: HTMLElement, customData: unknown): boolean;
    /**
     * Executes the `checked()` function, when specified in the command options.
     *
     * @returns `true` when the command should be in the checked state
     */
    isChecked(store: ObjectLikeMap<object>, target: HTMLElement | SVGElement, workspace: HTMLElement, customData: unknown): boolean;
    /**
     * Executes the `beforeRender()` function, when specified in the command options.
     */
    beforeRenderCallback(store: ObjectLikeMap<object>, target: HTMLElement | SVGElement, workspace: HTMLElement, customData: unknown): void;
    /**
     * Executes the `execute()` function, when specified in the command options.
     */
    trigger(item: MenuItem, store: ObjectLikeMap<object>, target: HTMLElement | SVGElement, workspace: HTMLElement, clickPoint: iPoint, customData: unknown, selectedSubcommand?: number): void;
}
//# sourceMappingURL=MenuItem.d.ts.map