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

export default class VirtualDomHorizontal extends Renderer implements IVirtualDomHorizontal {
    leftCol: number;
    rightCol: number;
    scrollLeft: number;
    vDomScrollPosLeft: number;
    vDomScrollPosRight: number;
    vDomPadLeft: number;
    vDomPadRight: number;
    fitDataColAvg: number;
    windowBuffer: number;
    visibleRowsCache: IRow[] | null;
    initialized: boolean;
    isFitData: boolean;
    columns: IColumn[];
    constructor(table: ITabulator);
    initialize(): void;
    compatibilityCheck(): void;
    layoutCheck(): void;
    vertScrollListen(): void;
    clearVisRowCache(): void;
    /**
     * Public Functions
     */
    renderColumns(): Promise<void>;
    scrollColumns(left: number): void;
    calcWindowBuffer(): void;
    rerenderColumns(update?: boolean, blockRedraw?: boolean): void;
    renderRowCells(row: IRow): void;
    rerenderRowCells(row: IRow, force?: boolean): void;
    reinitializeColumnWidths(): Promise<void>;
    /**
     * Internal Rendering
     */
    deinitialize(): void;
    clear(): void;
    dataChange(): Promise<void>;
    reinitChanged(old: {
        cols: IColumn[];
        leftCol: number;
        rightCol: number;
    }): boolean;
    reinitializeRows(): void;
    getVisibleRows(): IRow[];
    scroll(diff: number): Promise<void>;
    colPositionAdjust(start: number, end: number, diff: number): void;
    addColRight(): Promise<void>;
    addColLeft(): Promise<void>;
    removeColRight(): void;
    removeColLeft(): void;
    fitDataColActualWidthCheck(column: IColumn): Promise<number>;
    initializeRow(row: IRow): void;
    appendCell(row: IRow, column: IColumn): void;
    reinitializeRow(row: IRow, force?: boolean): void;
}
