/// import { ChildProcess } from 'child_process'; export declare enum When { immediately = "immediately", daily = "daily", all = "all" } export declare enum ProcessStatus { Online = 0, Offline = 1, Failure = 2, UnKnown = 3 } export interface Process { name: string; processManagerType: 'pm2'; process2Watch: string; notifyOnRestart: { enable: boolean; when2Notify: When; maxMessagePerDay: number; includeInDailyReport: boolean; }; notifyOnFailure: { enable: boolean; when2Notify: When; maxMessagePerDay: number; includeInDailyReport: boolean; }; logWatchList: LogWatch[]; } interface LogWatch { text2Watch: string; lineCount2RecordBefore: number; lineCount2RecordAfter: number; when2Notify: When; maxMessagePerDay: number; includeInDailyReport: boolean; mailOptions: { messagePrefix: string; subject: string; }; } export interface Notification { processName: string; text2Watch: string | null; type: 'log-notify' | 'restart' | 'failure'; emailTo: string; emailFrom: string; emailSubject: string; when2Notify: When; includeInDailyReport: boolean; maxMessagePerDay: number; message: string; } export interface ProcessInfo { status: ProcessStatus; restartCount: number; memory: number; cpu: number; } export declare abstract class ProcessAgent { protected PROCESS_INFO_UPDATE_CYCLE: number; protected processConfig: Process; protected logListenerApp: ChildProcess; protected logArchieve: { text: string; timestamp: string; }[]; protected totalLogLineCount: number; protected lastCreatedNotification: { [text2Watch: string]: number; }; protected prevStatus: ProcessStatus; protected prevRestartCount: number; protected isFailureMessageSent: boolean; private createResourceCpuCb; private createResourceMemoryCb; private createNotificationCb; private defaultTo; private defaultFrom; constructor(processConfig: Process, defaultTo: string, defaultFrom: string, createNotificationCb: (values: object) => Promise, createResourceCpuCb: (timestamp: Date, process: string, value: number) => Promise, createResourceMemoryCb: (timestamp: Date, process: string, value: number) => Promise); protected abstract watchProcessLogOutput(): void; protected abstract watchProcessInfo(): void; protected abstract convertStatusFromStr(strStatus: string): ProcessStatus; start(): void; private getHeaderText; private getFooterText; protected newLogLine(logLine: string, timestamp: string): void; protected archieveLogLine(text: string, timestamp: string): void; protected processLogLine(): void; protected processProcessInfo(info: ProcessInfo): void; } export {};