import { type ComponentType, type KeyboardEvent, type ReactNode } from "react";
/**
 * @internal
 */
export interface IUiPagedVirtualListSkeletonItemProps {
    itemHeight: number;
}
/**
 * @internal
 */
export interface IUiPagedVirtualListProps<T> {
    maxHeight: number;
    items?: T[];
    itemHeight: number;
    itemsGap: number;
    containerPadding?: number;
    itemPadding: number;
    skeletonItemsCount: number;
    hasNextPage?: boolean;
    loadNextPage?: () => void;
    customKeyboardNavigationHandler?: (event: KeyboardEvent<Element>) => void;
    onKeyDownSelect?: (item: T) => void;
    onKeyDownConfirm?: (item: T) => void;
    closeDropdown?: () => void;
    isLoading?: boolean;
    /**
     * An item in the list that should be scrolled into view when the component renders.
     * By default, items are compared by object identity (i.e., `===`).
     * To customize how the target item is found (e.g., by ID), provide a `scrollToItemKeyExtractor` as well.
     */
    scrollToItem?: T;
    /**
     * A function that extracts a unique key from each item for comparison with `scrollToItem`.
     * This is useful when the provided `scrollToItem` may not be the same object reference as items in the list.
     * If not provided, object identity (`===`) is used for comparison.
     */
    scrollToItemKeyExtractor?: (item: T) => string | number;
    scrollToIndex?: number;
    shouldLoadNextPage?: (lastItemIndex: number, itemsCount: number, skeletonItemsCount: number) => boolean;
    children: (item: T, focusedIndex?: number) => ReactNode;
    scrollbarHoverEffect?: boolean;
    SkeletonItem?: ComponentType<IUiPagedVirtualListSkeletonItemProps>;
    representAs?: "grid" | "listbox" | "list";
    listboxProps?: Record<string, any>;
    tabIndex?: number;
    focusedItem?: T;
    focusedAction?: string;
    getIsItemSelected?: (item: T) => boolean;
    itemHeightGetter?: (index: number) => number;
    onScroll?: () => void;
    onFocus?: (e: React.FocusEvent) => void;
    handleFocusIndexChange?: boolean;
}
/**
 * @internal
 */
export interface IUiPagedVirtualListImperativeHandle<T> {
    scrollToItem: (item: T) => void;
}
/**
 * @internal
 */
export declare const UiPagedVirtualList: <T>(props: IUiPagedVirtualListProps<T> & import("react").RefAttributes<IUiPagedVirtualListImperativeHandle<T>>) => ReactNode;
//# sourceMappingURL=UiPagedVirtualList.d.ts.map