import type { SVGTemplateResult } from 'lit';
import type { BeforeRenderOptions, CheckedMenuOptions, CommandBase, ContextMenuCommand, EnabledMenuOptions, CommandExecuteOptions, MenuItemType, MenuPoint } from './types.js';
/**
 * An object representing a single menu item in the menu.
 */
export declare class MenuItem<S = unknown> {
    type: MenuItemType;
    target?: string | string[];
    visible?: boolean | ((args: EnabledMenuOptions<S>) => boolean);
    id: string;
    label?: string;
    children?: (CommandBase<S> | ContextMenuCommand<S>)[];
    enabled?: boolean | ((args: EnabledMenuOptions<S>) => boolean);
    checked?: boolean | ((args: CheckedMenuOptions<S>) => boolean);
    execute?: (args: CommandExecuteOptions<S>) => void;
    beforeRender?: (ctx: BeforeRenderOptions<S>) => void;
    icon?: SVGTemplateResult;
    title?: string;
    constructor(init: CommandBase<S>);
    /**
     * @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: S, 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: S, 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: S, target: HTMLElement | SVGElement, workspace: HTMLElement, customData: unknown): boolean;
    /**
     * Executes the `beforeRender()` function, when specified in the command options.
     */
    beforeRenderCallback(store: S, target: HTMLElement | SVGElement, workspace: HTMLElement, customData: unknown): void;
    /**
     * Executes the `execute()` function, when specified in the command options.
     */
    trigger(item: MenuItem<S>, store: S, target: HTMLElement | SVGElement, workspace: HTMLElement, clickPoint: MenuPoint, customData: unknown, selectedSubcommand?: number): void;
}
//# sourceMappingURL=MenuItem.d.ts.map