import { AfterContentInit, ChangeDetectorRef, DoCheck, ElementRef, IterableDiffers, IterableDiffer, NgZone, OnDestroy, Renderer, TrackByFn } from '@angular/core';
import { Config } from '../../config/config';
import { Content, ScrollEvent } from '../content/content';
import { DomController } from '../../util/dom-controller';
import { Platform } from '../../platform/platform';
import { ViewController } from '../../navigation/view-controller';
import { VirtualCell, VirtualData, VirtualNode } from './virtual-util';
import { VirtualFooter, VirtualHeader, VirtualItem } from './virtual-item';
export declare class VirtualScroll implements DoCheck, AfterContentInit, OnDestroy {
    private _iterableDiffers;
    private _elementRef;
    private _renderer;
    private _zone;
    private _cd;
    private _content;
    private _platform;
    private _ctrl;
    private _dom;
    _trackBy: TrackByFn;
    _differ: IterableDiffer;
    _scrollSub: any;
    _scrollEndSub: any;
    _init: boolean;
    _hdrFn: Function;
    _ftrFn: Function;
    _records: any[];
    _cells: VirtualCell[];
    _nodes: VirtualNode[];
    _vHeight: number;
    _lastCheck: number;
    _data: VirtualData;
    _queue: ScrollQueue;
    _itmTmp: VirtualItem;
    _hdrTmp: VirtualHeader;
    _ftrTmp: VirtualFooter;
    virtualScroll: any;
    bufferRatio: number;
    approxItemWidth: string;
    approxItemHeight: string;
    approxHeaderWidth: string;
    approxHeaderHeight: string;
    approxFooterWidth: string;
    approxFooterHeight: string;
    headerFn: Function;
    footerFn: Function;
    virtualTrackBy: TrackByFn;
    private _hasUpdate;
    constructor(_iterableDiffers: IterableDiffers, _elementRef: ElementRef, _renderer: Renderer, _zone: NgZone, _cd: ChangeDetectorRef, _content: Content, _platform: Platform, _ctrl: ViewController, config: Config, _dom: DomController);
    readUpdate(checkDataChanges: boolean, dimensionsUpdated: boolean): void;
    writeUpdate(): void;
    ngDoCheck(): void;
    ngAfterContentInit(): void;
    renderVirtual(): void;
    scrollUpdate(ev: ScrollEvent): void;
    scrollEnd(ev: ScrollEvent): void;
    setVirtualHeight(newVirtualHeight: number): void;
    addScrollListener(eventAssist: boolean): void;
    ngOnDestroy(): void;
}
export declare const enum ScrollQueue {
    NoChanges = 0,
    RequiresChangeDetection = 1,
    RequiresDomWrite = 2,
}
