/** * Value lerping between output states — numeric records and typed CSS values. * * Linearly interpolates numeric property records and typed {@link TypedValue} * unions within-kind; cross-kind interpolation is refused loudly (no 50% snap). * * @module */ /** A single transform function part (e.g. `translateY(24px)`). */ export interface TransformPart { readonly fn: string; readonly args: readonly TypedValue[]; } /** Color space a {@link TypedValue} color carries its components in. */ export type ColorSpace = 'srgb' | 'oklch'; /** Typed value union — interpolate within-kind only. */ export type TypedValue = { readonly k: 'number'; readonly v: number; } | { readonly k: 'opacity'; readonly v: number; } | { readonly k: 'length'; readonly v: number; readonly unit: 'px' | 'rem' | '%' | 'vw' | 'vh'; } | { readonly k: 'angle'; readonly v: number; readonly unit: 'deg' | 'rad' | 'turn'; } | { readonly k: 'color'; readonly space: ColorSpace; readonly components: readonly number[]; } | { readonly k: 'transform'; readonly parts: readonly TransformPart[]; }; /** * Parse a pose binding value into a {@link TypedValue}. Property name informs * opacity/transform heuristics when the value alone is ambiguous. */ export declare function parseTypedBinding(key: string, value: number | string): TypedValue; /** Format a {@link TypedValue} for CSS custom-property / style emission. */ export declare function formatTypedValue(value: TypedValue): string; /** * Interpolate between two numeric records using an eased value [0..1]. * Returns a new record with each property lerped: from[k] + (to[k] - from[k]) * eased. */ export declare function interpolate>(from: T, to: T, eased: number, defaults?: Partial>): T; /** * Interpolate two {@link TypedValue}s within-kind. Cross-kind or unit-mismatch * interpolation is refused loudly — holds `to` and emits a diagnostic. */ export declare function interpolateTyped(from: TypedValue, to: TypedValue, eased: number): TypedValue; //# sourceMappingURL=interpolate.d.ts.map