import { RemoveListener, CellRangeCoords, CellCoords } from "@sheetxl/common";
import { TransactionStore, ITransaction } from "../transaction";
import { ISheetStyle, ICellModel, ICellValue, CellUpdateValue, SetCellOptions } from "../cell";
import { SheetCellCoords, SheetCellRangeCoords, SheetCellCoordsAddress, SheetCellRangeCoordsAddress, SheetCellRangeCoordsAddresses } from "../range";
import { INamedItems } from "../named";
import { FunctionDescriptorAndScript } from "../formula";
import { ISharedResourceCollection } from "../resource";
import { ISheetModel, ISheetRangeUpdate, RangeListenerOptions, ReplaceCellOptions } from "../sheet/ISheetModel";
import { WorkbookJSON, IWorkbookModel, IWorkbookModelListener, IWorkbookRangeListener, SheetKey, IWorkbookModelOptions, SheetRef, SheetVisibility, WorkbookProtection, IWorkbookRange, FindWorkbookCellOptions, SheetCoordsValuePair } from "./IWorkbookModel";
import { IDocTheme } from "../theme";
import { IWorkbookView } from "./IWorkbookView";
/**
 * The Base Workbook implementation
*/
declare class WorkbookModel implements IWorkbookModel {
    private _options;
    private _sheetCreator;
    private _sheetNameCreator;
    private _transactionStore;
    private _transactionStoreRemoveListener;
    private _namedRanges;
    private _descriptorAndScript;
    private _listeners;
    private _listenersSheets;
    private _theme;
    private _sheetStyle;
    private _sharedResources;
    private _sheetRefsAll;
    private _sheetRefsVisibleAndHidden;
    private _sheetRefsVisible;
    private _refsById;
    private _sheetsById;
    private _refsByLowerCaseName;
    private _sheetsByLowerCaseName;
    private _refsByInstance;
    private _lastId;
    private _sheetNames;
    private _view;
    private _protection;
    private _listenerWorkbookView;
    private _is1904DateSystem;
    private _activeSheetOffset;
    private _closed;
    private _sheetsCreated;
    constructor(initialState?: WorkbookJSON | ISheetRangeUpdate | ICellValue[][], options?: IWorkbookModelOptions);
    private _initialize;
    getView(): IWorkbookView;
    setView(view: IWorkbookView): void;
    is1904DateSystem(): boolean;
    set1904DateSystem(is1904Date: boolean): void;
    sheetStyle(): ISheetStyle;
    getResources(): ISharedResourceCollection;
    getTheme(): IDocTheme;
    getTransactionStore(): TransactionStore;
    setTheme(theme: IDocTheme): IDocTheme;
    getSheetRefs(visibility?: SheetVisibility): SheetRef[];
    getSheet(key?: SheetKey): ISheetModel;
    getSheetRef(key: SheetKey, visibility?: SheetVisibility): SheetRef;
    getSheetRefById(id: number): SheetRef;
    private _validateSheetName;
    getSheetNames(): string[];
    findValidSheetName(str: string): string;
    addSheet(sheetName?: string, index?: number): ISheetModel;
    private _updateSheetRefStates;
    private _addSheetRef;
    private _adjustRemoveSelectionIfRequired;
    private _adjustSheetNamesIfRequired;
    private _validateDeleteSheet;
    deleteSheet(key: SheetKey): ISheetModel;
    private _findOffsetForId;
    getActiveAddressCoordsA1(): string;
    getActiveAddressCoords(): SheetCellCoords;
    getActiveSheetIndex(): number;
    private _scanFind;
    find(findText: string, options?: FindWorkbookCellOptions): SheetCoordsValuePair<ICellModel> | null;
    replace(findText: string, replaceText: string, options: ReplaceCellOptions): {
        next: SheetCellCoordsAddress;
        count: number;
    };
    private _nextSheetIndex;
    private _prevSheetIndex;
    activateNextSheet(): ISheetModel;
    activatePreviousSheet(): ISheetModel;
    duplicateSheet(key?: SheetKey): Promise<ISheetModel>;
    getCell(address?: SheetCellCoordsAddress): ICellModel;
    setCell(address: SheetCellCoordsAddress, value: CellUpdateValue, options?: SetCellOptions): ICellModel;
    getRange(address?: SheetCellRangeCoordsAddress): IWorkbookRange;
    decodeAddress(address: SheetCellRangeCoordsAddresses | SheetCellRangeCoordsAddress | SheetCellCoords | CellRangeCoords | CellCoords): SheetCellRangeCoords[];
    private _updateSheetRef;
    /**
     * Fires onSheetRefsChange
     */
    setSheetName(key: SheetKey, sheetName: string): ISheetModel;
    /**
     * Fires onSheetRefsChange
     */
    setSheetVisibility(key: SheetKey, visibility: SheetVisibility): ISheetModel;
    moveSheet(indexFrom: number, indexTo: number): ISheetModel;
    setActiveSheet(key: SheetKey): ISheetModel;
    getProtection(): Readonly<WorkbookProtection>;
    private _defaultProtection;
    setProtection(protection: Partial<WorkbookProtection>): void;
    getNamedItems(): INamedItems;
    getUserDefinedFunctions(): FunctionDescriptorAndScript;
    setUserDefinedFunctions(descriptorAndScript: FunctionDescriptorAndScript): void;
    notifyProtectionChange(update: WorkbookProtection): void;
    notifyCellChange(): void;
    notifySheetRefsChange(update?: SheetRef[] | null): void;
    notifyThemeChange(update?: IDocTheme | null): void;
    notifyViewChange(update?: IWorkbookView | null): void;
    notifyAllChange(): void;
    addListener(listener: IWorkbookModelListener): RemoveListener;
    private _sheetRangeToWorkbookRange;
    addRangeListener(address: SheetCellRangeCoordsAddress, listener: IWorkbookRangeListener, options?: RangeListenerOptions): RemoveListener;
    fromJSON(json: WorkbookJSON): void;
    private _fromJSON;
    toJSON(): Promise<WorkbookJSON>;
    isClosed(): boolean;
    close(): void;
    pushTransaction(description?: string): ITransaction;
    private _getTransactionState;
    private _pushTransaction;
    private _updateTransactionState;
    get options(): IWorkbookModelOptions;
    get isIWorkbookModel(): true;
}
export default WorkbookModel;
export { WorkbookModel };
//# sourceMappingURL=WorkbookModel.d.ts.map