import Vue, { DirectiveOptions, VNode, VNodeDirective } from 'vue'; export interface DraggableOptions { useCSSTransforms?: boolean; noSelection?: boolean; noTouchAction?: boolean; touchAction?: string; allowAnyClick?: boolean; cancel?: string | null; disabled?: boolean; grid: [number, number]; handle?: string | null; className?: string; emitStartName?: string; emitDragName?: string; emitStopName?: string; onStart?: ((event: Event, coreEvent: any) => void) | null; onDrag?: ((event: Event, coreEvent: any) => void) | null; onStop?: ((event: Event, coreEvent: any) => void) | null; } export interface DraggableModifiers { callbackBase?: boolean; methodBase?: boolean; eventBase?: boolean; styleBase?: boolean; } export interface DraggableData { element: HTMLElement; binding: VNodeDirective; vnode: VNode; dragEventFor: 'string' | null; dragging: boolean; lastX: number | null; lastY: number | null; grid: [number, number]; touchIdentifier: any; draggingPosition: any; componentInstance?: Vue | null; } export interface DraggableState { data: DraggableData; options: DraggableOptions; modifiers: DraggableModifiers; onMouseDown: any; onMouseUp: any; onTouchStart: any; onTouchStop: any; handleDrag: any; handleDragStop: any; } export interface DragEventForInterface { start?: string; move?: string; stop?: string; } export interface EventForInterface { touch?: DragEventForInterface; mouse?: DragEventForInterface; } declare const Draggable: DirectiveOptions; export default Draggable;