/** * Abstract interface class for an application cache object. */ export abstract class Cache { /** * Fetch a value from the cache by its key. * @param {string} key * @return Promise */ public abstract fetch(key: string): string | undefined | Promise; /** * Store the given value in the cache by key. * @param {string} key * @param {string} value * @param {Date} [expires] */ public abstract put(key: string, value: string, expires?: Date): void | Promise; /** * Check if the cache has the given key. * @param {string} key * @return Promise */ public abstract has(key: string): boolean | Promise; /** * Drop the given key from the cache. * @param {string} key */ public abstract drop(key: string): void | Promise; }