import React from 'react';
import { OnScrollParams, GridProps, Index } from 'react-virtualized';
import { CellSizeCache } from './cell-size';
import HeaderCellFactory from './header-cell';
import { ColMeta } from '@kepler.gl/types';
import { DataContainerInterface } from '@kepler.gl/utils';
type ContainerProps = {
    hasCustomScrollBarStyle?: boolean;
};
export declare const Container: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ContainerProps>>;
export type SortColumn = {
    column?: string;
    mode?: string;
};
interface GetRowCellProps {
    dataContainer: DataContainerInterface | null;
    columns: (string & {
        ghost?: boolean;
    })[];
    column: string;
    colMeta: any;
    rowIndex: number;
    sortOrder?: number[] | null;
}
interface TableSectionProps {
    classList?: {
        header: string;
        rows: string;
    };
    isPinned?: boolean;
    columns: (string & {
        ghost?: boolean;
    })[];
    headerGridProps?: any;
    fixedWidth?: number | null;
    fixedHeight?: number | null;
    onScroll?: (params: OnScrollParams) => void;
    scrollTop?: number;
    dataGridProps: {
        rowHeight: number | ((params: Index) => number);
        rowCount: number;
    } & Partial<GridProps>;
    columnWidth?: any;
    setGridRef?: (ref: HTMLDivElement | null) => void;
    headerCellRender?: any;
    dataCellRender?: any;
    scrollLeft?: number;
}
export declare const TableSection: ({ classList, isPinned, columns, headerGridProps, fixedWidth, fixedHeight, onScroll, scrollTop, dataGridProps, columnWidth, setGridRef, headerCellRender, dataCellRender, scrollLeft }: TableSectionProps) => React.JSX.Element;
export interface DataTableProps {
    dataId?: string;
    hasStats?: boolean;
    cellSizeCache?: CellSizeCache;
    pinnedColumns?: string[];
    columns: (string & {
        ghost?: boolean;
    })[];
    fixedWidth?: number | null;
    theme?: any;
    dataContainer: DataContainerInterface | null;
    fixedHeight?: number | null;
    colMeta: ColMeta;
    sortColumn: SortColumn;
    sortTableColumn: (column: string, mode?: string) => void;
    pinTableColumn: (column: string) => void;
    setColumnDisplayFormat?: (formats: {
        [key: string]: string;
    }) => void;
    copyTableColumn: (column: string) => void;
    sortOrder?: number[] | null;
    showStats?: boolean;
    hasCustomScrollBarStyle?: boolean;
    getRowCell?: (renderDataCellProps: GetRowCellProps, formatter: any) => string | number;
}
declare function DataTableFactory(HeaderCell: ReturnType<typeof HeaderCellFactory>): React.ComponentType<DataTableProps>;
declare namespace DataTableFactory {
    var deps: {
        (FieldToken: React.FC<import("../field-token").FieldTokenProps>): ({ cellInfo, columns, isPinned, props, toggleMoreOptions, moreOptionsColumn }: {
            cellInfo: {
                columnIndex: number;
                isScrolling: boolean;
                isVisible: boolean;
                key: string;
                parent: any;
                rowIndex: number;
                style: React.CSSProperties;
            };
            columns: DataTableProps["columns"];
            colMeta?: ColMeta;
            isPinned?: boolean;
            showStats?: boolean;
            props: DataTableProps;
            toggleMoreOptions: (moreOptionsColumn: string) => void;
            moreOptionsColumn: null | string;
            style: React.CSSProperties;
        }) => React.JSX.Element;
        deps: typeof import("../field-token").default[];
    }[];
}
export default DataTableFactory;
