/// <reference types="react" />
import * as React from 'react';
import * as GoodData from 'gooddata';
import { Afm, DataTable, Transformation } from '@gooddata/data-layer';
import { IEvents } from '../interfaces/Events';
export declare type IDataTableFactory = (projectId: string) => DataTable<GoodData.ISimpleExecutorResult>;
export interface IExecuteProps extends IEvents {
    afm: Afm.IAfm;
    transformation?: Transformation.ITransformation;
    projectId: string;
    children?: any;
    dataTableFactory?: IDataTableFactory;
}
export interface IExecuteState {
    result: GoodData.ISimpleExecutorResult;
}
export declare class Execute extends React.Component<IExecuteProps, IExecuteState> {
    static defaultProps: Partial<IExecuteProps>;
    private dataTable;
    constructor(props: IExecuteProps);
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: IExecuteProps): void;
    shouldComponentUpdate(nextProps: IExecuteProps, nextState: IExecuteState): boolean;
    render(): any;
    private isPropChanged(nextProps, propName);
    private hasPropsChanged(nextProps, propNames);
    private runExecution(props);
}
