import EventEmitter from 'node:events'; import { KeyvStoreAdapter, StoredData, Keyv, StoredDataRaw } from 'keyv'; type CacheManagerStore = { name: string; isCacheable?: (value: unknown) => boolean; get(key: string): Promise; mget(...keys: string[]): Promise; set(key: string, value: any, ttl?: number): Promise; mset(data: Record, ttl?: number): Promise; del(key: string): Promise; mdel(...keys: string[]): Promise; ttl(key: string, ttl?: number): Promise; keys(): Promise; reset?(): Promise; on?(event: string, listener: (...arguments_: any[]) => void): void; disconnect?(): Promise; }; declare class KeyvAdapter implements KeyvStoreAdapter { opts: any; namespace?: string | undefined; private readonly _cache; constructor(store: CacheManagerStore); get(key: string): Promise | undefined>; set(key: string, value: any, ttl?: number): Promise; delete(key: string): Promise; clear(): Promise; has?(key: string): Promise; getMany?(keys: string[]): Promise>>; deleteMany?(key: string[]): Promise; on(event: string, listener: (...arguments_: any[]) => void): this; disconnect?(): Promise; } type CreateCacheOptions = { stores?: Keyv[]; ttl?: number; refreshThreshold?: number; refreshAllStores?: boolean; nonBlocking?: boolean; cacheId?: string; }; type WrapOptions = { ttl?: number | ((value: T) => number); refreshThreshold?: number | ((value: T) => number); }; type WrapOptionsRaw = WrapOptions & { raw: true; }; type Cache = { get: (key: string) => Promise; mget: (keys: string[]) => Promise>; ttl: (key: string) => Promise; set: (key: string, value: T, ttl?: number) => Promise; mset: (list: Array<{ key: string; value: T; ttl?: number; }>) => Promise>; del: (key: string) => Promise; mdel: (keys: string[]) => Promise; clear: () => Promise; on: (event: E, listener: Events[E]) => EventEmitter; off: (event: E, listener: Events[E]) => EventEmitter; disconnect: () => Promise; cacheId: () => string; stores: Keyv[]; wrap(key: string, fnc: () => T | Promise, ttl?: number | ((value: T) => number), refreshThreshold?: number | ((value: T) => number)): Promise; wrap(key: string, fnc: () => T | Promise, options: WrapOptions): Promise; wrap(key: string, fnc: () => T | Promise, options: WrapOptionsRaw): Promise>; }; type Events = { get: (data: { key: string; value?: T; error?: unknown; }) => void; mget: (data: { keys: string[]; value?: T[]; error?: unknown; }) => void; set: (data: { key: string; value: T; error?: unknown; }) => void; mset: (data: { list: Array<{ key: string; value: T; ttl?: number; }>; error?: unknown; }) => void; del: (data: { key: string; error?: unknown; }) => void; clear: (error?: unknown) => void; refresh: (data: { key: string; value: T; error?: unknown; }) => void; }; declare const createCache: (options?: CreateCacheOptions) => Cache; export { type Cache, type CacheManagerStore, type CreateCacheOptions, type Events, KeyvAdapter, createCache };