import { ColumnDef } from '@tanstack/table-core';
import { ColumnDef as ColumnDef_2 } from '@tanstack/react-table';
import { default as default_2 } from 'react';

export { ColumnDef }

declare const DataTable: <T>(props: DataTableProps<T> & {
    ref?: default_2.Ref<DataTableRef>;
}) => default_2.ReactElement;
export default DataTable;

export declare interface DataTableColumnMeta {
    align?: 'left' | 'center' | 'right';
    disableRowClick?: boolean;
    fallback?: string;
    filterValueExcludeList?: string[];
    filterValueIncludeList?: string[];
    type?: string;
    valueLabelMap?: Record<string, string>;
}

export declare interface DataTableProps<T> {
    actionButton?: (selectedRows: T[], clearSelection: () => void) => default_2.ReactNode;
    className?: string;
    columns: ColumnDef_2<T, any>[];
    data: T[] | undefined | null;
    defaultColumnFilters?: {
        id: string;
        value: string[];
    }[];
    defaultSorting?: {
        id: string;
        desc?: boolean;
    }[];
    emptyRows?: boolean;
    enableAutoResetPageIndex?: boolean;
    enableColumnFilters?: boolean;
    enableFiltering?: boolean;
    enablePagination?: boolean;
    enableSearch?: boolean;
    enableSorting?: boolean;
    getRowClassName?: (rowData: T, index: number) => string;
    grouping?: string[];
    loading?: boolean;
    noDataComponent?: default_2.ReactNode;
    onRowClick?: (rowData: T) => void;
    onSelectionChange?: (selectedRows: T[]) => void;
    pageSize?: number | 'all';
    showRowSelectors?: boolean;
    tableClassName?: string;
}

export declare interface DataTableRef {
    clearSelection: () => void;
}

export { }
