import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export interface ContextMenuItem {
    /** Display label. */
    label: string;
    /** Optional leading icon. */
    icon?: ReactNode;
    /** Action to run when activated. */
    onClick?: () => void;
    /** Visual danger tone (e.g. "Delete"). */
    danger?: boolean;
    /** Disable this item. */
    disabled?: boolean;
    /** Render as a horizontal separator — label/onClick ignored. */
    separator?: boolean;
    /** Optional trailing shortcut chip (e.g. "⌘C"). */
    shortcut?: string;
}
export interface ContextMenuPosition {
    x: number;
    y: number;
}
export interface ContextMenuProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "children" | "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart"> {
    /** Menu items. */
    items: ContextMenuItem[];
    /** Wrapped target element. */
    children: ReactNode;
    /**
     * Controlled open state. Pass `open` + `position` + `onOpenChange`
     * to drive the menu from outside (e.g. open from a button click as
     * well as right-click). Default: uncontrolled — internal state opens
     * on `contextmenu` event.
     */
    open?: boolean;
    /** Controlled cursor position. */
    position?: ContextMenuPosition;
    /** Fires when the menu open state changes. */
    onOpenChange?: (open: boolean) => void;
    /** DOM node to portal into. Defaults to `document.body`. */
    container?: Element | null;
    /** Disable the entire menu (right-click falls through to native). */
    disabled?: boolean;
    /** Accessible name for the menu list. */
    "aria-label"?: string;
}
export declare const ContextMenu: import("react").ForwardRefExoticComponent<ContextMenuProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=ContextMenu.d.ts.map