/** * Options for the memoize function. */ export interface MemoizeOptions { /** Maximum number of entries to store in the cache. */ maxSize?: number; /** Custom function to generate cache keys from arguments. */ resolver?: (...arguments_: unknown[]) => K; } /** * A memoized function with an exposed cache. */ export interface MemoizedFunction { (...arguments_: A): R; /** The underlying cache Map. */ cache: Map; } /** * Creates a memoized version of the provided function. Results are * cached in a Map keyed by the first argument (or a custom resolver). * * @param function_ - The function to memoize. * @param options - Configuration for cache behavior. * @param options.maxSize - Maximum cache entries before evicting the oldest. * @param options.resolver - Custom key resolver function. * @returns The memoized function with an exposed cache property. * * @example * ```typescript * const memoized = memoize((n: number) => n * 2); * memoized(5); // 10 (computed) * memoized(5); // 10 (cached) * memoized.cache.size; // 1 * ``` */ export declare const memoize: (function_: (...arguments_: A) => R, options?: MemoizeOptions) => MemoizedFunction;