import type { ReactNode, RefObject } from 'react'; import type { SharedValue } from 'react-native-reanimated'; import type { FlattenedHoverStyles } from '../HoverLayer'; import type { DragPhase, DraxProviderDragEvent, Position, SpatialEntry, ViewRegistryEntry } from '../types'; interface CallbackDispatchDeps { getViewEntry: (id: string) => ViewRegistryEntry | undefined; spatialIndexSV: SharedValue; scrollOffsetsSV: SharedValue; draggedIdSV: SharedValue; receiverIdSV: SharedValue; rejectedReceiverIdSV: SharedValue; dragPhaseSV: SharedValue; hoverPositionSV: SharedValue; grabOffsetSV: SharedValue; startPositionSV: SharedValue; setHoverContent: (content: ReactNode | null) => void; hoverReadySV: SharedValue; hoverClearDeferredRef: { current: boolean; }; hoverStylesRef: RefObject; onProviderDragStart?: (event: DraxProviderDragEvent) => void; onProviderDrag?: (event: DraxProviderDragEvent) => void; onProviderDragEnd?: (event: DraxProviderDragEvent & { cancelled: boolean; }) => void; droppedItemsRef: RefObject>>; } /** * Provides JS-thread callback dispatch functions that are invoked via runOnJS * from gesture worklets. These handle ~5 calls per drag (start, receiver changes, end), * NOT per frame. */ export declare const useCallbackDispatch: (deps: CallbackDispatchDeps) => { handleDragStart: (draggedId: string, absolutePosition: Position, _grabOffset: Position) => void; handleReceiverChange: (oldReceiverId: string, newReceiverId: string, absolutePosition: Position, monitorIds?: string[]) => void; handleDragEnd: (draggedId: string, receiverId: string, cancelled: boolean, finalMonitorIds?: string[]) => void; }; export {}; //# sourceMappingURL=useCallbackDispatch.d.ts.map