import { MouseEvent, UIEvent, ReactElement } from 'react';
import { AccessorKeyColumnDef, Header, Cell, Row, RowSelectionState, SortingState, OnChangeFn, ColumnSizingState, ColumnPinningState, PaginationState, VisibilityState, ExpandedState, ColumnOrderState } from '@tanstack/react-table';
import { TableHeaderProps } from './table-header';
import { TableBodyProps } from './table-body';
import { TableHeaderCellProps } from './table-header-cell';
import { TableBodyCellProps } from './table-body-cell';
import type { DropdownMenuOption } from '../../dropdown-menu';
import { TableReactLocalizationPropType, TABLE_SIZE, TableDefaultState, Touched } from '../types';
export type TableReactPropsType<TData, TMeta> = {
    columns: AccessorKeyColumnDef<TData>[];
    data: TData[];
    defaultState?: TableDefaultState;
    TableBodyComponent?: (props: TableBodyProps<TData>) => ReactElement | null;
    TableHeaderComponent?: (props: TableHeaderProps<TData>) => ReactElement;
    ThComponent?: (props: TableHeaderCellProps<TData>) => ReactElement;
    TdComponent?: (props: TableBodyCellProps<TData>) => ReactElement;
    getFilterBody?: () => ReactElement;
    getToolBarActions?: () => ReactElement;
    getToolbarRightActions?: () => ReactElement;
    getEmptyState?: () => ReactElement;
    ExpandedRowComponent?: ({ rowData }: {
        rowData: TData;
    }) => ReactElement;
    tableClassName?: string;
    trClassName?: string | ((row: Row<TData>) => string);
    thClassName?: string;
    tdClassName?: string;
    expandedContentClassName?: string;
    tableTestId?: string;
    tableHeaderRowTestId?: string;
    tableRowTestId?: string | ((row: Row<TData>) => string);
    tableHeaderCellTestId?: string;
    tableBodyCellTestId?: string;
    tableMeta?: TMeta;
    pageSizeOptions?: number[];
    enableRowSelection?: boolean;
    enablePagination?: boolean;
    enableSorting?: boolean;
    enableSortingRemoval?: boolean;
    enableCheckBoxes?: boolean;
    enableToolbar?: boolean;
    enableSettings?: boolean;
    enablePinning?: boolean;
    enableColumnResizing?: boolean;
    enableMultiRowSelection?: boolean;
    sorting?: SortingState;
    visible?: VisibilityState;
    touched?: Touched;
    onTouchedChange?: (data?: Touched) => void;
    onSortingChange?: OnChangeFn<SortingState>;
    selected?: RowSelectionState;
    pinned?: ColumnPinningState;
    onPinningChange?: (data: ColumnPinningState) => void;
    expandedRows?: ExpandedState;
    onExpandedChange?: (data: ExpandedState) => void;
    columnOrder?: ColumnOrderState;
    onColumnOrderChange?: OnChangeFn<ColumnOrderState>;
    pagination?: PaginationState;
    onPaginationChange?: OnChangeFn<PaginationState>;
    totalCount?: number;
    totalLimit?: number;
    isExceededTotalLimit?: boolean;
    nextPage?: boolean;
    onRowSelectionChange?: (data: RowSelectionState) => void;
    onVisibilityChange?: (data: VisibilityState) => void;
    defaultColumnSizing?: ColumnSizingState;
    onColumnSizingChange?: (data: ColumnSizingState) => void;
    onCellClick?: (cell: Partial<Cell<TData, unknown>>, event: MouseEvent<unknown>) => void;
    onColumnHeaderClick?: (header: Partial<Header<TData, unknown>>, event: MouseEvent<unknown>) => void;
    width: number;
    isLoading?: boolean;
    errorMessage?: string | null;
    loadingRowCount?: number;
    getRowId: (originalRow: TData) => string;
    getRowActions?: (row: Row<TData>) => DropdownMenuOption[];
    getRowFooterAction?: (row: Row<TData>) => DropdownMenuOption;
    getCustomRowContent?: (row: Row<TData>, tableContainerWidth: number, centerScrolled: boolean, scrollableRight: boolean) => ReactElement | undefined;
    localizationProps?: TableReactLocalizationPropType;
    bottomEndScrollOffset?: number;
    onScrollEnd?: () => void;
    onScroll?: (e: UIEvent<HTMLElement>) => void;
    afterLoading?: boolean;
    size?: TABLE_SIZE;
    onRowClick?: (e: MouseEvent<HTMLTableRowElement>, row: TData) => void;
    isRowClickDisabled?: (row: TData) => boolean | string;
    isRowSelectionDisabled?: (row: TData) => boolean | string;
};
export declare function Table<TData, TMeta>({ columns, data, getFilterBody, getToolBarActions, getToolbarRightActions, getEmptyState, TableBodyComponent, TableHeaderComponent, ThComponent, TdComponent, trClassName, thClassName, tdClassName, expandedContentClassName, tableMeta, onCellClick, onColumnHeaderClick, selected, sorting, onSortingChange, pinned, expandedRows, ExpandedRowComponent, columnOrder, onColumnOrderChange, pagination, onPaginationChange, totalCount, totalLimit, isExceededTotalLimit, nextPage, width, errorMessage, loadingRowCount, getRowId, visible, onRowClick, isRowClickDisabled, isRowSelectionDisabled, pageSizeOptions, enableRowSelection, enableCheckBoxes, enableMultiRowSelection, isLoading, defaultColumnSizing, touched, onTouchedChange, onColumnSizingChange, onPinningChange, onExpandedChange, onRowSelectionChange, getRowActions, getRowFooterAction, getCustomRowContent, localizationProps, defaultState, onVisibilityChange, enableToolbar, enableSettings, bottomEndScrollOffset, onScroll, onScrollEnd, afterLoading, enablePagination, enableSorting, enableSortingRemoval, enableColumnResizing, tableTestId, tableRowTestId, tableHeaderRowTestId, tableHeaderCellTestId, tableBodyCellTestId, size, enablePinning, }: TableReactPropsType<TData, TMeta>): import("react/jsx-runtime").JSX.Element;
