/**
 * ContextMenu component
 * @countermeasure/web-components/components/context-menu
 */
export interface MenuItemDef {
    /** Stable unique identifier for the item. */
    id: string;
    /** Visible label. Ignored when `separator` is `true`. */
    label: string;
    /** Optional icon HTML rendered before the label. */
    icon?: string;
    /**
     * Disable interaction.
     * @default false
     */
    disabled?: boolean;
    /**
     * Render a non-interactive divider instead of an item.
     * @default false
     */
    separator?: boolean;
    /** Optional keybinding hint rendered on the right. */
    shortcut?: string;
    /** Function invoked when the item is activated. */
    handler?: () => void;
}
export interface ContextMenuConfig {
    /** Menu items in display order. */
    items: MenuItemDef[];
}
export declare class ContextMenu {
    private readonly menuEl;
    private readonly items;
    private activeIndex;
    private closed;
    private constructor();
    static show(x: number, y: number, config: ContextMenuConfig): ContextMenu;
    close(): void;
    private renderItems;
    private adjustPosition;
    private getNavigableItems;
    private readonly handleDocumentClick;
    private readonly handleKeyDown;
}
//# sourceMappingURL=index.d.ts.map