interface MemoizeOptions<Args extends readonly unknown[]> {
    /** Max distinct keys retained; past it the least-recently-used entry is evicted. Default 256. Must be an integer ≥ 1. */
    max?: number;
    /** Derives the cache key from the call args. Default: stable, key-order-INSENSITIVE serialization. */
    key?: (...args: Args) => string;
}
declare function memoize<Args extends readonly unknown[], Result>(fn: (...args: Args) => Result, options?: MemoizeOptions<Args>): (...args: Args) => Result;

export { type MemoizeOptions, memoize };
