import type { Ref, ShallowRef } from "vue"; import type { MenuCallbacks, MenuOptions, MenuState, Rect } from "@affino/menu-core"; import { MenuCore, SubmenuCore } from "@affino/menu-core"; export type MenuControllerKind = "root" | "submenu"; export interface MenuController { readonly kind: MenuControllerKind; readonly id: string; readonly core: MenuCore | SubmenuCore; readonly state: ShallowRef; readonly triggerRef: Ref; readonly panelRef: Ref; readonly anchorRef: ShallowRef; readonly open: (reason?: "pointer" | "keyboard" | "programmatic") => void; readonly close: (reason?: "pointer" | "keyboard" | "programmatic") => void; readonly toggle: () => void; readonly highlight: (id: string | null) => void; readonly select: (id: string) => void; readonly setAnchor: (rect: Rect | null) => void; readonly recordPointer?: (point: { x: number; y: number; }) => void; readonly setTriggerRect?: (rect: Rect | null) => void; readonly setPanelRect?: (rect: Rect | null) => void; readonly dispose: () => void; } interface RootControllerConfig { kind: "root"; options?: MenuOptions; callbacks?: MenuCallbacks; } interface SubmenuControllerConfig { kind: "submenu"; parent: MenuController | MenuCore; parentItemId: string; options?: MenuOptions; callbacks?: MenuCallbacks; } export type MenuControllerConfig = RootControllerConfig | SubmenuControllerConfig; export declare function useMenuController(config: MenuControllerConfig): MenuController; export {}; //# sourceMappingURL=useMenuController.d.ts.map