import { MoralisCore } from '../MoralisCore'; import { LoggerController } from '../controllers/LoggerController'; import { ModuleType } from './ModuleType'; import TypedEmitter, { EventMap } from 'typed-emitter'; /** * The base class of every Moralis class that gets registered as a module via MoralisModules * It should always be created with: * - `name`: name of the module (should be unique) * - `core`: the MoralisCore instance * - `type`: (optional) CoreModuleType, defaults to CoreModuleType.DEFAULT * * When creating an api, or network module, you should use the ApiModule or NetworkModule */ export declare abstract class Module { readonly name: string; protected readonly core: MoralisCore; readonly type: ModuleType; protected readonly logger: LoggerController; protected readonly emitter: TypedEmitter; constructor(name: string, core: MoralisCore, type?: ModuleType); abstract setup(): void; /** * Start the module (if needed). * This function can be used to initialize variables etc. */ abstract start(): void | Promise; /** * Any cleanup that needs to be done for removing this module. * It also should remove the module via `this.core.modules.remove(this.name)` */ cleanUp(): void; /** * Listen to an event, and returns a cleanup function */ listen(eventName: Event, listener: Events[Event]): () => TypedEmitter; } export interface ModuleFactory { create(core: MoralisCore): Module; } //# sourceMappingURL=Module.d.ts.map