import { IRow, ITabulator, IVirtualDomVertical } from '../../../../../../../types/src/table';
import { default as Renderer } from '../Renderer';

export default class VirtualDomVertical extends Renderer implements IVirtualDomVertical {
    scrollTop: number;
    scrollLeft: number;
    vDomRowHeight: number;
    vDomTop: number;
    vDomBottom: number;
    vDomScrollPosTop: number;
    vDomScrollPosBottom: number;
    vDomTopPad: number;
    vDomBottomPad: number;
    vDomMaxRenderChain: number;
    vDomWindowBuffer: number;
    vDomWindowMinTotalRows: number;
    vDomWindowMinMarginRows: number;
    vDomTopNewRows: IRow[];
    vDomBottomNewRows: IRow[];
    vDomScrollHeight: number;
    constructor(table: ITabulator);
    /**
     * Public Functions
     */
    clearRows(): void;
    renderRows(): void;
    rerenderRows(callback?: () => void): void;
    scrollColumns(left: number): void;
    scrollRows(top: number, dir: boolean): void;
    resize(): void;
    scrollToRowNearestTop(row: IRow): boolean;
    scrollToRow(row: IRow): void;
    visibleRows(includingBuffer?: boolean): IRow[];
    /**
     * Internal Rendering
     */
    _virtualRenderFill(position?: number, forceMove?: boolean, offset?: number): void;
    _addTopRow(rows: IRow[], fillableSpace: number): void;
    _removeTopRow(rows: IRow[], fillableSpace: number): void;
    _addBottomRow(rows: IRow[], fillableSpace: number): void;
    _removeBottomRow(rows: IRow[], fillableSpace: number): void;
    _quickNormalizeRowHeight(rows: IRow[]): void;
}
