import type { ItemProps, MenuCallbacks, MenuOptions, MenuState, MenuSubscriber, PanelProps, Point, Rect, TriggerProps } from "./types"; import { MenuCore } from "./core/MenuCore"; import { SubmenuCore } from "./core/SubmenuCore"; export type MenuTreeBranchKind = "root" | "submenu"; export interface MenuTreeBranch { readonly kind: MenuTreeBranchKind; readonly id: string; readonly core: MenuCore | SubmenuCore; readonly getSnapshot: () => MenuState; readonly subscribe: (subscriber: MenuSubscriber) => ReturnType; readonly getTriggerProps: () => TriggerProps; readonly getPanelProps: () => PanelProps; readonly getItemProps: (id: string) => ItemProps; readonly registerItem: (id: string, options?: Parameters[1]) => () => void; readonly open: (reason?: Parameters[0]) => void; readonly close: (reason?: Parameters[0]) => void; readonly toggle: () => void; readonly highlight: (id: string | null) => void; readonly moveFocus: (delta: 1 | -1) => void; readonly select: (id: string) => void; readonly geometry: SubmenuGeometryAdapter | null; readonly pointer: SubmenuPointerAdapter | null; readonly destroy: () => void; } export interface SubmenuGeometryAdapter { setTriggerRect: (rect: Rect | null) => void; setPanelRect: (rect: Rect | null) => void; sync: (rects: { trigger?: Rect | null; panel?: Rect | null; }) => void; } export interface SubmenuPointerAdapter { record: (point: Point) => void; } export interface CreateMenuTreeOptions { options?: MenuOptions; callbacks?: MenuCallbacks; } export interface CreateSubmenuBranchOptions { parent: MenuTreeBranch | MenuCore; parentItemId: string; options?: MenuOptions; callbacks?: MenuCallbacks; } export interface MenuTreeController { readonly root: MenuTreeBranch; createSubmenu(options: CreateSubmenuBranchOptions): MenuTreeBranch; destroy(): void; } export declare function createMenuTree(config?: CreateMenuTreeOptions): MenuTreeController; //# sourceMappingURL=createMenuTree.d.ts.map