import { type StubCall, type ToolStub } from "./core/stub-rules.js"; /** Where a run's stubs live. `binDir` goes first on the run's PATH. */ export interface StubDir { readonly root: string; readonly binDir: string; } /** How a shim reaches the stub runtime: this node, and this vigiles' `cli.js`. */ export interface StubLauncher { readonly node: string; readonly cli: string; } /** The shim for one stub. Pure. */ export declare function stubShim(launcher: StubLauncher, root: string, name: string): string; /** * Write a fresh stub root for `stubs`: a shim and a rules file per stub. The * stubs must already be parsed (the spec boundary did it). Remove it with * {@link removeStubDir}. */ export declare function writeStubDir(stubs: readonly ToolStub[], launcher: StubLauncher): StubDir; /** Every invocation the run's stubs recorded, in order. Empty when none was called. */ export declare function readStubCalls(dir: StubDir): readonly StubCall[]; /** * Forget every call recorded so far. The log is the stubs' only state (an * `inOrder` rule counts its prior answers in it), so a cleared log is a stub * that has never been called. Safe when no call was logged yet. */ export declare function resetStubCalls(dir: StubDir): void; /** Remove a stub root. Safe on one already gone. */ export declare function removeStubDir(dir: StubDir): void; //# sourceMappingURL=tool-stub.d.ts.map