/**
 * ContextMenu component
 * @countermeasure/web-components/components/context-menu
 *
 * Imperative right-click menu. Renders the same configurable surface as the
 * React `ContextMenu` primitives (item, disabled, separator, shortcut, icon,
 * group label) and mirrors their `role`/`aria-*`/`data-slot` attributes so the
 * two implementations are visually and semantically identical.
 */
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 destructive (danger) item. Matches the design-system destructive
     * token; has no effect on separators or group labels.
     * @default false
     */
    destructive?: boolean;
    /**
     * Render a non-interactive divider instead of an item.
     * @default false
     */
    separator?: boolean;
    /**
     * Render a non-interactive group label (heading) instead of an item.
     * Mirrors the React `ContextMenuLabel` primitive.
     * @default false
     */
    groupLabel?: 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