export type VirtualItem = { index: number start: number size: number end: number key: string } export type VirtualizerOptions = { count: number /** * Per-item size. Pass a number for a uniform layout (fast path) or a * function for variable sizing - the virtualizer will build cumulative * offsets and use binary lookup to find the visible window. The function * receives the item index and must return its pixel size. */ estimateSize: number | ((index: number) => number) overscan?: number viewportHeight: number scrollOffset?: number } export type VirtualizerState = { items: Array totalSize: number startIndex: number endIndex: number scrollOffset: number viewportHeight: number }