import { type BackgroundAgentStore } from "../background-agent-store.js";
import { type ContractAssertionRunner } from "./contract-harness.js";
/**
 * design/159 — the cross-backend {@link BackgroundAgentStore} contract kit (vitest-free; see
 * `contract-harness.ts` for the runner seam and `contract-kit-version.ts` for version lockstep).
 * `make()` must return a FRESH, empty store each call; a store a case creates is closed (`close?.()`)
 * when the case ends, so a backend holding a file descriptor does not leak one per case.
 *
 * 为什么这个家族需要一份共跑资产:这个 store 的两个捆绑后端是逐方法手写的孪生实现,而本仓在它上面
 * 已经连续吃过四次「一份修了、另一份没修」——RB-60 / RB-74 / RB-87 / RB-111,其中 RB-87 与 RB-111
 * 是同一个 reap 重复计数缺陷在两个后端里分别被发现、相隔一个版本。REF-A3/REF-D18 之后共享形状收敛
 * 到了单一构造点,但**语义**仍然只由每个后端各自的测试看住;第三方后端更是完全在射程之外。这份
 * 试剂盒把语义变成全后端共跑的验收底线:任何后端在这里变红 = 该后端违约,**不许通过放宽契约让它
 * 变绿**。
 *
 * 断言只描述已落地的行为(权威文本 = `src/core/background-agent-store.ts` 的接口契约段),不引入
 * 任何新义务。
 *
 * 分层:
 * - 核心层 {@link backgroundAgentStoreContract}:每个后端都必须过。
 * - 可选能力层 {@link backgroundAgentStoreScopesContract}:只挂实现了可选方法 `listScopes` 的后端
 *   (接口把它标为可选——把它折进核心层就会变成「没实现的后端静默跳过」,而静默跳过正是假绿的
 *   来源)。两个捆绑后端都实现了它,都挂。
 */
/** 契约统一用的租户 scope(核心层的多租户用例会另外显式构造第二个)。 */
export declare const BACKGROUND_AGENT_CONTRACT_SCOPE = "tenant-A";
/**
 * 核心不变量层 —— 每个 {@link BackgroundAgentStore} 后端都必须过。
 */
export declare function backgroundAgentStoreContract(mk: () => BackgroundAgentStore, runAssertion?: ContractAssertionRunner): Promise<void>;
/**
 * 可选能力层 —— 只挂实现了 {@link BackgroundAgentStore.listScopes} 的后端。接口把该方法标为可选
 * (一个把租户清单记在别处的部署可以省略它),所以它不能进核心层:核心层里的「没实现就跳过」等于
 * 给不合规后端发一张假绿通行证。两个捆绑后端都实现了它。
 */
export declare function backgroundAgentStoreScopesContract(mk: () => BackgroundAgentStore, runAssertion?: ContractAssertionRunner): Promise<void>;
