import { Collection, Key } from '@react-types/shared'; import { Layout } from './Layout'; import { Rect } from './Rect'; import { Size } from './Size'; export interface InvalidationContext { contentChanged?: boolean; offsetChanged?: boolean; sizeChanged?: boolean; itemSizeChanged?: boolean; layoutOptionsChanged?: boolean; layoutOptions?: O; } export interface VirtualizerDelegate { setVisibleRect(rect: Rect): void; renderView(type: string, content: T | null): V; invalidate(ctx: InvalidationContext): void; } export interface VirtualizerRenderOptions { layout: Layout; collection: Collection; persistedKeys?: Set | null; visibleRect: Rect; size: Size; invalidationContext: InvalidationContext; isScrolling: boolean; layoutOptions?: O; } export type Mutable = { -readonly [P in keyof T]: T[P]; };