import { AFM, Execution, VisualizationObject } from "@gooddata/typings";
import * as React from "react";
import { WrappedComponentProps } from "react-intl";
import "../../../styles/css/pivotTable.css";
import { IPivotTableConfig, ColumnWidthItem } from "../../interfaces/PivotTable";
import { IDataSourceProviderInjectedProps } from "../afm/DataSourceProvider";
import { ICommonChartProps } from "./base/BaseChart";
import { BaseVisualization } from "./base/BaseVisualization";
import { IGetPage, ILoadingInjectedProps } from "./base/VisualizationLoadingHOC";
import { IGridHeader, IGridRow } from "./pivotTable/agGridTypes";
export interface IPivotTableProps extends ICommonChartProps, IDataSourceProviderInjectedProps {
    totals?: VisualizationObject.IVisualizationTotal[];
    getPage?: IGetPage;
    cancelPagePromises?: () => void;
    pageSize?: number;
    config?: IPivotTableConfig;
    groupRows?: boolean;
    onDataSourceUpdateSuccess?: () => void;
    onColumnResized?: (columnWidths: ColumnWidthItem[]) => void;
}
export interface IPivotTableState {
    columnDefs: IGridHeader[];
    rowData: IGridRow[];
    execution: Execution.IExecutionResponses;
    columnTotals: AFM.ITotalItem[];
    agGridRerenderNumber: number;
    desiredHeight: number | undefined;
    sortedByFirstAttribute: boolean;
    resized: boolean;
}
export declare type IPivotTableInnerProps = IPivotTableProps & ILoadingInjectedProps & IDataSourceProviderInjectedProps & WrappedComponentProps;
export declare const WATCHING_TABLE_RENDERED_INTERVAL = 500;
export declare const DEFAULT_COLUMN_WIDTH = 200;
/**
 * Pivot Table react component
 */
export declare class PivotTableInner extends BaseVisualization<IPivotTableInnerProps, IPivotTableState> {
    static defaultProps: Partial<IPivotTableInnerProps>;
    private agGridDataSource;
    private gridApi;
    private columnApi;
    private containerRef;
    private groupingProvider;
    private lastScrollPosition;
    private resizedColumnsStore;
    private autoResizedColumns;
    private growToFittedColumns;
    private watchingIntervalId;
    private resizing;
    private lastResizedWidth;
    private lastResizedHeight;
    private numberOfColumnResizedCalls;
    private columnWidthsChangeWaitingForExecution;
    private isMetaOrCtrlKeyPressed;
    private isAltKeyPressed;
    constructor(props: IPivotTableInnerProps);
    componentWillMount(): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentWillUpdate(nextProps: IPivotTableInnerProps, nextState: IPivotTableState): void;
    componentDidUpdate(prevProps: IPivotTableInnerProps, prevState: IPivotTableState): void;
    renderVisualization(): JSX.Element;
    private isTableHidden;
    private forceRerender;
    private setContainerRef;
    private setGroupingProvider;
    private updateGrouping;
    private getExecutionResponse;
    private getExecutionResult;
    private getAfmFilters;
    private getColumnTotals;
    private getExecution;
    private getGridApi;
    private isNewAGGridDataSourceNeeded;
    private isAgGridRerenderNeeded;
    private updateAGGridDataSource;
    private getColumnIds;
    private getAutoResizedColumns;
    private autoresizeVisibleColumns;
    private autoresizeColumnsByColumnId;
    private shouldPerformAutoresize;
    private isColumnAutoresizeEnabled;
    private isGrowToFitEnabled;
    private isPivotTableReady;
    private autoresizeColumns;
    private isColumnAutoResized;
    private resetColumnsWidthToDefault;
    private clearFittedColumns;
    private handleColumnWidthsChange;
    private setFittedColumns;
    private growToFit;
    private mapFieldIdToGridId;
    private gridSizeChanged;
    private gridColumnsChanged;
    private shouldAutoResizeColumns;
    private onModelUpdated;
    private sortChanged;
    private createAGGridDataSource;
    private setGridDataSource;
    private onGridReady;
    private startWatchingTableRendered;
    private stopWatchingTableRendered;
    private onFirstDataRendered;
    private getAttributeHeader;
    private getItemAndAttributeHeaders;
    private getAttributeDrillItemsForMeasureDrill;
    private isSomeTotal;
    private getRowDrillItem;
    private getDrillItems;
    private getDrillIntersection;
    private cellClicked;
    private handleLegacyOnFireDrillEvent;
    private isManualResizing;
    private getDefaultWidth;
    private resetResizedColumn;
    private onGridColumnResized;
    private getAllMeasureColumns;
    private onColumnsManualReset;
    private isAllMeasureResizeOperation;
    private isWeakMeasureResizeOperation;
    private onColumnsManualResized;
    private afterOnResizeColumns;
    private onMenuAggregationClick;
    private onBodyScroll;
    private onContainerMouseDown;
    private getInfiniteInitialRowCountRowCount;
    private getColumnWidths;
    private hasColumnWidths;
    private getDefaultWidthFromProps;
    private createGridOptions;
    /**
     * getCellClass returns class for drillable cells. (maybe format in the future as well)
     */
    private getCellClass;
    private getHeaderClass;
    private getDrillablePredicates;
    private isStickyRowAvailable;
    private updateStickyRow;
    private updateStickyRowContent;
    private getTotalBodyHeight;
    private getScrollBarPadding;
    private updateDesiredHeight;
    private isHeaderResizer;
    private shouldWaitForExecution;
}
export declare const PivotTable: React.ComponentClass<IPivotTableProps, any>;
