///
///
///
import { Readable } from 'stream';
import { EventEmitter } from 'events';
import { CountedEvent, CountedEventMap } from './countedEvents';
interface Statistics {
intervalDuration: number;
context: any;
counterDefs: any[];
watcherDefs: any;
timerDefs: {
[name: string]: TimerRing;
};
manualStatDefs: any[];
fifoStatDefs: any[];
interval: NodeJS.Timeout;
snapshotWriteFns: any[];
stream: Readable;
streamIsPushable: boolean;
counters: any;
watchers: any;
timers: any;
manualStats: {
[name: string]: ManualRing;
};
fifoStats: {
[name: string]: FifoStats;
};
ringOverrides: {
[override: string]: number;
};
fifoOverrides: {
[override: string]: number;
};
countedEventMap: CountedEventMap;
}
declare class Statistics extends EventEmitter {
constructor(baseDir: string, config: any, { counters, watchers, timers, manualStats, fifoStats, ringOverrides, fifoOverrides, }: {
counters: string[];
watchers: any;
timers: any;
manualStats: string[];
fifoStats: string[];
ringOverrides: {
[override: string]: number;
};
fifoOverrides: {
[override: string]: number;
};
}, context: any);
initialize(): void;
getStream(): Readable;
writeOnSnapshot(writeFn: any, context: any): void;
startSnapshots(): void;
stopSnapshots(): void;
incrementCounter(counterName: any): void;
/**
* Stores a new CountedEvent in a map
* @param category
* @param name
* @param count
* @param message
* @returns
*/
countEvent(category: string, name: string, count: number, message: string): void;
/**
* Get an array of all the CountedEvents
* @returns
*/
getAllCountedEvents(): CountedEvent[];
/**
* Resets the internal CountedEventMap
*/
resetCountedEvents(): void;
setManualStat(manualStatName: any, value: number): void;
setFifoStat(fifoStatName: any, value: number): void;
getCurrentCount(counterName: any): any;
getCounterTotal(counterName: any): any;
getWatcherValue(watcherName: any): any;
startTimer(timerName: any, id: any): void;
stopTimer(timerName: any, id: any): void;
getAverage(name: any): any;
getMultiStatReport(name: any): any;
getMax(name: any): any;
clearRing(name: any): any;
getPreviousElement(name: any): any;
_initializeCounters(counterDefs?: any[]): {};
_initializeWatchers(watcherDefs: {}, context: any): {};
_initializeTimers(timerDefs?: any): any;
_initializeManualStats(counterDefs?: any[], ringOverrides?: {}): {};
_initializeFifoStats(fifoStatsDefs?: any[], statsOverrides?: {}): {};
_takeSnapshot(): void;
_pushToStream(data: any): void;
}
interface Ring {
elements: any[];
index: number;
length: number;
}
declare class Ring {
constructor(length: any);
save(value: any): void;
average(): number;
multiStats(): {
min: number;
max: number;
avg: number;
allVals: any[];
sum: number;
};
max(): number;
previous(): any;
clear(): void;
}
interface TimerRing {
ids: any;
ring: Ring;
}
declare class TimerRing {
constructor(length: any);
start(id: string): void;
stop(id: string): void;
snapshot(): void;
}
interface ManualRing {
ring: Ring;
}
declare class FifoStats {
private items;
private length;
constructor(limit?: number);
save(item: any): void;
average(): number;
max(): number;
multiStats(): {
min: number;
max: number;
avg: number;
allVals: any[];
sum: number;
};
}
declare class ManualRing {
constructor(length: any);
manualSetValue(value: any): void;
snapshot(): void;
}
export default Statistics;