import { TypedEventEmitter } from 'main-event'; import type { ContentRouting } from './content-routing/index.js'; import type { OperationMetrics } from './kad-dht.js'; import type { ComponentLogger, Metrics, PeerId } from '@libp2p/interface'; import type { AddressManager } from '@libp2p/interface-internal'; import type { AdaptiveTimeoutInit } from '@libp2p/utils'; import type { Datastore } from 'interface-datastore'; export interface ReproviderComponents { peerId: PeerId; datastore: Datastore; logger: ComponentLogger; addressManager: AddressManager; metrics?: Metrics; } export interface ReproviderInit { logPrefix: string; metricsPrefix: string; datastorePrefix: string; contentRouting: ContentRouting; operationMetrics: OperationMetrics; concurrency?: number; maxQueueSize?: number; threshold?: number; validity?: number; interval?: number; timeout?: Omit; } interface ReprovideEvents { 'reprovide:start': CustomEvent; 'reprovide:end': CustomEvent; } export declare class Reprovider extends TypedEventEmitter { private readonly log; private readonly reprovideQueue; private readonly maxQueueSize; private readonly datastore; private timeout?; private readonly reprovideTimeout; private running; private shutdownController?; private readonly reprovideThreshold; private readonly contentRouting; private readonly datastorePrefix; private readonly addressManager; private readonly validity; private readonly interval; private readonly peerId; constructor(components: ReproviderComponents, init: ReproviderInit); start(): void; stop(): void; /** * Check all provider records. Delete them if they have expired, reprovide * them if the provider is us and the expiry is within the reprovide window. */ private processRecords; /** * Determines if a record should be reprovided */ private shouldReprovide; private queueReprovide; private reprovide; } export {}; //# sourceMappingURL=reprovider.d.ts.map