import { default as React, CSSProperties, ReactNode, RefObject } from 'react'; import { DragItem as CoreDragItem, DropResult as CoreDropResult } from './core/types'; export type DragItem = CoreDragItem; export type DropResult = CoreDropResult; export type DndRefCallback = ((node: T | null) => void) | null; export interface DraggableRenderProps { isDragging: boolean; canDrag: boolean; dragRef: DndRefCallback; handlerId: string; } export type DragPreviewProp = 'default' | 'none' | HTMLElement | ((item: DragItem) => HTMLElement | null); export interface DraggableProps { containerId: string; index: number; id?: string | number; item: any; itemType?: string; args?: unknown; testId?: string; className?: string; draggingClassName?: string; style?: CSSProperties; canDrag?: boolean; delay?: number; axis?: 'x' | 'y' | 'both'; disableNativeDrag?: boolean; dragHandle?: RefObject; dragPreview?: DragPreviewProp; dragPreviewOffset?: { x: number; y: number; }; dragData?: Record; hideDefaultPreview?: boolean; onDragStart?: (item: DragItem) => void; onDragging?: (point: { x: number; y: number; }) => void; onDragEnd?: (item: DragItem, didDrop: boolean, result: DropResult | null) => void; onRemove?: (source: { index: number; id?: string | number; }, result: DropResult | null) => void; children: ReactNode | ((props: DraggableRenderProps) => ReactNode); } declare function Draggable(props: DraggableProps): React.JSX.Element; declare const _default: typeof Draggable; export default _default;