import { default as Module } from '../../core/Module';
import { default as Tabulator } from '../../core/Tabulator';
import { SheetDefinition, SheetLookup } from '../../core/types';
import { default as Sheet } from './Sheet';
import { default as SheetComponent } from './SheetComponent';

export default class Spreadsheet extends Module {
    static readonly moduleName = "spreadsheet";
    sheets: Sheet[];
    element: HTMLElement | null;
    activeSheet: Sheet | null;
    constructor(table: Tabulator);
    initialize(): void;
    compatibilityCheck(): void;
    initializeTabset(): void;
    tableInitialized(): void;
    /**
     * Ajax Parsing
     */
    loadRemoteData(data: unknown[][] | SheetDefinition[]): false;
    /**
     * Sheet Management
     */
    loadData(data: unknown[][]): void;
    destroySheets(): void;
    loadSheets(sheets: SheetDefinition[]): void;
    loadSheet(sheet: Sheet): void;
    newSheet(definition: Partial<SheetDefinition>): Sheet;
    removeSheet(sheet: Sheet): void;
    lookupSheet(key?: SheetLookup): Sheet | null;
    /**
     * Public Functions
     */
    setSheets(sheets: SheetDefinition[]): SheetComponent[];
    addSheet(sheet: SheetDefinition): SheetComponent;
    getSheetDefinitions(): SheetDefinition[];
    getSheets(): SheetComponent[];
    getSheet(key?: SheetLookup): SheetComponent | false;
    setSheetData(key: SheetLookup | unknown[][], data?: unknown[][]): void | false;
    getSheetData(key?: SheetLookup): unknown[][];
    clearSheet(key?: SheetLookup): void | false;
    removeSheetFunc(key?: SheetLookup): void;
    activeSheetFunc(key?: SheetLookup): false;
}
