/** * Sets up the required events and listeners for a complete drag interaction. * * @param spec - Specification object. * @param spec.element - The element to attach the events to, * @param spec.onStart - Called when dragging starts. * @param spec.onMove - Called when dragging occurs. * @param spec.onEnd - Called when dragging stops. * * @returns Object containing the interaction data. */ export declare function dragInteraction(element: HTMLElement): { isAttached: boolean; attach: () => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; detach: () => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onStart: (callback: (event: MouseEvent | TouchEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onMove: (callback: (event: MouseEvent | TouchEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onEnd: (callback: (event: MouseEvent | TouchEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onMouseStart: (callback: (event: MouseEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onMouseMove: (callback: (event: MouseEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onMouseEnd: (callback: (event: MouseEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onTouchStart: (callback: (event: TouchEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onTouchMove: (callback: (event: TouchEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; onTouchEnd: (callback: (event: TouchEvent) => void) => Readonly<{ readonly isAttached: boolean; attach(): Readonly; detach(): Readonly; onStart(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMove(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onEnd(callback: (event: MouseEvent | TouchEvent) => void): Readonly; onMouseStart(callback: (event: MouseEvent) => void): Readonly; onMouseMove(callback: (event: MouseEvent) => void): Readonly; onMouseEnd(callback: (event: MouseEvent) => void): Readonly; onTouchStart(callback: (event: TouchEvent) => void): Readonly; onTouchMove(callback: (event: TouchEvent) => void): Readonly; onTouchEnd(callback: (event: TouchEvent) => void): Readonly; }>; element: HTMLElement; startX: number; startY: number; currentX: number; currentY: number; previousX: number; previousY: number; relativeX: number; relativeY: number; transitionX: number; transitionY: number; compoundX: number; compoundY: number; previousCompoundX: number; previousCompoundY: number; endX: number; endY: number; velocityX: number; velocityY: number; setInitialPosition(x: number, y: number): void; setUpdatedPosition(x: number, y: number): void; setFinalPosition(x: number, y: number): void; };