import * as React from 'react';
export type SortDirection = 'asc' | 'desc' | null;
export interface ColumnDef<TRow = Record<string, unknown>> {
    /** Unique column identifier, also used to access row data */
    key: string;
    /** Column header label */
    label: string;
    /** Whether the column is sortable */
    sortable?: boolean;
    /** Fixed column width (CSS value) */
    width?: string;
    /** Custom cell renderer */
    cell?: (value: unknown, row: TRow, index: number) => React.ReactNode;
    /** Header class */
    headerClassName?: string;
    /** Cell class */
    cellClassName?: string;
}
export interface SortState {
    key: string;
    direction: 'asc' | 'desc';
}
export interface DataTableProps<TRow = Record<string, unknown>> extends Omit<React.ComponentProps<'div'>, 'children'> {
    /** Column definitions */
    columns: ColumnDef<TRow>[];
    /** Row data */
    data: TRow[];
    /** Callback when a column is sorted */
    onSort?: (sort: SortState | null) => void;
    /** Callback when a row is clicked */
    onRowClick?: (row: TRow, index: number) => void;
    /** Controlled sort state */
    sort?: SortState | null;
    /** Message to display when there are no rows */
    emptyMessage?: string;
    /** Whether the table is loading */
    loading?: boolean;
    /** Whether rows are selectable (adds checkboxes) */
    selectable?: boolean;
    /** Set of selected row indices (controlled) */
    selectedRows?: Set<number>;
    /** Callback when selection changes */
    onSelectionChange?: (selectedRows: Set<number>) => void;
    /** Custom row className getter */
    rowClassName?: (row: TRow, index: number) => string | undefined;
}
declare function DataTable<TRow extends Record<string, unknown> = Record<string, unknown>>({ className, columns, data, onSort, onRowClick, sort: controlledSort, emptyMessage, loading, selectable, selectedRows: controlledSelectedRows, onSelectionChange, rowClassName, ...props }: DataTableProps<TRow>): import("react/jsx-runtime").JSX.Element;
export { DataTable };
//# sourceMappingURL=data-table.d.ts.map