import { IModuleBinder } from '../../../../../../types/src/table';
import { default as Ajax } from '../../modules/Ajax/Ajax';
import { default as Clipboard } from '../../modules/Clipboard/Clipboard';
import { default as Comms } from '../../modules/Comms/Comms';
import { default as Edit } from '../../modules/Edit/Edit';
import { default as History } from '../../modules/History/History';
import { default as Layout } from '../../modules/Layout/Layout';
import { default as Localize } from '../../modules/Localize/Localize';
import { default as MoveRow } from '../../modules/MoveRows/MoveRows';
import { default as ResponsiveLayout } from '../../modules/ResponsiveLayout/ResponsiveLayout';
import { default as SelectRow } from '../../modules/SelectRow/SelectRow';
import { default as Module } from '../Module';
import { default as TableRegistry } from './TableRegistry';

type Modules = {
    ajax?: Ajax;
    clipboard?: Clipboard;
    comms?: Comms;
    edit?: Edit;
    history?: History;
    layout?: Layout;
    localize?: Localize;
    moveRow?: MoveRow;
    responsiveLayout?: ResponsiveLayout;
    selectRow?: SelectRow;
} & Record<string, Module>;
export default class ModuleBinder extends TableRegistry implements IModuleBinder {
    static readonly moduleBindings: Record<string, typeof Module>;
    static readonly moduleExtensions: Record<string, Record<string, Record<string, any>>>;
    static modulesRegistered: boolean;
    static readonly defaultModules = false;
    modules: Modules;
    modulesCore: Module[];
    modulesRegular: Module[];
    constructor();
    static initializeModuleBinder(defaultModules?: Record<string, typeof Module> | false): void;
    static _extendModule(name: string, property: string, values: Record<string, any>): void;
    static _registerModules(modules: Record<string, typeof Module>, core?: boolean): void;
    static _registerModule(modules: Array<typeof Module> | typeof Module): void;
    static _registerModuleBinding(mod: typeof Module): void;
    static _registerModuleExtensions(mod: typeof Module): void;
    static _extendModuleFromQueue(mod: typeof Module): void;
    _bindModules(): void;
}
export {};
