import { type DKGAgent, type DurableProgressSummary } from '@origintrail-official/dkg-agent'; export interface CatchupJobResult { connectedPeers: number; totalPeers?: number; selectedPeers?: number; syncCapablePeers: number; peersTried: number; /** * Subset of `peersTried` whose per-peer sync round reached a responder * and did not collapse into a transport failure. A responder can still * time out part-way through, deny access, or serve metadata-only rows; this * counter exists so daemon status mapping can distinguish "curator offline" * from "reachable peer answered but did not complete cleanly". */ peersResponded: number; /** * Subset of `peersTried` whose per-peer sync round finished without a * transport failure, timeout, or explicit ACL denial, and with either real * progress or a clean non-metadata-only empty completion. */ peersSucceeded: number; /** Context Graph phases deferred by this node's local sync scheduler. */ deferredBackpressure: number; dataSynced: number; sharedMemorySynced: number; denied: boolean; deniedPeers: number; /** * Per-plane evidence produced before peer results are aggregated. Aggregate * diagnostics intentionally retain every timeout/denial for observability, * but readiness must not let one bad peer mask another peer that completed * the same plane cleanly and stored verified data. */ cleanPlaneCompletions?: { durable: { verifiedDataPeers: number; /** Peers that cleanly verified one or more V2 KAs with no public triples. */ verifiedPrivateOnlyPeers: number; emptyPeers: number; }; sharedMemory: { verifiedDataPeers: number; emptyPeers: number; }; }; diagnostics?: { noProtocolPeers: number; durable: { fetchedMetaTriples: number; fetchedDataTriples: number; insertedMetaTriples: number; insertedDataTriples: number; bytesReceived: number; resumedPhases: number; timedOutPhases: number; completedPhases: number; checkpointAdvances: number; emptyResponses: number; metaOnlyResponses: number; /** Cryptographically verified V2 responses whose public graph is intentionally empty. */ verifiedPrivateOnlyResponses: number; dataRejectedMissingMeta: number; rejectedKcs: number; failedPeers: number; failedPhases: number; deferredBackpressure: number; deniedPhases?: number; }; sharedMemory: { fetchedMetaTriples: number; fetchedDataTriples: number; insertedMetaTriples: number; insertedDataTriples: number; bytesReceived: number; resumedPhases: number; timedOutPhases: number; completedPhases: number; checkpointAdvances: number; emptyResponses: number; droppedDataTriples: number; failedPeers: number; failedPhases: number; deferredBackpressure: number; deniedPhases?: number; }; }; } export interface CatchupRunRequest { contextGraphId: string; includeSharedMemory: boolean; } export interface CatchupPhaseProgress extends DurableProgressSummary { bytesReceived?: number; emptyResponses?: number; } export declare function catchupPlaneCompletedWithoutFailure(progress: CatchupPhaseProgress | null | undefined): boolean; export declare function catchupPeerSucceeded(durable: CatchupPhaseProgress, shared: CatchupPhaseProgress | null | undefined, peerDenied: boolean): boolean; export declare function catchupPeerResponded(durable: CatchupPhaseProgress, shared: CatchupPhaseProgress | null | undefined): boolean; export interface CatchupRunner { run(request: CatchupRunRequest): Promise; close(): Promise; } export declare function createCatchupRunner(agent: DKGAgent): CatchupRunner; export declare function createInlineCatchupRunner(agent: DKGAgent): CatchupRunner; //# sourceMappingURL=catchup-runner.d.ts.map