import type { PrototypeDragAddress, PrototypeDragConfiguration, PrototypeDragPoint } from './prototypeMotionContracts.js'; export interface PrototypeDragSampleInput { pointerId: number; point: PrototypeDragPoint; /** Injected logical time in milliseconds. */ now: number; } export interface PrototypeDragStartInput extends PrototypeDragSampleInput, PrototypeDragAddress { } export interface PrototypeDragFinishInput extends PrototypeDragSampleInput { cancel?: boolean; } export interface PrototypeDragSession { readonly config: Readonly; readonly address: { readonly path: readonly string[]; readonly occurrence?: { readonly sceneId: string; readonly rowPath: readonly Readonly<{ repeatId: string; key: string | number; }>[]; }; }; readonly pointerId: number; readonly origin: Readonly; readonly lastPoint: Readonly; readonly startedAt: number; readonly updatedAt: number; readonly progress: number; /** Velocity of the clamped progress in progress units per second. */ readonly velocity: number; readonly phase: 'active' | 'ended'; readonly outcome: 'commit' | 'cancel' | null; } export declare function isPrototypeDragConfiguration(value: unknown): value is PrototypeDragConfiguration; /** Capture one gesture without resolving scenes, dispatching actions, or reading a clock. */ export declare function startPrototypeDrag(config: PrototypeDragConfiguration, input: PrototypeDragStartInput): PrototypeDragSession; /** Other pointers and samples after release are inert. Invalid owned samples leave the session unchanged. */ export declare function updatePrototypeDrag(session: PrototypeDragSession, input: PrototypeDragSampleInput): PrototypeDragSession; /** End once. Only position determines commit. An unchanged release axis retains its last * velocity for at most 80ms; a longer pause rests. Cancellation never commits. */ export declare function finishPrototypeDrag(session: PrototypeDragSession, input: PrototypeDragFinishInput): PrototypeDragSession;