/** Test seam for the receipt wait: raise it, or pass `undefined` to restore the production default. */ export declare function setDurableReceiptBoundForTests(milliseconds: number | undefined): void; /** * Report a seam absence that carries its own cause and recovery — the plugin's * refused `open`. The one-shot latch is spent WITH that report, so the generic * "the host provides no seam" line cannot follow it for the same degradation * and name a cause that is not true (the facility is provided; only this * `open` was refused). A later install resets the latch with the seam. */ export declare function warnExecutionBindingRootStoreUnavailable(message: string): void; /** * Record the harness root a native bind adoption wrote its durable binding * into, for the carrying `(sessionId, cwd)` pair. Only a successful adoption * records: a refused envelope never rewrites the session's selection. The * receipt is synchronous and the returned promise settles once the queued * durable write is acknowledged or the wait bound expires — it never rejects, * so a store failure cannot reach the bind path. * * The wait for the backend's acknowledgment is bounded (see * `DURABLE_RECEIPT_BOUND_MS`): the overlay already answers, so a stalled * backend or a close that never settles its pending writes degrades the * receipt to the per-process map instead of leaving the committed bind * unanswered. */ export declare function recordExecutionBindingRoot(sessionId: string, cwd: string, harnessRoot: string): Promise; /** * The harness root this session's native bind selected, or `undefined` when * the session has no adoption receipt (a bind without an explicit `harness`, a * cleared receipt, a failed durable read) — the caller resolves the workspace * harness, the unchanged pre-existing path. Synchronous: a key this process * never observed reads the open domain table's in-memory state. */ export declare function executionBindingRootOf(sessionId: string, cwd: string): string | undefined; /** * Drop the receipt — the native clear calls this after it actually cleared * the binding in the selected root, so a later clear resolves the workspace * root instead of re-resolving a cleared slot: it answers `no-binding` when * the workspace declares a harness there, and the named no-harness refusal * otherwise. The tombstone is synchronous (a read before the durable delete * lands answers `undefined`) and the returned promise is the queued durable * delete; like the record, it never rejects. */ export declare function clearExecutionBindingRoot(sessionId: string, cwd: string): Promise; /** * Test-only reset: a suite sharing one module instance clears every in-process * receipt (and the one-time warning latch) between cases (the durable table is * untouched — a fresh seam over the same medium is how the restart shape is * modelled). */ export declare function resetExecutionBindingRootsForTests(): void;