/** 旧 FS 密钥路径(供 migrateLegacySecret 检测存在 + doctor 迁移状态展示)。迁 keychain 后此文件应不存在。 */ export declare function reviewSecretPath(projectRoot: string): string; /** 密钥不可用错误(CI/平台不支持/keychain 锁定)。init 时 fail-closed 阻断。 */ export declare class ReviewSecretUnavailableError extends Error { constructor(msg: string); } /** keychain account(基于 projectRoot 哈希,稳定 + 避路径泄漏)。导出供 batch credential 复用(单源真相)。 */ export declare function keychainAccount(projectRoot: string): string; /** win32 DPAPI 密文文件 magic 前缀(区分 DPAPI 密文 vs 迁移前的旧明文 hmac.key;doctor 探测共享此常量)。 */ export declare const WIN_DPAPI_SECRET_MAGIC = "DPAPI1:"; /** 判断错误是否密钥访问权限异常(EACCES/EPERM)。密钥权限fail-closed:权限异常 fail-closed 不降级(防攻击者 chmod 密钥致 secrets=null 跳过验签放行伪造记录)。 */ export declare function isSecretAccessDenied(e: unknown): boolean; /** 预加载密钥到 cache(async,入口点 index/lifecycle/init 启动时调用)。CI throw 由调用方 catch 决策(init fail-closed;运行时 preload 失败 cache 空同 ENOENT)。 */ export declare function preloadReviewSecret(projectRoot: string): Promise; /** 清除 cache(测试隔离用)。 */ export declare function clearReviewSecretCache(): void; /** 读取 primary 密钥(async;优先 cache,否则加载 keychain 填 cache)。无密钥(未 init/win32/CI 降级)返 null。 */ export declare function getReviewSecret(projectRoot: string): Promise; /** 同步读取 primary 密钥(优先 cache;cache miss 落回 keychain/逃逸阀同步加载,不依赖 preload)。 * 供 upgrade state_io(handle_deliver 同步链路)用,避免 9 调用点 async ripple。 * CLI 命令(doctor 不进 main preload)cache miss → loadSecretEntry(readKeychain execSync/逃逸阀)落回, * 确保 sync 签发不漏 hmac。CI/无密钥返 null(靠 schema,与旧 ENOENT 语义一致)。 */ export declare function getReviewSecretSync(projectRoot: string): string | null; /** 确保 secret 存在(init 用):生成/迁移/写 keychain + 填 cache。CI fail-closed throw(被 init.ts catch → process.exitCode=1)。 * 迁移:旧 .soloforge/secret/hmac.key 存在 → 读出 → keychain 无 primary 则存 primary / 有 primary 且不同则追加 legacy → 删旧文件。 */ export declare function ensureReviewSecret(projectRoot: string): Promise; /** 对 record 算 HMAC-SHA256 签名(基于 secret + 规范化内容,不含 hmac 字段自身)。 */ export declare function signReviewHmac(record: unknown, secret: string): string; /** 验证 record.hmac 是否有效(双密钥:secrets 数组任一命中即通过;常量时间遍历不 short-circuit 防时序泄漏命中位置)。 * 无 hmac 字段或全不匹配返 false。 */ export declare function verifyReviewHmac(record: unknown, secrets: readonly string[]): boolean; /** async 读取密钥数组(primary + legacy,验签用)。供 review/gate/waiver store。无密钥返 null。 */ export declare function getReviewSecretsForVerify(projectRoot: string): Promise; /** sync 读取密钥数组(读 cache)。供 upgrade state_io(handle_deliver 同步链路)。无密钥返 null。 */ export declare function getReviewSecretsForVerifySync(projectRoot: string): readonly string[] | null;