import type { PiInvocation } from './launch.js'; /** Sources A–C: the operational base shared by the broker boundary (this * module's `buildBrokerEnv`) and cron executor — the single shared definition * of "non-secret host state the runtime exposes to any spawned shell." Does not include * `inv.env`/`FRONT_DOOR_ENV` (source D), which is broker-specific. */ export declare function buildOperationalEnvBase(opts: { /** The TARGET node's cwd — never the calling/daemon process's own ambient * `process.cwd()`. Threaded into `readMergedLaunchConfig` so source C * (`spawnEnv.allow`) resolves from the TARGET's own project-scope config, * not whichever cwd happened to launch the process that builds this env. */ targetCwd: string; /** The TARGET node's profile id — never the calling process's own ambient * `CRTR_PROFILE_ID`. `null`/`''` for no profile. */ targetProfileId: string | null; host?: NodeJS.ProcessEnv; }): NodeJS.ProcessEnv; /** The one authoritative broker child env: sources A–C (the operational * base, resolved from the TARGET node's own cwd/profile — `inv.env`'s * `CRTR_NODE_CWD`/`CRTR_PROFILE_ID`, never this process's ambient * `process.cwd()`/`CRTR_PROFILE_ID`, which may be a launcher's or the * daemon's own and belong to an unrelated scope), E — the TARGET profile's * own `profile env` store (`readProfileEnvVars`, `core/profiles/env-store.ts`) * read directly off disk and injected regardless of the host env or any * `spawnEnv.allow` entry (setting a value there IS the consent to cross this * boundary), plus D — the trusted, crtr-constructed `inv.env` overlay and the * fork-bomb recursion guard `FRONT_DOOR_ENV=1`. D is layered last so crtr's * own constructed env always wins a name collision with a stored profile * value. Every broker launch (front-door root, managed child, `--root`, * every revive/daemon relaunch) funnels through `headlessBrokerHost.launch()`, * which calls this. */ export declare function buildBrokerEnv(inv: PiInvocation): NodeJS.ProcessEnv;