import { type RunHome, type RunHomeBrand, type RunHomeInput, type RunHomeReport } from "./types.js"; /** What every build step is handed. */ export interface RunHomeBuildContext { input: RunHomeInput; brand: RunHomeBrand; sdkHome: string; /** The run folder being built. */ dir: string; report: RunHomeReport; /** `$HOME` โ€” where every project walk and project tier stops (`os.homedir()` unless a test injects one). */ userHome: string; /** Test-only (`RunHomeBuildInternals`); absent in production. */ internals: RunHomeBuildInternals; } /** Test-only construction knobs; not part of Contract A. */ export interface RunHomeBuildInternals { userHome?: string; /** * Called with a repository file's real path after the build has admitted it and immediately before it * is read (the project rules', output styles' and agents' copies and the project instructions files) โ€” the one place a test can * change the file system between the in-root check and the read. */ beforeRepositoryRead?: (real: string) => void; /** The git executable the local-tier tracked probe runs (`"git"` from `PATH` when absent). */ git?: string; } /** True for a run home `buildRunHome` built and that has not been disposed. */ export declare function isRouterBuiltRunHome(value: unknown): value is RunHome; /** Builds `/cache/runs/` for one generation (spec ยง3). */ export declare function buildRunHome(input: RunHomeInput, internals?: RunHomeBuildInternals): Promise; /** What `lstat` says a path is โ€” a link is a link, never what it points to. */ export declare function kindOf(path: string): Promise<"missing" | "dir" | "file" | "link" | "other">;