import * as valleyed from 'valleyed'; import { PipeOutput } from 'valleyed'; import { Redis, Cluster, RedisOptions } from 'ioredis'; declare abstract class Cache { abstract set(key: string, data: string, ttlInSecs?: number): Promise; abstract get(key: string): Promise; abstract delete(key: string): Promise; abstract getOrSet(key: string, fn: () => Promise, ttlInSecs?: number): Promise; } declare const redisConfigPipe: () => valleyed.Pipe<{ host: string; port: number | undefined; password: string | undefined; username: string | undefined; tls: boolean | undefined; cluster: boolean | undefined; }, { host: string; port: number | undefined; password: string | undefined; username: string | undefined; tls: boolean | undefined; cluster: boolean | undefined; }>; type RedisConfig = PipeOutput>; declare class InMemoryCache extends Cache { private readonly cache; constructor(); private getScopedKey; delete(key: string): Promise; get(key: string): Promise; set(key: string, data: string, ttlInSecs?: number): Promise; getOrSet(key: string, fn: () => Promise, ttlInSecs?: number): Promise; } declare class RedisCache extends Cache { client: Redis | Cluster; constructor(settings: RedisConfig, extraConfig?: Partial); private getScopedKey; delete(key: string): Promise; get(key: string): Promise; set(key: string, data: string, ttlInSecs?: number): Promise; getOrSet(key: string, fn: () => Promise, ttlInSecs?: number): Promise; } export { Cache, InMemoryCache, RedisCache, type RedisConfig, redisConfigPipe };