import React from "react"; export interface VirtualizationOptions { itemHeight: number | ((index: number) => number); containerHeight: number; overscan?: number; enableHorizontal?: boolean; itemWidth?: number | ((index: number) => number); containerWidth?: number; threshold?: number; onScroll?: (scrollTop: number, scrollLeft: number) => void; } export interface VirtualizedItem { index: number; data: T; style: React.CSSProperties; } export interface VirtualizationState { startIndex: number; endIndex: number; visibleItems: VirtualizedItem[]; totalHeight: number; totalWidth: number; scrollTop: number; scrollLeft: number; } /** * High-performance virtualization hook for large datasets */ export declare function useVirtualization(items: T[], options: VirtualizationOptions): VirtualizationState & { containerProps: React.HTMLAttributes & { ref: React.RefObject; }; scrollElementProps: React.HTMLAttributes; measureElement: (index: number, element: HTMLElement) => void; scrollToIndex: (index: number, align?: "start" | "center" | "end") => void; }; /** * Hook for grid virtualization */ export declare function useGridVirtualization(items: T[], options: { itemHeight: number; itemWidth: number; containerHeight: number; containerWidth: number; columns: number; gap?: number; overscan?: number; }): { visibleItems: (VirtualizedItem & { row: number; col: number; })[]; totalHeight: number; containerProps: { onScroll: (e: React.UIEvent) => void; style: { height: number; width: number; overflow: string; contain: string; }; }; scrollElementProps: { style: { height: number; width: number; position: string; contain: string; }; }; }; /** * Hook for infinite scroll with virtualization */ export declare function useInfiniteVirtualization(items: T[], options: VirtualizationOptions & { loadMore: () => Promise; hasMore: boolean; isLoading: boolean; }): { isLoadingMore: boolean; totalItems: number; startIndex: number; endIndex: number; visibleItems: VirtualizedItem[]; totalHeight: number; totalWidth: number; scrollTop: number; scrollLeft: number; containerProps: React.HTMLAttributes & { ref: React.RefObject; }; scrollElementProps: React.HTMLAttributes; measureElement: (index: number, element: HTMLElement) => void; scrollToIndex: (index: number, align?: "start" | "center" | "end") => void; }; /** * Hook for window virtualization (entire viewport) */ export declare function useWindowVirtualization(items: T[], itemHeight: number | ((index: number) => number), overscan?: number): { startIndex: number; endIndex: number; visibleItems: VirtualizedItem[]; scrollY: number; windowHeight: number; }; /** * Hook for table virtualization with fixed headers */ export declare function useTableVirtualization(data: T[], options: { rowHeight: number; headerHeight: number; containerHeight: number; columns: Array<{ key: string; width: number; fixed?: boolean; }>; overscan?: number; }): { visibleRows: (VirtualizedItem & { columns: { key: string; width: number; fixed?: boolean; }[]; })[]; totalHeight: number; totalWidth: number; scrollTop: number; scrollLeft: number; headerHeight: number; containerProps: { onScroll: (e: React.UIEvent) => void; style: { height: number; overflow: string; contain: string; }; }; scrollElementProps: { style: { height: number; width: number; position: string; contain: string; }; }; }; //# sourceMappingURL=useVirtualization.d.ts.map