export type TMemoizedFn any> = ((...args: Parameters) => ReturnType) & { clear: () => void; }; export type TGetMemoizedFnArgs = Parameters; export type TGetMemoizedFnReturn = ReturnType; /** * Memoizes a function by receiver and argument identity and exposes a cache reset method. * @template T * @param {T} fn Source function * @returns {TMemoizedFn} Memoized function * @throws {TypeError} getMemoizedFn: fn must be a function * @example * const doubled = getMemoizedFn((value: number) => value * 2); * doubled(2); // 4 * doubled.clear(); * @example * // Cache an expensive product filter until its argument identities change * const filterProducts = getMemoizedFn((items, filters) => { * return items.filter((item) => filters.includes(item.category)); * }); */ export declare const getMemoizedFn: any>(fn: T) => TMemoizedFn;