/** The config REPORT — one-way, lazy, and the ONLY thing the console has to do * with config. Resolution is code-only, forever (value passed in code → * `.vendo/` file → not set); a keyed runtime tells the console what it * resolved TO, and the console never answers back. * * ── WIRE CONTRACT (tests/fixtures/config-wire/) ──────────────────────────── * PUT /api/v1/config/report * Authorization: Bearer vnd_... (key-authed data plane) * x-vendo-deployment-host / -name (the identity every keyed call * already carries — cloud-key-fetch) * { "surfaces": { "": { "source": "file"|"code"|"unset", * "content": string|null } } } * → 204 No Content * All five `.vendo` surface names are ALWAYS present, and `content` is null if * and only if `source` is `"unset"`. The 512KB/surface and 2MB/doc caps are the * console's to enforce; an over-cap doc is refused there and the uploader drops * its copy like any other undelivered batch. */ import { type ConfigSurfaceName } from "./core/index.js"; export interface ConfigReporterOptions { /** ADAPTER RULE, report slot: filled by the composition seam * (`cloudKeyOptions()`), never read from the environment here. Unset is a * keyless deployment, and a keyless deployment reports nothing, ever. */ cloud?: { apiKey: string; baseUrl?: string; } | undefined; /** The `.vendo/` reader, bound to the compose-time surface root. */ readFile: (name: ConfigSurfaceName) => string | undefined; /** What this deployment set for a surface IN CODE, as the bytes the matching * `.vendo` file would have carried. `undefined`, and only `undefined`, means * code said nothing and the file decides. */ codeValue: (name: ConfigSurfaceName) => string | undefined; fetchImpl?: typeof fetch; } /** Returns the per-resolution-cycle hook: it re-resolves all five surfaces, * hashes them, and pushes a report only when the hash moved. Boot's first * resolution is what sends the initial one — there is no heartbeat and no * timer of its own. */ export declare function createConfigReporter(options: ConfigReporterOptions): () => void;