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<void>;
    reportJoined(nodeId: any, publicKey: any): Promise<void>;
    reportActive(nodeId: any): Promise<void>;
    reportSyncStatement(nodeId: any, syncStatement: any): Promise<void>;
    reportRemoved(nodeId: any): Promise<void>;
    _sendReport(data: any): Promise<void>;
    getReportInterval(): number;
    getAppData(): unknown;
    checkIsNodeLost(nodeId: any): boolean;
    checkIsNodeRefuted(nodeId: any): boolean;
    report(): Promise<void>;
    private restartReportInterval;
    startReporting(): void;
    consoleReport(): void;
    stopReporting(): void;
}
export default Reporter;
