import { animate, AnimationOptions, Easing, KeyframeOptions } from 'popmotion';
import { MathUtils } from 'three';
export { animate };
declare module 'popmotion' {
    interface PlaybackOptions<V> {
        onEnd?: () => void;
    }
}
export type { AnimationOptions, KeyframeOptions, Easing };
declare function easeInOutSine(x: number): number;
export declare const EasingFunctions: {
    linear: Easing;
    easeIn: Easing;
    easeOut: Easing;
    easeInOut: Easing;
    circIn: Easing;
    circOut: Easing;
    circInOut: Easing;
    backIn: Easing;
    backOut: Easing;
    backInOut: Easing;
    anticipate: Easing;
    bounceOut: (p: number) => number;
    bounceIn: Easing;
    bounceInOut: (p: number) => number;
    easeInOutSine: typeof easeInOutSine;
};
/**
 * EasingFunctionType:
 * anticipate, backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, easeIn, easeInOut, easeOut, easeInOutSine
 */
export type EasingFunctionType = keyof typeof EasingFunctions;
export type AnimateResult = ReturnType<typeof animate>;
export declare function makeSetterFor<V>(target: any, key: string, setDirty?: () => void): (a: any) => void;
export declare function animateTarget<V>(target: any, key: string, options: AnimationOptions<V>, animations?: AnimateResult[], forceCurrent?: boolean): Promise<void>;
export declare function animateAsync<V = number>(options: AnimationOptions<V>, animations?: AnimateResult[]): Promise<void>;
export declare function lerpAngle(a: number, b: number, t: number): number;
export declare const lerp: typeof MathUtils.lerp;
//# sourceMappingURL=animation.d.ts.map