/// import { EventEmitter } from 'events'; import { System } from '../../libs/system/System'; import { ILoggerApi } from '../../libs/logging/ILoggerApi'; import { ClassType } from '@allgemein/schema-api'; import { IMessageOptions } from './IMessageOptions'; import { AbstractEvent } from './AbstractEvent'; export declare abstract class AbstractMessage extends EventEmitter { protected system: System; protected request: REQ; protected responses: RES[]; protected targetIds: string[]; /** * Detect targets * * @protected */ protected detectTargets: boolean; protected results: any | any[]; protected active: boolean; protected timeout: number; protected logger: ILoggerApi; protected start: Date; protected stop: Date; protected readonly reqClass: ClassType; protected readonly resClass: ClassType; protected options: IMessageOptions; constructor(system: System, reqClass: ClassType, resClass: ClassType, options?: IMessageOptions); target(nodeId: string): this; abstract doPostProcess(responses: RES[], err?: Error): any; getSystem(): System; getLocalNodeId(): string; getReqClass(): ClassType; getResClass(): ClassType; beforeSend?(req: REQ): void; send(req: REQ): Promise; postProcess(err?: Error): Promise; /** * Overrideable method to additionaly check if response is valid. * * If false the response will be ignored in onResults. * * @param res */ requestCheck(res: RES): boolean; onResults(res: RES): void; ready(): Promise; }