import type { SharedValue, AnimatedRef } from 'react-native-reanimated'; import type { GestureType } from 'react-native-gesture-handler'; import type Animated from 'react-native-reanimated'; /** * Configuration for drag behavior */ export interface DragConfig { /** Fixed height for list items (used for drag calculations) */ itemHeight: number; /** Scale factor applied to dragged item */ dragScale: number; /** Shadow opacity for dragged item */ dragShadowOpacity: number; /** Vertical margin per item */ itemVerticalMargin: number; /** Duration (ms) to hold drag handle before drag activates */ longPressDuration: number; /** Pixels from viewport edge to trigger autoscroll */ edgeThreshold: number; /** Maximum scroll speed in pixels per frame */ maxScrollSpeed: number; /** Scale factor for drop bounce "squish" effect (default: 0.97) */ dropBounceScale: number; /** Whether to trigger haptic feedback on drop (default: true) */ dropHapticEnabled: boolean; } /** * Configuration for useDragGesture hook */ export interface UseDragGestureConfig { /** Item ID for stable identity */ itemId: string; /** Current index in list */ index: number; /** Whether drag is enabled for this item */ enabled: boolean; /** Ref to measure item container */ containerRef: AnimatedRef; } /** * Callbacks for drag gesture events */ export interface UseDragGestureCallbacks { /** Called when reorder should occur (with index delta) */ onReorderByDelta?: (itemId: string, delta: number) => void; /** Optional haptic feedback callback */ onHapticFeedback?: (type: 'light' | 'medium') => void; } /** * Return value from useDragGesture hook */ export interface UseDragGestureResult { /** The pan gesture to attach to drag handle */ panGesture: GestureType; /** Whether this item is currently being dragged */ isDragging: SharedValue; /** Current translateY of this item */ translateY: SharedValue; } /** * Configuration for useDragShift hook */ export interface UseDragShiftConfig { /** Item ID for identity check (to skip shift for the dragged item) */ itemId: string; /** Current index in list */ index: number; /** Whether drag is enabled (optimization: skip setup when false) */ dragEnabled?: boolean; } /** * Return value from useDragShift hook */ export interface UseDragShiftResult { /** Animated shift value for non-dragged items */ shiftY: SharedValue; } /** * Configuration for useDropCompensation hook */ export interface UseDropCompensationConfig { /** Item ID for stable identity check */ itemId: string; /** Current index in list */ index: number; /** This item's translateY SharedValue (from useDragGesture) */ translateY: SharedValue; /** Whether drag is enabled (optimization: skip setup when false) */ dragEnabled?: boolean; } /** * Return value from useDragAnimatedStyle hook */ export interface UseDragAnimatedStyleResult { /** Animated style for the dragged item (transform, zIndex, shadow) */ dragAnimatedStyle: ReturnType; } //# sourceMappingURL=drag.d.ts.map