/**
 * Shared DnD primitives — sensor config + collision waterfall.
 *
 * Both the row-reorder primitive (`useDataDnd` in DataList/DataGrid) and the
 * canvas-insert primitive (`useCanvasDnd` in AVL OrbPreviewNode) need
 * identical pointer activation behavior and the same multi-container
 * collision strategy. Centralizing them here keeps the two hooks from
 * drifting and gives a single tunable spot when DnD ergonomics need a tweak.
 *
 * Activation: `distance: 5` on the PointerSensor so a small accidental
 * tremor doesn't fire a drag — matches the threshold dnd-kit's own examples
 * use for grab-and-drag interactions.
 *
 * Collision waterfall (run in order, first non-empty wins):
 *   1. pointerWithin     — catches the empty zones + clean hover-over-zone case
 *   2. rectIntersection  — falls back when the pointer is in margin/padding
 *   3. closestCorners    — last resort over the items in whichever zone won
 */
import { type CollisionDetection, type SensorDescriptor, type SensorOptions } from '@dnd-kit/core';
export declare const ALMADAR_DND_ACTIVATION_DISTANCE = 5;
/**
 * Returns the canonical sensor stack used by every Almadar DnD primitive.
 *
 * @param withSortableKeyboard - when true, the KeyboardSensor uses
 *   `sortableKeyboardCoordinates` (correct for sortable lists). Defaults to
 *   true so `useDataDnd` keeps its current behavior; `useCanvasDnd` doesn't
 *   need it (no sortable rows) so it can pass false.
 */
export declare function useAlmadarDndSensors(withSortableKeyboard?: boolean): SensorDescriptor<SensorOptions>[];
/**
 * Multi-container collision waterfall.
 * pointerWithin → rectIntersection → closestCorners.
 */
export declare const almadarDndCollisionDetection: CollisionDetection;
