import { PluginContext, Plugin, Compartment, PluginResolver, PluginInput } from './plugins.js'; type DeepMutable = T extends object ? { -readonly [P in keyof T]: T[P] extends readonly any[] ? DeepMutable : T[P] extends object ? keyof T[P] extends never ? T[P] : DeepMutable : T[P]; } : T; interface ErrorInfo { phase: 'setup' | 'start' | 'drag' | 'end' | 'shouldStart'; plugin?: { name: string; hook: string; }; node: HTMLElement | SVGElement; error: unknown; } interface DraggableInstance { ctx: DeepMutable; root_node: HTMLElement | SVGElement; plugins: Plugin[]; states: Map; dragstart_prevented: boolean; current_drag_hook_cancelled: boolean; failed_plugins: Set; pointer_captured_id: number | null; effects: { paint: Set<() => void>; immediate: Set<() => void>; }; controller: AbortController; compartments: { map: Map; pending: Set; is_flushing: boolean; }; resolver?: PluginResolver; is_processing_external_update: boolean; } declare const DEFAULTS: { plugins: (Plugin<{ active_pointers: Set; }> | Plugin<{ count: number; }> | Plugin<{ body_user_select_val: string; }> | Plugin | Plugin<{ enabled: false; start_time?: undefined; start_position?: undefined; options?: undefined; } | { enabled: true; start_time: number; start_position: { x: number; y: number; }; options: { delay: number; distance: number; }; }>)[]; onError: (error: ErrorInfo) => void; delegate: () => HTMLElement; }; declare class DraggableFactory { #private; constructor({ plugins, delegate, onError }: typeof DEFAULTS); get instances(): Map; draggable(node: HTMLElement | SVGElement, plugins?: PluginInput): () => void; dispose(): void; } export { DEFAULTS, DraggableFactory, type DraggableInstance, type ErrorInfo };