/// <reference types="node" />
import { Readable } from "stream";
interface Blob {
}
/**
 * A simple persistent key-value store. Used to implement {@link Limits.cache}
 * for {@link throttle}.
 * @remarks
 * Entries can be expired, but are not actually deleted individually. The entire
 * cache can be deleted at once. Hence this cache is useful for storing results
 * that are expensive to compute but do not change too often (e.g. the
 * node_modules folder from an 'npm install' where 'package.json' is not
 * expected to change too often).
 *
 * By default faast.js will use the directory `~/.faastjs` as a local cache to
 * store data such as pricing retrieved from cloud APIs, and garbage collection
 * information. This directory can be safely deleted if no faast.js instances
 * are running.
 * @public
 */
export declare class PersistentCache {
    /**
     * The directory under the user's home directory that will be used to
     * store cached values. The directory will be created if it doesn't
     * exist.
     */
    readonly dirRelativeToHomeDir: string;
    /**
     * The age (in ms) after which a cached entry is invalid. Default:
     * `24*3600*1000` (1 day).
     */
    readonly expiration: number;
    private initialized;
    private initialize;
    /**
     * The directory on disk where cached values are stored.
     */
    readonly dir: string;
    /**
     * Construct a new persistent cache, typically used with {@link Limits} as
     * part of the arguments to {@link throttle}.
     * @param dirRelativeToHomeDir - The directory under the user's home
     * directory that will be used to store cached values. The directory will be
     * created if it doesn't exist.
     * @param expiration - The age (in ms) after which a cached entry is
     * invalid. Default: `24*3600*1000` (1 day).
     */
    constructor(
    /**
     * The directory under the user's home directory that will be used to
     * store cached values. The directory will be created if it doesn't
     * exist.
     */
    dirRelativeToHomeDir: string, 
    /**
     * The age (in ms) after which a cached entry is invalid. Default:
     * `24*3600*1000` (1 day).
     */
    expiration?: number);
    /**
     * Retrieves the value previously set for the given key, or undefined if the
     * key is not found.
     */
    get(key: string): Promise<Buffer | undefined>;
    /**
     * Set the cache key to the given value.
     * @returns a Promise that resolves when the cache entry has been persisted.
     */
    set(key: string, value: Buffer | string | Uint8Array | Readable | Blob): Promise<void>;
    /**
     * Retrieve all keys stored in the cache, including expired entries.
     */
    entries(): Promise<string[]>;
    /**
     * Deletes all cached entries from disk.
     * @param leaveEmptyDir - If true, leave the cache directory in place after
     * deleting its contents. If false, the cache directory will be removed.
     * Default: `true`.
     */
    clear({ leaveEmptyDir }?: {
        leaveEmptyDir?: boolean | undefined;
    }): Promise<void>;
}
export declare const caches: {
    awsPrices: PersistentCache;
    googlePrices: PersistentCache;
    awsGc: PersistentCache;
};
export {};
