import { type FrozenSplitArtifact } from '@mmnto/totem'; type SafeExecFn = typeof import('@mmnto/totem').safeExec; /** A prepared sandbox: the derived root + the guarded read surface. */ export interface AuthorSandbox { /** The worktree root — lc at the frozen split's cutBoundarySha. */ root: string; cutBoundarySha: string; /** Read a file INSIDE the sandbox; any escape (absolute, `..`, or a symlink whose real path leaves the root) fail-louds (t6). */ readFile: (relPath: string) => string; } /** * Materialize the sandbox: `git worktree add --detach ` * off the lc clone. The root is DERIVED (`/temp/` + the boundary sha — * workspace-rooted, gitignored; never `os.tmpdir()` per the house temp-file * guideline) — no caller influence. Fail-loud if the clone does not contain the * boundary sha (a wrong or shallow clone must never silently sandbox a * different tree). */ export declare function prepareAuthorSandbox(args: { lcDir: string; totemDir: string; artifact: FrozenSplitArtifact; safeExec: SafeExecFn; }): AuthorSandbox; /** Tear the sandbox down (worktree remove + prune; rm fallback for a half-removed root). */ export declare function removeAuthorSandbox(args: { lcDir: string; root: string; safeExec: SafeExecFn; }): void; export {}; //# sourceMappingURL=author-sandbox.d.ts.map