import * as React from "react";
import { SDK } from "@gooddata/gooddata-js";
import { AFM, Execution } from "@gooddata/typings";
import { IEvents } from "../../../interfaces/Events";
import { IDrillableItem } from "../../../interfaces/DrillEvents";
import { IHeaderPredicate } from "../../../interfaces/HeaderPredicate";
import { IDataSourceProviderInjectedProps } from "../../afm/DataSourceProvider";
import { WrappedComponentProps } from "react-intl";
import { ILoadingProps } from "../../simple/LoadingComponent";
import { IErrorProps } from "../../simple/ErrorComponent";
import { IPushData } from "../../../interfaces/PushData";
import { IChartConfig } from "../../../interfaces/Config";
export declare type IExecutionDataPromise = Promise<Execution.IExecutionResponses>;
export interface ICommonVisualizationProps extends IEvents {
    sdk?: SDK;
    projectId?: string;
    locale?: string;
    drillableItems?: Array<IDrillableItem | IHeaderPredicate>;
    afterRender?: () => void;
    pushData?: (data: IPushData) => void;
    ErrorComponent?: React.ComponentType<IErrorProps>;
    LoadingComponent?: React.ComponentType<ILoadingProps>;
    config?: IChartConfig;
}
export declare type IGetPage = (resultSpec: AFM.IResultSpec, limit: number[], offset: number[]) => Promise<Execution.IExecutionResponses | null>;
export interface ILoadingInjectedProps extends WrappedComponentProps {
    execution: Execution.IExecutionResponses;
    error?: string;
    isLoading: boolean;
    getPage?: IGetPage;
    onDataTooLarge(): void;
    onNegativeValues(): void;
}
export interface IVisualizationLoadingState {
    error?: string;
    result?: Execution.IExecutionResponses;
    isLoading: boolean;
}
export declare const commonDefaultProps: Partial<ICommonVisualizationProps & IDataSourceProviderInjectedProps>;
export declare function visualizationLoadingHOC<T extends ICommonVisualizationProps & IDataSourceProviderInjectedProps>(InnerComponent: React.ComponentClass<T & ILoadingInjectedProps>, autoExecuteDataSource?: boolean): React.ComponentClass<T>;
