import { ReactNode } from 'react';
export interface ChartDataPoint {
    [key: string]: string | number | null | undefined;
}
export interface ChartConfig {
    [key: string]: {
        label?: string;
        color?: string;
        theme?: string;
        type?: 'bar' | 'line' | 'area';
    };
}
export type ChartVariant = 'default' | 'minimal' | 'gradient';
export type CurveType = 'linear' | 'monotone' | 'step' | 'stepBefore' | 'stepAfter';
export interface ChartThemeOverrides {
    baseStyle?: {
        colors?: Partial<{
            series: string[];
            grid: string;
            axis: string;
            text: string;
            background: string;
            hover: string;
            disabled: string;
        }>;
        opacity?: Partial<{
            default: string;
            hover: string;
            disabled: string;
        }>;
        transitions?: Partial<{
            default: string;
            hover: string;
        }>;
    };
    variants?: Partial<Record<ChartVariant, {
        colors: string[];
    }>>;
}
export declare const CHART_DEFAULTS: {
    readonly showGrid: true;
    readonly showXAxis: true;
    readonly showYAxis: true;
    readonly barRadius: 32;
    readonly dotRadius: 4;
    readonly cellRadius: 4;
    readonly radius: 20;
    readonly strokeWidth: 2;
    readonly gap: 4;
    readonly categoryGap: 16;
    readonly curved: true;
    readonly curveType: CurveType;
    readonly fillOpacity: 0.3;
    readonly showStroke: true;
    readonly showDots: true;
    readonly orientation: "vertical" | "horizontal";
    readonly stacked: false;
    readonly variant: ChartVariant;
    readonly enableKeyboardNavigation: true;
};
export interface BaseChartProps {
    data: ChartDataPoint[];
    config: ChartConfig;
    className?: string;
    children?: ReactNode;
    title?: string;
    description?: string;
    enableKeyboardNavigation?: boolean;
}
export interface StandardChartDisplayProps {
    showGrid?: boolean;
    showXAxis?: boolean;
    showYAxis?: boolean;
    minValue?: number;
    maxValue?: number;
    variant?: ChartVariant;
    theme?: ChartThemeOverrides;
}
export interface StandardVisualProps {
    barRadius?: number;
    dotRadius?: number;
    cellRadius?: number;
    radius?: number;
    strokeWidth?: number;
    gap?: number;
    curved?: boolean;
    curveType?: CurveType;
    showDots?: boolean;
    fillOpacity?: number;
    showStroke?: boolean;
    stacked?: boolean;
}
export interface BarChartSpecificProps {
    orientation?: 'vertical' | 'horizontal';
    categoryGap?: number;
}
export interface StandardAxisConfig {
    showXAxis?: boolean;
    showYAxis?: boolean;
    xAxisLabel?: string;
    yAxisLabel?: string;
    tickFormatter?: (value: number) => string;
    labelFormatter?: (item: ChartDataPoint, index: number) => string;
}
export type LineChartData = ChartDataPoint;
export type AreaChartData = ChartDataPoint;
export type BarChartData = ChartDataPoint;
export interface ChartContainerProps extends Omit<BaseChartProps, 'data' | 'config'> {
    data?: ChartDataPoint[];
    config?: ChartConfig;
    minHeight?: string | number;
    width?: string | number;
    height?: string | number;
}
export type ChartSize = 'sm' | 'md' | 'lg' | 'xl';
export interface ChartAnimationConfig {
    duration?: number;
    easing?: string;
    delay?: number;
}
export interface ChartThemeConfig {
    baseStyle: {
        colors: {
            series: string[];
            grid: string;
            axis: string;
            text: string;
            background: string;
            hover: string;
            disabled: string;
        };
        opacity: {
            default: string;
            hover: string;
            disabled: string;
        };
        transitions: {
            default: string;
            hover: string;
        };
    };
    variants: {
        default: {
            colors: string[];
        };
        minimal: {
            colors: string[];
        };
        gradient: {
            colors: string[];
        };
    };
}
export interface ChartTheme {
    colors: {
        primary: string;
        secondary: string;
        accent: string;
        muted: string;
        background: string;
        foreground: string;
        border: string;
    };
    spacing: {
        xs: string;
        sm: string;
        md: string;
        lg: string;
        xl: string;
    };
    borderRadius: {
        sm: string;
        md: string;
        lg: string;
    };
}
