/** * Easing helpers. * * Provides the complete Penner-style easing family (linear, quad, cubic, * quart, quint, sine, expo, circ, back, elastic, bounce — each with * `In`, `Out`, and `InOut` variants), plus CSS-spec compatible * `cubicBezier()` and `steps()` factories and `mix()` / `chain()` * composers. All easings return clamped `[0, 1]` outputs. * * @module bquery/motion */ import type { EasingFunction } from './types'; export declare const linear: EasingFunction; export declare const easeInQuad: EasingFunction; export declare const easeOutQuad: EasingFunction; export declare const easeInOutQuad: EasingFunction; export declare const easeInCubic: EasingFunction; export declare const easeOutCubic: EasingFunction; export declare const easeInOutCubic: EasingFunction; export declare const easeInQuart: EasingFunction; export declare const easeOutQuart: EasingFunction; export declare const easeInOutQuart: EasingFunction; export declare const easeInQuint: EasingFunction; export declare const easeOutQuint: EasingFunction; export declare const easeInOutQuint: EasingFunction; export declare const easeInSine: EasingFunction; export declare const easeOutSine: EasingFunction; export declare const easeInOutSine: EasingFunction; export declare const easeInExpo: EasingFunction; export declare const easeOutExpo: EasingFunction; export declare const easeInOutExpo: EasingFunction; export declare const easeInCirc: EasingFunction; export declare const easeOutCirc: EasingFunction; export declare const easeInOutCirc: EasingFunction; export declare const easeInBack: EasingFunction; export declare const easeOutBack: EasingFunction; export declare const easeInOutBack: EasingFunction; export declare const easeInElastic: EasingFunction; export declare const easeOutElastic: EasingFunction; export declare const easeInOutElastic: EasingFunction; export declare const easeOutBounce: EasingFunction; export declare const easeInBounce: EasingFunction; export declare const easeInOutBounce: EasingFunction; /** * Create a CSS `cubic-bezier()` compatible easing function. * * Uses Newton-Raphson refinement of a binary-search seed (the algorithm * Blink/WebKit ship for `transition-timing-function`). Accurate to within * a few millionths over the full domain. * * @param x1 - First control point X (0..1) * @param y1 - First control point Y (unrestricted) * @param x2 - Second control point X (0..1) * @param y2 - Second control point Y (unrestricted) * @returns Easing function clamped to `[0, 1]` * * @example * ```ts * const easeInOut = cubicBezier(0.42, 0, 0.58, 1); * easeInOut(0.5); // ~0.5 * ``` */ export declare function cubicBezier(x1: number, y1: number, x2: number, y2: number): EasingFunction; /** * Step position for `steps()` easings, matching CSS `steps()` semantics. */ export type StepPosition = 'start' | 'end' | 'jump-start' | 'jump-end' | 'jump-none' | 'jump-both'; /** * Create a stepped easing function mirroring CSS `steps(count, position)`. * * @param count - Number of steps (must be a positive integer) * @param position - Step position; default `'end'` (alias of `'jump-end'`) * @returns Easing function clamped to `[0, 1]` * * @example * ```ts * const stepEnd = steps(4, 'end'); * stepEnd(0.0); // 0 * stepEnd(0.99); // 0.75 * stepEnd(1.0); // 1 * ``` */ export declare function steps(count: number, position?: StepPosition): EasingFunction; /** * Linearly blend two easings by a weight in `[0, 1]`. * * @param a - First easing * @param b - Second easing * @param weight - Mix weight (`0` returns `a(t)`, `1` returns `b(t)`) * * @example * ```ts * const softSpring = mix(easeOutCubic, easeOutBack, 0.4); * ``` */ export declare function mix(a: EasingFunction, b: EasingFunction, weight: number): EasingFunction; /** * Compose easings sequentially across evenly spaced sub-ranges of `t`. * * Each easing runs over an equal slice of the `[0, 1]` domain; the segment * output is remapped to the segment's portion of the overall range so the * resulting easing still spans `[0, 1]`. * * @param easings - Easings to chain, in order * * @example * ```ts * const inThenOut = chain(easeInQuad, easeOutBounce); * ``` */ export declare function chain(...easings: EasingFunction[]): EasingFunction; /** * Named easing presets. * * Every named preset easing exported from this module is mirrored here so * callers can look one up by name (e.g. for serialized configuration). */ export declare const easingPresets: { linear: EasingFunction; easeInQuad: EasingFunction; easeOutQuad: EasingFunction; easeInOutQuad: EasingFunction; easeInCubic: EasingFunction; easeOutCubic: EasingFunction; easeInOutCubic: EasingFunction; easeInQuart: EasingFunction; easeOutQuart: EasingFunction; easeInOutQuart: EasingFunction; easeInQuint: EasingFunction; easeOutQuint: EasingFunction; easeInOutQuint: EasingFunction; easeInSine: EasingFunction; easeOutSine: EasingFunction; easeInOutSine: EasingFunction; easeInExpo: EasingFunction; easeOutExpo: EasingFunction; easeInOutExpo: EasingFunction; easeInCirc: EasingFunction; easeOutCirc: EasingFunction; easeInOutCirc: EasingFunction; easeInBack: EasingFunction; easeOutBack: EasingFunction; easeInOutBack: EasingFunction; easeInElastic: EasingFunction; easeOutElastic: EasingFunction; easeInOutElastic: EasingFunction; easeInBounce: EasingFunction; easeOutBounce: EasingFunction; easeInOutBounce: EasingFunction; }; //# sourceMappingURL=easing.d.ts.map