import { EventEmitter } from 'events';
import { CycleShardData } from '../state-manager/state-manager-types';
/** TYPES */
type Count = number;
type Hash = string;
type PartitionId = number;
export type Message = {
    cycle: number;
    data: {
        partitionHash: object;
        receiptMapHash: object;
        summaryHash: object;
    };
    sender: string;
};
export type hashMap = Map<number, string>;
export declare let forwardedGossips: Map<any, any>;
export declare class Collector extends EventEmitter {
    shard: CycleShardData;
    allDataHashes: hashMap;
    allReceiptMapHashes: hashMap;
    allSummaryHashes: hashMap;
    dataHashCounter: Map<PartitionId, Map<Hash, Count>>;
    receiptHashCounter: Map<PartitionId, Map<Hash, Count>>;
    summaryHashCounter: Map<PartitionId, Map<Hash, Count>>;
    constructor(shard: CycleShardData);
    process(messages: Message[]): void;
}
/** FUNCTIONS */
export declare function initGossip(): void;
export declare function newCollector(shard: CycleShardData): Collector;
export declare function processMessagesInGossipQueue(shard: CycleShardData, collector: Collector): void;
export declare function clean(cycle: number): void;
export declare function cleanOld(current: number, age: number): void;
export {};
