export type SpringValue = number | Record; export interface SpringDynamics { stiffness?: number; damping?: number; precision?: number; } export interface SpringOpts extends SpringDynamics { /** * Per-key dynamics overrides for object springs. Each key (e.g. `x`, `y`, `o`) * may carry its own stiffness/damping/precision, giving asymmetric, independent * motion per axis. Keys without an entry fall back to the base dynamics. */ axes?: Record; } export interface SpringSetOpts { hard?: boolean; soft?: boolean | number; } export declare class Spring { stiffness: number; damping: number; precision: number; axes: Record | undefined; private value; private lastValue; private targetValue; private invMass; private invMassRecoveryRate; private cancelTask; private task; private lastTime; private settlePromise; private settleResolve; private readonly subscribers; constructor(value: T, opts?: SpringOpts); get current(): T; /** Whether the spring is at rest (no animation task is running). */ get settled(): boolean; subscribe(fn: (value: T) => void): () => void; private notify; set(newValue: T, opts?: SpringSetOpts): Promise; private resolveSettle; destroy(): void; } //# sourceMappingURL=spring.d.ts.map