/** * GestureRouter — Central arbiter for pointer-based gesture conflicts. * * When multiple gesture controllers (drag, range-select, swipe) are active on * the same or overlapping elements, the router ensures only one "wins" per * pointer sequence (pointerdown → pointermove → pointerup). * * Controllers register as participants. On pointerdown, the router queries * participants in priority order. The first to return 'claim' wins; others * are told to stand down. */ export interface GestureParticipant { /** Unique identifier for this participant instance. */ readonly id: string; /** Lower number = higher priority. Drag=10, RangeSelect=20, Swipe=30. */ readonly priority: number; /** The element this participant manages. */ readonly host: HTMLElement; /** * Called by the router on pointerdown. Return 'claim' to own the gesture * or 'pass' to decline. */ onGestureStart(e: PointerEvent): 'claim' | 'pass'; /** Called when another participant claims the gesture. */ onGestureCancel?(): void; } export declare class GestureRouter { #private; register(participant: GestureParticipant): void; unregister(participant: GestureParticipant): void; /** Release the current claim (e.g. on pointerup). */ release(): void; /** Get the currently active (claiming) participant, if any. */ get activeParticipant(): GestureParticipant | null; } //# sourceMappingURL=gesture-router.d.ts.map