UNPKG

@types/ioredis

Version:

TypeScript definitions for ioredis

1,247 lines (893 loc) 63.7 kB
// Type definitions for ioredis 4.14 // Project: https://github.com/luin/ioredis // Definitions by: York Yao <https://github.com/plantain-00> // Christopher Eck <https://github.com/chrisleck> // Yoga Aliarham <https://github.com/aliarham11> // Ebrahim <https://github.com/br8h> // Shahar Mor <https://github.com/shaharmor> // Whemoon Jang <https://github.com/palindrom615> // Francis Gulotta <https://github.com/reconbot> // Dmitry Motovilov <https://github.com/funthing> // Oleg Repin <https://github.com/iamolegga> // Ting-Wai To <https://github.com/tingwai-to> // Alex Petty <https://github.com/pettyalex> // Simon Schick <https://github.com/SimonSchick> // Tianlin <https://github.com/tianlinle> // Demian Rodriguez <https://github.com/demian85> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 /* =================== USAGE =================== import * as Redis from "ioredis"; const redis = new Redis(); =============================================== */ /// <reference types="node" /> import { ConnectionOptions } from 'tls'; import { Readable } from 'stream'; import { EventEmitter } from 'events'; interface RedisStatic { new (port?: number, host?: string, options?: IORedis.RedisOptions): IORedis.Redis; new (host?: string, options?: IORedis.RedisOptions): IORedis.Redis; new (options?: IORedis.RedisOptions): IORedis.Redis; (port?: number, host?: string, options?: IORedis.RedisOptions): IORedis.Redis; (host?: string, options?: IORedis.RedisOptions): IORedis.Redis; (options?: IORedis.RedisOptions): IORedis.Redis; Cluster: IORedis.ClusterStatic; Command: typeof Command; } declare var IORedis: RedisStatic; export = IORedis; declare class Commander { getBuiltinCommands(): string[]; createBuiltinCommand(commandName: string): {}; defineCommand( name: string, definition: { numberOfKeys?: number; lua?: string; }, ): void; sendCommand(): void; } interface CommandOptions { replyEncoding?: string | null; errorStack?: string; keyPrefix?: string; } declare class Command { isCustomCommand: boolean; args: IORedis.ValueType[]; getSlot(): number | null; getKeys(): Array<string | Buffer>; constructor( name: string, args: IORedis.ValueType[], opts?: CommandOptions, callback?: (err: null, result: any) => void, ); static setArgumentTransformer(name: string, fn: (args: IORedis.ValueType[]) => IORedis.ValueType[]): void; static setReplyTransformer(name: string, fn: (result: any) => any): void; } // For backwards compatibility type _Command = typeof Command; declare namespace IORedis { type KeyType = string | Buffer; type BooleanResponse = 1 | 0; type ValueType = string | Buffer | number | any[]; type Command = _Command; interface Redis extends EventEmitter, Commander { Promise: typeof Promise; status: string; connect(callback?: () => void): Promise<void>; disconnect(): void; duplicate(): Redis; send_command(command: string, ...args: ValueType[]): Promise<any>; bitcount(key: KeyType, callback: (err: Error, res: number) => void): void; bitcount(key: KeyType, start: number, end: number, callback: (err: Error, res: number) => void): void; bitcount(key: KeyType): Promise<number>; bitcount(key: KeyType, start: number, end: number): Promise<number>; get(key: KeyType, callback: (err: Error, res: string | null) => void): void; get(key: KeyType): Promise<string | null>; getBuffer(key: KeyType, callback: (err: Error, res: Buffer) => void): void; getBuffer(key: KeyType): Promise<Buffer>; set( key: KeyType, value: ValueType, expiryMode?: string | any[], time?: number | string, setMode?: number | string, ): Promise<string>; set(key: KeyType, value: ValueType, callback: (err: Error, res: string) => void): void; set(key: KeyType, value: ValueType, setMode: string | any[], callback: (err: Error, res: string) => void): void; set( key: KeyType, value: ValueType, expiryMode: string, time: number | string, callback: (err: Error, res: string) => void, ): void; set( key: KeyType, value: ValueType, expiryMode: string, time: number | string, setMode: number | string, callback: (err: Error, res: string) => void, ): void; setBuffer( key: KeyType, value: ValueType, expiryMode?: string | any[], time?: number | string, setMode?: number | string, ): Promise<Buffer>; setBuffer(key: KeyType, value: ValueType, callback: (err: Error, res: Buffer) => void): void; setBuffer(key: KeyType, value: ValueType, setMode: string, callback: (err: Error, res: Buffer) => void): void; setBuffer( key: KeyType, value: ValueType, expiryMode: string, time: number, callback: (err: Error, res: Buffer) => void, ): void; setBuffer( key: KeyType, value: ValueType, expiryMode: string, time: number | string, setMode: number | string, callback: (err: Error, res: Buffer) => void, ): void; setnx(key: KeyType, value: ValueType, callback: (err: Error, res: BooleanResponse) => void): void; setnx(key: KeyType, value: ValueType): Promise<BooleanResponse>; setex(key: KeyType, seconds: number, value: ValueType, callback: (err: Error, res: Ok) => void): void; setex(key: KeyType, seconds: number, value: ValueType): Promise<Ok>; psetex(key: KeyType, milliseconds: number, value: ValueType, callback: (err: Error, res: Ok) => void): void; psetex(key: KeyType, milliseconds: number, value: ValueType): Promise<Ok>; append(key: KeyType, value: ValueType, callback: (err: Error, res: number) => void): void; append(key: KeyType, value: ValueType): Promise<number>; strlen(key: KeyType, callback: (err: Error, res: number) => void): void; strlen(key: KeyType): Promise<number>; del(...keys: KeyType[]): Promise<number>; unlink(...keys: KeyType[]): Promise<number>; exists(...keys: KeyType[]): Promise<number>; exists(key: KeyType, callback: (err: Error, res: number) => void): void; setbit(key: KeyType, offset: number, value: ValueType, callback: (err: Error, res: number) => void): void; setbit(key: KeyType, offset: number, value: ValueType): Promise<number>; getbit(key: KeyType, offset: number, callback: (err: Error, res: number) => void): void; getbit(key: KeyType, offset: number): Promise<number>; setrange(key: KeyType, offset: number, value: ValueType, callback: (err: Error, res: number) => void): void; setrange(key: KeyType, offset: number, value: ValueType): Promise<number>; getrange(key: KeyType, start: number, end: number, callback: (err: Error, res: string) => void): void; getrange(key: KeyType, start: number, end: number): Promise<string>; substr(key: KeyType, start: number, end: number, callback: (err: Error, res: string) => void): void; substr(key: KeyType, start: number, end: number): Promise<string>; incr(key: KeyType, callback: (err: Error, res: number) => void): void; incr(key: KeyType): Promise<number>; decr(key: KeyType, callback: (err: Error, res: number) => void): void; decr(key: KeyType): Promise<number>; mget(...keys: KeyType[]): Promise<Array<string | null>>; rpush(key: KeyType, ...values: ValueType[]): Promise<number>; rpushBuffer(key: string, ...values: Buffer[]): Promise<number>; lpush(key: KeyType, ...values: ValueType[]): Promise<number>; rpushx(key: KeyType, value: ValueType, callback: (err: Error, res: number) => void): void; rpushx(key: KeyType, value: ValueType): Promise<number>; lpushx(key: KeyType, value: ValueType, callback: (err: Error, res: number) => void): void; lpushx(key: KeyType, value: ValueType): Promise<number>; linsert( key: KeyType, direction: 'BEFORE' | 'AFTER', pivot: string, value: ValueType, callback: (err: Error, res: number) => void, ): void; linsert(key: KeyType, direction: 'BEFORE' | 'AFTER', pivot: string, value: ValueType): Promise<number>; rpop(key: KeyType, callback: (err: Error, res: string) => void): void; rpop(key: KeyType): Promise<string>; lpop(key: KeyType, callback: (err: Error, res: string) => void): void; lpop(key: KeyType): Promise<string>; lpopBuffer(key: KeyType, callback: (err: Error, res: Buffer) => void): void; lpopBuffer(key: KeyType): Promise<Buffer>; brpop(...keys: KeyType[]): Promise<[string, string]>; blpop(...keys: KeyType[]): Promise<[string, string]>; brpoplpush( source: string, destination: string, timeout: number, callback: (err: Error, res: string) => void, ): void; brpoplpush(source: string, destination: string, timeout: number): Promise<string>; llen(key: KeyType, callback: (err: Error, res: number) => void): void; llen(key: KeyType): Promise<number>; lindex(key: KeyType, index: number, callback: (err: Error, res: string) => void): void; lindex(key: KeyType, index: number): Promise<string>; lset(key: KeyType, index: number, value: ValueType, callback: (err: Error, res: Ok) => void): void; lset(key: KeyType, index: number, value: ValueType): Promise<Ok>; lrange(key: KeyType, start: number, stop: number, callback: (err: Error, res: string[]) => void): void; lrange(key: KeyType, start: number, stop: number): Promise<string[]>; lrangeBuffer(key: KeyType, start: number, stop: number, callback: (err: Error, res: Buffer[]) => void): void; lrangeBuffer(key: KeyType, start: number, stop: number): Promise<Buffer[]>; ltrim(key: KeyType, start: number, stop: number, callback: (err: Error, res: Ok) => void): void; ltrim(key: KeyType, start: number, stop: number): Promise<Ok>; lrem(key: KeyType, count: number, value: ValueType, callback: (err: Error, res: number) => void): void; lrem(key: KeyType, count: number, value: ValueType): Promise<number>; rpoplpush(source: string, destination: string, callback: (err: Error, res: string) => void): void; rpoplpush(source: string, destination: string): Promise<string>; rpoplpushBuffer(source: string, destination: string, callback: (err: Error, res: Buffer) => void): void; rpoplpushBuffer(source: string, destination: string): Promise<Buffer>; sadd(key: KeyType, ...members: ValueType[]): Promise<number>; srem(key: KeyType, ...members: ValueType[]): Promise<number>; smove( source: string, destination: string, member: string, callback: (err: Error, res: BooleanResponse) => void, ): void; smove(source: string, destination: string, member: string): Promise<BooleanResponse>; sismember(key: KeyType, member: string, callback: (err: Error, res: BooleanResponse) => void): void; sismember(key: KeyType, member: string): Promise<BooleanResponse>; scard(key: KeyType, callback: (err: Error, res: number) => void): void; scard(key: KeyType): Promise<number>; spop(key: KeyType, callback: (err: Error, res: string | null) => void): void; spop(key: KeyType): Promise<string | null>; spop(key: KeyType, count: number, callback: (err: Error, res: string[]) => void): void; spop(key: KeyType, count: number): Promise<string[]>; srandmember(key: KeyType, callback: (err: Error, res: string | null) => void): void; srandmember(key: KeyType): Promise<string | null>; srandmember(key: KeyType, count: number, callback: (err: Error, res: string[]) => void): void; srandmember(key: KeyType, count: number): Promise<string[]>; sinter(...keys: KeyType[]): Promise<string[]>; sinterstore(destination: string, ...keys: KeyType[]): Promise<number>; sunion(...keys: KeyType[]): Promise<string[]>; sunionstore(destination: string, ...keys: KeyType[]): Promise<number>; sdiff(...keys: KeyType[]): Promise<string[]>; sdiffstore(destination: string, ...keys: KeyType[]): Promise<number>; smembers(key: KeyType, callback: (err: Error, res: string[]) => void): void; smembers(key: KeyType): Promise<string[]>; zadd(key: KeyType, ...args: string[]): Promise<number | string>; zaddBuffer(key: KeyType, score1: number, member1: Buffer): Promise<string | number>; zincrby(key: KeyType, increment: number, member: string, callback: (err: Error, res: string) => void): void; zincrby(key: KeyType, increment: number, member: string): Promise<string>; zrem(key: KeyType, ...members: ValueType[]): Promise<number>; zremrangebyscore( key: KeyType, min: number | string, max: number | string, callback: (err: Error, res: number) => void, ): void; zremrangebyscore(key: KeyType, min: number | string, max: number | string): Promise<number>; zremrangebyrank(key: KeyType, start: number, stop: number, callback: (err: Error, res: number) => void): void; zremrangebyrank(key: KeyType, start: number, stop: number): Promise<number>; zunionstore(destination: string, numkeys: number, key: KeyType, ...args: string[]): Promise<number>; zinterstore(destination: string, numkeys: number, key: KeyType, ...args: string[]): Promise<number>; zrange(key: KeyType, start: number, stop: number, callback: (err: Error, res: string[]) => void): void; zrange( key: KeyType, start: number, stop: number, withScores: 'WITHSCORES', callback: (err: Error, res: string[]) => void, ): void; zrange(key: KeyType, start: number, stop: number, withScores?: 'WITHSCORES'): Promise<string[]>; zrevrange(key: KeyType, start: number, stop: number, callback: (err: Error, res: string[]) => void): void; zrevrange( key: KeyType, start: number, stop: number, withScores: 'WITHSCORES', callback: (err: Error, res: string[]) => void, ): void; zrevrange(key: KeyType, start: number, stop: number, withScores?: 'WITHSCORES'): Promise<string[]>; zrangebyscore( key: KeyType, min: number | string, max: number | string, withScores?: 'WITHSCORES', ): Promise<string[]>; zrangebyscore( key: KeyType, min: number | string, max: number | string, withScores: 'WITHSCORES', limit: 'LIMIT', offset: number, count: number, ): Promise<string[]>; zrangebyscore( key: KeyType, min: number | string, max: number | string, limit: 'LIMIT', offset: number, count: number, ): Promise<string[]>; zrevrangebyscore( key: KeyType, max: number | string, min: number | string, withScores?: 'WITHSCORES', ): Promise<string[]>; zrevrangebyscore( key: KeyType, max: number | string, min: number | string, withScores: 'WITHSCORES', limit: 'LIMIT', offset: number, count: number, ): Promise<string[]>; zrevrangebyscore( key: KeyType, max: number | string, min: number | string, limit: 'LIMIT', offset: number, count: number, ): Promise<string[]>; zcount( key: KeyType, min: number | string, max: number | string, callback: (err: Error, res: number) => void, ): void; zcount(key: KeyType, min: number | string, max: number | string): Promise<number>; zcard(key: KeyType, callback: (err: Error, res: number) => void): void; zcard(key: KeyType): Promise<number>; zscore(key: KeyType, member: string, callback: (err: Error, res: string) => void): void; zscore(key: KeyType, member: string): Promise<string>; zrank(key: KeyType, member: string, callback: (err: Error, res: number | null) => void): void; zrank(key: KeyType, member: string): Promise<number | null>; zrevrank(key: KeyType, member: string, callback: (err: Error, res: number | null) => void): void; zrevrank(key: KeyType, member: string): Promise<number | null>; hset(key: KeyType, field: string, value: ValueType, callback: (err: Error, res: BooleanResponse) => void): void; hset(key: KeyType, field: string, value: ValueType): Promise<BooleanResponse>; hsetBuffer( key: KeyType, field: string, value: ValueType, callback: (err: Error, res: BooleanResponse) => void, ): void; hsetBuffer(key: KeyType, field: string, value: ValueType): Promise<Buffer>; hsetnx( key: KeyType, field: string, value: ValueType, callback: (err: Error, res: BooleanResponse) => void, ): void; hsetnx(key: KeyType, field: string, value: ValueType): Promise<BooleanResponse>; hget(key: KeyType, field: string, callback: (err: Error, res: string | null) => void): void; hget(key: KeyType, field: string): Promise<string | null>; hgetBuffer(key: KeyType, field: string, callback: (err: Error, res: Buffer) => void): void; hgetBuffer(key: KeyType, field: string): Promise<Buffer>; hmset(key: KeyType, ...args: ValueType[]): Promise<BooleanResponse>; hmset( key: KeyType, data: object | Map<string, ValueType>, callback: (err: Error, res: BooleanResponse) => void, ): void; hmset(key: KeyType, data: object | Map<string, ValueType>): Promise<BooleanResponse>; hmget(key: KeyType, ...fields: string[]): Promise<Array<string | null>>; hincrby(key: KeyType, field: string, increment: number, callback: (err: Error, res: number) => void): void; hincrby(key: KeyType, field: string, increment: number): Promise<number>; hincrbyfloat(key: KeyType, field: string, increment: number, callback: (err: Error, res: number) => void): void; hincrbyfloat(key: KeyType, field: string, increment: number): Promise<number>; hdel(key: KeyType, ...fields: string[]): Promise<number>; hlen(key: KeyType, callback: (err: Error, res: number) => void): void; hlen(key: KeyType): Promise<number>; hkeys(key: KeyType, callback: (err: Error, res: string[]) => void): void; hkeys(key: KeyType): Promise<string[]>; hvals(key: KeyType, callback: (err: Error, res: string[]) => void): void; hvals(key: KeyType): Promise<string[]>; hgetall(key: KeyType, callback: (err: Error, res: Record<string, string>) => void): void; hgetall(key: KeyType): Promise<Record<string, string>>; hexists(key: KeyType, field: string, callback: (err: Error, res: BooleanResponse) => void): void; hexists(key: KeyType, field: string): Promise<BooleanResponse>; incrby(key: KeyType, increment: number, callback: (err: Error, res: number) => void): void; incrby(key: KeyType, increment: number): Promise<number>; incrbyfloat(key: KeyType, increment: number, callback: (err: Error, res: number) => void): void; incrbyfloat(key: KeyType, increment: number): Promise<number>; decrby(key: KeyType, decrement: number, callback: (err: Error, res: number) => void): void; decrby(key: KeyType, decrement: number): Promise<number>; getset(key: KeyType, value: ValueType, callback: (err: Error, res: string | null) => void): void; getset(key: KeyType, value: ValueType): Promise<string | null>; mset(...args: ValueType[]): Promise<Ok>; mset(data: object | Map<string, ValueType>, callback: (err: Error, res: Ok) => void): void; mset(data: object | Map<string, ValueType>): Promise<Ok>; msetnx(...args: ValueType[]): Promise<number>; msetnx(data: object | Map<string, ValueType>, callback: (err: Error, res: BooleanResponse) => void): void; msetnx(data: object | Map<string, ValueType>): Promise<BooleanResponse>; randomkey(callback: (err: Error, res: string) => void): void; randomkey(): Promise<string>; select(index: number, callback: (err: Error, res: string) => void): void; select(index: number): Promise<string>; move(key: KeyType, db: string, callback: (err: Error, res: BooleanResponse) => void): void; move(key: KeyType, db: string): Promise<BooleanResponse>; rename(key: KeyType, newkey: KeyType, callback: (err: Error, res: Ok) => void): void; rename(key: KeyType, newkey: KeyType): Promise<Ok>; renamenx(key: KeyType, newkey: KeyType, callback: (err: Error, res: BooleanResponse) => void): void; renamenx(key: KeyType, newkey: KeyType): Promise<BooleanResponse>; expire(key: KeyType, seconds: number, callback: (err: Error, res: BooleanResponse) => void): void; expire(key: KeyType, seconds: number): Promise<BooleanResponse>; pexpire(key: KeyType, milliseconds: number, callback: (err: Error, res: BooleanResponse) => void): void; pexpire(key: KeyType, milliseconds: number): Promise<BooleanResponse>; expireat(key: KeyType, timestamp: number, callback: (err: Error, res: BooleanResponse) => void): void; expireat(key: KeyType, timestamp: number): Promise<BooleanResponse>; pexpireat( key: KeyType, millisecondsTimestamp: number, callback: (err: Error, res: BooleanResponse) => void, ): void; pexpireat(key: KeyType, millisecondsTimestamp: number): Promise<BooleanResponse>; keys(pattern: string, callback: (err: Error, res: string[]) => void): void; keys(pattern: string): Promise<string[]>; dbsize(callback: (err: Error, res: number) => void): void; dbsize(): Promise<number>; auth(password: string, callback: (err: Error, res: string) => void): void; auth(password: string): Promise<string>; ping(callback: (err: Error, res: string) => void): void; ping(message: string, callback: (err: Error, res: string) => void): void; ping(message?: string): Promise<string>; echo(message: string, callback: (err: Error, res: string) => void): void; echo(message: string): Promise<string>; save(callback: (err: Error, res: string) => void): void; save(): Promise<string>; bgsave(callback: (err: Error, res: string) => void): void; bgsave(): Promise<string>; bgrewriteaof(callback: (err: Error, res: string) => void): void; bgrewriteaof(): Promise<string>; shutdown(save: 'SAVE' | 'NOSAVE', callback: (err: Error, res: never) => void): void; shutdown(save: 'SAVE' | 'NOSAVE'): Promise<never>; lastsave(callback: (err: Error, res: number) => void): void; lastsave(): Promise<number>; type(key: KeyType, callback: (err: Error, res: string) => void): void; type(key: KeyType): Promise<string>; multi(commands?: string[][], options?: MultiOptions): Pipeline; multi(options: { pipeline: false }): Promise<string>; exec(callback: (err: Error, res: Array<[Error | null, string]>) => void): void; exec(): Promise<Array<[Error | null, string]>>; discard(callback: (err: Error, res: string) => void): void; discard(): Promise<string>; sync(callback: (err: Error, res: any) => void): void; sync(): Promise<any>; flushdb(callback: (err: Error, res: string) => void): void; flushdb(): Promise<string>; flushall(callback: (err: Error, res: string) => void): void; flushall(): Promise<string>; sort(key: KeyType, ...args: string[]): Promise<string[] | number>; info(callback: (err: Error, res: string) => void): void; info(section: string, callback: (err: Error, res: string) => void): void; info(section?: string): Promise<string>; time(callback: (err: Error, res: [string, string]) => void): void; time(): Promise<[string, string]>; monitor(callback: (err: Error, res: EventEmitter) => void): void; monitor(): Promise<EventEmitter>; ttl(key: KeyType, callback: (err: Error, res: number) => void): void; ttl(key: KeyType): Promise<number>; pttl(key: KeyType, callback: (err: Error, res: number) => void): void; pttl(key: KeyType): Promise<number>; persist(key: KeyType, callback: (err: Error, res: BooleanResponse) => void): void; persist(key: KeyType): Promise<BooleanResponse>; slaveof(host: string, port: number, callback: (err: Error, res: string) => void): void; slaveof(host: string, port: number): Promise<string>; debug(...args: ValueType[]): Promise<any>; config(op: 'GET', cfg: any[]): Promise<[string, string]>; config(op: 'REWRITE'): Promise<Ok>; config(op: 'SET', key: string, value: ValueType): Promise<Ok>; subscribe(...channels: string[]): Promise<number>; unsubscribe(...channels: string[]): Promise<number>; psubscribe(...patterns: string[]): Promise<number>; punsubscribe(...patterns: string[]): Promise<number>; publish(channel: string, message: string, callback: (err: Error, res: number) => void): void; publish(channel: string, message: string): Promise<number>; publishBuffer(channel: string, message: Buffer): Promise<number>; watch(...keys: KeyType[]): Promise<Ok>; unwatch(callback: (err: Error, res: string) => void): void; unwatch(): Promise<string>; cluster(...args: ValueType[]): any; restore(...args: ValueType[]): Promise<Ok>; migrate(...args: ValueType[]): Promise<Ok | 'NOKEY'>; dump(key: KeyType, callback: (err: Error, res: string) => void): void; dump(key: KeyType): Promise<string>; object(subcommand: string, ...args: ValueType[]): Promise<any>; client(...args: ValueType[]): any; eval(script: string, numKeys: number, ...args: ValueType[]): any; // This overload exists specifically to retain compatibility to `redlock` // All arguments are by default flattened, declaring all possible permuatations // would be unreasonable (and probably impossible) eval(args: ValueType[], callback?: (err: Error | null, res: any) => void): any; evalsha(scriptSha: string, numKeys: string, ...args: ValueType[]): any; script(...args: ValueType[]): any; quit(callback: (err: Error, res: string) => void): void; quit(): Promise<string>; scan(cursor: number | string): Promise<[string, string[]]>; scan(cursor: number | string, matchOption: 'match' | 'MATCH', pattern: string): Promise<[string, string[]]>; scan(cursor: number | string, countOption: 'count' | 'COUNT', count: number): Promise<[string, string[]]>; scan( cursor: number | string, matchOption: 'match' | 'MATCH', pattern: string, countOption: 'count' | 'COUNT', count: number, ): Promise<[string, string[]]>; scan( cursor: number | string, countOption: 'count' | 'COUNT', count: number, matchOption: 'match' | 'MATCH', pattern: string, ): Promise<[string, string[]]>; sscan(key: KeyType, cursor: number, ...args: ValueType[]): Promise<[string, string[]]>; hscan(key: KeyType, cursor: number, ...args: ValueType[]): Promise<[string, string[]]>; zscan(key: KeyType, cursor: number, ...args: ValueType[]): Promise<[string, string[]]>; pfmerge(destkey: KeyType, ...sourcekeys: KeyType[]): Promise<Ok>; pfadd(key: KeyType, ...elements: string[]): Promise<number>; pfcount(...keys: KeyType[]): Promise<number>; pipeline(commands?: string[][]): Pipeline; scanStream(options?: ScanStreamOption): Readable; sscanStream(key: KeyType, options?: ScanStreamOption): Readable; hscanStream(key: KeyType, options?: ScanStreamOption): Readable; zscanStream(key: KeyType, options?: ScanStreamOption): Readable; xack(key: KeyType, group: string, ...ids: string[]): Promise<number>; xadd(key: KeyType, id: string, ...args: string[]): Promise<string>; xadd(key: KeyType, maxLenOption: 'MAXLEN' | 'maxlen', count: number, ...args: string[]): Promise<string>; xadd( key: KeyType, maxLenOption: 'MAXLEN' | 'maxlen', approximate: '~', count: number, ...args: string[] ): Promise<string>; xclaim( key: KeyType, group: string, consumer: string, minIdleTime: number, ...args: ValueType[] ): Promise<Array<[string, string[]]>>; xdel(key: KeyType, ...ids: string[]): Promise<number>; xgroup(...args: ValueType[]): Promise<Ok>; xinfo(...args: ValueType[]): Promise<any>; xlen(key: KeyType): Promise<number>; xpending(key: KeyType, group: string, ...args: ValueType[]): Promise<any>; xrange(key: KeyType, start: string, end: string, ...args: ValueType[]): Promise<Array<[string, string[]]>>; xread(...args: ValueType[]): Array<[string, string[]]>; xreadgroup(groupOption: 'GROUP' | 'group', group: string, consumer: string, ...args: ValueType[]): any; xrevrange(key: KeyType, end: string, start: string, ...args: ValueType[]): Promise<Array<[string, string[]]>>; xtrim(key: KeyType, maxLenOption: 'MAXLEN' | 'maxlen', ...args: ValueType[]): Promise<number>; } interface Pipeline { readonly redis: Redis; readonly isCluster: boolean; readonly options: RedisOptions; readonly length: number; bitcount(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; bitcount(key: KeyType, start: number, end: number, callback?: (err: Error, res: number) => void): Pipeline; get(key: KeyType, callback?: (err: Error, res: string) => void): Pipeline; getBuffer(key: KeyType, callback?: (err: Error, res: Buffer) => void): Pipeline; set(key: KeyType, value: ValueType, callback?: (err: Error, res: string) => void): Pipeline; set(key: KeyType, value: ValueType, setMode: string, callback?: (err: Error, res: string) => void): Pipeline; set( key: KeyType, value: ValueType, expiryMode: string, time: number, callback?: (err: Error, res: string) => void, ): Pipeline; set( key: KeyType, value: ValueType, expiryMode: string, time: number, setMode: string, callback?: (err: Error, res: string) => void, ): Pipeline; setBuffer(key: KeyType, value: ValueType, callback?: (err: Error, res: Buffer) => void): Pipeline; setBuffer( key: KeyType, value: ValueType, setMode: string, callback?: (err: Error, res: Buffer) => void, ): Pipeline; setBuffer( key: KeyType, value: ValueType, expiryMode: string, time: number, callback?: (err: Error, res: Buffer) => void, ): Pipeline; setBuffer( key: KeyType, value: ValueType, expiryMode: string, time: number, setMode: string, callback?: (err: Error, res: Buffer) => void, ): Pipeline; setnx(key: KeyType, value: ValueType, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; setex(key: KeyType, seconds: number, value: ValueType, callback?: (err: Error, res: Ok) => void): Pipeline; psetex( key: KeyType, milliseconds: number, value: ValueType, callback?: (err: Error, res: Ok) => void, ): Pipeline; append(key: KeyType, value: ValueType, callback?: (err: Error, res: number) => void): Pipeline; strlen(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; del(...keys: KeyType[]): Pipeline; unlink(...keys: KeyType[]): Pipeline; exists(...keys: KeyType[]): Pipeline; setbit(key: KeyType, offset: number, value: ValueType, callback?: (err: Error, res: number) => void): Pipeline; getbit(key: KeyType, offset: number, callback?: (err: Error, res: number) => void): Pipeline; setrange( key: KeyType, offset: number, value: ValueType, callback?: (err: Error, res: number) => void, ): Pipeline; getrange(key: KeyType, start: number, end: number, callback?: (err: Error, res: string) => void): Pipeline; substr(key: KeyType, start: number, end: number, callback?: (err: Error, res: string) => void): Pipeline; incr(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; decr(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; mget(...keys: KeyType[]): Pipeline; rpush(key: KeyType, ...values: ValueType[]): Pipeline; rpushBuffer(key: string, ...values: Buffer[]): Pipeline; lpush(key: KeyType, ...values: ValueType[]): Pipeline; rpushx(key: KeyType, value: ValueType, callback?: (err: Error, res: number) => void): Pipeline; lpushx(key: KeyType, value: ValueType, callback?: (err: Error, res: number) => void): Pipeline; linsert( key: KeyType, direction: 'BEFORE' | 'AFTER', pivot: string, value: ValueType, callback?: (err: Error, res: number) => void, ): Pipeline; rpop(key: KeyType, callback?: (err: Error, res: string) => void): Pipeline; lpop(key: KeyType, callback?: (err: Error, res: string) => void): Pipeline; lpopBuffer(key: KeyType, callback?: (err: Error, res: Buffer) => void): Pipeline; brpop(...keys: KeyType[]): Pipeline; blpop(...keys: KeyType[]): Pipeline; brpoplpush( source: string, destination: string, timeout: number, callback?: (err: Error, res: string) => void, ): Pipeline; llen(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; lindex(key: KeyType, index: number, callback?: (err: Error, res: string) => void): Pipeline; lset(key: KeyType, index: number, value: ValueType, callback?: (err: Error, res: Ok) => void): Pipeline; lrange(key: KeyType, start: number, stop: number, callback?: (err: Error, res: string[]) => void): Pipeline; lrangeBuffer( key: KeyType, start: number, stop: number, callback?: (err: Error, res: Buffer[]) => void, ): Pipeline; ltrim(key: KeyType, start: number, stop: number, callback?: (err: Error, res: Ok) => void): Pipeline; lrem(key: KeyType, count: number, value: ValueType, callback?: (err: Error, res: number) => void): Pipeline; rpoplpush(source: string, destination: string, callback?: (err: Error, res: string) => void): Pipeline; sadd(key: KeyType, ...members: ValueType[]): Pipeline; srem(key: KeyType, ...members: ValueType[]): Pipeline; smove( source: string, destination: string, member: string, callback?: (err: Error, res: string) => void, ): Pipeline; sismember(key: KeyType, member: string, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; scard(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; spop(key: KeyType, callback?: (err: Error, res: string | null) => void): Pipeline; spop(key: KeyType, count: number, callback?: (err: Error, res: string[]) => void): Pipeline; srandmember(key: KeyType, callback?: (err: Error, res: string | null) => void): Pipeline; srandmember(key: KeyType, count: number, callback?: (err: Error, res: string[]) => void): Pipeline; sinter(...keys: KeyType[]): Pipeline; sinterstore(destination: string, ...keys: KeyType[]): Pipeline; sunion(...keys: KeyType[]): Pipeline; sunionstore(destination: string, ...keys: KeyType[]): Pipeline; sdiff(...keys: KeyType[]): Pipeline; sdiffstore(destination: string, ...keys: KeyType[]): Pipeline; smembers(key: KeyType, callback?: (err: Error, res: string[]) => void): Pipeline; zadd(key: KeyType, ...args: string[]): Pipeline; zincrby( key: KeyType, increment: number, member: string, callback?: (err: Error, res: string) => void, ): Pipeline; zrem(key: KeyType, ...members: ValueType[]): Pipeline; zremrangebyscore( key: KeyType, min: number | string, max: number | string, callback?: (err: Error, res: number) => void, ): Pipeline; zremrangebyrank( key: KeyType, start: number, stop: number, callback?: (err: Error, res: number) => void, ): Pipeline; zunionstore(destination: string, numkeys: number, key: KeyType, ...args: string[]): Pipeline; zinterstore(destination: string, numkeys: number, key: KeyType, ...args: string[]): Pipeline; zrange(key: KeyType, start: number, stop: number, callback?: (err: Error, res: string[]) => void): Pipeline; zrange( key: KeyType, start: number, stop: number, withScores: 'WITHSCORES', callback?: (err: Error, res: string[]) => void, ): Pipeline; zrevrange(key: KeyType, start: number, stop: number, callback?: (err: Error, res: string[]) => void): Pipeline; zrevrange( key: KeyType, start: number, stop: number, withScores: 'WITHSCORES', callback?: (err: Error, res: string[]) => void, ): Pipeline; zrangebyscore(key: KeyType, min: number | string, max: number | string, ...args: string[]): Pipeline; zrevrangebyscore(key: KeyType, max: number | string, min: number | string, ...args: string[]): Pipeline; zcount( key: KeyType, min: number | string, max: number | string, callback?: (err: Error, res: number) => void, ): Pipeline; zcard(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; zscore(key: KeyType, member: string, callback?: (err: Error, res: number) => void): Pipeline; zrank(key: KeyType, member: string, callback?: (err: Error, res: number) => void): Pipeline; zrevrank(key: KeyType, member: string, callback?: (err: Error, res: number) => void): Pipeline; hset( key: KeyType, field: string, value: ValueType, callback?: (err: Error, res: BooleanResponse) => void, ): Pipeline; hsetBuffer( key: KeyType, field: string, value: ValueType, callback?: (err: Error, res: Buffer) => void, ): Pipeline; hsetnx( key: KeyType, field: string, value: ValueType, callback?: (err: Error, res: BooleanResponse) => void, ): Pipeline; hget(key: KeyType, field: string, callback?: (err: Error, res: string | string) => void): Pipeline; hgetBuffer(key: KeyType, field: string, callback?: (err: Error, res: Buffer) => void): Pipeline; hmset(key: KeyType, ...args: ValueType[]): Pipeline; hmset( key: KeyType, data: object | Map<string, any>, callback?: (err: Error, res: BooleanResponse) => void, ): Pipeline; hmget(key: KeyType, ...fields: string[]): Pipeline; hincrby(key: KeyType, field: string, increment: number, callback?: (err: Error, res: number) => void): Pipeline; hincrbyfloat( key: KeyType, field: string, increment: number, callback?: (err: Error, res: number) => void, ): Pipeline; hdel(key: KeyType, ...fields: string[]): Pipeline; hlen(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; hkeys(key: KeyType, callback?: (err: Error, res: string[]) => void): Pipeline; hvals(key: KeyType, callback?: (err: Error, res: string[]) => void): Pipeline; hgetall(key: KeyType, callback?: (err: Error, res: Record<string, string>) => void): Pipeline; hexists(key: KeyType, field: string, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; incrby(key: KeyType, increment: number, callback?: (err: Error, res: number) => void): Pipeline; incrbyfloat(key: KeyType, increment: number, callback?: (err: Error, res: number) => void): Pipeline; decrby(key: KeyType, decrement: number, callback?: (err: Error, res: number) => void): Pipeline; getset(key: KeyType, value: ValueType, callback?: (err: Error, res: string) => void): Pipeline; mset(...args: ValueType[]): Pipeline; mset(data: object | Map<string, any>, callback?: (err: Error, res: string) => void): Pipeline; msetnx(...args: ValueType[]): Pipeline; msetnx(data: object | Map<string, any>, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; randomkey(callback?: (err: Error, res: string) => void): Pipeline; select(index: number, callback?: (err: Error, res: string) => void): Pipeline; move(key: KeyType, db: string, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; rename(key: KeyType, newkey: KeyType, callback?: (err: Error, res: string) => void): Pipeline; renamenx(key: KeyType, newkey: KeyType, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; expire(key: KeyType, seconds: number, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; pexpire(key: KeyType, milliseconds: number, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; expireat(key: KeyType, timestamp: number, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; pexpireat( key: KeyType, millisecondsTimestamp: number, callback?: (err: Error, res: BooleanResponse) => void, ): Pipeline; keys(pattern: string, callback?: (err: Error, res: string[]) => void): Pipeline; dbsize(callback?: (err: Error, res: number) => void): Pipeline; auth(password: string, callback?: (err: Error, res: string) => void): Pipeline; ping(callback?: (err: Error, res: string) => void): Pipeline; ping(message: string, callback?: (err: Error, res: string) => void): Pipeline; echo(message: string, callback?: (err: Error, res: string) => void): Pipeline; save(callback?: (err: Error, res: string) => void): Pipeline; bgsave(callback?: (err: Error, res: string) => void): Pipeline; bgrewriteaof(callback?: (err: Error, res: string) => void): Pipeline; shutdown(save: 'SAVE' | 'NOSAVE', callback?: (err: Error, res: never) => void): Pipeline; lastsave(callback?: (err: Error, res: number) => void): Pipeline; type(key: KeyType, callback?: (err: Error, res: string) => void): Pipeline; multi(callback?: (err: Error, res: string) => void): Pipeline; exec(callback?: (err: Error, res: Array<[Error | null, any]>) => void): Promise<Array<[Error | null, any]>>; discard(callback?: (err: Error, res: any) => void): Pipeline; sync(callback?: (err: Error, res: any) => void): Pipeline; flushdb(callback?: (err: Error, res: string) => void): Pipeline; flushall(callback?: (err: Error, res: string) => void): Pipeline; sort(key: KeyType, ...args: string[]): Pipeline; info(callback?: (err: Error, res: string) => void): Pipeline; info(section: string, callback?: (err: Error, res: string) => void): Pipeline; time(callback?: (err: Error, res: [string, string]) => void): Pipeline; monitor(callback?: (err: Error, res: EventEmitter) => void): Pipeline; ttl(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; pttl(key: KeyType, callback?: (err: Error, res: number) => void): Pipeline; persist(key: KeyType, callback?: (err: Error, res: BooleanResponse) => void): Pipeline; slaveof(host: string, port: number, callback?: (err: Error, res: string) => void): Pipeline; debug(...args: ValueType[]): Pipeline; config(...args: ValueType[]): Pipeline; subscribe(...channels: ValueType[]): Pipeline; unsubscribe(...channels: string[]): Pipeline; psubscribe(...patterns: string[]): Pipeline; punsubscribe(...patterns: string[]): Pipeline; publish(channel: string, message: string, callback?: (err: Error, res: number) => void): Pipeline; watch(...keys: KeyType[]): Pipeline; unwatch(callback?: (err: Error, res: string) => void): Pipeline; cluster(...args: ValueType[]): Pipeline; restore(...args: ValueType[]): Pipeline; migrate(...args: ValueType[]): Pipeline; dump(key: KeyType, callback?: (err: Error, res: string) => void): Pipeline; object(subcommand: string, ...args: ValueType[]): Pipeline; client(...args: ValueType[]): Pipeline; eval(script: string, numKeys: number, ...args: ValueType[]): Pipeline; evalsha(scriptSha: string, numKeys: string, ...args: ValueType[]): Pipeline; script(...args: ValueType[]): Pipeline; quit(callback?: (err: Error, res: string) => void): Pipeline; scan(cursor: number | string): Pipeline; scan(cursor: number | string, matchOption: 'match' | 'MATCH', pattern: string): Pipeline; scan(cursor: number | string, countOption: 'count' | 'COUNT', count: number): Pipeline; scan( cursor: number | string, matchOption: 'match' | 'MATCH', pattern: string, countOption: 'count' | 'COUNT', count: number, ): Pipeline; scan( cursor: number | string, countOption: 'count' | 'COUNT', count: number, matchOption: 'match' | 'MATCH', pattern: string, ): Pipeline; sscan(key: KeyType, cursor: number, ...args: ValueType[]): Pipeline; hscan(key: KeyType, cursor: number, ...args: ValueType[]): Pipeline; zscan(key: KeyType, cursor: number, ...args: ValueType[]): Pipeline; pfmerge(destkey: KeyType, ...sourcekeys: KeyType[]): Pipeline; pfadd(key: KeyType, ...elements: string[]): Pipeline; pfcount(...keys: KeyType[]): Pipeline; xack(key: KeyType, group: string, ...ids: string[]): Pipeline; xadd(key: KeyType, id: string, ...args: string[]): Pipeline; xclaim( key: KeyType, group: string, consumer: string, minIdleTime: number, id: string, ...args: ValueType[] ): Pipeline; xdel(key: KeyType, ...ids: string[]): Pipeline; xgroup(...args: ValueType[]): Pipeline; xinfo(...args: ValueType[]): Pipeline; xlen(key: KeyType): Pipeline; xpending(key: KeyType, group: string, ...args: ValueType[]): Pipeline; xrange(key: KeyType, start: string, end: string, ...args: ValueType[]): Pipeline; xread(...args: ValueType[]): Pipeline; xreadgroup(command: 'GROUP' | 'group', group: string, consumer: string, ...args: ValueType[]): Pipeline; xrevrange(key: KeyType, end: string, start: string, ...args: ValueType[]): Pipeline; xtrim(key: KeyType, strategy: 'MAXLEN' | 'maxlen', ...args: ValueType[]): Pipeline; } interface NodeConfiguration { host?: string; port?: number; } type ClusterNode = string | number | NodeConfiguration;