import { VirtualizerOptions, Virtualizer } from '@tanstack/react-virtual';
import { default as React } from 'react';
export interface VirtualListProps<T> {
    /** The data to render */
    data: T[];
    /** The render function for each item */
    renderItem: (item: T, index: number) => React.ReactNode;
    /** Scroll direction of the virtual list. @default "vertical" */
    direction?: "vertical" | "horizontal" | "vertical-reverse" | "horizontal-reverse";
    /**
     * The component used as the outer scrollable container viewport.
     * Useful for passing ElasticScrollArea or customizing tags.
     * @default "div"
     */
    as?: React.ElementType;
    /**
     * The component used as the sizer (defines total scroll width/height).
     * @default "div"
     */
    contentAs?: React.ElementType;
    /**
     * An optional wrapper component directly around the array of absolute items.
     * Extremely useful if you need to wrap the items in a <ul/>, <ol/>, or an <AnimatePresence/>.
     */
    itemsWrapper?: React.ElementType | React.FC<any>;
    /** Spacing between items in pixels. @default 8 */
    gap?: number;
    /** Initial estimated size of items. @default 72 */
    estimateSize?: number;
    /** Items to render outside the visible viewport. @default 5 */
    overscan?: number;
    /** Props passed to the outer scrollable container */
    containerProps?: any;
    /** Props passed to the inner sizer div */
    contentProps?: React.HTMLAttributes<HTMLDivElement> & Record<string, any>;
    /**
     * Access to the raw TanStack Virtual options for advanced logic
     */
    virtualOptions?: Partial<VirtualizerOptions<any, any>>;
    /** Ref to access the virtualizer instance from parent (for scroll controls) */
    virtualizerRef?: React.Ref<Virtualizer<any, any>>;
}
declare function VirtualListInner<T>({ data, renderItem, direction, as: Component, contentAs: ContentComponent, itemsWrapper: ItemsWrapper, gap, estimateSize, overscan, containerProps, contentProps, virtualOptions, virtualizerRef, }: VirtualListProps<T>, ref: React.ForwardedRef<HTMLElement>): import("react/jsx-runtime").JSX.Element;
export declare const VirtualList: <T>(props: VirtualListProps<T> & {
    ref?: React.ForwardedRef<HTMLElement>;
}) => ReturnType<typeof VirtualListInner>;
export {};
