/// <reference types="react" />
import * as React from 'react';
import { ISimpleExecutorResult } from 'gooddata';
import { DataSource, MetadataSource, Transformation, VisualizationObject } from '@gooddata/data-layer';
import { IEvents } from '../../interfaces/Events';
import { IDrillableItem } from '../../interfaces/DrillEvents';
import { IVisualizationProperties } from '../../interfaces/VisualizationProperties';
import { Requireable } from '../../proptypes/Table';
import { ISorting } from '../../helpers/metadata';
import { ISortingChange } from '../../helpers/sorting';
import { VisualizationEnvironment } from '../uri/Visualization';
export { Requireable };
export interface ITableProps extends IEvents {
    dataSource: DataSource.IDataSource<ISimpleExecutorResult>;
    metadataSource: MetadataSource.IMetadataSource;
    transformation?: Transformation.ITransformation;
    locale?: string;
    height?: number;
    environment?: VisualizationEnvironment;
    stickyHeader?: number;
    drillableItems?: IDrillableItem[];
    afterRender?: Function;
    pushData?: Function;
    visualizationProperties?: IVisualizationProperties;
}
export interface ITableState {
    error: string;
    result: ISimpleExecutorResult;
    metadata: VisualizationObject.IVisualizationObject;
    isLoading: boolean;
    sorting: ISorting;
    page: number;
}
export declare class Table extends React.Component<ITableProps, ITableState> {
    static defaultProps: Partial<ITableProps>;
    static propTypes: {
        dataSource: Requireable<any>;
        metadataSource: Requireable<any>;
        locale: Requireable<any>;
        height: Requireable<any>;
        environment: Requireable<any>;
        drillableItems: Requireable<any>;
        stickyHeader: Requireable<any>;
        onError: Requireable<any>;
        onLoadingChanged: Requireable<any>;
        afterRender: Requireable<any>;
        pushData: Requireable<any>;
    };
    private dataCancellable;
    constructor(props: ITableProps);
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: ITableProps): void;
    componentWillUnmount(): void;
    onSortChange(change: ISortingChange): void;
    onMore({page}: {
        page: number;
    }): void;
    onLess(): void;
    render(): JSX.Element;
    private canRender();
    private onError(errorCode, dataSource?, options?);
    private onDataTooLarge();
    private onLoadingChanged(loadingState);
    private initDataLoading(dataSource, metadataSource, transformation, sorting?);
}
