///
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 {};