import { default as React, ReactNode } from 'react'; /** * Column definition for virtualized table */ export interface VirtualizedColumn { /** Unique column key */ key: string; /** Column header */ header: string | ReactNode; /** Data accessor */ accessor: keyof T | ((row: T) => ReactNode); /** Column width as percentage or fixed px */ width?: string | number; /** Min width */ minWidth?: number; /** Cell alignment */ align?: 'left' | 'center' | 'right'; /** Custom cell renderer */ cell?: (value: unknown, row: T, index: number) => ReactNode; } /** * VirtualizedDataTable props */ export interface VirtualizedDataTableProps { /** Table data */ data: T[]; /** Column definitions */ columns: VirtualizedColumn[]; /** Unique row key accessor */ rowKey: keyof T | ((row: T) => string); /** Table height in pixels */ height: number; /** Row height in pixels */ rowHeight?: number; /** Header height in pixels */ headerHeight?: number; /** Loading state */ isLoading?: boolean; /** Empty state message */ emptyState?: ReactNode; /** Row click handler */ onRowClick?: (row: T) => void; /** Custom class name */ className?: string; /** Overscan count - rows to render above/below viewport */ overscanCount?: number; } /** * VirtualizedDataTable component * Uses windowed rendering for optimal performance with large datasets */ declare function VirtualizedDataTableInner({ data, columns, rowKey, height, rowHeight, headerHeight, isLoading, emptyState, onRowClick, className, overscanCount, }: VirtualizedDataTableProps): React.ReactElement; export declare const VirtualizedDataTable: typeof VirtualizedDataTableInner; /** * Hook to determine if virtualization should be used * @param dataLength - Length of the data array * @param threshold - Threshold above which virtualization is recommended * @returns Whether virtualization should be used */ export declare function useVirtualizationRecommended(dataLength: number, threshold?: number): boolean; export {};