import { CSSProperties, ReactNode, RefObject } from 'react'; export interface RenderElementProps { element: T; style: CSSProperties; } export interface UseVirtualizedProps { items: T[]; renderElement: (props: RenderElementProps) => ReactNode; estimate: number | ((elem: T) => number); focusedIndex: number | null; } export interface VirtualizedContainerProps { ref: RefObject; style: CSSProperties; } export interface VirtualizedInnerProps { style: CSSProperties; } export interface UseVirtualizedResult { innerProps: VirtualizedInnerProps; containerProps: VirtualizedContainerProps; virtualItems: ReactNode[]; } export interface VirtualizedElementProps { element: T; } export interface VirtualCollectionProps { collection: T[]; children: (props: VirtualizedElementProps) => ReactNode; estimate: number | ((node: T) => number); focusedIndex: number | null; height?: number | string; maxHeight?: number | string; }