import Signal, { Req } from "badmfck-signal"; import { BaseService } from "./BaseService"; import { TransferPacketVO } from "./structures/Interfaces"; export interface ICustomEvent { event: string; data?: any; } export interface IStat { timestamp: number; slot: IMonitorSlot; } export declare const S_STAT_REGISTRATE_REQUEST: Signal>; export declare const S_STAT_REGISTRATE_CUSTOM_EVENT: Signal; export declare const S_STAT_REGISTRATE_SERVICE: Signal; export declare const S_STAT_REGISTRATE_HTTP_REQUEST: Signal<{ url: string; }>; export declare const S_STAT_REGISTRATE_HTTP_RESULT: Signal<{ host: string; ok: boolean; ms: number; }>; export declare const S_STAT_REGISTRATE_SQL_REQUEST: Signal<{ success: boolean; query: string; }>; export declare const REQ_STAT: Req<{ range: "week" | "day" | "hour"; }, IStat[]>; export declare const REQ_STAT_WEEKS: Req; export declare const REQ_STAT_WEEK: Req<{ weekKey: string; }, IStat[]>; type IMonitorSlot = { yyyymmddhhii: number; cpu: number; memory: { rss: number; heapUsed: number; heapTotal: number; external: number; }; externalCalls?: number; successEp: Record; failEp: Record; http: Record; http_ok: Record; http_fail: Record; httpP95: Record; success_sql: Record; fail_sql: Record; }; export declare class MonitorService extends BaseService { slots: Map>; intervalMs: number; lastCpuUsage: NodeJS.CpuUsage | null; lastTimestamp: number | null; private metricsDir; private static MAX_WEEKS; private static SCHEMA_VERSION; private _persistReady; private _flushedUpTo; private _lastSeenWeekKey; constructor(metricsDir?: string | null); init(): Promise; finishService(): Promise; getEPStat(req: { range: "week" | "day" | "hour"; }): Promise; private aggregate; private slotToTimestamp; onStatRegistrate(data: TransferPacketVO): void; collectUsage(): Promise; private static MAX_SLOT_KEYS; static normalizeQuery(query: string): string; static normalizeUrl(url: string): string; private bumpCappedKey; private onHttpRequestRegistrate; private _latByMinute; private static LAT_CAP_PER_MIN; private onHttpResultRegistrate; private finalizeLatency; private onSQLRequestRegistrate; private getSlot; private liveFile; private archiveFile; private weekKey; private atomicWrite; private normalizeSlot; private readJsonl; private persistTick; private rotate; private downsampleWeek; private mergeSlots; private hydrate; private listPersistedWeeks; private readPersistedWeek; } export {};