/**
 * bundle-freshness.ts — Phase A1 of olam-world-bundle-freshness.
 *
 * Surfaces whether each running olam world is running the SAME agent-stream
 * bundle that the operator has built locally (`packages/intelligence/dist/
 * agent-stream/`).
 *
 * The bake mechanism (devbox.runtime.glibc.Dockerfile:263-287) builds the
 * bundle INSIDE the world image at world-image-build time, so subsequent
 * fixes to agent-stream do NOT reach running worlds via `olam restart` —
 * they need either a docker cp (manual workaround) or the Phase B
 * bind-mount overlay (the real fix).
 *
 * This probe makes the staleness gap visible BEFORE Phase B lands.
 *
 * Verdict:
 *   - fresh   — every checked file's sha256 matches host + host dist ≥ container.
 *   - stale   — at least one file's sha differs OR host dist is newer by >60s.
 *   - unknown — no running worlds, OR host dist missing, OR docker unreachable.
 */
import type { DockerExec, ProbeResult } from './health-probes.js';
/**
 * Files the probe checks inside each world's
 * `/opt/olam/agent-stream/dist/`. Mirrors the brainstorm's docker-cp
 * recovery list (PR #653 + PR #665).
 */
export declare const BUNDLE_FILES: ReadonlyArray<string>;
export interface BundleFreshnessDeps {
    readonly dockerExec?: DockerExec;
    /**
     * Repo root override (tests inject). When omitted the probe resolves
     * the operator repo root from the running CLI's install-root pattern
     * (`<cli-pkg>/../../`).
     */
    readonly repoRootOverride?: string;
}
export interface WorldFreshness {
    readonly container: string;
    readonly verdict: 'fresh' | 'stale' | 'unknown';
    readonly mismatchedFiles: ReadonlyArray<string>;
    readonly mtimeDeltaMs?: number;
}
/**
 * Aggregate doctor probe.
 *
 * Returns:
 *   - PASS (`ok: true, no warn`) when every running world is `fresh`.
 *   - WARN (`ok: true, warn: true`) when at least one world is `stale`.
 *   - PASS-with-unknown (`ok: true, no warn`) when no running worlds OR no
 *     host dist exists — nothing to be stale against, so no alarm.
 *
 * Never FAILs — bundle staleness is an informational signal, not a
 * gate. Operators land Phase B by reading this row before Phase B
 * makes the row redundant.
 */
export declare function probeBundleFreshness(deps?: BundleFreshnessDeps): Promise<ProbeResult>;
//# sourceMappingURL=bundle-freshness.d.ts.map