import { ReactNode } from 'react';
export type VirtualizedGridProps<T> = {
    /** Items to virtualize */
    items: T[];
    /** Number of columns in the grid */
    columns: number;
    /**
     * The scroll container element. Pass `null` while the element is still
     * mounting; the grid will render nothing until it is available. Use a
     * callback ref + state in the parent to capture the element, since
     * `useRef` does not trigger re-renders when `.current` changes — which
     * matters when the container is rendered inside a Base UI Tabs.Panel
     * that defers mounting.
     */
    scrollElement: HTMLElement | null;
    /** Render function for each item */
    renderItem: (item: T, index: number) => ReactNode;
    /** Estimated height of each row (in px) */
    estimateRowSize: number;
    /** Get unique key for each item */
    getItemKey: (item: T) => string;
    /** Extra rows above/below viewport for smoother scrolling */
    overscan?: number;
    /** Gap between rows (in px) */
    rowGapPx?: number;
    /** Tailwind classes for the grid row container */
    gridClassName?: string;
};
export declare function VirtualizedGrid<T>(props: VirtualizedGridProps<T>): import("react/jsx-runtime").JSX.Element | null;
//# sourceMappingURL=virtualized-grid.d.ts.map