import * as React from "react";
import { WrappedComponentProps } from "react-intl";
import { Table } from "fixed-data-table-2";
import { AFM, Execution } from "@gooddata/typings";
import { ISeparators } from "@gooddata/numberjs";
import "nodelist-foreach-polyfill";
import { IMappingHeader } from "../../../interfaces/MappingHeader";
import { IHeaderPredicate } from "../../../interfaces/HeaderPredicate";
import { OnFiredDrillEvent } from "../../../interfaces/Events";
import { OnSortChangeWithItem, SortDir, TableRow } from "../../../interfaces/Table";
import { IIndexedTotalItem, ITotalWithData } from "../../../interfaces/Totals";
export declare const SCROLL_DEBOUNCE: number;
export declare const RESIZE_DEBOUNCE: number;
/**
 * We have to extend the FixedDataTable interface as
 * the FixedDataTable's inteface is not defined with state
 * which we are dependent on.
 *
 * TODO: Remove dependency on FixedDataTable internal state
 */
export interface IFixedDataTableWithState extends Table {
    state: {
        scrollX: number;
    };
}
export interface IContainerProps {
    containerHeight?: number;
    containerWidth: number;
}
export interface ITableVisualizationProps {
    containerMaxHeight?: number;
    afterRender?: () => void;
    drillablePredicates?: IHeaderPredicate[];
    executionRequest: AFM.IExecution;
    executionResponse: Execution.IExecutionResponse;
    headers?: IMappingHeader[];
    hasHiddenRows?: boolean;
    rows?: TableRow[];
    onFiredDrillEvent?: OnFiredDrillEvent;
    onSortChange?: OnSortChangeWithItem;
    sortBy?: number;
    sortDir?: SortDir;
    sortInTooltip?: boolean;
    stickyHeaderOffset?: number;
    totalsEditAllowed?: boolean;
    onTotalsEdit?: (indexedTotals: IIndexedTotalItem[]) => void;
    totalsWithData?: ITotalWithData[];
    lastAddedTotalType?: AFM.TotalType;
    onLastAddedTotalRowHighlightPeriodEnd?: () => void;
    separators?: ISeparators;
}
export interface ITableVisualizationState {
    hintSortBy: number;
    sortBubble: {
        index?: number;
        visible: boolean;
    };
    width: number;
    height: number;
}
export declare class TableVisualizationClass extends React.Component<ITableVisualizationProps & WrappedComponentProps & IContainerProps, ITableVisualizationState> {
    static defaultProps: Partial<ITableVisualizationProps & WrappedComponentProps & IContainerProps>;
    private static fullscreenTooltipEnabled;
    private static isSticky;
    private static getTableHeight;
    private addTotalDropdownOpened;
    private footer;
    private header;
    private rootRef;
    private scrollingStopped;
    private subscribers;
    private table;
    private tableComponentRef;
    private tableInnerContainer;
    private tableWrapRef;
    private totalsRemoveComponentRef;
    constructor(props: ITableVisualizationProps & WrappedComponentProps & IContainerProps);
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: ITableVisualizationProps): void;
    componentDidUpdate(prevProps: ITableVisualizationProps): void;
    componentWillUnmount(): void;
    render(): JSX.Element;
    private onTotalsEdit;
    private setRootRef;
    private setTableComponentRef;
    private setTableWrapRef;
    private setTotalsRemoveComponentRef;
    private setListeners;
    private getSortFunc;
    private getSortObj;
    private getMouseOverFunc;
    private getComponentClasses;
    private getContentClasses;
    private unsetListeners;
    private toggleBodyColumnHighlight;
    private toggleFooterColumnHighlight;
    private toggleColumnHighlight;
    private resetTotalsRowHighlight;
    private hasFooterWithTotals;
    private checkTableDimensions;
    private scrollHeader;
    private scrollFooter;
    private scroll;
    private scrolled;
    private closeSortBubble;
    private isBubbleVisible;
    private isTotalsEditAllowed;
    private addTotalsRow;
    private removeTotalsRow;
    private enableTotalColumn;
    private disableTotalColumn;
    private renderTooltipHeader;
    private renderDefaultHeader;
    private renderCell;
    private renderFooter;
    private renderColumns;
    private renderStickyTableBackgroundFiller;
    private renderTotalsRemove;
}
export declare const TableVisualization: React.FunctionComponent<import("react-intl").WithIntlProps<ITableVisualizationProps & WrappedComponentProps<"intl"> & IContainerProps>> & {
    WrappedComponent: React.ComponentType<ITableVisualizationProps & WrappedComponentProps<"intl"> & IContainerProps>;
};
