/**
 * Executor result cache.
 *
 * Caches successful executor results to disk to avoid redundant API calls.
 * Cache key v5 = sha256(model + system + prompt + cwd + allowedSkills + executor +
 *                       runtime + mocks + mocksStrict + effort).
 * Loaded into memory on init, flushed to disk on save().
 *
 * Prefix bumps intentionally invalidate old entries when construct-validity
 * dimensions enter the key:
 * - v2: allowedSkills / strict isolation
 * - v3: executor name
 * - v4: executor runtime fingerprint
 * - v5: effort(同 model/prompt 不同 effort 的输出本就该独立 cache,旧 cache 命中会让
 *       报告 meta 标的 effort 跟实际跑的 effort 不一致 — 测量可比性污染);
 *       同时 cache.set 不再砍 turns / toolCalls — 工具类断言 + diagnostic 要看 trace,
 *       砍掉的话 cached rerun 会让工具断言为空、diagnostic 没真实证据,跟 cold run 不一致
 */
import type { ExecutorCache } from '../types/index.js';
export declare function createCache(cacheDir: string): ExecutorCache;
export declare function cacheKey(model: string, system: string, prompt: string, cwd?: string | null, allowedSkills?: string[], executor?: string, runtimeFingerprint?: string, 
/** Sample.mocks 序列化进 key:不同 mocks 配置必须独立 cache(否则改 mock 后老结果回来)。
 *  传 undefined / [] 时为空串,跟"无 mock 跑"等价。 */
mocks?: unknown, 
/** Sample.mocksStrict 也进 key:strict on/off 行为不同,不能共享 cache。 */
mocksStrict?: boolean, 
/** Executor effort 也进 key:effort 'low'/'medium'/'high' 改变 LLM 思考预算,
 *  输出/工具调用/分数都可能不同,跨 effort 共享 cache 会让报告 meta 标的 effort
 *  跟实际生成的 effort 不一致,违反"两份报告比分数前先比 cliVersion / effort"语义。 */
effort?: string): string;
//# sourceMappingURL=cache.d.ts.map