import { default as Column } from '../../core/column/Column';
import { default as Module } from '../../core/Module';
import { default as Tabulator } from '../../core/Tabulator';

type ReaderFunc = (id: string, type: string) => any;
type WriterFunc = (id: string, type: string, data: any) => void;
export default class Persistence extends Module {
    static readonly moduleName = "persistence";
    static readonly moduleInitOrder = -10;
    static readonly readers: {
        cookie: (id: string, type: string) => any;
        local: (id: string, type: string) => any;
    };
    static readonly writers: {
        cookie: (id: string, type: string, data: any) => void;
        local: (id: string, type: string, data: any) => void;
    };
    mode: string;
    id: string;
    defWatcherBlock: boolean;
    config: Record<string, any>;
    readFunc: ReaderFunc | false;
    writeFunc: WriterFunc | false;
    constructor(table: Tabulator);
    localStorageTest(): boolean;
    initialize(): void;
    eventSave(type: string): void;
    tableBuilt(): void;
    tableRedraw(force: any): void;
    getColumnLayout(): any[];
    setColumnLayout(layout: any): boolean;
    initializeColumn(column: Column): void;
    load(type: string, current?: any): any;
    retrieveData(type: string): any;
    mergeDefinition(oldCols: any[], newCols: any[], mergeAllNew: boolean): any[];
    _findColumn(columns: any[], subject: any): any;
    save(type: string): void;
    validateSorters(data: any[]): any[];
    getGroupConfig(): Record<string, any>;
    getPageConfig(): Record<string, any>;
    parseColumns(columns: Column[]): any[];
}
export {};
