import { CSSProperties } from '../../node_modules/vue';
export interface IVirtuallistProps<T> {
    itemHeight: number;
    loading: boolean;
    loadingText: string;
    loadingBg: string;
    dataSource: T[];
}
export interface IEstimatedListProps<T> {
    loading: boolean;
    estimatedHeight: number;
    dataSource: T[];
}
export interface IPosInfo {
    index: number;
    top: number;
    bottom: number;
    height: number;
    dHeight: number;
}
export interface IWaterFallProps {
    gap: number;
    column: number;
    pageSize: number;
    request: (page: number, pageSize: number) => Promise<IImageItem[]>;
}
export interface IImageItem {
    id: string | number;
    url: string;
    width: number;
    height: number;
    [key: string]: any;
}
export interface IVirtualWaterFallProps {
    data: IDataItem[];
    loading?: boolean;
    hasMore?: boolean;
    column?: number;
    columnItemCount?: number;
    gap?: number;
    hoverScale?: number;
    themeMode?: 'light' | 'dark' | 'auto';
    cardStyle?: 'rounded' | 'square';
    scrollBehavior?: 'smooth' | 'auto';
    emptyText?: string;
    initialHeight?: number;
    loadMoreThreshold?: number;
    debug?: boolean;
}
export interface IColumnQueue {
    list: Array<IRenderItem>;
    height: number;
}
export interface IItemRect {
    width: number;
    height: number;
}
export interface IRenderItem {
    item: IDataItem;
    y: number;
    h: number;
    style: CSSProperties;
}
export interface IDataItem {
    id: number | string;
    width: number;
    height: number;
    [key: string]: any;
}
export type FsVirtualWaterfallReuqest = (page: number, pageSize: number) => Promise<{
    total: number;
    list: IDataItem[];
}>;
