import type { ColumnDefine, ListTableConstructorOptions } from '@visactor/vtable';
import { ListTable } from '@visactor/vtable';
import { EventTarget } from '../event/event-target';
import type { IWorkSheetOptions, IWorkSheetAPI, CellCoord, CellRange, CellValue, IFormulaManagerOptions } from '../ts-types';
import type { VTableSheet } from '..';
export type WorkSheetConstructorOptions = {
    data?: any[][];
    formula?: IFormulaManagerOptions;
    sheetKey: string;
    sheetTitle: string;
} & Omit<ListTableConstructorOptions, 'records'>;
export declare class WorkSheet extends EventTarget implements IWorkSheetAPI {
    options: IWorkSheetOptions;
    container: HTMLElement;
    tableInstance?: ListTable;
    element: HTMLElement;
    private selection;
    private sheetKey;
    private sheetTitle;
    private eventBus;
    private vtableSheet;
    editingCell: {
        sheet: string;
        row: number;
        col: number;
    } | null;
    constructor(sheet: VTableSheet, options: IWorkSheetOptions);
    get rowCount(): number;
    get colCount(): number;
    getRowCount(): number;
    getColumnCount(): number;
    get records(): any;
    get columns(): any;
    private _createRootElement;
    private _initializeTable;
    private _generateTableOptions;
    private _setupEventListeners;
    private handleCellSelected;
    private handleSelectionChanged;
    private handleDragSelectEnd;
    private handleCellValueChanged;
    private handleDataRecordsChanged;
    private handleColumnsChanged;
    private handleChangeHeaderPosition;
    private handleChangeColumnHeaderPosition;
    handleChangeRowHeaderPosition(event: any): void;
    protected fireEvent(eventName: string, eventData: any): void;
    on(eventName: string, handler: (...args: any[]) => void): this;
    private resizeTimer;
    private isResizing;
    resize(): void;
    private doResize;
    getElement(): HTMLElement;
    getContainer(): HTMLElement;
    getKey(): string;
    getTitle(): string;
    setTitle(title: string): void;
    getColumns(): ColumnDefine[];
    getData(): any[][];
    getCopiedData(): any[][];
    getCellValue(col: number, row: number): any;
    getCellValueConsiderFormula(col: number, row: number): any;
    setCellValue(col: number, row: number, value: any): void;
    getCellByAddress(address: string): {
        coord: CellCoord;
        value: CellValue;
    };
    addressFromCoord(coord: CellCoord): string;
    addressFromCoord(col: number, row: number): string;
    coordFromAddress(address: string): CellCoord;
    getSelection(): CellRange | null;
    getMultipleSelections(): CellRange[];
    setFirstRowAsHeader(): void;
    processFormulaPaste(formulas: string[][], sourceStartCol: number, sourceStartRow: number, targetStartCol: number, targetStartRow: number): string[][];
    getCopyData(): (string | number)[][];
    pasteData(data: string[][], targetStartCol: number, targetStartRow: number): void;
    setCellFormula(row: number, col: number, formula: string): void;
    release(): void;
}
