/// <reference types="react" />
import * as React from 'react';
import { ISimpleExecutorResult } from 'gooddata';
import { Afm, VisualizationObject, Transformation } from '@gooddata/data-layer';
import { IEvents } from '../../../interfaces/Events';
import { IDrillableItem } from '../../../interfaces/DrillEvents';
import { IVisualizationProperties } from '../../../interfaces/VisualizationProperties';
import { ChartType } from '../../../constants/visualizationTypes';
import { ILegendConfig } from '../../../helpers/config';
import { ISorting } from '../../../helpers/metadata';
import { ISimpleDataAdapterProviderInjectedProps } from '../../afm/SimpleDataAdapterProvider';
export interface IExecutorResult {
    metadata: VisualizationObject.IVisualizationObject;
    result: ISimpleExecutorResult;
    sorting?: ISorting;
}
export interface IChartConfig {
    colors?: String[];
    legend?: ILegendConfig;
    limits?: {
        series?: Number;
        categories?: Number;
    };
}
export interface ICommonChartProps extends IEvents {
    locale?: string;
    afterRender?: Function;
    pushData?: Function;
    config?: IChartConfig;
    height?: number;
    environment?: string;
    drillableItems?: IDrillableItem[];
    transformation?: Transformation.ITransformation;
    visualizationProperties?: IVisualizationProperties;
}
export declare type IChartProps = ICommonChartProps & ISimpleDataAdapterProviderInjectedProps;
export interface IChartAFMProps extends ICommonChartProps {
    projectId: string;
    afm: Afm.IAfm;
}
export interface IBaseChartProps extends IChartProps {
    type: ChartType;
}
export interface IBaseChartState {
    error: string;
    result: ISimpleExecutorResult;
    metadata: VisualizationObject.IVisualizationObject;
    isLoading: boolean;
}
export declare class BaseChart extends React.Component<IBaseChartProps, IBaseChartState> {
    static defaultProps: Partial<IBaseChartProps>;
    private dataCancellable;
    constructor(props: IBaseChartProps);
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: IBaseChartProps): void;
    componentWillUnmount(): void;
    render(): JSX.Element;
    private getChartConfig();
    private canRender();
    private onLoadingChanged(loadingState);
    private onError(errorCode, dataSource?, options?);
    private onNegativeValues();
    private onDataTooLarge();
    private initDataLoading(dataSource, metadataSource, transformation);
}
