import { type Animatable, type Scheduler } from '@underlying/core'; import { type PathInput, type SamplePathOptions } from './geometry'; import { type ScalarControls } from './handle'; export interface PathBindOptions extends SamplePathOptions { /** * Turn the element to face along the path. `true` aligns to the tangent; * a number adds that many degrees of offset (e.g. `90` for a north-up icon). */ autoRotate?: boolean | number; /** Scheduler driving the value and the style flush. Defaults to the shared one. */ scheduler?: Scheduler; } export interface MotionPathOptions extends PathBindOptions { /** Initial progress, 0..1. Default 0. */ from?: number; /** Spring to this progress on creation - a familiar one-call form. */ to?: number; } /** * Low-level binder: map a driver Animatable (0..1) onto an element's transform * along a path. You own the driver - spring, decay, or scrub it from scroll or a * timeline. Writes the current point synchronously at bind; returns an unbind fn. */ export declare function bindPath(element: HTMLElement | SVGElement, path: PathInput, source: Animatable, options?: PathBindOptions): () => void; export interface MotionPath extends ScalarControls { /** The live 0..1 driver. Compose it: scroll.scrub(mp.t), a timeline, a sequence. */ readonly t: Animatable; } /** * Ride an element along an SVG path, physics-first. Progress `t` is a live * Animatable, so you can spring it, flick it down the path and let it settle, * retarget it mid-flight (velocity conserved), or hand `t` to scroll/timeline. * `autoRotate` turns the element to face along the path. */ export declare function motionPath(element: HTMLElement | SVGElement, path: PathInput, options?: MotionPathOptions): MotionPath; //# sourceMappingURL=motion-path.d.ts.map