import type { CSSProperties } from 'react';
import type { PickClassStyleType } from 'jamis-core';
import type { ALIGNMENT, DIRECTION } from './constants';
export type ItemSizeGetter = (index: number) => number;
export type ItemSize = number | number[] | ItemSizeGetter;
export { DIRECTION as ScrollDirection } from './constants';
export type ItemPosition = 'absolute' | 'sticky';
export interface ItemStyle {
    position: ItemPosition;
    top?: number;
    left: number;
    width: string | number;
    height?: number;
    marginTop?: number;
    marginLeft?: number;
    marginRight?: number;
    marginBottom?: number;
    zIndex?: number;
}
export interface SizeAndPosition {
    size: number;
    offset: number;
}
export interface ItemInfo {
    index: number;
    style: ItemStyle;
}
export interface RenderedRows {
    startIndex: number;
    stopIndex: number;
}
export interface VListProps extends PickClassStyleType {
    className?: string;
    estimatedItemSize?: number;
    height: CSSProperties['height'];
    itemCount: number;
    itemSize: number;
    overscanCount?: number;
    scrollOffset?: number;
    scrollToIndex?: number;
    scrollToAlignment?: ALIGNMENT;
    scrollDirection?: DIRECTION;
    stickyIndices?: number[];
    style?: CSSProperties;
    width?: CSSProperties['width'];
    prefix?: React.ReactNode | null;
    onItemsRendered?({ startIndex, stopIndex }: RenderedRows): void;
    onScroll?(offset: number, event: UIEvent): void;
    renderItem(itemInfo: ItemInfo): React.ReactNode;
}
