import Database from './Database';
import History from './History';
import { EventCallback } from './EventBus';
import Paint from './Paint';
import Config from './Config';
import { ChangeItem, Column, EVirtTableOptions } from './types';
import Icons from './Icons';
import CellHeader from './CellHeader';
import Row from './Row';
import Cell from './Cell';
import { FinderResult } from './FinderBar';
export type ConfigType = Partial<typeof Config>;
export type containerElementOptions = {
    containerElement: HTMLDivElement;
    stageElement: HTMLDivElement;
    canvasElement: HTMLCanvasElement;
    overlayerElement: HTMLDivElement;
    editorElement: HTMLDivElement;
    emptyElement?: HTMLDivElement;
    contextMenuElement?: HTMLDivElement;
    loadingElement?: HTMLDivElement;
};
export type HeaderOptions = {
    x: number;
    y: number;
    width: number;
    height: number;
    visibleHeight: number;
    visibleWidth: number;
    visibleLeafColumns: Column[];
    leafCellHeaders: CellHeader[];
    renderLeafCellHeaders: CellHeader[];
    renderCellHeaders: CellHeader[];
    fixedLeftCellHeaders: [];
    fixedRightCellHeaders: [];
    renderCenterCellHeaders: [];
    allCellHeaders: CellHeader[];
};
export type BodyOptions = {
    x: number;
    y: number;
    width: number;
    height: number;
    visibleHeight: number;
    visibleWidth: number;
    headIndex: number;
    tailIndex: number;
    visibleRows: any[];
    renderRows: Row[];
    data: any[];
};
export type FooterOptions = {
    x: number;
    y: number;
    width: number;
    height: number;
    visibleHeight: number;
    visibleWidth: number;
    renderRows: Row[];
};
export type SelectorOptions = {
    enable: boolean;
    xArr: number[];
    yArr: number[];
    xArrCopy: number[];
    yArrCopy: number[];
};
export type AutofillOptions = {
    enable: boolean;
    xArr: number[];
    yArr: number[];
};
export default class Context {
    private eventBus;
    private eventBrowser;
    private eventTable;
    containerElement: HTMLDivElement;
    stageElement: HTMLDivElement;
    canvasElement: HTMLCanvasElement;
    overlayerElement: HTMLDivElement;
    editorElement: HTMLDivElement;
    emptyElement?: HTMLDivElement;
    contextMenuElement?: HTMLDivElement;
    loadingElement?: HTMLDivElement;
    stageWidth: number;
    stageHeight: number;
    paint: Paint;
    icons: Icons;
    domSelectionStr: string;
    isMouseoverTargetContainer: boolean;
    mousedown: boolean;
    isPointer: boolean;
    isEmpty: boolean;
    rowResizing: boolean;
    columnResizing: boolean;
    scrollerMove: boolean;
    scrollerFocus: boolean;
    autofillMove: boolean;
    selectorMove: boolean;
    disableHoverIconClick: boolean;
    selectColsIng: boolean;
    selectRowsIng: boolean;
    dragHeaderIng: boolean;
    finding: boolean;
    contextMenuIng: boolean;
    editing: boolean;
    loading: boolean;
    onlyMergeCell: boolean;
    selectOnlyOne: boolean;
    hasSelection: boolean;
    hasTree: boolean;
    scrollY: number;
    scrollX: number;
    fixedLeftWidth: number;
    fixedRightWidth: number;
    lastCenterColIndex: number;
    maxColIndex: number;
    maxRowIndex: number;
    hoverRow?: Row;
    clickCell?: Cell;
    focusCell?: Cell;
    currentCell?: Cell;
    hoverCell?: Cell;
    clickCellHeader?: CellHeader;
    focusCellHeader?: CellHeader;
    hoverCellHeader?: CellHeader;
    mouseX: number;
    mouseY: number;
    body: BodyOptions;
    footer: FooterOptions;
    header: HeaderOptions;
    selector: SelectorOptions;
    autofill: AutofillOptions;
    finderBar: FinderResult;
    database: Database;
    history: History;
    config: Config;
    constructor(containerOptions: containerElementOptions, options: EVirtTableOptions);
    setConfig(config: Config): void;
    setItemValueByEditor(rowKey: string, key: string, value: any, history?: boolean, reDraw?: boolean, checkReadonly?: boolean): void;
    batchSetItemValueByEditor(_list: ChangeItem[], history?: boolean, checkReadonly?: boolean): void;
    setFocusCell(cell: Cell): void;
    clearSelector(): void;
    clearSelectorCopy(): void;
    clearAutofill(): void;
    /**
     * 获取选中的数据
     * @returns
     */
    getSelectedData(): {
        xArr: number[];
        yArr: number[];
        text: string;
        value: any[][];
    };
    setScroll(x: number, y: number): void;
    setScrollX(x: number): void;
    setScrollY(y: number): void;
    startAdjustPosition(e: MouseEvent): void;
    stopAdjustPosition(): void;
    isTarget(e: Event): boolean;
    getOffset(e: MouseEvent): {
        offsetX: number;
        offsetY: number;
    };
    hasEvent(event: string): boolean;
    on(event: string, callback: EventCallback): void;
    once(event: string, callback: EventCallback): void;
    off(event: string, callback: EventCallback): void;
    emit(event: string, ...args: any[]): void;
    destroy(): void;
}
