import Crypto from '../crypto'; type CounterMap = Map; interface CounterNode { count: number; subCounters: CounterMap; } type CounterArray = { key: string; count: number; subArray: CounterArray; }[]; declare class NestedCounters { eventCounters: Map; rareEventCounters: Map; crypto: Crypto; infLoopDebug: boolean; constructor(); registerEndpoints(): void; /** * Increments event counter map for a specified category and sub category * @param category1 Primary category to be updated * @param category2 Sub counter category * @param count Amount to increment primary and sub counter by. Defaults to 1 */ countEvent(category1: string, category2: string, count?: number): void; /** * Increments event counter map and rare event counter map for a specified category and sub category * @param category1 Primary category to be updated * @param category2 Sub counter category * @param count Amount to increment primary and sub counter by. Defaults to 1 */ countRareEvent(category1: string, category2: string, count?: number): void; /** * Recursively convert the counterMap to an array and sort by the count property * @param counterMap * @returns sorted array of counts */ arrayitizeAndSort(counterMap: CounterMap): CounterArray; /** * Generates a formatted response and recursively prints it to the response stream * @param arrayReport * @param stream * @param indent */ printArrayReport(arrayReport: CounterArray, stream: any, indent?: number): void; resetCounters(): void; resetRareCounters(): void; } export declare const nestedCountersInstance: NestedCounters; export default NestedCounters;