import * as React from "react";
import { type ColumnDef, type SortingState, type PaginationState, type RowSelectionState, type Row } from "@tanstack/react-table";
export interface TableProps extends React.HTMLAttributes<HTMLTableElement> {
    children: React.ReactNode;
    className?: string;
}
export interface DataTableProps<TData, TValue> {
    columns: ColumnDef<TData, TValue>[];
    data: TData[];
    loading?: boolean;
    skeletonRows?: number;
    emptyMessage?: string;
    enableSorting?: boolean;
    /** Manual sorting mode - use when handling sorting on the server side */
    manualSorting?: boolean;
    onSortingChange?: (sorting: SortingState) => void;
    enableFiltering?: boolean;
    enableColumnFilters?: boolean;
    globalFilter?: string;
    onGlobalFilterChange?: (value: string) => void;
    /** Enable pagination UI - DataTable handles pagination internally. Set to true when there are several rows to paginate. Do NOT use the standalone Pagination component with DataTable. */
    enablePagination?: boolean;
    /** Manual pagination mode - use when handling pagination on the server side */
    manualPagination?: boolean;
    /** Total page count - required when using manual pagination mode */
    pageCount?: number;
    pagination?: PaginationState;
    onPaginationChange?: (pagination: PaginationState) => void;
    enableRowSelection?: boolean;
    rowSelection?: RowSelectionState;
    onRowSelectionChange?: (selection: RowSelectionState) => void;
    getRowCanSelect?: (row: Row<TData>) => boolean;
    /** Callback fired when a row is clicked */
    onRowClick?: (row: Row<TData>) => void;
    enableColumnVisibility?: boolean;
    enableColumnResizing?: boolean;
    enableColumnOrdering?: boolean;
    className?: string;
    stickyHeader?: boolean;
    ariaLabel?: string;
}
export declare function DataTable<TData, TValue>({ columns, data, loading, skeletonRows, emptyMessage, enableSorting, manualSorting, onSortingChange, enableFiltering, enableColumnFilters, globalFilter: controlledGlobalFilter, onGlobalFilterChange, enablePagination, manualPagination, pageCount, pagination: controlledPagination, onPaginationChange, enableRowSelection, rowSelection: controlledRowSelection, onRowSelectionChange, onRowClick, enableColumnVisibility, enableColumnResizing, enableColumnOrdering, className, stickyHeader, ariaLabel, }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=data-table.d.ts.map