/**
 * Contains functions for caching function results. Pending tests.
 * Please report bugs.
 *
 * @module
 */
import { ICallable } from "../../types";
/**
 * Caches the return value of calling a function. Repeat calls
 * will simply return the cached value.
 *
 * Pending tests. Please report bugs.
 *
 * @example
 *
 */
export declare function cache<T extends ICallable>(func: T): T;
declare function identityHash(object: any): any;
/**
 * Caches the return value of calling a function. using the arguments as keys.
 * This is also called memoization.
 *
 * Pending tests. Please report bugs.
 *
 * @example
 *
 */
export declare function cacheWith<T extends ICallable>(func: T, hash?: typeof identityHash): T;
export {};
