///
import Log4js from 'log4js';
import LoadDetection from '../load-detection';
import Logger from '../logger';
import StateManager from '../state-manager';
import Statistics from '../statistics';
import Profiler from '../utils/profiler';
/**
* @typedef {import('../state-manager/index').CycleShardData} CycleShardData
*/
interface StatisticsReport {
txInjected: number;
txApplied: number;
txRejected: number;
txProcessed: number;
txExpired: number;
}
interface Reporter {
config: any;
mainLogger: Log4js.Logger;
p2p: any;
statistics: Statistics;
stateManager: StateManager;
profiler: Profiler;
loadDetection: LoadDetection;
logger: Logger;
reportTimer: NodeJS.Timeout;
reportingInterval: NodeJS.Timeout;
socketReportInterval: NodeJS.Timeout;
lastTime: number;
doConsoleReport: boolean;
hasRecipient: boolean;
statisticsReport: StatisticsReport;
stillNeedsInitialPatchPostActive: boolean;
}
declare class Reporter {
constructor(config: any, logger: any, statistics: any, stateManager: any, profiler: any, loadDetection: any);
resetStatisticsReport(): void;
collectStatisticToReport(): void;
reportJoining(publicKey: any): Promise;
reportJoined(nodeId: any, publicKey: any): Promise;
reportActive(nodeId: any): Promise;
reportSyncStatement(nodeId: any, syncStatement: any): Promise;
reportRemoved(nodeId: any): Promise;
_sendReport(data: any): Promise;
getReportInterval(): number;
getAppData(): unknown;
checkIsNodeLost(nodeId: any): boolean;
checkIsNodeRefuted(nodeId: any): boolean;
report(): Promise;
private restartReportInterval;
startReporting(): void;
consoleReport(): void;
stopReporting(): void;
}
export default Reporter;