import { ReactNode } from 'react'; export type SortDirection = 'asc' | 'desc'; export interface DataTableColumn { /** Stable column id. Used for sort state and React keys. */ id: string; /** Header label. */ header: ReactNode; /** Render a cell. Defaults to indexing the row by `id` when typed loosely. */ cell?: (row: T, rowIndex: number) => ReactNode; /** Accessor for client-side sorting. Required when `sortable` is true. */ sortValue?: (row: T) => string | number | Date | null | undefined; sortable?: boolean; align?: 'left' | 'right' | 'center'; /** CSS width (e.g. '120px' or '20%'). */ width?: string; /** Numeric columns: right-align + tabular numerals. */ numeric?: boolean; } export interface DataTableProps { columns: DataTableColumn[]; rows: T[]; /** Stable row key. Defaults to the row index. */ rowKey?: (row: T, index: number) => string | number; /** Sort state. When omitted, the table sorts internally. */ sort?: { columnId: string; direction: SortDirection; } | null; onSortChange?: (sort: { columnId: string; direction: SortDirection; } | null) => void; /** Set of selected row keys. When set, a leading checkbox column appears. */ selected?: Set; onSelectedChange?: (next: Set) => void; /** Compact row height. */ dense?: boolean; /** Sticky header — caller must constrain height for it to engage. */ stickyHeader?: boolean; /** Rendered when `rows` is empty. */ emptyState?: ReactNode; className?: string; /** Accessible name for the table. */ ariaLabel?: string; } export declare function DataTable({ columns, rows, rowKey, sort, onSortChange, selected, onSelectedChange, dense, stickyHeader, emptyState, className, ariaLabel, }: DataTableProps): import("react/jsx-runtime").JSX.Element;