import { Cache, Store, Config } from 'cache-manager'; import Redis, { Cluster, RedisOptions, RedisKey, ClusterNode, ClusterOptions } from 'ioredis'; type RedisCache = Cache; interface IoRedisStore extends Store { readonly isCacheable: (value: unknown) => boolean; get client(): Redis | Cluster; } type ClusterConfig = { nodes: ClusterNode[]; options?: ClusterOptions; }; type Args = { redisInstance?: Redis | Cluster; clusterConfig?: ClusterConfig; instanceConfig?: RedisOptions; } & Config & RedisOptions; declare class RedisStore implements IoRedisStore { readonly client: Redis | Cluster; readonly internalTtl: number | undefined; readonly isCacheable: (value: unknown) => boolean; constructor(args: Args); set(key: RedisKey, value: T, ttl?: number): Promise; get(key: RedisKey): Promise; mset(args: [string, unknown][], ttl?: number): Promise; mget(...args: string[]): Promise; mdel(...args: string[]): Promise; del(key: RedisKey): Promise; reset(): Promise; keys(pattern?: string): Promise; ttl(key: string): Promise; } declare const ioRedisStore: (args?: Args) => RedisStore; export { type RedisCache, ioRedisStore };