import { type UnwrapRef, type InjectionKey } from 'vue'; export interface DndProps { list?: T[]; } export interface DndSlots { default?(props: { list: DndListItem[]; }): any; } export interface DndEmits { 'item-drag-start': [event: { itemIndex: number; }]; 'item-drag-move': [event: { itemIndex: number; insertIndex: number; }]; 'item-drop': [event: { itemIndex: number; insertIndex: number; }]; 'update:list': [list: T[]]; } export interface DndExpose { } export interface DndListItem { data: UnwrapRef; itemInfo: DndItemInfo; key: string; } export interface DndItemInfo { offset: number; dragging: boolean; } export interface DndContext { list: DndListItem[]; dragging: boolean; currentHeight: number; dragStart: (itemIndex: number) => void; dragMove: (itemIndex: number, insertIndex: number) => void; drop: (itemIndex: number, insertIndex: number) => void; rectItems: (() => DOMRect)[]; addRectItem: (getRect: () => DOMRect) => void; removeRectItem: (getRect: () => DOMRect) => void; } export declare const dndContextKey: InjectionKey>; export interface DndItemProps { itemInfo: DndItemInfo; } export interface DndItemSlots { default?(props: Record): any; } export interface DndItemEmits { } export interface DndItemExpose { } export interface DndItemContext { immediateStart: () => void; start: () => void; move: (delta: number) => void; end: () => void; } export declare const dndItemContextKey: InjectionKey; export interface DndHandleProps { } export interface DndHandleSlots { default?(props: Record): any; } export interface DndHandleEmits { } export interface DndHandleExpose { }