/** * Effect result caching and deduplication — avoid redundant effect * execution by caching resolved results with TTL support (GAP-ROUTE-003). */ export interface CachedResult { value: T; cachedAt: number; expiresAt: number; } export interface EffectActionLike { kind: string; [key: string]: unknown; } /** * Produce a deterministic cache key from an effect action by hashing * the kind and a sorted JSON representation of all params. */ export declare function createCacheKey(action: EffectActionLike): string; export declare class EffectResultCache { private readonly store; /** Retrieve a cached result, or undefined if missing or expired. */ get(key: string): T | undefined; /** Store a result with a TTL in milliseconds. */ set(key: string, result: unknown, ttlMs: number): void; /** Check whether a non-expired entry exists for the key. */ has(key: string): boolean; /** Remove a specific key from the cache. */ invalidate(key: string): void; /** Clear the entire cache. */ clear(): void; /** * Check whether an identical effect action was already resolved * (i.e. its cache key exists and has not expired). */ isDuplicate(action: EffectActionLike): boolean; } //# sourceMappingURL=resultCache.d.ts.map