export interface Memoizer { /** Calls a function with a memoizer cache, caching its return value */ call>(fn: Fn, input: string, ...args: Args): Promise; /** Invokes an async context with a memoizer cache */ withMemoizer(callback: () => R): R; withMemoizer(callback: (...args: TArgs) => R, ...args: TArgs): R; } export interface MemoizableAsyncFn { (input: string, ...args: Args): Promise; } /** Wraps a function in a memoizer, using the memoizer async local storage */ export declare function memoize>(fn: Fn): MemoizableAsyncFn; /** Creates a memoizer that can provide a cache to memoized functions */ export declare function createMemoizer(): Memoizer; /** @internal Used in tests to verify the memoizer was freed */ export declare function _verifyMemoizerFreed(): boolean;