import { ExportedChange, HyperFormula } from 'hyperformula';
import { IWithId } from '../../stateChanger/StateChanger.module';
import { EventDispatcher } from '../../events/Events.module';
import { DataTable, DataTableCollectionJSON } from '../Data.module';
export interface DataSetJSON {
    tables: DataTableCollectionJSON;
    id: string;
}
/**
 * Класс набора таблиц. Объединяет все таблицы одного документа
 */
export declare class DataSet implements IWithId {
    private static _counter;
    private _hashCode;
    private _tables;
    id: string;
    private _hf;
    /**
     * Возвращает ссылку на объект HyperFormula
     */
    get hf(): HyperFormula;
    private _onValuesUpdated;
    get onValuesUpdated(): EventDispatcher<ValueUpdatedArg>;
    get hashCode(): number;
    constructor();
    static fromJSON(json: DataSetJSON): DataSet;
    tableFromJSON(json: string): DataTable;
    toJSON(): string;
    refreshAfterRestore(): void;
    /**
     * Возвращает количество таблиц
     */
    get tablesCount(): number;
    /**
     * Возвращает таблицу по индексу
     */
    getTableByIndex(index: number): DataTable;
    /**
     * Возвращает таблицу по имени
     */
    getTableByName(name: string): DataTable;
    /**
     * Возвращает таблицу по имени
     */
    getTableById(id: string): DataTable;
    /**
     * Возвращает имена всех таблиц
     */
    getTableNames(): string[];
    /**
     * Добавляет таблицу к набору
     * @param tableName Имя новой таблицы
     */
    addTable(table: string | DataTable): DataTable;
    /**
     * Удаляет таблицу из набора
     * @param table Объект удаляемой таблицы
     */
    removeTable(table: DataTable): number;
    /**
     * Удаляет таблицу из набора
     * @param index Индекс таблицы
     */
    removeTableByIndex(index: number): number;
    /**
     * Удаляет таблицу из набора
     * @param tableName Имя удаляемой таблицы
     */
    removeTableByName(tableName: string): number;
    /**
     * Получить новое имя для таблицы
     * @param indexTable Index таблицы
     * @returns Имя таблицы
     */
    generationTableName(indexTable: number): string;
    private raiseValuesUpdated;
    private addSheet;
    private removeSheet;
}
export declare class ValueUpdatedArg {
    values: ExportedChange[];
    constructor(values: ExportedChange[]);
}
