import type { DCloneHTMLElement, DId } from '../../utils/types';
import React from 'react';
export type DVirtualScrollPerformance = Pick, 'dList' | 'dExpands' | 'dItemSize' | 'dItemNested' | 'dItemKey' | 'dFocusable'>;
export interface DVirtualScrollRef {
scrollToItem: (item: T) => void;
scrollToStep: (step: 1 | -1) => T | undefined;
scrollToNested: () => T | undefined;
scrollToStart: () => T | undefined;
scrollToEnd: () => T | undefined;
}
export interface DItemRenderProps {
aria: {
'aria-level': number;
'aria-setsize': number;
'aria-posinset': number;
};
vsList?: React.ReactNode;
}
export interface DVirtualScrollProps {
children: (props: {
render: DCloneHTMLElement;
vsList: React.ReactNode;
}) => JSX.Element | null;
dRef?: {
list?: React.ForwardedRef;
};
dList: T[];
dFillNode: React.ReactElement;
dItemRender: (item: T, index: number, props: DItemRenderProps, parent: T[]) => React.ReactNode;
dItemSize: number | ((item: T) => number);
dItemNested?: (item: T) => {
list?: T[];
emptySize?: number;
inAriaSetsize: boolean;
} | undefined;
dItemKey: (item: T) => DId;
dFocusable?: boolean | ((item: T) => boolean);
dFocusItem?: T;
dSize?: number;
dPadding?: number;
dHorizontal?: boolean;
dEmptyRender?: (item: T) => React.ReactNode;
dExpands?: Set;
onScrollEnd?: () => void;
}
declare function VirtualScroll(props: DVirtualScrollProps, ref: React.ForwardedRef>): JSX.Element | null;
export declare const DVirtualScroll: (props: DVirtualScrollProps & React.RefAttributes>) => ReturnType;
export {};