/// <reference types="react" />
import { ColumnHelper, Row, RowData, TableOptions } from '@tanstack/table-core';
export type { ColumnDef } from '@tanstack/react-table';
export declare const createColumnHelper: <TData extends unknown>() => ColumnHelper<TData> & {
    virtual: <AccessorColumn = import("@tanstack/table-core").DisplayColumnDef<TData, unknown> | (import("@tanstack/table-core").DeepKeys<TData> extends infer T ? T extends import("@tanstack/table-core").DeepKeys<TData> ? T extends import("@tanstack/table-core").AccessorFn<TData, unknown> ? import("@tanstack/table-core").DisplayColumnDef<TData, unknown> : import("@tanstack/table-core").IdentifiedColumnDef<TData, unknown> : never : never)>(id: string, column: AccessorColumn) => import("@tanstack/table-core").ColumnDef<TData, unknown>;
};
export { useTableDataLoader } from '../../Support/Hooks/useTableDataLoader';
export { default as TableFilter } from './TableFilter';
export declare type FetchDataCallback = (props: {
    pageSize: number;
    page: number;
    ordering: {
        id: string;
        desc?: boolean;
    }[];
}) => void;
export interface PaginatedData<T extends RowData> {
    data: T[];
    per_page: number;
    current_page: number;
    last_page: number;
    total: number;
    from: number;
    to: number;
}
export interface PaginationOrdering {
    [key: string | number | any]: 'asc' | 'desc';
}
interface TableProps<TData extends RowData> extends Omit<Partial<TableOptions<TData>>, 'data' | 'getCoreRowModel' | 'state' | 'onStateChange' | 'renderFallbackValue'> {
    columns: TableOptions<TData>['columns'];
    data: PaginatedData<TData>;
    dataLoader: [FetchDataCallback, boolean];
    withPagination?: boolean;
    tdPaddingClasses?: string;
    ordering?: PaginationOrdering;
    getCoreRowModel?: TableOptions<TData>['getCoreRowModel'];
    state?: TableOptions<TData>['state'];
    onStateChange?: TableOptions<TData>['onStateChange'];
    renderFallbackValue?: TableOptions<TData>['renderFallbackValue'];
    getRowClasses?: (row: Row<TData>) => string | undefined | any;
}
export declare const Table: <TData extends unknown>({ dataLoader: [fetchData, loading], ordering, withPagination, tdPaddingClasses, data, getRowClasses, ...props }: TableProps<TData>) => JSX.Element;
