import { CSSProperties, Key, ReactNode } from 'react'; export interface TVirtualListProps { items: readonly TItem[]; /** Fixed row height in px, or a per-index height. Treated as an estimate when `measureRows` is on. */ itemSize: number | ((index: number) => number); /** Viewport height of the scroll container. */ height: number | string; /** Viewport width of the scroll container. Defaults to '100%'. */ width?: number | string; /** Re-measure rendered rows with a ResizeObserver — for rows whose real height is content-driven. */ measureRows?: boolean; overscan?: number; /** Stable row identity for the measurement cache; defaults to the row index. */ getItemKey?: (index: number) => Key; className?: string; /** Class of the inner sizer element — e.g. pass a min-width class to allow horizontal overflow. */ contentClassName?: string; contentStyle?: CSSProperties; dataTest?: string; renderItem: (item: TItem, index: number) => ReactNode; } /** * @figmaNode none — **headless windowing primitive** (no DS visuals). It only owns a scroll * container + absolutely-positioned row wrappers; all row appearance is the consumer's `renderItem`. * Nothing to align — it carries no colours/dimensions of its own. * * Windowed vertical list on top of `@tanstack/react-virtual`. Covers both the fixed-size and the * variable-size case (`itemSize` as number or per-index function), and content-driven row heights * via `measureRows` — no imperative reset calls needed when a row changes height. The component * owns its scroll container, so no explicit pixel width/AutoSizer wrapper is required. */ export declare const VirtualList: ({ items, itemSize, height, width, measureRows, overscan, getItemKey, className, contentClassName, contentStyle, dataTest, renderItem, }: TVirtualListProps) => JSX.Element;