import type { AgentRegistry, AgentManifestEntry } from "./registry.js"; import type { SwarmTracer, SwarmEvent } from "./tracer.js"; export interface SwarmSnapshot { /** Unique snapshot ID. */ id: string; /** Capture timestamp (ms since epoch). */ timestamp: number; /** Deep copy of swarm state at capture time. */ state: Record; /** Agent statuses from registry (if provided at capture). */ agents?: AgentManifestEntry[]; /** Tracer event timeline (if provided at capture). */ timeline?: SwarmEvent[]; /** User-provided metadata. */ metadata?: Record; } export interface SwarmSnapshotDiff { /** Keys present in snapshot B but not A. */ added: string[]; /** Keys present in both but with different values. */ changed: string[]; /** Keys present in A but not B. */ removed: string[]; /** Keys present in both with identical values. */ unchanged: string[]; } export interface SnapshotCaptureOptions { registry?: AgentRegistry; tracer?: SwarmTracer; metadata?: Record; } export declare class SwarmSnapshotStore { private snapshots; private _counter; /** * Capture a point-in-time snapshot of the swarm state. * Returns the snapshot ID for later retrieval. */ capture(state: Record, opts?: SnapshotCaptureOptions): string; /** Retrieve a snapshot by ID. Returns null if not found. */ restore(id: string): SwarmSnapshot | null; /** List all snapshots ordered by timestamp ascending. */ list(): SwarmSnapshot[]; /** * Compare state between two snapshots. * Returns null if either snapshot ID is not found. */ diff(idA: string, idB: string): SwarmSnapshotDiff | null; /** Remove all stored snapshots. */ clear(): void; } //# sourceMappingURL=snapshot.d.ts.map