import type { FuncString, IServiceStore, RendererProps, SchemaClassName, SchemaExpression, SchemaName } from 'jamis-core';
import type { ActionSchema, BaseSchema, SchemaApi, SchemaTokenizeableString } from '../types';
/**
 * Chart 图表组件。
 */
export interface ChartSchema extends BaseSchema {
    /**
     * 指定为 chart 类型
     */
    type: 'chart';
    bodyClassName?: SchemaClassName;
    /**
     * Chart 主题配置
     */
    chartTheme?: any;
    /**
     * 图表配置接口
     */
    api?: SchemaApi;
    /**
     * 是否初始加载。
     * @deprecated 建议直接配置 api 的 sendOn
     */
    initFetch?: boolean;
    /**
     * 是否初始加载用表达式来配置
     * @deprecated 建议用 api.sendOn 属性。
     */
    initFetchOn?: SchemaExpression;
    /**
     * 配置echart的config，支持数据映射。如果用了数据映射，为了同步更新，请设置 trackExpression
     */
    config?: any;
    /**
     * 跟踪表达式，如果这个表达式的运行结果发生变化了，则会更新 Echart，当 config 中用了数据映射时有用。
     */
    trackExpression?: SchemaExpression;
    /**
     * 宽度设置
     */
    width?: number;
    /**
     * 高度设置
     */
    height?: number;
    /**
     * 刷新时间
     */
    interval?: number;
    name?: SchemaName;
    dataFilter?: FuncString | ((config: any, echarts: any, data?: any) => any);
    source?: SchemaTokenizeableString;
    /**
     * 默认开启 Config 中的数据映射，如果想关闭，请开启此功能
     */
    disableDataMapping?: boolean;
    /**
     * 点击行为配置，可以用来满足下钻操作等
     */
    clickAction?: ActionSchema;
    /**
     * 默认配置时追加的，如果更新配置想完全替换配置请配置为 true.
     */
    replaceChartOption?: boolean;
    /**
     * 不可见的时候隐藏
     */
    unMountOnHidden?: boolean;
}
export interface ChartProps extends RendererProps, Omit<ChartSchema, 'type' | 'className'> {
    store: IServiceStore;
    chartRef?: (echart: any) => void;
    onChartWillMount?: (echarts: any) => void | Promise<void>;
    onChartMount?: (chart: any, echarts: any) => void;
    onChartUnMount?: (chart: any, echarts: any) => void;
    onDataFilter?: (config: any, echarts: any, data?: any) => any;
}
