/**
 * Animation utilities for chart components
 *
 * Provides shared spring animation presets and helper functions
 * to ensure consistent animations across all chart components.
 */
/**
 * Spring animation configuration
 */
export interface SpringConfig {
    type: 'spring';
    stiffness: number;
    damping: number;
    delay?: number;
}
/**
 * No animation configuration
 */
export interface NoAnimationConfig {
    duration: 0;
}
/**
 * Animation preset names
 */
export type AnimationPreset = 'smooth' | 'bouncy' | 'quick' | 'slow';
/**
 * Spring animation presets for circular charts
 *
 * These presets define the physics of spring animations:
 * - stiffness: How quickly the animation reaches its target (higher = faster)
 * - damping: How much the animation oscillates (lower = more bouncy)
 */
export declare const SPRING_PRESETS: Record<AnimationPreset, Omit<SpringConfig, 'type'>>;
/**
 * Get spring animation configuration for circular charts
 *
 * @param preset - The animation preset to use
 * @param shouldReduceMotion - Whether to respect reduced motion preferences
 * @param delay - Optional delay before animation starts (in seconds)
 * @returns Animation configuration object for motion components
 *
 * @example
 * ```tsx
 * const animation = getSpringAnimation('smooth', shouldReduceMotion, 0.2);
 * <motion.circle
 *   animate={...}
 *   transition={animation}
 * />
 * ```
 */
export declare function getSpringAnimation(preset?: AnimationPreset, shouldReduceMotion?: boolean | null, delay?: number): SpringConfig | NoAnimationConfig;
/**
 * Get useSpring configuration (for motion/react useSpring hook)
 *
 * @param preset - The animation preset to use
 * @returns Spring configuration object for useSpring
 *
 * @example
 * ```tsx
 * const animatedValue = useSpring(value, getUseSpringConfig('bouncy'));
 * ```
 */
export declare function getUseSpringConfig(preset?: AnimationPreset): {
    stiffness: number;
    damping: number;
};
/**
 * Create staggered animation delay for multiple elements
 *
 * @param index - The element index
 * @param staggerDelay - The delay between each element (in seconds)
 * @returns The calculated delay for this element
 *
 * @example
 * ```tsx
 * rings.map((ring, index) => (
 *   <motion.circle
 *     transition={{ ...springConfig, delay: getStaggerDelay(index, 0.1) }}
 *   />
 * ))
 * ```
 */
export declare function getStaggerDelay(index: number, staggerDelay?: number): number;
/**
 * Pre-configured animation settings for specific circular chart types
 */
export declare const CIRCULAR_CHART_ANIMATIONS: {
    /**
     * DonutChart: Smooth spring animation with slight delay
     */
    readonly donut: {
        readonly preset: AnimationPreset;
        readonly initialDelay: 0.2;
    };
    /**
     * ActivityRings: Smooth spring with staggered rings
     */
    readonly activityRings: {
        readonly preset: AnimationPreset;
        readonly staggerDelay: 0.1;
        readonly centerLabelDelay: 0.3;
    };
    /**
     * GaugeChart: Bouncy animation for needle
     */
    readonly gauge: {
        readonly preset: AnimationPreset;
        readonly needleDelay: 0;
        readonly valueDelay: 0.3;
    };
};
