import React from 'react';
import { Plugin } from 'chart.js';
import { ChartDataPoint } from '../types';
export interface GalileoInteractionConfig {
    /** Enable magnetic effect on data points */
    magneticEffect?: boolean;
    /** Magnetic strength */
    magneticStrength?: number;
    /** Magnetic range in pixels */
    magneticRange?: number;
    /** Enable ripple effect on click */
    rippleEffect?: boolean;
    /** Ripple color */
    rippleColor?: string;
    /** Ripple duration */
    rippleDuration?: number;
    /** Enable hover glow */
    hoverGlow?: boolean;
    /** Glow color */
    glowColor?: string;
    /** Glow intensity */
    glowIntensity?: number;
    /** Enable physics-based animations */
    physicsAnimations?: boolean;
    /** Spring configuration */
    springConfig?: {
        stiffness: number;
        damping: number;
        mass: number;
    };
}
export interface ElementAnimationTarget {
    elementId: string;
    datasetIndex: number;
    dataIndex: number;
    dataPoint: ChartDataPoint;
    position: {
        x: number;
        y: number;
    };
    velocity: {
        x: number;
        y: number;
    };
    target: {
        x: number;
        y: number;
    };
    isAnimating: boolean;
    magneticInfluence: number;
}
export interface GalileoPluginContext {
    elementAnimationTargets: Map<string, ElementAnimationTarget>;
    setElementAnimationTargets: React.Dispatch<React.SetStateAction<Map<string, ElementAnimationTarget>>>;
    getElementPhysicsOptions: (dataPoint: ChartDataPoint, datasetIndex: number, dataIndex: number) => {
        stiffness: number;
        damping: number;
        mass: number;
        magneticStrength: number;
    };
}
export declare const GalileoElementInteractionPlugin: Plugin<'line' | 'bar' | 'scatter' | 'bubble'>;
export default GalileoElementInteractionPlugin;
//# sourceMappingURL=GalileoElementInteractionPlugin.d.ts.map