import { CellRangeCoords, RemoveListener } from "@sheetxl/common";
import { SerializableProperties } from "../primitives";
import { TransactionStore, ITransaction } from "../transaction";
import { ISheetStyle, ITableStyle } from '..';
import { ITableModel, AutoFilter, TableColumn, TableStyleInfo, TableModelValues, UpdateTableModelOptions, ITableModelListener } from "./ITableModel";
export interface TableModelOptions {
    /**
     * A transaction store that can be used to undo/redo changes to the table.
     */
    transactionStore?: TransactionStore;
    sheetStyle?: ISheetStyle;
    defaultTableStyle?: TableStyleInfo;
    initialJSON?: SerializableProperties<TableModelValues>;
}
/**
 * Default TableModel
 */
export declare class TableModel implements ITableModel {
    private _listeners;
    private _options;
    private _transactionStore;
    private _transactionStoreRemoveListener;
    private _closed;
    private _sheetStyle;
    private _sheetStyleRemoveListener;
    private _styleCache;
    constructor(options: TableModelOptions);
    getTableStyle(): ITableStyle;
    update(values: TableModelValues, options?: UpdateTableModelOptions): void;
    insertRows(_offset: number, count: number): void;
    removeRows(_offset: number, count: number): void;
    insertColumns(offset: number, count: number): void;
    removeColumns(offset: number, count: number): void;
    get name(): string;
    set name(newValue: string);
    get ref(): CellRangeCoords;
    set ref(newValue: CellRangeCoords);
    get displayName(): string;
    set displayName(newValue: string);
    get headerRowCount(): number;
    set headerRowCount(newValue: number);
    get totalsRowCount(): number;
    set totalsRowCount(newValue: number);
    get autoFilter(): AutoFilter;
    set autoFilter(newValue: AutoFilter);
    get sortState(): any;
    set sortState(newValue: any);
    get columns(): TableColumn[];
    set columns(newValue: TableColumn[]);
    get styleInfo(): TableStyleInfo;
    set styleInfo(newValue: TableStyleInfo);
    private _modifyTable;
    pushTransaction(description?: string): ITransaction;
    private _getTransactionState;
    private _pushTransaction;
    private _updateTransactionState;
    toJSON(): SerializableProperties<ITableModel> | null;
    private _fromJSON;
    notifyOnTableChange(): void;
    notifyOnClose(): void;
    addListener(listener: ITableModelListener): RemoveListener;
    isClosed(): boolean;
    close(): void;
    get isModelTable(): true;
}
export default TableModel;
//# sourceMappingURL=TableModel.d.ts.map