/**
 * Registry allowlist for `OLAM_DEVBOX_IMAGE` overrides.
 *
 * Closes T9 — unconstrained env-var overrides redirecting docker pulls
 * to attacker-controlled images. The default allowlist is `ghcr.io/pleri/*`
 * (the namespace olam itself publishes to). Out-of-allowlist refs require
 * the explicit `--allow-custom-registry` CLI flag.
 *
 * Decision #19 dropped the env-var bypass form (`OLAM_ALLOW_CUSTOM_REGISTRY=1`)
 * to avoid ambient bypass via shell inheritance / CI-secret leakage. Flag-only.
 *
 * Atlas-parity (Decision #15) lives at `ghcr.io/pleri/olam-devbox-atlas:<v>`
 * — same `pleri` namespace, so the allowlist accepts it without the flag.
 * Other extenders publishing under their own org (e.g. `ghcr.io/atlas/atlas-devbox`)
 * must pass `--allow-custom-registry` per invocation.
 */
export interface AllowlistDecision {
    readonly imageRef: string;
    readonly allowedByDefault: boolean;
    /**
     * `true` when:
     *   - allowedByDefault, OR
     *   - the operator passed --allow-custom-registry.
     */
    readonly accepted: boolean;
    /**
     * The stderr line to emit before pull (or rejection). Always populated:
     *   - allowedByDefault   → empty string (no warning needed)
     *   - allowed-via-flag   → warning line ("using custom devbox image …")
     *   - rejected (no flag) → error line ("custom registry blocked; use --allow-custom-registry to override")
     */
    readonly stderrLine: string;
}
/** Sentinel to keep call sites readable and the API explicit. */
export interface AllowlistInput {
    readonly imageRef: string;
    readonly allowCustomRegistry: boolean;
}
export declare function decideAllowlist(input: AllowlistInput): AllowlistDecision;
/**
 * Resolve the devbox-image reference from the operator's input, in
 * order of precedence: explicit CLI flag > env var > default. Returns
 * `undefined` when neither flag nor env var is set — caller falls back
 * to the digest-pinned default from `image-digests.json` (Phase B).
 */
export declare function resolveDevboxImageOverride(flagValue: string | undefined, env?: NodeJS.ProcessEnv): string | undefined;
//# sourceMappingURL=registry-allowlist.d.ts.map