import { ChartDataPoint, ChartSeries } from '../types';
export interface AnimationKeyframe {
    progress: number;
    value: number;
    easing?: (t: number) => number;
}
export interface AnimationSequence {
    keyframes: AnimationKeyframe[];
    duration: number;
    delay: number;
    repeat: boolean;
    yoyo: boolean;
}
export declare const easingFunctions: {
    linear: (t: number) => number;
    easeInQuad: (t: number) => number;
    easeOutQuad: (t: number) => number;
    easeInOutQuad: (t: number) => number;
    easeInCubic: (t: number) => number;
    easeOutCubic: (t: number) => number;
    easeInOutCubic: (t: number) => number;
    easeInQuart: (t: number) => number;
    easeOutQuart: (t: number) => number;
    easeInOutQuart: (t: number) => number;
    easeInSine: (t: number) => number;
    easeOutSine: (t: number) => number;
    easeInOutSine: (t: number) => number;
    easeInExpo: (t: number) => number;
    easeOutExpo: (t: number) => number;
    easeInOutExpo: (t: number) => number;
    easeInCirc: (t: number) => number;
    easeOutCirc: (t: number) => number;
    easeInOutCirc: (t: number) => number;
    easeInBack: (t: number) => number;
    easeOutBack: (t: number) => number;
    easeInOutBack: (t: number) => number;
    easeOutBounce: (t: number) => number;
    easeInBounce: (t: number) => number;
    easeInOutBounce: (t: number) => number;
};
export declare class ChartAnimationUtils {
    static createKeyframeSequence(from: number, to: number, steps?: number, easing?: keyof typeof easingFunctions): AnimationKeyframe[];
    static interpolateValue(from: number, to: number, progress: number, easing?: keyof typeof easingFunctions): number;
    static animateDataPoints(dataPoints: ChartDataPoint[], targetValues: number[], progress: number, easing?: keyof typeof easingFunctions): ChartDataPoint[];
    static animateSeries(series: ChartSeries[], targetSeries: ChartSeries[], progress: number, easing?: keyof typeof easingFunctions, staggerDelay?: number): ChartSeries[];
    static createSequence(keyframes: AnimationKeyframe[], duration: number, delay?: number, repeat?: boolean, yoyo?: boolean): AnimationSequence;
    static getValueAtProgress(sequence: AnimationSequence, progress: number): number;
    static createSpringAnimation(from: number, to: number, config?: {
        stiffness?: number;
        damping?: number;
        mass?: number;
    }): AnimationSequence;
    static createMorphingAnimation(fromShape: ChartDataPoint[], toShape: ChartDataPoint[], config?: {
        steps?: number;
        easing?: keyof typeof easingFunctions;
    }): AnimationSequence;
}
export declare const createFadeInAnimation: (duration?: number, delay?: number) => AnimationSequence;
export declare const createSlideInAnimation: (direction?: "left" | "right" | "up" | "down", distance?: number, duration?: number, delay?: number) => AnimationSequence;
export declare const createScaleInAnimation: (from?: number, to?: number, duration?: number, delay?: number) => AnimationSequence;
export declare const createBounceAnimation: (amplitude?: number, duration?: number, delay?: number) => AnimationSequence;
export declare const calculateDamping: (dampingRatio: number, stiffness: number, mass: number) => number;
export declare const createAnimationOptions: (config?: {
    duration?: number;
    easing?: string;
    delay?: number;
}) => any;
export declare const pathAnimationPlugin: {
    id: string;
    beforeInit: (chart: any) => void;
    beforeDraw: (chart: any, args: any, options: any) => void;
    startAnimation: (chart: any, duration?: number) => void;
};
export declare const createEntranceAnimation: (series: any[], type?: "fadeIn" | "slideIn" | "scaleIn" | "bounceIn", config?: {
    duration?: number;
    delay?: number;
    stagger?: number;
}, onUpdate?: (progress: number) => void, onComplete?: () => void) => {
    duration: number;
    delay: number;
    stagger: number;
    easing: string;
    onUpdate: ((progress: number) => void) | undefined;
    onComplete: (() => void) | undefined;
};
//# sourceMappingURL=ChartAnimationUtils.d.ts.map