import { SurfaceCore } from "@affino/surface-core"; import type { PointerEventLike, SurfaceReason, SurfaceState } from "@affino/surface-core"; import { type OverlayKind, type OverlayManager } from "@affino/overlay-kernel"; import type { EventHandler, ItemProps, MenuCallbacks, MenuOptions, MenuState, PanelProps, TriggerProps, MousePredictionConfig } from "../types"; import type { HighlightChange } from "./StateMachine"; import { ItemRegistry } from "./ItemRegistry"; import { MenuEvents } from "./Events"; import { MenuStateMachine } from "./StateMachine"; import { MenuTree } from "./MenuTree"; interface NormalizedMenuOptions { closeOnSelect: boolean; loopFocus: boolean; mousePrediction: MousePredictionConfig | null; } interface ParentLink { parentId: string; parentItemId: string | null; } export declare class MenuCore extends SurfaceCore { protected readonly registry: ItemRegistry; protected readonly selectionMachine: MenuStateMachine; protected readonly tree: MenuTree; protected readonly menuOptions: NormalizedMenuOptions; protected readonly menuEvents: MenuEvents; protected autoHighlightOnOpen: boolean; private pointerHighlightLock; private readonly overlayKind; private readonly overlayIntegration; private destroyedLocal; constructor(options?: MenuOptions, callbacks?: MenuCallbacks, tree?: MenuTree, parentLink?: ParentLink); destroy(): void; protected composeState(surface: SurfaceState): MenuState; protected onOpened(_reason: SurfaceReason): void; protected onClosed(_reason: SurfaceReason): void; registerItem(id: string, options?: { disabled?: boolean; }): () => void; hasRegisteredItem(id: string): boolean; highlight(id: string | null): void; moveFocus(delta: 1 | -1): void; close(reason?: SurfaceReason): void; requestClose(reason?: SurfaceReason): void; private closeWithSource; private performClose; protected isKernelManagedReason(reason: SurfaceReason): boolean; private mapSurfaceReasonToOverlay; private mapOverlayReasonToSurface; private handleKernelCloseRequest; select(id: string): void; getTriggerProps(): TriggerProps; getPanelProps(): PanelProps; getItemProps(id: string): ItemProps; /** Shared tree instance for nested menus. */ getTree(): MenuTree; isCloseOnSelectEnabled(): boolean; protected ensureInitialHighlight(): void; holdPointerHighlight(itemId: string, duration?: number): void; releasePointerHighlightHold(itemId?: string): void; protected shouldBlockPointerHighlight(targetId: string): boolean; protected handlePointerEnter(event?: PointerEventLike): void; protected shouldIgnorePointerLeave(event?: PointerEventLike): boolean; protected handlePointerLeave(event?: PointerEventLike): void; protected handleHighlightChange(change: HighlightChange): boolean; protected handleTriggerKeydown: EventHandler; protected handlePanelKeydown: EventHandler; protected handleItemKeydown(event: KeyboardEvent, id: string, disabled: boolean): void; getOverlayManager(): OverlayManager | null; getOverlayKind(): OverlayKind; private syncOverlayState; private getEnabledItemIds; private teardownOverlayIntegration; private requestOverlayClose; private emitOverlayDebug; } export {}; //# sourceMappingURL=MenuCore.d.ts.map