/**
 * Returns a lerp smoother that animates a value towards a target value. Lerp smoothing
 * is conceptually similar to easing, but can be used when the current and target
 * values are not known in advance.
 *
 * Read more at: https://www.gamedeveloper.com/programming/improved-lerp-smoothing-
 *
 * @param {import("../utils/animator.js").default} animator
 * @param {(value: T) => void} callback Function to be called with the interpolated value
 * @param {number} halfLife Time until half of the value is reached, in milliseconds
 * @param {number} stopAt Stop animation when the value is within this distance from the target
 * @param {T} initialValue Initial value
 * @returns {((target: T) => void) & { stop: () => void}} Function that activates the transition with a new target value
 * @template {Record<string, number>} T
 */
export function makeLerpSmoother<T extends Record<string, number>>(animator: import("../utils/animator.js").default, callback: (value: T) => void, halfLife: number, stopAt: number, initialValue: T): ((target: T) => void) & {
    stop: () => void;
};
export default class Animator {
    /**
     *
     * @param {function(number):void} renderCallback
     */
    constructor(renderCallback: (arg0: number) => void);
    _renderCallback: (arg0: number) => void;
    _renderRequested: boolean;
    _warn: boolean;
    /** @type {(function(number):void)[]} */
    transitions: ((arg0: number) => void)[];
    /**
     * Schedules a "transition" to be called before the actual rendering
     * is preformed. The transition could adjust the layout, for example.
     * This method also requests rendering to be performed.
     *
     * If the callback has already been requested (compared by identity),
     * it is removed from the queue and added to the end.
     *
     * @param {function(number):void} callback
     */
    requestTransition(callback: (arg0: number) => void): void;
    /**
     * @param {function(number):void} callback
     */
    cancelTransition(callback: (arg0: number) => void): void;
    /**
     * Requests the request transitions and rendering callback to be called
     * during the next animation frame. Redundant calls to this method are safe,
     * they have no effect.
     */
    requestRender(): void;
    /**
     * Initiates a transition with a `requestAnimationFrame` that is synced
     * with this Animator instance.
     *
     * @param {import("./transition.js").TransitionOptions} options
     */
    transition(options: import("./transition.js").TransitionOptions): Promise<any>;
}
//# sourceMappingURL=animator.d.ts.map