import { EChartsOption } from '../../plugins/echarts';
export type LegendPosition = 'bottom' | 'top' | 'left' | 'right';
export type SymbolType = 'circle' | 'rect' | 'roundRect' | 'triangle' | 'diamond' | 'pin' | 'arrow' | 'none';
export interface ChartThemeConfig {
    /** 图表高度 */
    chartHeight: string;
    /** 字体大小 */
    fontSize: number;
    /** 字体颜色 */
    fontColor: string;
    /** 主题颜色 */
    themeColor: string;
    /** 颜色组 */
    colors: string[];
}
export interface UseChartOptions {
    /** 初始化选项 */
    initOptions?: EChartsOption;
    /** 延迟初始化时间(ms) */
    initDelay?: number;
    /** IntersectionObserver阈值 */
    threshold?: number;
    /** 是否自动响应主题变化 */
    autoTheme?: boolean;
}
export interface BaseChartProps {
    /** 图表高度 */
    height?: string;
    /** 是否加载中 */
    loading?: boolean;
    isEmpty?: boolean;
    /** 颜色配置 */
    colors?: string[];
}
export interface AxisDisplayProps {
    /** 是否显示坐标轴标签 */
    showAxisLabel?: boolean;
    /** 是否显示坐标轴线 */
    showAxisLine?: boolean;
    /** 是否显示分割线 */
    showSplitLine?: boolean;
}
export interface InteractionProps {
    /** 是否显示提示框 */
    showTooltip?: boolean;
    /** 是否显示图例 */
    showLegend?: boolean;
    /** 图例位置 */
    legendPosition?: LegendPosition;
}
export interface BarDataItem {
    /** 系列名称 */
    name: string;
    /** 数据值 */
    data: number[];
    /** 柱状图宽度 */
    barWidth?: string | number;
    /** 堆叠分组名称 */
    stack?: string;
}
export interface BarChartProps extends BaseChartProps, AxisDisplayProps, InteractionProps {
    /** 图表数据 - 支持单组数据或多组数据 */
    data: number[] | BarDataItem[];
    /** X轴标签数据 */
    xAxisData?: string[];
    /** 柱状图宽度 */
    barWidth?: string | number;
    /** 是否堆叠显示 */
    stack?: boolean;
    /** 圆角 */
    borderRadius?: number | number[];
}
export interface LineDataItem {
    /** 系列名称 */
    name: string;
    /** 数据值 */
    data: number[];
    /** 线条宽度 */
    lineWidth?: number;
    /** 是否显示区域填充 */
    showAreaColor?: boolean;
    /** 区域样式配置 */
    areaStyle?: {
        /** 渐变开始透明度 */
        startOpacity?: number;
        /** 渐变结束透明度 */
        endOpacity?: number;
        /** 自定义 ECharts areaStyle 配置 */
        custom?: any;
    };
    /** 是否平滑曲线 */
    smooth?: boolean;
    /** 数据点符号 */
    symbol?: SymbolType;
    /** 数据点大小 */
    symbolSize?: number;
}
export interface LineChartProps extends BaseChartProps, AxisDisplayProps, InteractionProps {
    /** 图表数据 - 支持单组数据或多组数据 */
    data: number[] | LineDataItem[];
    /** X轴标签数据 */
    xAxisData?: string[];
    /** 线条宽度 */
    lineWidth?: number;
    /** 是否显示区域填充 */
    showAreaColor?: boolean;
    /** 是否平滑曲线 */
    smooth?: boolean;
    /** 数据点符号 */
    symbol?: SymbolType;
    /** 数据点大小 */
    symbolSize?: number;
    /** 多数据动画延迟间隔（毫秒） */
    animationDelay?: number;
}
export interface RadarDataItem {
    /** 系列名称 */
    name: string;
    /** 数据值 */
    value: number[];
}
export interface RadarChartProps extends BaseChartProps, InteractionProps {
    /** 雷达图指标配置 */
    indicator?: Array<{
        name: string;
        max: number;
    }>;
    /** 图表数据 */
    data?: RadarDataItem[];
}
export interface PieDataItem {
    /** 数据值 */
    value: number;
    /** 数据名称 */
    name: string;
}
export interface RingChartProps extends BaseChartProps, InteractionProps {
    /** 图表数据 */
    data: PieDataItem[];
    /** 内外半径 */
    radius?: string[];
    /** 边框圆角 */
    borderRadius?: number;
    /** 中心文本 */
    centerText?: string;
    /** 是否显示标签 */
    showLabel?: boolean;
}
export interface KLineDataItem {
    /** 时间标签 */
    time: string;
    /** 开盘价 */
    open: number;
    /** 收盘价 */
    close: number;
    /** 最高价 */
    high: number;
    /** 最低价 */
    low: number;
}
export interface KLineChartProps extends BaseChartProps {
    /** 图表数据 */
    data?: KLineDataItem[];
    /** 是否显示数据缩放控件 */
    showDataZoom?: boolean;
    /** 数据缩放初始开始位置 */
    dataZoomStart?: number;
    /** 数据缩放初始结束位置 */
    dataZoomEnd?: number;
}
export interface ScatterDataItem {
    /** 坐标值 [x, y] */
    value: number[];
}
export interface ScatterChartProps extends BaseChartProps, AxisDisplayProps, InteractionProps {
    /** 图表数据 */
    data?: ScatterDataItem[];
    /** 散点大小 */
    symbolSize?: number;
}
export interface DualBarCompareChartProps extends BaseChartProps {
    /** 上方数据 */
    topData: number[];
    /** 下方数据 */
    bottomData: number[];
    /** X轴标签数据 */
    xAxisData: string[];
    /** 上方柱子颜色 */
    topColor?: string;
    /** 下方柱子颜色 */
    bottomColor?: string;
    /** 柱状图宽度 */
    barWidth?: number;
}
export interface MapChartProps extends BaseChartProps {
    /** 地图数据 */
    mapData?: any[];
    /** 选中区域 */
    selectedRegion?: string;
    /** 是否显示标签 */
    showLabels?: boolean;
    /** 是否显示散点 */
    showScatter?: boolean;
}
export interface BidirectionalBarChartProps extends BaseChartProps, AxisDisplayProps, InteractionProps {
    /** 正向数据（向上显示） */
    positiveData: number[];
    /** 负向数据（向下显示） */
    negativeData: number[];
    /** X轴标签数据 */
    xAxisData?: string[];
    /** 正向数据名称 */
    positiveName?: string;
    /** 负向数据名称 */
    negativeName?: string;
    /** 柱状图宽度 */
    barWidth?: string | number;
    /** Y轴最小值 */
    yAxisMin?: number;
    /** Y轴最大值 */
    yAxisMax?: number;
    /** 是否显示数据标签 */
    showDataLabel?: boolean;
    /** 正向数据圆角配置 */
    positiveBorderRadius?: number | number[];
    /** 负向数据圆角配置 */
    negativeBorderRadius?: number | number[];
}
export type ChartOptionGenerator = () => EChartsOption;
export type ChartEventCallback = (params: any) => void;
export interface ChartError {
    /** 错误码 */
    code: string;
    /** 错误信息 */
    message: string;
    /** 错误详情 */
    details?: any;
}
