import * as React from 'react';
import * as d3 from 'd3';
import { ChartOpts, Layout } from './interface';
export default abstract class<T extends ChartOpts> extends React.PureComponent<T> {
    /**
     * 内部样式，如果需要添加className 可以重写此属性
    */
    __ClassName: string;
    __Grid: {
        top: number;
        left: number;
        right: number;
        bottom: number;
    };
    /**
     * 是否等到有数据时才build
    */
    _WAIT: boolean;
    /**
     * 最后更新时年数据
     */
    _last_data: any;
    /**
     * 默认的最大显示条数，默认为10
    */
    MAXCOUNT: number;
    /**
     * 自增的id
    */
    id: string;
    /**
     * 是否已经loaded
    */
    loaded: boolean;
    /**
     * 格式化标签
    */
    FormatLabel: Function;
    /**
     * 格式化值
    */
    FormatValue: (val: any) => any;
    /**
     * 处理后的数据
    */
    DATA: any[];
    /**
     * SVG 根结点对象
    */
    SVG: d3.Selection<any, any, any, any>;
    /**
     * 过渡时间
    */
    DURATION: number;
    /**
     * 总宽度
     */
    WIDTH: number;
    /**
     * 总高度
     */
    HEIGHT: number;
    /**
     * 展示空间
     * */
    LAYOUT: Layout;
    /**
     * 最最小最大值，可用来替代 d3.extent 方法
    */
    extent(data: any[], fn: any): [number, number];
    itemClass(d: any, i: any): string;
    /**
     * build 方法会在图表标签导入时自动调用，必须实现此方法
    */
    build(): void;
    /**
     * update 方法会在数据发生变化时自动调用，必须实现此方法
    */
    abstract update(): any;
    /**
     * resize方法会在宽高发生变化的情况下自动调用,默认重写
    */
    resize(): void;
    /**
     * init 方法会在build前自动调用
    */
    init(): void;
    /**
     * sort方法会在 build前 或 update前 自动调用
    */
    sort(): void;
    /**
     * 是否需要resize
    */
    _needResize(): boolean;
    /**
     * 是否需要update
    */
    _needUpdate(): boolean;
    private __initSVG;
    componentDidMount(): void;
    componentDidUpdate(): void;
    /**
     * 不要实现render方法
    */
    render(): JSX.Element;
}
