import { default as React } from 'react';
export type VirtualListProps<T> = {
    /**
     * The array of items to be rendered in the list.
     */
    items: T[];
    /**
     * A function that renders an item given its data and index.
     *
     * @param item
     * @param index
     * @returns
     */
    renderItem: (item: T, index: number) => React.ReactElement;
    /**
     * The number of items to render outside the visible area for smoother scrolling.
     *
     * @default 3
     */
    overscanCount?: number;
    /**
     * The default height for items if their height cannot be determined.
     *
     * @default 50
     */
    defaultHeight?: number;
    /**
     * Optional ref to an external scroll container.
     * Use this when VirtualList is inside a scrollable container.
     */
    scrollContainerRef?: React.RefObject<HTMLElement>;
    /**
     * Additional classNames for the container of the list items.
     */
    containerClassName?: string;
    /**
     * Additional classNames for each individual list item wrapper.
     * This wrapper is required for proper positioning each item in the list using an absolute top value.
     */
    listItemWrapperClassName?: string;
    /**
     * Additional classNames for the outer list container
     */
    className?: string;
};
export type ItemHeight = number;
export type ItemIndex = number;
export type VisibleRange = {
    start: number;
    end: number;
};
export type VirtualListState = {
    itemHeights: Record<ItemIndex, ItemHeight>;
    visibleRange: VisibleRange;
    scrollTop: number;
    viewportHeight: number;
};
export declare const VirtualList: <T>(props: VirtualListProps<T>) => import("react/jsx-runtime").JSX.Element;
export default VirtualList;
