import { IColumn, IRenderer, IRow, ITabulator, ScrollToRowPosition } from '../../../../../../types/src/table';
import { default as CoreFeature } from '../CoreFeature';

export default class Renderer extends CoreFeature implements IRenderer {
    elementVertical: HTMLElement | undefined;
    elementHorizontal: HTMLElement | undefined;
    tableElement: HTMLElement | undefined;
    verticalFillMode: 'fit' | 'fill';
    constructor(table: ITabulator);
    /**
     * Internal Bindings
     */
    initialize(): void;
    clearRows(): void;
    clearColumns(): void;
    reinitializeColumnWidths(_columns?: IColumn[]): Promise<void>;
    renderRows(): void;
    renderColumns(): void;
    rerenderRows(callback?: () => void): void;
    rerenderColumns(_update?: boolean | null, _blockRedraw?: boolean): void;
    renderRowCells(_row: IRow, _inFragment?: boolean): void;
    rerenderRowCells(_row: IRow, _force?: boolean): void;
    scrollColumns(_left: number, _dir?: boolean): void;
    scrollRows(_top: number, _dir?: boolean): void;
    resize(): void;
    scrollToRow(_row: IRow): void;
    scrollToRowNearestTop(_row: IRow): boolean;
    visibleRows(_includingBuffer?: boolean): IRow[];
    /**
     * Helper Functions
     */
    rows(): IRow[];
    styleRow(row: IRow, index: number): void;
    /**
     * External Triggers
     * (DO NOT OVERRIDE)
     */
    clear(): void;
    render(): void;
    rerender(callback?: () => void): void;
    scrollToRowPosition(row: IRow, position?: ScrollToRowPosition, ifVisible?: boolean): Promise<void>;
}
