import * as React from 'react'; import type { CalendarEvent, EventCreateInfo, EventDragInfo, EventResizeInfo } from '../types.js'; export type DragType = 'move' | 'resize' | 'create'; export interface DragState { type: DragType; eventId: string | null; startY: number; startX: number; currentY: number; currentX: number; date: Date; currentDate: Date; column: number; currentColumn: number; originalTop: number; originalHeight: number; } interface UseDragOptions { snapInterval: number; startHour: number; onEventDrag?: (info: EventDragInfo) => void; onEventResize?: (info: EventResizeInfo) => void; onEventCreate?: (info: EventCreateInfo) => void; events: CalendarEvent[]; } interface GhostPosition { top: number; height: number; column: number; } interface UseDragResult { dragState: DragState | null; ghostPosition: GhostPosition | null; isDragging: boolean; handlePointerDown: (type: DragType, eventId: string | null, e: React.PointerEvent, column: number, top: number, height: number, date: Date) => void; handlePointerMove: (e: React.PointerEvent) => void; handlePointerUp: (e?: React.PointerEvent) => void; handlePointerCancel: (e: React.PointerEvent) => void; } export declare function useDrag({ snapInterval, startHour, onEventDrag, onEventResize, onEventCreate, events, }: UseDragOptions): UseDragResult; export {};