///
declare const os: any, fs: any, events: any, stream: any, _: any, version: any, critical: number;
declare enum EventType {
MONITOR = "monitor",
UPTIME = "uptime",
FREEMEM = "freemem",
DISKFREE = "diskfree",
LOADAVG1 = "loadavg1",
LOADAVG5 = "loadavg5",
LOADAVG15 = "loadavg15",
START = "start",
STOP = "stop",
CONFIG = "config",
RESET = "reset",
DESTROY = "destroy"
}
declare class Monitor extends stream.Readable {
constructor();
get version(): string;
get constants(): MonitorConstants;
Thenable: typeof Thenable;
Monitor: typeof Monitor;
os: any;
_: any;
private _monitorState;
private _read;
sendEvent(event: EventType, obj?: Partial): Monitor;
private _cycle;
private _sendEvents;
start(options?: Partial): Monitor;
stop(): Monitor;
reset(): Monitor;
destroy(err?: unknown): Monitor;
config(options?: Partial): ConfigObject;
isRunning(): boolean;
private _isEnded;
throttle(event: EventType, handler: EventHandler, wait: number): Monitor;
unthrottle(event: EventType, handler: EventHandler): Monitor;
when(event: EventType): Promise | EventObjectThenable;
private _sanitizeNumber;
seconds(n: number): number;
minutes(n: number): number;
hours(n: number): number;
days(n: number): number;
blocks(bytes: number, blockSize?: number): number;
createMonitor(): Monitor;
}
declare class Thenable extends events.EventEmitter {
static constants: {
state: {
PENDING: string;
FULFILLED: string;
REJECTED: string;
};
};
private _thenableState;
resolve(result: Type): Thenable;
reject(error: unknown): Thenable;
then(onFulfilled?: ThenableResolvedHandler, onRejected?: ThenableRejectedHandler): void;
catch(onRejected?: ThenableRejectedHandler): void;
}
interface StatFs {
type: number;
bsize: number;
blocks: number;
bfree: number;
bavail: number;
files: number;
ffree: number;
}
interface DiskfreeConfig {
[key: string]: number;
}
interface ConfigObject {
delay: number;
critical1: number;
critical5: number;
critical15: number;
freemem: number;
uptime: number;
silent: boolean;
stream: boolean;
immediate: boolean;
diskfree: DiskfreeConfig;
throttle?: number;
}
interface MonitorState {
running: boolean;
ended: boolean;
streamBuffering: boolean;
interval?: NodeJS.Timeout;
config: ConfigObject;
throttled: Array<{
event: EventType;
originalFn: EventHandler;
throttledFn: EventHandler;
}>;
}
interface MonitorConstants {
events: {
[key: string]: EventType;
};
defaults: ConfigObject;
}
interface DiskfreeInfo {
[key: string]: number;
}
interface InfoObject {
loadavg: Array;
uptime: number;
freemem: number;
totalmem: number;
diskfree?: DiskfreeInfo;
options?: Partial;
}
interface EventObject extends Partial {
type: EventType;
timestamp: number;
}
interface EventHandler {
(event: EventObject): void;
}
interface ThenableState {
state: string;
result?: Type | unknown;
}
interface ThenableResolvedHandler {
(result: Type | unknown): unknown;
}
interface ThenableRejectedHandler {
(error: unknown): unknown;
}
type EventObjectThenable = Thenable;