import { CSSProperties, ElementType, ReactNode } from 'react'; import { DraggableRenderProps } from './Draggable'; import { DropIndicator, DroppableRenderProps } from './Droppable'; import { DragItem, DropOrientation, DropResult } from './core/types'; export type SortableOrientation = DropOrientation; export interface SortableChangeEvent { source?: DragItem; target?: DropResult; removed?: { index: number; id?: string | number; }; reason: 'reorder' | 'insert' | 'remove' | 'keyboard'; } export interface SortableProps { items: T[]; accept?: string | string[]; itemType?: string; itemTypeProp?: string; idProp?: string; args?: unknown; className?: string; orientation?: SortableOrientation; dropIndicator?: DropIndicator; gap?: string; style?: CSSProperties; as?: ElementType; allowRemove?: boolean; showPlaceholder?: boolean; placeholder?: ReactNode; emptyHint?: ReactNode; dragHandleProp?: string; canDragItem?: (item: T, index: number) => boolean; canDropItem?: (source: DragItem, index: number) => boolean; provideDragRef?: boolean; provideDropRef?: boolean; keyboardReorder?: boolean; itemAriaLabel?: (item: T, index: number) => string; onChange: (items: T[], args?: unknown, event?: SortableChangeEvent) => void; onDrop?: (source: DragItem, target: DropResult, args?: unknown) => void; onRemove?: (removed: { index: number; id?: string | number; }, result: DropResult | null) => void; children: (item: T, index: number, refs: { draggable?: DraggableRenderProps; droppable?: DroppableRenderProps; }) => ReactNode; /** @deprecated use children */ itemTemplate?: (item: T, index: number, refs: { draggable?: DraggableRenderProps; droppable?: DroppableRenderProps; }) => ReactNode; } declare function Sortable(props: SortableProps): import("react").JSX.Element; export default Sortable;