import { animate, AnimationOptions, Easing, KeyframeOptions, PlaybackOptions } from '@repalash/popmotion';
import { MathUtils } from 'three';
export { animate };
declare module '@repalash/popmotion' {
    interface PlaybackOptions<V> {
        onEnd?: () => void;
    }
}
export type { AnimationOptions, KeyframeOptions, Easing };
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: Easing;
};
/**
 * 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;
/**
 * Simplified version of popmption animate that supports seeking around the animation. Used in AnimationObject.ts
 * @param from
 * @param autoplay
 * @param driver
 * @param elapsed
 * @param onPlay
 * @param onStop
 * @param onComplete
 * @param onUpdate
 * @param delay
 * @param canComplete
 * @param options
 */
export declare function animateKeyframes<V = number>({ from, autoplay, driver, elapsed, onPlay, onStop, onComplete, onUpdate, delay, canComplete, ...options }: KeyframeOptions<V> & Omit<PlaybackOptions<V>, 'repeat' | 'repeatType' | 'repeatDelay' | 'onRepeat' | 'type'> & {
    delay?: number;
    canComplete?: boolean;
}): {
    stop: () => void;
};
//# sourceMappingURL=../src/utils/animation.d.ts.map