import type ContextMenu from './ContextMenu';
import type Button from './Button';
import type Popup from './Popup';
import { ClassNameKey } from '../Globals.js';
export declare class ContextMenuButton implements Button {
    /**
     * The wrapper `<li>` element for the button.
     */
    wrapper?: HTMLLIElement;
    /**
     * The context menu that the button belongs to.
     */
    contextMenu?: ContextMenu;
    popup?: Popup;
    /**
     * Used to remove the event listeners when the button is destroyed.
     */
    protected eventListenerDestroyers: Function[];
    /**
     * Whether the button is active.
     */
    protected isActive: boolean;
    /**
     * The options for the context menu button.
     */
    protected options: ContextMenuButtonOptions;
    /**
     * The container for the icon element.
     */
    private iconWrapper?;
    /**
     * The default icon for the context menu button.
     */
    private icon?;
    /**
     * The button element.
     */
    private buttonEl?;
    /**
     * The span element for the label.
     */
    private spanEl?;
    constructor(options: ContextMenuButtonOptions);
    /**
     * Adds the button to the context menu.
     *
     * @param contextMenu
     * The context menu to add the button to.
     */
    add(contextMenu: ContextMenu): this | undefined;
    focus(): void;
    setLabel(label: string): void;
    /**
     * Sets the icon for the button.
     *
     * @param icon
     * The icon to set (built-in name or custom name from rendering.icons).
     */
    setIcon(icon?: string): void;
    setActive(active: boolean): void;
    setHighlighted(highlighted: boolean): void;
    /**
     * Destroys the button.
     */
    destroy(): void;
    /**
     * Initializes the state of the button.
     */
    protected refreshState(): void;
    /**
     * Handles the click event for the button.
     *
     * @param event
     * The mouse event.
     */
    protected clickHandler(event: MouseEvent): void;
    /**
     * Adds event listeners to the button.
     */
    protected addEventListeners(): void;
    /**
     * Removes event listeners from the button.
     */
    private removeEventListeners;
}
export interface ContextMenuButtonOptions {
    /**
     * The label for the button.
     */
    label?: string;
    /**
     * The icon for the button (built-in name or custom from rendering.icons).
     */
    icon?: string;
    /**
     * A class name key applied to the `<li>` wrapper of the button.
     */
    classNameKey?: ClassNameKey;
    /**
     * The icon for the active state of the button.
     */
    activeIcon?: string;
    /**
     * The icon for the highlighted state of the button.
     */
    highlightedIcon?: string;
    /**
     * The tooltip string for the button.
     */
    tooltip?: string;
    /**
     * If the chevron icon should be rendered.
     */
    chevron?: boolean;
    /**
     * The click handler for the button.
     */
    onClick?: (event: MouseEvent, button: ContextMenuButton) => void;
}
export default ContextMenuButton;
