declare enum DIRECTION_TYPE {
    FRONT = "FRONT",
    BEHIND = "BEHIND"
}
declare enum CALC_TYPE {
    INIT = "INIT",
    FIXED = "FIXED",
    DYNAMIC = "DYNAMIC"
}
interface Range {
    start: number;
    end: number;
    padFront: number;
    padBehind: number;
}
interface VirtualParams {
    slotHeaderSize?: number;
    slotFooterSize?: number;
    keeps?: number;
    estimateSize?: number;
    buffer?: number;
    uniqueIds?: (string | number)[];
}
export default class Virtual {
    param: VirtualParams;
    sizes: Map<number | string, number>;
    firstRangeTotalSize: number;
    firstRangeAverageSize: number;
    fixedSizeValue: number;
    calcType: CALC_TYPE;
    offset: number;
    direction: DIRECTION_TYPE;
    range: Range;
    callUpdate: (range: Range) => void;
    private _scrollRAF;
    private _scrollPositionCache;
    constructor(param: VirtualParams, callUpdate: (range: Range) => void);
    init(param?: VirtualParams, callUpdate?: (range: Range) => void): void;
    destroy(): void;
    getRange(): any;
    isBehind(): boolean;
    isFront(): boolean;
    getOffset(start: number): number;
    updateParam(key: keyof VirtualParams, value: any): void;
    saveSize(id: number | string, size: number): void;
    handleDataSourcesChange(): void;
    handleSlotSizeChange(): void;
    handleScroll(offset: number): void;
    handleFront(): void;
    handleBehind(): void;
    getScrollOvers(): number;
    getIndexOffset(givenIndex: number): number;
    isFixedType(): boolean;
    getLastIndex(): number;
    checkRange(start: number, end: number): void;
    updateRange(start: number, end: number): void;
    getEndByStart(start: number): number;
    getPadFront(): number;
    getPadBehind(): number;
    getEstimateSize(): number;
    getTotalSize(): number;
}
export {};
