export type Milliseconds = number; export interface TTLCache { get(key: K): V | undefined; set(key: K, value: V): void; delete(key: K): boolean; clear(): void; entries(): IterableIterator<[K, V]>; } /** * 高性能 TTL Cache(固定 TTL,不支持动态变更)。 * - 仅提供最小接口:get/set/delete/clear/entries * - 惰性过期:在访问时清理过期项,无额外定时器 */ export declare function createTTLCache(ttlMs: Milliseconds): TTLCache; /** * 异步函数的 TTL 记忆化工厂 * * 命中策略(按顺序): * 1. 精确命中:用 `computeKey(args)` 查缓存。 * 2. 近似命中:用 `selectFromCache(args, entries)` 在当前有效条目中挑选。 * 3. 未命中:执行原函数,结果写入缓存。 * * 过期策略:惰性按 `ttlMs` 过期;`ttlMs <= 0` 表示不缓存;传 `Infinity` 视为永不过期。 * * 参数: * - `ttlMs`:缓存有效期(毫秒)。 * - `selectFromCache`:近似命中选择器,入参为本次 `args` 与有效缓存条目的迭代器,返回命中值或 `undefined`。 * - `computeKey`:精确命中的 key 生成函数,默认 `JSON.stringify`。 * * 返回:`memoize(fn)`,将异步函数包装为带缓存的版本。 * * 说明:不做并发合并;仅实现 TTL 驱逐(无容量上限);近似匹配会遍历有效条目。 */ export declare function createMemoizeWithTTL(ttlMs: Milliseconds, selectFromCache: (args: A, cacheEntries: IterableIterator<[A, R]>) => R | undefined, computeKey?: (args: A) => string): (fn: (...args: A) => Promise) => (...args: A) => Promise;