import type { RunnerDeps } from "../types.js";
/** The retired-seat door ({@link assertNoRetiredRunnerDeps}) looks at the caller's own object, where a retired name may sit on
 *  the prototype or as a non-enumerable property. Then the deps must be a PLAIN object (prototype `Object.prototype` or none):
 *  every seat is read once as an OWN property — enumerable or not, a getter invoked once — into a copy of enumerable data
 *  properties, the object the engine keeps and spreads from; the caller's getters are never read again, and a seat a prototype
 *  would supply is never read, so an object with another prototype is refused rather than wired without that seat. The seats
 *  whose VALUE is screened at construction and never again are judged on the copy: the declared configuration root must be the
 *  absolute path of an existing directory — a root that names no directory guards nothing, so it is refused rather than read as
 *  absent; the media budget must be a non-negative number of bytes — a bad value is refused rather than read as "no budget" by
 *  the request strip and the `tool_end.output` projection. */
export declare function retainRunnerDeps(deps: RunnerDeps): RunnerDeps;
