/** * Pure, worklet-safe helpers for dragging a Form-A reference line along the * Y-axis. Kept free of hooks / SharedValues so they unit-test without Reanimated * (the gesture wiring lives in {@link useReferenceDrag}). */ /** Clamp a value to an optional `[min, max]` bound (order-independent). No-op when * `bounds` is omitted. */ export declare function clampToBounds(value: number, bounds?: [number, number]): number; /** * Index of the draggable line whose handle-Y is nearest the touch `y`, within * `slop` px — or `-1` when none is in reach. `handleYs` is index-aligned with the * chart's `referenceLines`; entries `< 0` (not draggable / off-screen / not laid * out) are skipped. Ties favor the later (topmost-drawn) line. */ export declare function nearestDraggableIndex(handleYs: number[], y: number, slop: number): number; /** * Resolve a grabbed line's drag intent from the touch travel (px) since the grab. * Once a line is grabbed it **owns** the touch: any drag past `threshold` px in * either axis activates the drag. We deliberately don't fall through to scrub on * horizontal / diagonal intent — that let the scrub crosshair win the race even * on a vertical drag started on the line (#163). Returns `"activate"` past the * threshold, else `"wait"` (keep the gesture armed for more travel). */ export declare function resolveDragIntent(dx: number, dy: number, threshold: number): "activate" | "wait"; /** * Whether a line's value sits **outside** its watched interval — the trigger for * `onDragOut` / `onDragIn` (edge-detected by the caller). When `bounds` is set the * watched interval is `bounds` (at-or-past a bound counts as out, since the drag * clamps there); otherwise it's the visible `[min, max]` Y-range (out = scrolled / * dragged off-screen). */ export declare function referenceValueOut(value: number, min: number, max: number, bounds?: [number, number]): boolean; //# sourceMappingURL=referenceDrag.d.ts.map