import type { ColumnDefine, ListTableConstructorOptions } from '@visactor/vtable';
import { ListTable } from '@visactor/vtable';
import type { IWorkSheetOptions, IWorkSheetAPI, CellCoord, CellRange, CellValue, IFormulaManagerOptions } from '../ts-types';
import type { TYPES, VTableSheet } from '..';
import { WorkSheetEventManager } from '../event/worksheet-event-manager';
import type { VTableSheetEventBus } from '../event/vtable-sheet-event-bus';
import type { IWorksheetEventSource } from '../event/event-interfaces';
export type WorkSheetConstructorOptions = {
    data?: any[][];
    formula?: IFormulaManagerOptions;
    sheetKey: string;
    sheetTitle: string;
} & Omit<ListTableConstructorOptions, 'records'>;
export declare class WorkSheet implements IWorkSheetAPI, IWorksheetEventSource {
    options: IWorkSheetOptions;
    container: HTMLElement;
    tableInstance?: ListTable;
    element: HTMLElement;
    private selection;
    private _sheetKey;
    private _sheetTitle;
    private eventBus;
    eventManager: WorkSheetEventManager;
    private vtableSheet;
    editingCell: {
        sheet: string;
        row: number;
        col: number;
    } | null;
    get sheetKey(): string;
    getEventBus(): VTableSheetEventBus;
    get sheetTitle(): string;
    set sheetTitle(title: string);
    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;
    _adjustTheme(theme: TYPES.VTableThemes.ITableThemeDefine): TYPES.VTableThemes.ITableThemeDefine;
    private _setupEventListeners;
    private handleCellSelected;
    private handleSelectionChanged;
    private handleDragSelectEnd;
    private handleCellValueChanged;
    private handleDataRecordsChanged;
    private handleColumnsChanged;
    private handleChangeHeaderPosition;
    private handleChangeColumnHeaderPosition;
    handleChangeRowHeaderPosition(event: any): void;
    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;
    updateSheetOption(sheetOption: IWorkSheetOptions): 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;
}
