import type { CSSProperties, MouseEvent, KeyboardEvent } from 'react'; import type { DraggableAttributes, UniqueIdentifier } from '@dnd-kit/core'; type Listeners = Record void>; type TriggerProps = Listeners & { style: CSSProperties; }; type Orientation = 'vertical' | 'horizontal'; export type UseSortableRenderProps = { itemProps: DraggableAttributes & { ref: (element: HTMLElement | null) => void; }; itemStyle: CSSProperties; triggerProps: TriggerProps; triggerStyle: CSSProperties; setTriggerRef: (element: HTMLElement | null) => void; dropIndicationStyle: CSSProperties; showDropIndication: boolean; dropIndex: number; dropPosition: 'before' | 'after' | null; isDragOverlay: boolean; isDragPlaceholder: boolean; isDragged: boolean; isSorting: boolean; draggedIndex: number; index: number; orientation: Orientation; dropIndicationOrientation: Orientation; disabled: boolean; }; type ExtractStringProperties = { [K in keyof T as T[K] extends string ? K : never]?: T[K]; }; export type Styles = ExtractStringProperties; type UseSortableConfig = { isDragOverlay?: boolean; variant?: 'static' | 'dynamic'; disableDragOverlay?: boolean; dragPlaceholderStyle?: Styles; orientation?: 'vertical' | 'horizontal'; disabled?: boolean; }; declare const useSortable: (id: UniqueIdentifier, { disabled, isDragOverlay, disableDragOverlay, variant, orientation, dragPlaceholderStyle, }?: UseSortableConfig) => UseSortableRenderProps; export default useSortable;