/// import { EventEmitter } from 'events'; import type { App } from './App'; export type ModuleStatus = 'unloaded' | 'registering' | 'registered' | 'initializing' | 'initialized' | 'destroying' | 'destroyed' | 'error'; declare const statusSym: unique symbol; export declare abstract class Module { [statusSym]: ModuleStatus; eventBus: EventEmitter; /** * @returns {string | string[]} the identifier (or identifiers) of the module */ abstract getModuleId(): string | string[]; onRegister?(app: App): unknown | Promise; onInit?(app: App): unknown | Promise; onDestroy?(app: App): unknown | Promise; setStatus(newStatus: ModuleStatus): void; getStatus(): ModuleStatus; waitForStatus(status: ModuleStatus): Promise; } export {};