import { IGrid, IRenderer, NotifyArgs } from '../base/interface';
import { ContentRender } from './content-renderer';
import { ServiceLocator } from '../services/service-locator';
import { InterSectionObserver } from '../services/intersection-observer';
/**
 * @hidden
 */
export declare class DomVirtualElementHandler {
    wrapper: HTMLElement;
    placeholder: HTMLElement;
    content: HTMLElement;
    table: HTMLElement;
    verticalScrollbar: HTMLElement;
    verticalScrollerContainer: HTMLElement;
    gridContent: HTMLElement;
    renderWrapper(height?: number): void;
    renderPlaceHolder(): void;
    renderVerticalScrollbar(): void;
    adjustTable(yValue: number): void;
    setVirtualHeight(height?: number): void;
}
/**
 * @hidden
 */
export declare class DomVirtualContentRenderer extends ContentRender implements IRenderer {
    virtualEle: DomVirtualElementHandler;
    content: HTMLElement;
    private totalRecords;
    private rowHeight;
    private currentScrollTop;
    private prevScrollTop;
    private prevStartIndex;
    /**
     * @hidden
     */
    currentStartIndex: number;
    private preventScroll;
    private locator;
    private widthServices;
    private expandedDetailRows;
    private pendingSelectIndex;
    private storedVirtualHeight;
    private rowHeightCache;
    private dynamicHeightSum;
    private dynamicRowCount;
    /** @hidden */
    observer: InterSectionObserver;
    private activeKey;
    rowIndex: number;
    cellIndex: number;
    private isCancel;
    /** @hidden */
    offsets: {
        [x: number]: number;
    };
    /** @hidden */
    offsetKeys: string[];
    private actions;
    private count;
    private maxPage;
    private previousPage;
    private pageSkip;
    private pageTake;
    private isNormaledit;
    private editedRowIndex;
    private isAdd;
    /** @hidden */
    virtualData: Object;
    private emptyRowData;
    private boundActionComplete;
    private boundActionBegin;
    constructor(parent: IGrid, locator?: ServiceLocator);
    renderTable(): void;
    refreshContentRows(args?: NotifyArgs): void;
    appendContent(tbody: Element, frag: DocumentFragment, args: NotifyArgs, tableName?: string): void;
    renderEmpty(tbody: HTMLElement): void;
    private bindScrollEvents;
    private domScrollListener;
    private checkAndFetchCrossPageData;
    private onEntered;
    protected onDataReady(e?: NotifyArgs): void;
    private setDomVirtualPageQuery;
    /**
     * @returns {void}
     * @hidden */
    refreshOffsets(): void;
    private getPageFromIndex;
    private isAutoRowHeight;
    private hasRowHeightCallback;
    private isDynamicHeight;
    private measureRowHeights;
    private getAvgRowHeight;
    private getDataRowIndexByScrollTop;
    private getStartIndex;
    private getEndIndex;
    private getVisibleRowCount;
    private getBufferRowCount;
    private initializeRowHeight;
    private setVirtualDimensions;
    getRowTopOffset(dataRowIndex: number): number;
    updateDetailRowHeight(rowIndex: number, isExpand: boolean, detailRowHeight?: number): void;
    clearExpandedDetailRows(): void;
    removeEventListeners(): void;
    destroy(): void;
    private domVirtualCellFocus;
    private focusCell;
    private resetVirtualFocus;
    private onGroupExpandCollapse;
    private onApplyDomVirtualRowHeight;
    private selectVirtualRow;
    private scrollAfterEdit;
    private restoreEdit;
    private restoreAdd;
    private editActionBegin;
    private addActionBegin;
    private getVirtualEditedData;
    getVirtualData(data: {
        virtualData: Object;
        isAdd: boolean;
        isCancel: boolean;
        isScroll: boolean;
    }): void;
    getVirtualRowIndex(index: number): number;
    private editCancel;
    private editSuccess;
    private updateCurrentViewData;
    private createEmptyRowdata;
    private resetIsedit;
    private resetScrollPosition;
    private actionComplete;
    private actionBegin;
}
