import {EventEmitter} from 'events'; type WithRequiredProperties = T & Required>; declare class Keyv = Record> extends EventEmitter { /** * `this.opts` is an object containing at least the properties listed * below. However, `Keyv.Options` allows arbitrary properties as well. * These properties can be specified as the second type parameter to `Keyv`. */ opts: WithRequiredProperties< Keyv.Options, 'deserialize' | 'namespace' | 'serialize' | 'store' | 'uri' > & Options; /** * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options. */ constructor(options?: Keyv.Options & Options); /** * @param uri The connection string URI. * * Merged into the options object as options.uri. * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options. */ constructor(uri?: string, options?: Keyv.Options & Options); /** Returns the value. */ get(key: string, options?: {raw?: Raw}): Promise<(Raw extends false ? Value : Keyv.DeserializedData) | undefined>; /** Returns an array of values. Uses `store.getMany` if it exists, otherwise uses parallel calls to `store.get`. */ get( key: string[], options?: {raw?: Raw} ): Promise< Array<(Raw extends false ? Value : Keyv.DeserializedData) | undefined> >; /** * Set a value. * * By default keys are persistent. You can set an expiry TTL in milliseconds. */ set(key: string, value: Value, ttl?: number): Promise; /** * Deletes an entry. * * Returns `true` if the key existed, `false` if not. */ delete(key: string | string[]): Promise; /** Delete all entries in the current namespace. */ clear(): Promise; /** Check if key exists in current namespace. */ has(key: string): Promise; /** Iterator */ iterator(namespace?: string): AsyncGenerator; /** * Closes the connection. * * Returns `undefined` when the connection closes. */ disconnect(): Promise; } declare namespace Keyv { interface Options { [key: string]: any; /** Namespace for the current instance. */ namespace?: string | undefined; /** A custom serialization function. */ serialize?: ((data: DeserializedData) => string) | undefined; /** A custom deserialization function. */ deserialize?: ((data: string) => DeserializedData | undefined) | undefined; /** The connection string URI. */ uri?: string | undefined; /** The storage adapter instance to be used by Keyv. */ store?: Store | undefined; /** Default TTL. Can be overridden by specififying a TTL on `.set()`. */ ttl?: number | undefined; /** Specify an adapter to use. e.g `'redis'` or `'mongodb'`. */ adapter?: 'redis' | 'mongodb' | 'mongo' | 'sqlite' | 'postgresql' | 'postgres' | 'mysql' | undefined; /** Enable compression option **/ compression?: CompressionAdapter | undefined; } interface CompressionAdapter { compress(value: any, options?: any): Promise; decompress(value: any, options?: any): Promise; serialize(value: any): Promise; deserialize(value: any): Promise; } interface DeserializedData { value: Value; expires: number | undefined; } type StoredData = DeserializedData | string | undefined; interface Store { get(key: string): Value | Promise | undefined; set(key: string, value: Value, ttl?: number): any; delete(key: string): boolean | Promise; clear(): void | Promise; has?(key: string): boolean | Promise; getMany?( keys: string[] ): Array> | Promise>> | undefined; } } export = Keyv;