import React, { HTMLAttributes } from 'react';
import { TableBodyProps } from './components/table-body';
import { SelectAllProps, TableHeaderProps } from './components/table-header';
import { Headers, Selection } from './types';
export type TableProps<T> = {
    /**
     * listen onHeadersChanged and onSelectionChanged callbacks
     */
    actions?: {
        onHeadersChanged?: (params: Headers) => void;
        onSelectionChanged?: (params: Selection) => void;
    };
    /**
     * table rows
     */
    children?: React.ReactElement | (React.ReactElement[] | React.ReactElement)[];
    /**
     * table class name
     */
    className?: HTMLElement['className'];
    /**
     * container class name
     */
    classNameContainer?: HTMLElement['className'];
    /**
     * tBody data to show
     */
    data?: T[];
    /**
     * get infinite scroll props
     */
    getInfiniteScrollProps?: TableBodyProps<T>['getInfiniteScrollProps'];
    /**
     * get row class with row data
     */
    getRowClasses?: (row: T) => string;
    /**
     * function to get selected row
     * if both getSelectedRow and `isTableLineSelected` provided, getSelectedRow will have higher priority
     */
    getSelectedRow?: (row: T) => boolean;
    /**
     * get tBody properties
     */
    getSubBodyProps?: TableBodyProps<T>['getSubBodyProps'];
    /**
     * table header columns
     */
    headers: TableHeaderProps['headers'];
    /**
     * show skeleton loading state
     */
    isLoading?: boolean;
    isStickyLeftColumn?: boolean;
    /**
     * Make table columns draggable
     */
    onColumnDragEnd?(sourceIndex: number, destinationIndex: number): void;
    /**
     * Make table rows draggable
     */
    onRowDragEnd?(reorderedData: T[], draggableId?: string): void;
    /**
     * extra padding if needed:
     */
    paddingBottom?: number;
    /**
     * enables Select All column Checkbox
     */
    selectAllProps?: SelectAllProps;
    /**
     * How many rows of skeleton to display after header.
     */
    skeletonCount?: number;
    /**
     * add sticky position for tHead
     */
    variant?: 'sticky';
    /**
     * table has border or not
     * default is true
     */
    withBorder?: boolean;
};
declare function Table<T extends {
    id: string;
    isTableLineSelected?: boolean;
}>({ data, children, headers, actions, variant, getRowClasses, getSubBodyProps, getSelectedRow, className, classNameContainer, paddingBottom, isLoading, skeletonCount, onRowDragEnd, onColumnDragEnd, getInfiniteScrollProps, withBorder, isStickyLeftColumn, selectAllProps, ...props }: TableProps<T> & Omit<HTMLAttributes<HTMLTableElement>, 'children'>): JSX.Element;
declare namespace Table {
    var CellToggle: <T>({ row, componentProps, ...outerProps }: import("./components/cells/table-cell-toggle").TableCellToggleProps<T & {
        id: string;
    }> & import("./types").TdProps, ref: any) => JSX.Element;
    var Cell: <T>({ row, children, ...outerProps }: import("./components/cells").TableCellProps<T> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellText: <T extends Record<string, any>>({ row, source, componentProps, ...outerProps }: import("./components/cells").TableCellTextProps<T> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellSelectorBox: <T extends Record<string, any>>({ row, source, componentProps, ...outerProps }: import("./components/cells").TableCellSelectorBoxProps<T> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellCount: <T extends Record<string, any>>({ row, source, componentProps, ...outerProps }: import("./components/cells").TableCellCountProps<T> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellPill: <T extends import("..").TableRow>({ row, source, componentProps, ...outerProps }: import("./components/cells").TableCellPillProps<T> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellCheckbox: <T extends Record<string, any>>({ row, componentProps, style, ...outerProps }: import("./components/cells").TableCellCheckboxProps<T & {
        id: string;
    }> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellIcons: <T>({ row, source, componentProps, ...outerProps }: import("./components/cells").TableCellIconsProps<T & {
        id: string;
    }> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellDropdown: <T extends Record<string, any>>({ componentProps, tdStyles, row, ...outerProps }: import("./components/cells").TableCellDropdownProps<T> & import("./types").TdProps, ref: any) => JSX.Element;
    var CellDynamicField: <T extends Record<string, any>>({ componentProps, row }: import("./components/cells/table-cell-dynamic-field").TableCellDynamicFieldProps<T> & import("./types").TdProps, ref: React.ForwardedRef<unknown>) => JSX.Element;
    var CellExternalOption: <T extends Record<string, any>>({ row, source, ...outerProps }: import("./components/cells").TableCellExternalOptionProps<T> & import("./types").TdProps, ref: React.ForwardedRef<HTMLTableCellElement>) => JSX.Element;
}
export { Table };
