import { P2P } from '@shardeum-foundation/lib-types';
export interface NodeMetrics {
    consecutiveRefutes: number;
    refutePercentage: number;
    lastCalculatedCycle: number;
}
export declare class ProblematicNodeCache {
    refuteHistory: Map<string, number[]>;
    nodeMetrics: Map<string, NodeMetrics>;
    processedCycles: Set<number>;
    lastProcessedCycle: number;
    cycleRange: {
        min: number;
        max: number;
    } | null;
    private config;
    constructor(config: any);
    buildFromCycles(cycles: P2P.CycleCreatorTypes.CycleRecord[]): void;
    addCycle(cycle: P2P.CycleCreatorTypes.CycleRecord, autoPrune?: boolean): void;
    prune(currentCycle: number): void;
    pruneInactiveNodes(activeNodes: Set<string>): void;
    calculateNodeMetrics(nodeId: string, currentCycle: number): NodeMetrics;
    getConsecutiveRefutes(refuteCycles: number[], currentCycle: number): number;
    getRefutePercentage(refuteCycles: number[], currentCycle: number): number;
    getProblematicNodes(currentCycle: number, activeNodes: Set<string>): string[];
    private isProblematic;
    clearNodeMetrics(nodeId: string): void;
    isCycleProcessed(cycleNumber: number): boolean;
    getCycleCoverage(): {
        totalCycles: number;
        cyclesWithRefutes: number;
        cycleRange: {
            min: number;
            max: number;
        } | null;
        missingCycles: number[];
    };
    getProcessedCycles(): number[];
    getMemoryUsage(): number;
    toJSON(): string;
    toCompressedJSON(): string;
    static fromJSON(json: string, config: any): ProblematicNodeCache;
}
