import type { SharedArtifactContract } from "../artifacts.js"; import type { ArtifactEnvelope, ScannerId } from "../types.js"; export interface ScannerContextStoreOptions { contract?: SharedArtifactContract; } export interface LoadScannerContextOptions extends ScannerContextStoreOptions { maxAgeMs?: number; } /** * Stores strategy-scoped retained scanner context addressed by source scanner id. * Each context-producing scanner owns one committed context envelope per strategy. */ export declare class SharedArtifactStore { private readonly stateDir; private readonly now; /** * @param stateDir Root runtime state directory. * @param now Injectable clock for deterministic freshness checks in tests. */ constructor(stateDir: string, now?: () => number); /** Reads the full retained-context envelope for one strategy/scanner pair. */ loadEnvelopeByScanner(address: string, scannerId: ScannerId, options?: ScannerContextStoreOptions): Promise | null>; /** Writes the full retained-context envelope for one strategy/scanner pair. */ saveEnvelopeByScanner(address: string, scannerId: ScannerId, envelope: ArtifactEnvelope, options?: ScannerContextStoreOptions): Promise; /** * Reads only the retained-context payload. * Returns null when missing, invalid, or stale according to `maxAgeMs`. */ loadByScanner(address: string, scannerId: ScannerId, options?: LoadScannerContextOptions): Promise; /** Saves one retained-context payload by wrapping it in a timestamped envelope. */ saveByScanner(address: string, scannerId: ScannerId, value: T, options?: ScannerContextStoreOptions): Promise; /** Resolves retained context path for one strategy and source scanner. */ private artifactPath; } //# sourceMappingURL=shared-artifact-store.d.ts.map