import React, { type CSSProperties, type ForwardedRef, type ReactElement } from "react";
import { type VibeComponentProps } from "../../types";
import { type VirtualizedListItem, type VirtualizedListLayout, type VirtualizedListScrollDirection } from "./VirtualizedList.types";
export interface VirtualizedListProps extends VibeComponentProps {
    /**
     * Class name applied to the scrollable container.
     */
    scrollableClassName?: string;
    /**
     * The orientation of the list.
     */
    layout?: VirtualizedListLayout;
    /**
     * The list of items to be rendered.
     */
    items: VirtualizedListItem[];
    /**
     * Function to render each item in the list.
     */
    itemRenderer: (item: VirtualizedListItem, index: number, style: CSSProperties) => ReactElement | JSX.Element;
    /**
     * @deprecated - use `getItemSize`.
     */
    getItemHeight?: (item: VirtualizedListItem, index: number) => number;
    /**
     * Function to get the size (height/width) of each item, based on layout.
     */
    getItemSize?: (item: VirtualizedListItem, index: number) => number;
    /**
     * Function to get the unique ID of an item.
     */
    getItemId?: (item: VirtualizedListItem, index: number) => string;
    /**
     * Callback fired when the scroll animation is finished.
     */
    onScrollToFinished?: () => void;
    /**
     * Number of items to render above and below the visible portion.
     */
    overscanCount?: number;
    /**
     * The duration of the scroll animation in milliseconds.
     */
    scrollDuration?: number;
    /**
     * Callback fired when items are rendered.
     */
    onItemsRendered?: ({ firstItemId, secondItemId, lastItemId, centerItemId, firstItemOffsetEnd, currentOffsetTop }: {
        firstItemId: string;
        secondItemId: string;
        lastItemId: string;
        centerItemId: string;
        firstItemOffsetEnd: number;
        currentOffsetTop: number;
    }) => void;
    /**
     * The delay (in ms) for throttling the `onItemsRendered` callback.
     */
    onItemsRenderedThrottleMs?: number;
    /**
     * Callback fired when the list size changes.
     */
    onSizeUpdate?: (width: number, height: number) => void;
    /**
     * @deprecated - use `onLayoutDirectionScrollbarVisibilityChange`.
     */
    onVerticalScrollbarVisiblityChange?: (value: boolean) => void;
    /**
     * Callback fired when the vertical or horizontal scrollbar visibility changes.
     */
    onLayoutDirectionScrollbarVisibilityChange?: (value: boolean) => void;
    /**
     * The ARIA role attribute applied to the list.
     */
    role?: string;
    /**
     * The ARIA label for the list.
     */
    ariaLabel?: string;
    /**
     * Custom inline styles applied to the list.
     */
    style?: CSSProperties;
    /**
     * The ID of the item to scroll to.
     */
    scrollToId?: string;
    /**
     * Reference to the virtualized list component.
     */
    virtualListRef?: ForwardedRef<HTMLElement>;
    /**
     * Callback fired when the list is scrolled.
     */
    onScroll?: (horizontalScrollDirection: VirtualizedListScrollDirection, scrollTop: number, scrollUpdateWasRequested: boolean) => void;
}
declare const VirtualizedList: React.ForwardRefExoticComponent<VirtualizedListProps & React.RefAttributes<HTMLElement>>;
export default VirtualizedList;
