import { FluxDirection } from '@flux-ui/types'; import { ComputedRef, Ref } from 'vue'; type UseElasticOverdragOptions = { /** The scrub axis; the stretch follows it (default horizontal). */ direction?(): FluxDirection; /** Pointer distance past the edge before resistance engages, px. */ readonly deadZone?: number; /** Maximum stretch at full overdrag, px. */ readonly maxStretch?: number; /** Damping range of the resistance curve (larger = softer), px. */ readonly range?: number; }; /** * Elastic overdrag: dragging past a scrubbed surface's bounds stretches it with * exponentially damped resistance, then springs home on release or re-entry — * "boundary reached, input heard, no more range". The stretch is transform-only * (`scaleX`/`scaleY`, anchored to the opposite edge), so it composes cleanly * with the rest of a control's layout. * * The consumer owns the pointer session; feed the pointer's main-axis coordinate * (`clientX` when horizontal, `clientY` when vertical) to `update` together with * the surface's (unscaled) rect, and call `reset` on release. */ export declare function useElasticOverdrag(options?: UseElasticOverdragOptions): { transform: ComputedRef; transformOrigin: Ref; update: (coord: number, rect: DOMRect) => void; reset: () => void; dispose: () => void; }; export {};