import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit, TemplateRef, OnDestroy, RendererFactory2 } from '@angular/core';
import { GridService } from './../../services/grid/grid.service';
import { DirectiveRegistrationService } from './../../services/directive-registration/directive-registration.service';
import { Range } from './../../shared/classes/scrolling/range';
import { ScrollDispatcherService } from './../../services/scroll-dispatcher/scroll-dispatcher.service';
import { GridDirective } from './../../directives/grid/grid.directive';
import { IVirtualNexus } from './../../shared/interfaces/i-virtual-nexus';
import { OperatingSystemService } from './../../services/operating-system/operating-system.service';
import { Subscription } from 'rxjs';
import * as i0 from "@angular/core";
export declare class ScrollViewportDirective implements AfterViewInit, OnDestroy, OnInit {
    elementRef: ElementRef;
    gridService: GridService;
    private document;
    private directiveRegistrationService;
    private scrollDispatcherService;
    private operatingSystem;
    private cdr;
    private rendererFactory;
    templateRef: TemplateRef<any> | null;
    templateID: string | null;
    generateCloneMethod: ((template: HTMLElement, items: any[], index: number) => Node) | null;
    private _arrowUpSpeed;
    get arrowUpSpeed(): string | number;
    set arrowUpSpeed(value: string | number);
    private _arrowDownSpeed;
    get arrowDownSpeed(): string | number;
    set arrowDownSpeed(value: string | number);
    private _preItemOverflow;
    get preItemOverflow(): string | number;
    set preItemOverflow(value: string | number);
    private _postItemOverflow;
    get postItemOverflow(): string | number;
    set postItemOverflow(value: string | number);
    private _itemLoadLimit;
    get itemLoadLimit(): string | number;
    set itemLoadLimit(value: string | number);
    timeoutID: any;
    items: any[] | null;
    templateid: string | null;
    preitemoverflow: number;
    postitemoverflow: number;
    arrowupspeed: number;
    arrowdownspeed: number;
    itemloadlimit: number;
    fillViewportScrolling: any;
    itemAdded: EventEmitter<any>;
    itemRemoved: EventEmitter<any>;
    itemUpdated: EventEmitter<any>;
    rangeUpdated: EventEmitter<any>;
    viewportScrolled: EventEmitter<any>;
    viewportReady: EventEmitter<any>;
    viewportInitialized: EventEmitter<any>;
    private containerHeight;
    private heightLookup;
    private itemVisibilityLookup;
    listElm: HTMLElement | null;
    listContent: HTMLElement | null;
    prevSpacer: HTMLElement | null;
    postSpacer: HTMLElement | null;
    gridDirective: GridDirective | null;
    virtualForChangesSubscription$: Subscription;
    preGridInitializeSubscription$: Subscription;
    pauseViewportRenderUpdates: boolean;
    range: Range;
    lastRange: Range;
    lastScrollTop: number;
    currentScrollTop: number;
    currentScrollChange: number;
    template: HTMLElement | null;
    private estimatedFullContentHeight;
    private estimatedPreListHeight;
    private estimatedPostListHeight;
    private totalItemsCounted;
    private totalHeightCount;
    private itemName;
    private avgItemHeight;
    private overflowHeightCount;
    scrollChangeByFirstIndexedItem: number;
    private lastVisibleItemHeight;
    private adjustedStartIndex;
    private forcedEndIndex;
    private placeholderObject;
    private postItemOverflowCount;
    private preItemOverflowCount;
    private lastVisibleItemOverflow;
    private preOverflowHeight;
    private mouseIsOverViewport;
    private lastHeight;
    private observer;
    private handleMouseOver;
    private handleMouseOut;
    private handleKeyDown;
    private handleListContentScroll;
    private cloneFromTemplateRef;
    private viewportHasScrolled;
    private templateContext;
    virtualNexus: IVirtualNexus | null;
    private _cloneMethod;
    private renderer;
    constructor(elementRef: ElementRef, gridService: GridService, document: any, directiveRegistrationService: DirectiveRegistrationService, scrollDispatcherService: ScrollDispatcherService, operatingSystem: OperatingSystemService, cdr: ChangeDetectorRef | null, rendererFactory: RendererFactory2);
    handleScroll(e: Event): void;
    private registerViewportToElement;
    private attachMutationObserver;
    private updateMutations;
    private getChildNodes;
    registerCustomElementsInputs(viewport: HTMLElement): void;
    private convertCustomElementsVariables;
    private createTBodies;
    private addScrollHandler;
    rerenderRowAt(index: number, updateScrollPosition?: boolean): void;
    private viewportRendered;
    scrollToBottom(): void;
    scrollToTop(): void;
    pageUp(): void;
    pageDown(): void;
    private addArrowListeners;
    ngAfterViewInit(): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    private setScrollSpacers;
    private setHeightByListHeightDifference;
    private removePreScrollItems;
    private removePostScrollItems;
    updateItems(items: any[], scrollToOptions?: any): void;
    resetToInitialValues(): void;
    recalculateRowHeight(index: number): void;
    private updateEstimatedHeightFromResize;
    private updateEstimatedHeight;
    getPreviousSibling(el: Node | Element | null): any;
    getNextSibling(el: Element | null): any;
    private getEstimatedChildInsertions;
    private setLastRangeToCurrentRange;
    private resetLastHeight;
    private maintainIndexInBounds;
    private maintainEndIndexInBounds;
    showRange(startIndex: number, endIndex: number, overflow?: number): void;
    getDisplayedContentsHeight(): number;
    refreshContainerHeight(): void;
    allItemsFitViewport(recalculateContainerHeight?: boolean, refreshViewport?: boolean): boolean;
    getCurrentScrollPosition(): any;
    private setHeightsForOverflowCalculations;
    private addResizeSensor;
    private removeResizeSensor;
    onTransitionEnd: (_e: any) => void;
    onTransitionRun: (_e: any) => void;
    onTransitionStart: (_e: any) => void;
    onTransitionCancel: (_e: any) => void;
    getCloneFromTemplateRef(index: number): HTMLElement;
    private addScrollItems;
    private addMissingPostScrollItemsAndUpdateOverflow;
    scrollToExact(index: number, overflow?: number): void;
    private getRangeChange;
    refreshViewport(recalculateRows?: boolean): void;
    updateScrollFromRange(newRange: Range): void;
    private initScroll;
    private verifyViewportIsReady;
    private initFirstScroll;
    private itemsAreSet;
    private cloneMethodIsSet;
    private templateIsSet;
    static ɵfac: i0.ɵɵFactoryDeclaration<ScrollViewportDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollViewportDirective, "[tablejsScrollViewport], [tablejsscrollviewport], [tablejs-scroll-viewport]", never, { "templateID": "templateID"; "generateCloneMethod": "generateCloneMethod"; "arrowUpSpeed": "arrowUpSpeed"; "arrowDownSpeed": "arrowDownSpeed"; "preItemOverflow": "preItemOverflow"; "postItemOverflow": "postItemOverflow"; "itemLoadLimit": "itemLoadLimit"; "templateid": "templateid"; "preitemoverflow": "preitemoverflow"; "postitemoverflow": "postitemoverflow"; "arrowupspeed": "arrowupspeed"; "arrowdownspeed": "arrowdownspeed"; "itemloadlimit": "itemloadlimit"; "fillViewportScrolling": "fillViewportScrolling"; }, { "itemAdded": "itemAdded"; "itemRemoved": "itemRemoved"; "itemUpdated": "itemUpdated"; "rangeUpdated": "rangeUpdated"; "viewportScrolled": "viewportScrolled"; "viewportReady": "viewportReady"; "viewportInitialized": "viewportInitialized"; }, ["templateRef"]>;
}
