import { default as React, ReactNode } from 'react'; /** * Column definition */ export interface Column { /** Unique column key */ key: string; /** Column header */ header: string | ReactNode; /** Data accessor */ accessor: keyof T | ((row: T) => ReactNode); /** Column width */ width?: string | number; /** Min width */ minWidth?: string | number; /** Whether column is sortable */ sortable?: boolean; /** Custom sort function */ sortFn?: (a: T, b: T) => number; /** Cell alignment */ align?: 'left' | 'center' | 'right'; /** Custom cell renderer */ cell?: (value: unknown, row: T, index: number) => ReactNode; /** Whether column is hidden */ hidden?: boolean; } /** * Sort configuration */ export interface SortConfig { key: string; direction: 'asc' | 'desc'; } /** * Pagination configuration */ export interface PaginationConfig { page: number; pageSize: number; total: number; } /** * Data table props */ export interface DataTableProps { /** Table data */ data: T[]; /** Column definitions */ columns: Column[]; /** Unique row key accessor */ rowKey: keyof T | ((row: T) => string); /** Loading state */ isLoading?: boolean; /** Empty state message or component */ emptyState?: ReactNode; /** Sort configuration */ sort?: SortConfig; /** Sort change handler */ onSortChange?: (sort: SortConfig | undefined) => void; /** Pagination configuration */ pagination?: PaginationConfig; /** Page change handler */ onPageChange?: (page: number) => void; /** Page size change handler */ onPageSizeChange?: (pageSize: number) => void; /** Row click handler */ onRowClick?: (row: T) => void; /** Selected row keys */ selectedKeys?: string[]; /** Selection change handler */ onSelectionChange?: (keys: string[]) => void; /** Enable row selection */ selectable?: boolean; /** Sticky header */ stickyHeader?: boolean; /** Custom class name */ className?: string; /** Table caption for accessibility */ caption?: string; } /** * Memoized DataTable component with preserved generic signature */ export declare const DataTable: (props: DataTableProps) => React.ReactElement;