interface MenuHandle { open: (context?: TContext, snap?: string | number | 'auto') => void; close: () => void; isOpen: boolean; getContext: () => TContext | null; subscribeOpenChange: (cb: (open: boolean) => void) => () => void; } interface MenuControl { ref: React.RefObject | null>; triggerRef: React.RefObject; open: (context?: TContext, snap?: string | number | 'auto') => void; close: () => void; toggle: (context?: TContext, snap?: string | number | 'auto') => void; isOpen: boolean; subscribeOpenChange: (cb: (open: boolean) => void) => () => void; } declare function useMenuControl(): MenuControl; declare function useMenuState(menuRef: React.RefObject | null>, /** Re-subscribe when the menu implementation changes (e.g. list → drawer). */ reconnectKey?: unknown): boolean; export { useMenuControl, useMenuState }; export type { MenuHandle, MenuControl };