import { NgForOfContext } from '@angular/common';
import { ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, DoCheck, EventEmitter, IterableChanges, IterableDiffers, NgZone, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef, TrackByFunction, ViewContainerRef } from '@angular/core';
import { DisplayContainerComponent } from './display.container';
export declare class IgxForOfDirective<T> implements OnInit, OnChanges, DoCheck, OnDestroy {
    private _viewContainer;
    private _template;
    private _differs;
    private resolver;
    cdr: ChangeDetectorRef;
    private _zone;
    igxForOf: any[];
    igxForScrollOrientation: string;
    igxForScrollContainer: any;
    igxForContainerSize: any;
    igxForItemSize: any;
    dc: ComponentRef<DisplayContainerComponent>;
    state: IForOfState;
    totalItemCount: number;
    onChunkLoad: EventEmitter<IForOfState>;
    onChunkPreload: EventEmitter<IForOfState>;
    private hScroll;
    private func;
    private hCache;
    private vh;
    private hvh;
    private _differ;
    private _trackByFn;
    private _lastTouchX;
    private _lastTouchY;
    private _pointerCapture;
    private _gestureObject;
    private readonly _isScrolledToBottom;
    private readonly _isAtBottomIndex;
    private extraRowApplied;
    /** Maximum height for an element of the browser. */
    private _maxHeight;
    /** Height that is being virtualized. */
    private _virtHeight;
    /**
     * Ratio for height that's being virtualizaed and the one visible
     * If _virtHeightRatio = 1, the visible height and the virtualized are the same, also _maxHeight > _virtHeight.
     */
    private _virtHeightRatio;
    /** Internal track for scroll top that is being virtualized */
    private _virtScrollTop;
    /** If the next onScroll event is triggered due to internal setting of scrollTop */
    private _bScrollInternal;
    private displayContiner;
    private virtualHelper;
    private _embeddedViews;
    constructor(_viewContainer: ViewContainerRef, _template: TemplateRef<NgForOfContext<T>>, _differs: IterableDiffers, resolver: ComponentFactoryResolver, cdr: ChangeDetectorRef, _zone: NgZone);
    protected readonly isRemote: boolean;
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngDoCheck(): void;
    addScrollTop(addTop: number): boolean;
    scrollTo(index: any): void;
    scrollNext(): void;
    scrollPrev(): void;
    getColumnScrollLeft(colIndex: any): number;
    getVerticalScroll(): any;
    getHorizontalScroll(): any;
    /** Function that is called when scrolling vertically */
    protected onScroll(event: any): void;
    protected fixedUpdateAllRows(inScrollTop: number, scrollHeight: number): number;
    /** Function that is called when scrolling horizontally */
    protected onHScroll(event: any): void;
    protected fixedUpdateAllCols(inScrollLeft: any): number;
    /** Function that is called when scrolling with the mouse wheel or using touchpad */
    protected onWheel(event: any): void;
    /** Function that is called the first moment we start interacting with the content on a touch device */
    protected onTouchStart(event: any): boolean;
    /** Function that is called when we need to scroll the content based on touch interactions */
    protected onTouchMove(event: any): boolean;
    /** Function that is called when we need to detect touch starting on a touch device on IE/Edge */
    protected onPointerDown(event: any): boolean;
    /** Function that is called when we need to detect touch ending on a touch device on IE/Edge */
    protected onPointerUp(event: any): boolean;
    /** Function that is called when a gesture begins on IE/Edge */
    protected onMSGestureStart(event: any): boolean;
    /** Function that is called when a we need to scroll based on the gesture performed on IE/Edge */
    protected onMSGestureChange(event: any): boolean;
    igxForTrackBy: TrackByFunction<T>;
    protected _applyChanges(changes: IterableChanges<T>): void;
    protected _calcMaxBrowserHeight(): number;
    /**
     * Recalculates the chunkSize based on current startIndex and returns the new size.
     * This should be called after this.state.startIndex is updated, not before.
     */
    protected _calculateChunkSize(): number;
    protected getElement(viewref: any, nodeName: any): any;
    protected initHCache(cols: any[]): number;
    protected _calcMaxChunkSize(): number;
    protected getHorizontalIndexAt(left: any, set: any, index: any): any;
    private _recalcScrollBarSize();
    private _calcHeight();
    private _recalcOnContainerChange(changes);
    /** Removes an elemenet from the embedded views and updates chunkSize */
    protected removeLastElem(): void;
    /** If there exists an element that we can create embedded view for creates it, appends it and updates chunkSize */
    protected addLastElem(): void;
    /**
     * Recalculates chunkSize and adds/removes elements if need due to the change.
     * this.state.chunkSize is updated in @addLastElem() or @removeLastElem()
     */
    private applyChunkSizeChange();
    private _updateScrollOffset();
}
export declare function getTypeNameForDebugging(type: any): string;
export interface IForOfState {
    startIndex?: number;
    chunkSize?: number;
}
export declare class IgxForOfModule {
}
