export declare abstract class BaseCache<K, V> {
    /**
     * @param ttl TTL in ms
     */
    abstract cache(key: K, value: V | null, ttl?: number): Promise<void>;
    abstract get(key: K): Promise<V | undefined>;
    /**
     * returns TTL in ms
     */
    abstract getTTL(key: K): Promise<number>;
    abstract del(key: K): Promise<number>;
    abstract setnx(key: K, value: V): Promise<number>;
    abstract getset(key: K, value: V): Promise<V>;
    abstract expire(key: K, ttl: number): Promise<V>;
    abstract keys(key: string): Promise<V[]>;
    abstract exists(key: K): Promise<boolean>;
}
