export interface MemoizeCache { has: (key: unknown) => boolean; set: (key: unknown, value: { data: T; date: number; }) => this; get: (key: unknown) => { data: T; date: number; }; } export interface MemoizeOptions { maxAge?: number; cacheKey?: (args: unknown[]) => string; cache?: MemoizeCache; } /** * Memoize the output of a function. * @link https://js-toolkit.studiometa.dev/utils/memoize.html */ export declare function memoize unknown>(fn: T, { maxAge, cacheKey, cache, }?: MemoizeOptions>): (...args: Parameters) => ReturnType;