import { AccessibilityProps, KeyboardHandlerMap } from '../shared/index.js';

interface DropdownMenuProps {
    /** Whether the menu is open (controlled) */
    open?: boolean;
    /** Whether the menu starts open (uncontrolled) */
    defaultOpen?: boolean;
    /** Callback when open state changes */
    onOpenChange?: (open: boolean) => void;
}
interface MenuItemProps {
    /** Whether the item is disabled */
    disabled?: boolean;
    /** Callback when the item is selected */
    onSelect?: () => void;
}
interface DropdownMenuState {
    open: boolean;
}
interface DropdownMenuAPI {
    /** Current menu state */
    state: DropdownMenuState;
    /** ARIA attributes for the trigger button */
    triggerProps: Partial<AccessibilityProps> & Record<string, unknown>;
    /** ARIA attributes for the menu content */
    contentProps: Partial<AccessibilityProps> & Record<string, unknown>;
    /** Factory for menu item props */
    getItemProps(item: MenuItemProps): Partial<AccessibilityProps> & Record<string, unknown>;
    /** Open the menu */
    open(): void;
    /** Close the menu */
    close(): void;
    /** Toggle the menu */
    toggle(): void;
    /** Keyboard handlers for the menu */
    keyboardHandlers: KeyboardHandlerMap;
    /** Generated IDs for aria linking */
    ids: {
        content: string;
    };
}
declare function createDropdownMenu(props?: DropdownMenuProps): DropdownMenuAPI;

declare const menuContentVariants: (props?: ({
    [x: string]: string | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const menuItemVariants: (props?: ({
    [x: string]: string | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type DropdownMenuAPI, type DropdownMenuProps, type DropdownMenuState, type MenuItemProps, createDropdownMenu, menuContentVariants, menuItemVariants };
