/// <reference types="node" />
export interface IRetryStrategyOptions {
    error: NodeJS.ErrnoException;
    total_retry_time: number;
    times_connected: number;
    attempt: number;
}
export declare type RetryStrategy = (options: IRetryStrategyOptions) => number | Error;
export interface IClientOpts {
    host?: string;
    port?: number;
    path?: string;
    url?: string;
    parser?: string;
    string_numbers?: boolean;
    return_buffers?: boolean;
    detect_buffers?: boolean;
    socket_keepalive?: boolean;
    socket_initialdelay?: number;
    no_ready_check?: boolean;
    enable_offline_queue?: boolean;
    retry_max_delay?: number;
    connect_timeout?: number;
    max_attempts?: number;
    retry_unfulfilled_commands?: boolean;
    auth_pass?: string;
    password?: string;
    db?: string | number;
    family?: string;
    rename_commands?: {
        [command: string]: string;
    } | null;
    tls?: any;
    prefix?: string;
    retry_strategy?: RetryStrategy;
}
export declare type Callback<T> = (err: Error | null, reply: T) => void;
export interface IServerInfo {
    redis_version: string;
    versions: number[];
}
export interface IOverloadedCommand<T, U, R> {
    (arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T, arg3: T, arg4: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T, arg3: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T | T[], cb?: Callback<U>): R;
    (arg1: T | T[], cb?: Callback<U>): R;
    (...args: Array<T | Callback<U>>): R;
}
export interface IOverloadedKeyCommand<T, U, R> {
    (key: string, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, arg3: T, arg4: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, arg3: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, cb?: Callback<U>): R;
    (key: string, arg1: T | T[], cb?: Callback<U>): R;
    (key: string, ...args: Array<T | Callback<U>>): R;
    (...args: Array<string | T | Callback<U>>): R;
}
export interface IOverloadedListCommand<T, U, R> {
    (arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T, arg3: T, arg4: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T, arg3: T, cb?: Callback<U>): R;
    (arg1: T, arg2: T, cb?: Callback<U>): R;
    (arg1: T | T[], cb?: Callback<U>): R;
    (...args: Array<T | Callback<U>>): R;
}
export interface IOverloadedSetCommand<T, U, R> {
    (key: string, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, arg3: T, arg4: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, arg3: T, cb?: Callback<U>): R;
    (key: string, arg1: T, arg2: T, cb?: Callback<U>): R;
    (key: string, arg1: T | {
        [key: string]: T;
    } | T[], cb?: Callback<U>): R;
    (key: string, ...args: Array<T | Callback<U>>): R;
    (args: [string, ...T[]], cb?: Callback<U>): R;
}
export interface IOverloadedLastCommand<T1, T2, U, R> {
    (arg1: T1, arg2: T1, arg3: T1, arg4: T1, arg5: T1, arg6: T2, cb?: Callback<U>): R;
    (arg1: T1, arg2: T1, arg3: T1, arg4: T1, arg5: T2, cb?: Callback<U>): R;
    (arg1: T1, arg2: T1, arg3: T1, arg4: T2, cb?: Callback<U>): R;
    (arg1: T1, arg2: T1, arg3: T2, cb?: Callback<U>): R;
    (arg1: T1, arg2: T2 | Array<T1 | T2>, cb?: Callback<U>): R;
    (args: Array<T1 | T2>, cb?: Callback<U>): R;
    (...args: Array<T1 | T2 | Callback<U>>): R;
}
export interface ICommands<R> {
    client: IOverloadedCommand<string, any, R>;
    CLIENT: IOverloadedCommand<string, any, R>;
    hmset: IOverloadedSetCommand<string | number, 'OK', R>;
    HMSET: IOverloadedSetCommand<string | number, 'OK', R>;
    subscribe: IOverloadedListCommand<string, string, R>;
    SUBSCRIBE: IOverloadedListCommand<string, string, R>;
    unsubscribe: IOverloadedListCommand<string, string, R>;
    UNSUBSCRIBE: IOverloadedListCommand<string, string, R>;
    psubscribe: IOverloadedListCommand<string, string, R>;
    PSUBSCRIBE: IOverloadedListCommand<string, string, R>;
    punsubscribe: IOverloadedListCommand<string, string, R>;
    PUNSUBSCRIBE: IOverloadedListCommand<string, string, R>;
    bitfield: IOverloadedKeyCommand<string | number, [number, number], R>;
    BITFIELD: IOverloadedKeyCommand<string | number, [number, number], R>;
    blpop: IOverloadedLastCommand<string, number, [string, string], R>;
    BLPOP: IOverloadedLastCommand<string, number, [string, string], R>;
    brpop: IOverloadedLastCommand<string, number, [string, string], R>;
    BRPOP: IOverloadedLastCommand<string, number, [string, string], R>;
    cluster: IOverloadedCommand<string, any, this>;
    CLUSTER: IOverloadedCommand<string, any, this>;
    config: IOverloadedCommand<string, boolean, R>;
    CONFIG: IOverloadedCommand<string, boolean, R>;
    debug: IOverloadedCommand<string, boolean, R>;
    DEBUG: IOverloadedCommand<string, boolean, R>;
    del: IOverloadedCommand<string, number, R>;
    DEL: IOverloadedCommand<string, number, R>;
    eval: IOverloadedCommand<string | number, any, R>;
    EVAL: IOverloadedCommand<string | number, any, R>;
    evalsha: IOverloadedCommand<string | number, any, R>;
    EVALSHA: IOverloadedCommand<string | number, any, R>;
    exists: IOverloadedCommand<string, number, R>;
    EXISTS: IOverloadedCommand<string, number, R>;
    geoadd: IOverloadedKeyCommand<string | number, number, R>;
    GEOADD: IOverloadedKeyCommand<string | number, number, R>;
    geohash: IOverloadedKeyCommand<string, string, R>;
    GEOHASH: IOverloadedKeyCommand<string, string, R>;
    geopos: IOverloadedKeyCommand<string, Array<[number, number]>, R>;
    GEOPOS: IOverloadedKeyCommand<string, Array<[number, number]>, R>;
    geodist: IOverloadedKeyCommand<string, string, R>;
    GEODIST: IOverloadedKeyCommand<string, string, R>;
    georadius: IOverloadedKeyCommand<string | number, Array<string | [string, string | [string, string]]>, R>;
    GEORADIUS: IOverloadedKeyCommand<string | number, Array<string | [string, string | [string, string]]>, R>;
    georadiusbymember: IOverloadedKeyCommand<string | number, Array<string | [string, string | [string, string]]>, R>;
    GEORADIUSBYMEMBER: IOverloadedKeyCommand<string | number, Array<string | [string, string | [string, string]]>, R>;
    hdel: IOverloadedKeyCommand<string, number, R>;
    HDEL: IOverloadedKeyCommand<string, number, R>;
    hmget: IOverloadedKeyCommand<string, string[], R>;
    HMGET: IOverloadedKeyCommand<string, string[], R>;
    lpush: IOverloadedKeyCommand<string, number, R>;
    LPUSH: IOverloadedKeyCommand<string, number, R>;
    mget: IOverloadedCommand<string, string[], R>;
    MGET: IOverloadedCommand<string, string[], R>;
    migrate: IOverloadedCommand<string, boolean, R>;
    MIGRATE: IOverloadedCommand<string, boolean, R>;
    mset: IOverloadedCommand<string, boolean, R>;
    MSET: IOverloadedCommand<string, boolean, R>;
    msetnx: IOverloadedCommand<string, boolean, R>;
    MSETNX: IOverloadedCommand<string, boolean, R>;
    object: IOverloadedCommand<string, any, R>;
    OBJECT: IOverloadedCommand<string, any, R>;
    pfadd: IOverloadedKeyCommand<string, number, R>;
    PFADD: IOverloadedKeyCommand<string, number, R>;
    pfcount: IOverloadedCommand<string, number, R>;
    PFCOUNT: IOverloadedCommand<string, number, R>;
    pfmerge: IOverloadedCommand<string, boolean, R>;
    PFMERGE: IOverloadedCommand<string, boolean, R>;
    pubsub: IOverloadedCommand<string, number, R>;
    PUBSUB: IOverloadedCommand<string, number, R>;
    rpush: IOverloadedKeyCommand<string, number, R>;
    RPUSH: IOverloadedKeyCommand<string, number, R>;
    sadd: IOverloadedKeyCommand<string, number, R>;
    SADD: IOverloadedKeyCommand<string, number, R>;
    script: IOverloadedCommand<string, any, R>;
    SCRIPT: IOverloadedCommand<string, any, R>;
    sdiff: IOverloadedCommand<string, string[], R>;
    SDIFF: IOverloadedCommand<string, string[], R>;
    sdiffstore: IOverloadedKeyCommand<string, number, R>;
    SDIFFSTORE: IOverloadedKeyCommand<string, number, R>;
    shutdown: IOverloadedCommand<string, string, R>;
    SHUTDOWN: IOverloadedCommand<string, string, R>;
    sinter: IOverloadedKeyCommand<string, string[], R>;
    SINTER: IOverloadedKeyCommand<string, string[], R>;
    sinterstore: IOverloadedCommand<string, number, R>;
    SINTERSTORE: IOverloadedCommand<string, number, R>;
    slowlog: IOverloadedCommand<string, Array<[number, number, number, string[]]>, R>;
    SLOWLOG: IOverloadedCommand<string, Array<[number, number, number, string[]]>, R>;
    sort: IOverloadedCommand<string, string[], R>;
    SORT: IOverloadedCommand<string, string[], R>;
    srem: IOverloadedKeyCommand<string, number, R>;
    SREM: IOverloadedKeyCommand<string, number, R>;
    sunion: IOverloadedCommand<string, string[], R>;
    SUNION: IOverloadedCommand<string, string[], R>;
    sunionstore: IOverloadedCommand<string, number, R>;
    SUNIONSTORE: IOverloadedCommand<string, number, R>;
    watch: IOverloadedCommand<string, 'OK', R>;
    WATCH: IOverloadedCommand<string, 'OK', R>;
    zadd: IOverloadedKeyCommand<string | number, number, R>;
    ZADD: IOverloadedKeyCommand<string | number, number, R>;
    zinterstore: IOverloadedCommand<string | number, number, R>;
    ZINTERSTORE: IOverloadedCommand<string | number, number, R>;
    zrem: IOverloadedKeyCommand<string, number, R>;
    ZREM: IOverloadedKeyCommand<string, number, R>;
    zunionstore: IOverloadedCommand<string | number, number, R>;
    ZUNIONSTORE: IOverloadedCommand<string | number, number, R>;
    scan: IOverloadedCommand<string, [string, string[]], R>;
    SCAN: IOverloadedCommand<string, [string, string[]], R>;
    sscan: IOverloadedKeyCommand<string, [string, string[]], R>;
    SSCAN: IOverloadedKeyCommand<string, [string, string[]], R>;
    hscan: IOverloadedKeyCommand<string, [string, string[]], R>;
    HSCAN: IOverloadedKeyCommand<string, [string, string[]], R>;
    zscan: IOverloadedKeyCommand<string, [string, string[]], R>;
    ZSCAN: IOverloadedKeyCommand<string, [string, string[]], R>;
    monitor(cb?: Callback<undefined>): R;
    MONITOR(cb?: Callback<undefined>): R;
    info(cb?: Callback<IServerInfo>): R;
    info(section?: string | string[], cb?: Callback<IServerInfo>): R;
    INFO(cb?: Callback<IServerInfo>): R;
    INFO(section?: string | string[], cb?: Callback<IServerInfo>): R;
    ping(callback?: Callback<string>): R;
    ping(message: string, callback?: Callback<string>): R;
    PING(callback?: Callback<string>): R;
    PING(message: string, callback?: Callback<string>): R;
    publish(channel: string, value: string, cb?: Callback<number>): R;
    PUBLISH(channel: string, value: string, cb?: Callback<number>): R;
    auth(password: string, callback?: Callback<string>): R;
    AUTH(password: string, callback?: Callback<string>): R;
    append(key: string, value: string, cb?: Callback<number>): R;
    APPEND(key: string, value: string, cb?: Callback<number>): R;
    bgrewriteaof(cb?: Callback<'OK'>): R;
    BGREWRITEAOF(cb?: Callback<'OK'>): R;
    bgsave(cb?: Callback<string>): R;
    BGSAVE(cb?: Callback<string>): R;
    bitcount(key: string, cb?: Callback<number>): R;
    bitcount(key: string, start: number, end: number, cb?: Callback<number>): R;
    BITCOUNT(key: string, cb?: Callback<number>): R;
    BITCOUNT(key: string, start: number, end: number, cb?: Callback<number>): R;
    bitop(operation: string, destkey: string, key1: string, key2: string, key3: string, cb?: Callback<number>): R;
    bitop(operation: string, destkey: string, key1: string, key2: string, cb?: Callback<number>): R;
    bitop(operation: string, destkey: string, key: string, cb?: Callback<number>): R;
    bitop(operation: string, destkey: string, ...args: Array<string | Callback<number>>): R;
    BITOP(operation: string, destkey: string, key1: string, key2: string, key3: string, cb?: Callback<number>): R;
    BITOP(operation: string, destkey: string, key1: string, key2: string, cb?: Callback<number>): R;
    BITOP(operation: string, destkey: string, key: string, cb?: Callback<number>): R;
    BITOP(operation: string, destkey: string, ...args: Array<string | Callback<number>>): R;
    bitpos(key: string, bit: number, start: number, end: number, cb?: Callback<number>): R;
    bitpos(key: string, bit: number, start: number, cb?: Callback<number>): R;
    bitpos(key: string, bit: number, cb?: Callback<number>): R;
    BITPOS(key: string, bit: number, start: number, end: number, cb?: Callback<number>): R;
    BITPOS(key: string, bit: number, start: number, cb?: Callback<number>): R;
    BITPOS(key: string, bit: number, cb?: Callback<number>): R;
    brpoplpush(source: string, destination: string, timeout: number, cb?: Callback<string | null>): R;
    BRPOPLPUSH(source: string, destination: string, timeout: number, cb?: Callback<string | null>): R;
    command(cb?: Callback<Array<[string, number, string[], number, number, number]>>): R;
    COMMAND(cb?: Callback<Array<[string, number, string[], number, number, number]>>): R;
    dbsize(cb?: Callback<number>): R;
    DBSIZE(cb?: Callback<number>): R;
    decr(key: string, cb?: Callback<number>): R;
    DECR(key: string, cb?: Callback<number>): R;
    decrby(key: string, decrement: number, cb?: Callback<number>): R;
    DECRBY(key: string, decrement: number, cb?: Callback<number>): R;
    discard(cb?: Callback<'OK'>): R;
    DISCARD(cb?: Callback<'OK'>): R;
    dump(key: string, cb?: Callback<string>): R;
    DUMP(key: string, cb?: Callback<string>): R;
    echo<T extends string>(message: T, cb?: Callback<T>): R;
    ECHO<T extends string>(message: T, cb?: Callback<T>): R;
    expire(key: string, seconds: number, cb?: Callback<number>): R;
    EXPIRE(key: string, seconds: number, cb?: Callback<number>): R;
    expireat(key: string, timestamp: number, cb?: Callback<number>): R;
    EXPIREAT(key: string, timestamp: number, cb?: Callback<number>): R;
    flushall(cb?: Callback<string>): R;
    flushall(async: 'ASYNC', cb?: Callback<string>): R;
    FLUSHALL(cb?: Callback<string>): R;
    FLUSHALL(async: 'ASYNC', cb?: Callback<string>): R;
    flushdb(cb?: Callback<'OK'>): R;
    flushdb(async: 'ASYNC', cb?: Callback<string>): R;
    FLUSHDB(cb?: Callback<'OK'>): R;
    FLUSHDB(async: 'ASYNC', cb?: Callback<string>): R;
    get(key: string, cb?: Callback<string>): R;
    GET(key: string, cb?: Callback<string>): R;
    getbit(key: string, offset: number, cb?: Callback<number>): R;
    GETBIT(key: string, offset: number, cb?: Callback<number>): R;
    getrange(key: string, start: number, end: number, cb?: Callback<string>): R;
    GETRANGE(key: string, start: number, end: number, cb?: Callback<string>): R;
    getset(key: string, value: string, cb?: Callback<string>): R;
    GETSET(key: string, value: string, cb?: Callback<string>): R;
    hexists(key: string, field: string, cb?: Callback<number>): R;
    HEXISTS(key: string, field: string, cb?: Callback<number>): R;
    hget(key: string, field: string, cb?: Callback<string>): R;
    HGET(key: string, field: string, cb?: Callback<string>): R;
    hgetall(key: string, cb?: Callback<{
        [key: string]: string;
    }>): R;
    HGETALL(key: string, cb?: Callback<{
        [key: string]: string;
    }>): R;
    hincrby(key: string, field: string, increment: number, cb?: Callback<number>): R;
    HINCRBY(key: string, field: string, increment: number, cb?: Callback<number>): R;
    hincrbyfloat(key: string, field: string, increment: number, cb?: Callback<string>): R;
    HINCRBYFLOAT(key: string, field: string, increment: number, cb?: Callback<string>): R;
    hkeys(key: string, cb?: Callback<string[]>): R;
    HKEYS(key: string, cb?: Callback<string[]>): R;
    hlen(key: string, cb?: Callback<number>): R;
    HLEN(key: string, cb?: Callback<number>): R;
    hset(key: string, field: string, value: string, cb?: Callback<number>): R;
    HSET(key: string, field: string, value: string, cb?: Callback<number>): R;
    hsetnx(key: string, field: string, value: string, cb?: Callback<number>): R;
    HSETNX(key: string, field: string, value: string, cb?: Callback<number>): R;
    hstrlen(key: string, field: string, cb?: Callback<number>): R;
    HSTRLEN(key: string, field: string, cb?: Callback<number>): R;
    hvals(key: string, cb?: Callback<string[]>): R;
    HVALS(key: string, cb?: Callback<string[]>): R;
    incr(key: string, cb?: Callback<number>): R;
    INCR(key: string, cb?: Callback<number>): R;
    incrby(key: string, increment: number, cb?: Callback<number>): R;
    INCRBY(key: string, increment: number, cb?: Callback<number>): R;
    incrbyfloat(key: string, increment: number, cb?: Callback<string>): R;
    INCRBYFLOAT(key: string, increment: number, cb?: Callback<string>): R;
    keys(pattern: string, cb?: Callback<string[]>): R;
    KEYS(pattern: string, cb?: Callback<string[]>): R;
    lastsave(cb?: Callback<number>): R;
    LASTSAVE(cb?: Callback<number>): R;
    lindex(key: string, index: number, cb?: Callback<string>): R;
    LINDEX(key: string, index: number, cb?: Callback<string>): R;
    linsert(key: string, dir: 'BEFORE' | 'AFTER', pivot: string, value: string, cb?: Callback<string>): R;
    LINSERT(key: string, dir: 'BEFORE' | 'AFTER', pivot: string, value: string, cb?: Callback<string>): R;
    llen(key: string, cb?: Callback<number>): R;
    LLEN(key: string, cb?: Callback<number>): R;
    lpop(key: string, cb?: Callback<string>): R;
    LPOP(key: string, cb?: Callback<string>): R;
    lpushx(key: string, value: string, cb?: Callback<number>): R;
    LPUSHX(key: string, value: string, cb?: Callback<number>): R;
    lrange(key: string, start: number, stop: number, cb?: Callback<string[]>): R;
    LRANGE(key: string, start: number, stop: number, cb?: Callback<string[]>): R;
    lrem(key: string, count: number, value: string, cb?: Callback<number>): R;
    LREM(key: string, count: number, value: string, cb?: Callback<number>): R;
    lset(key: string, index: number, value: string, cb?: Callback<'OK'>): R;
    LSET(key: string, index: number, value: string, cb?: Callback<'OK'>): R;
    ltrim(key: string, start: number, stop: number, cb?: Callback<'OK'>): R;
    LTRIM(key: string, start: number, stop: number, cb?: Callback<'OK'>): R;
    move(key: string, db: string | number): R;
    MOVE(key: string, db: string | number): R;
    persist(key: string, cb?: Callback<number>): R;
    PERSIST(key: string, cb?: Callback<number>): R;
    pexpire(key: string, milliseconds: number, cb?: Callback<number>): R;
    PEXPIRE(key: string, milliseconds: number, cb?: Callback<number>): R;
    pexpireat(key: string, millisecondsTimestamp: number, cb?: Callback<number>): R;
    PEXPIREAT(key: string, millisecondsTimestamp: number, cb?: Callback<number>): R;
    psetex(key: string, milliseconds: number, value: string, cb?: Callback<'OK'>): R;
    PSETEX(key: string, milliseconds: number, value: string, cb?: Callback<'OK'>): R;
    pttl(key: string, cb?: Callback<number>): R;
    PTTL(key: string, cb?: Callback<number>): R;
    quit(cb?: Callback<'OK'>): R;
    QUIT(cb?: Callback<'OK'>): R;
    randomkey(cb?: Callback<string>): R;
    RANDOMKEY(cb?: Callback<string>): R;
    readonly(cb?: Callback<string>): R;
    READONLY(cb?: Callback<string>): R;
    readwrite(cb?: Callback<string>): R;
    READWRITE(cb?: Callback<string>): R;
    rename(key: string, newkey: string, cb?: Callback<'OK'>): R;
    RENAME(key: string, newkey: string, cb?: Callback<'OK'>): R;
    renamenx(key: string, newkey: string, cb?: Callback<number>): R;
    RENAMENX(key: string, newkey: string, cb?: Callback<number>): R;
    restore(key: string, ttl: number, serializedValue: string, cb?: Callback<'OK'>): R;
    RESTORE(key: string, ttl: number, serializedValue: string, cb?: Callback<'OK'>): R;
    role(cb?: Callback<[string, number, Array<[string, string, string]>]>): R;
    ROLE(cb?: Callback<[string, number, Array<[string, string, string]>]>): R;
    rpop(key: string, cb?: Callback<string>): R;
    RPOP(key: string, cb?: Callback<string>): R;
    rpoplpush(source: string, destination: string, cb?: Callback<string>): R;
    RPOPLPUSH(source: string, destination: string, cb?: Callback<string>): R;
    rpushx(key: string, value: string, cb?: Callback<number>): R;
    RPUSHX(key: string, value: string, cb?: Callback<number>): R;
    save(cb?: Callback<string>): R;
    SAVE(cb?: Callback<string>): R;
    scard(key: string, cb?: Callback<number>): R;
    SCARD(key: string, cb?: Callback<number>): R;
    select(index: number | string, cb?: Callback<string>): R;
    SELECT(index: number | string, cb?: Callback<string>): R;
    set(key: string, value: string, cb?: Callback<'OK'>): R;
    set(key: string, value: string, flag: string, cb?: Callback<'OK'>): R;
    set(key: string, value: string, mode: string, duration: number, cb?: Callback<'OK' | undefined>): R;
    set(key: string, value: string, mode: string, duration: number, flag: string, cb?: Callback<'OK' | undefined>): R;
    SET(key: string, value: string, cb?: Callback<'OK'>): R;
    SET(key: string, value: string, flag: string, cb?: Callback<'OK'>): R;
    SET(key: string, value: string, mode: string, duration: number, cb?: Callback<'OK' | undefined>): R;
    SET(key: string, value: string, mode: string, duration: number, flag: string, cb?: Callback<'OK' | undefined>): R;
    setbit(key: string, offset: number, value: string, cb?: Callback<number>): R;
    SETBIT(key: string, offset: number, value: string, cb?: Callback<number>): R;
    setex(key: string, seconds: number, value: string, cb?: Callback<string>): R;
    SETEX(key: string, seconds: number, value: string, cb?: Callback<string>): R;
    setnx(key: string, value: string, cb?: Callback<number>): R;
    SETNX(key: string, value: string, cb?: Callback<number>): R;
    setrange(key: string, offset: number, value: string, cb?: Callback<number>): R;
    SETRANGE(key: string, offset: number, value: string, cb?: Callback<number>): R;
    sismember(key: string, member: string, cb?: Callback<number>): R;
    SISMEMBER(key: string, member: string, cb?: Callback<number>): R;
    slaveof(host: string, port: string | number, cb?: Callback<string>): R;
    SLAVEOF(host: string, port: string | number, cb?: Callback<string>): R;
    smembers(key: string, cb?: Callback<string[]>): R;
    SMEMBERS(key: string, cb?: Callback<string[]>): R;
    smove(source: string, destination: string, member: string, cb?: Callback<number>): R;
    SMOVE(source: string, destination: string, member: string, cb?: Callback<number>): R;
    spop(key: string, cb?: Callback<string>): R;
    spop(key: string, count: number, cb?: Callback<string[]>): R;
    SPOP(key: string, cb?: Callback<string>): R;
    SPOP(key: string, count: number, cb?: Callback<string[]>): R;
    srandmember(key: string, cb?: Callback<string>): R;
    srandmember(key: string, count: number, cb?: Callback<string[]>): R;
    SRANDMEMBER(key: string, cb?: Callback<string>): R;
    SRANDMEMBER(key: string, count: number, cb?: Callback<string[]>): R;
    strlen(key: string, cb?: Callback<number>): R;
    STRLEN(key: string, cb?: Callback<number>): R;
    sync(cb?: Callback<undefined>): R;
    SYNC(cb?: Callback<undefined>): R;
    time(cb?: Callback<[string, string]>): R;
    TIME(cb?: Callback<[string, string]>): R;
    ttl(key: string, cb?: Callback<number>): R;
    TTL(key: string, cb?: Callback<number>): R;
    type(key: string, cb?: Callback<string>): R;
    TYPE(key: string, cb?: Callback<string>): R;
    unwatch(cb?: Callback<'OK'>): R;
    UNWATCH(cb?: Callback<'OK'>): R;
    wait(numslaves: number, timeout: number, cb?: Callback<number>): R;
    WAIT(numslaves: number, timeout: number, cb?: Callback<number>): R;
    zcard(key: string, cb?: Callback<number>): R;
    ZCARD(key: string, cb?: Callback<number>): R;
    zcount(key: string, min: number | string, max: number | string, cb?: Callback<number>): R;
    ZCOUNT(key: string, min: number | string, max: number | string, cb?: Callback<number>): R;
    zincrby(key: string, increment: number, member: string, cb?: Callback<string>): R;
    ZINCRBY(key: string, increment: number, member: string, cb?: Callback<string>): R;
    zlexcount(key: string, min: string, max: string, cb?: Callback<number>): R;
    ZLEXCOUNT(key: string, min: string, max: string, cb?: Callback<number>): R;
    zrange(key: string, start: number, stop: number, cb?: Callback<string[]>): R;
    zrange(key: string, start: number, stop: number, withscores: string, cb?: Callback<string[]>): R;
    ZRANGE(key: string, start: number, stop: number, cb?: Callback<string[]>): R;
    ZRANGE(key: string, start: number, stop: number, withscores: string, cb?: Callback<string[]>): R;
    zrangebylex(key: string, min: string, max: string, cb?: Callback<string[]>): R;
    zrangebylex(key: string, min: string, max: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    ZRANGEBYLEX(key: string, min: string, max: string, cb?: Callback<string[]>): R;
    ZRANGEBYLEX(key: string, min: string, max: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    zrevrangebylex(key: string, min: string, max: string, cb?: Callback<string[]>): R;
    zrevrangebylex(key: string, min: string, max: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    ZREVRANGEBYLEX(key: string, min: string, max: string, cb?: Callback<string[]>): R;
    ZREVRANGEBYLEX(key: string, min: string, max: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    zrangebyscore(key: string, min: number | string, max: number | string, cb?: Callback<string[]>): R;
    zrangebyscore(key: string, min: number | string, max: number | string, withscores: string, cb?: Callback<string[]>): R;
    zrangebyscore(key: string, min: number | string, max: number | string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    zrangebyscore(key: string, min: number | string, max: number | string, withscores: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    ZRANGEBYSCORE(key: string, min: number | string, max: number | string, cb?: Callback<string[]>): R;
    ZRANGEBYSCORE(key: string, min: number | string, max: number | string, withscores: string, cb?: Callback<string[]>): R;
    ZRANGEBYSCORE(key: string, min: number | string, max: number | string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    ZRANGEBYSCORE(key: string, min: number | string, max: number | string, withscores: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    zrank(key: string, member: string, cb?: Callback<number | null>): R;
    ZRANK(key: string, member: string, cb?: Callback<number | null>): R;
    zremrangebylex(key: string, min: string, max: string, cb?: Callback<number>): R;
    ZREMRANGEBYLEX(key: string, min: string, max: string, cb?: Callback<number>): R;
    zremrangebyrank(key: string, start: number, stop: number, cb?: Callback<number>): R;
    ZREMRANGEBYRANK(key: string, start: number, stop: number, cb?: Callback<number>): R;
    zremrangebyscore(key: string, min: string | number, max: string | number, cb?: Callback<number>): R;
    ZREMRANGEBYSCORE(key: string, min: string | number, max: string | number, cb?: Callback<number>): R;
    zrevrange(key: string, start: number, stop: number, cb?: Callback<string[]>): R;
    zrevrange(key: string, start: number, stop: number, withscores: string, cb?: Callback<string[]>): R;
    ZREVRANGE(key: string, start: number, stop: number, cb?: Callback<string[]>): R;
    ZREVRANGE(key: string, start: number, stop: number, withscores: string, cb?: Callback<string[]>): R;
    zrevrangebyscore(key: string, min: number | string, max: number | string, cb?: Callback<string[]>): R;
    zrevrangebyscore(key: string, min: number | string, max: number | string, withscores: string, cb?: Callback<string[]>): R;
    zrevrangebyscore(key: string, min: number | string, max: number | string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    zrevrangebyscore(key: string, min: number | string, max: number | string, withscores: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    ZREVRANGEBYSCORE(key: string, min: number | string, max: number | string, cb?: Callback<string[]>): R;
    ZREVRANGEBYSCORE(key: string, min: number | string, max: number | string, withscores: string, cb?: Callback<string[]>): R;
    ZREVRANGEBYSCORE(key: string, min: number | string, max: number | string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    ZREVRANGEBYSCORE(key: string, min: number | string, max: number | string, withscores: string, limit: string, offset: number, count: number, cb?: Callback<string[]>): R;
    zrevrank(key: string, member: string, cb?: Callback<number | null>): R;
    ZREVRANK(key: string, member: string, cb?: Callback<number | null>): R;
    zscore(key: string, member: string, cb?: Callback<string>): R;
    ZSCORE(key: string, member: string, cb?: Callback<string>): R;
}
export interface IWrappedRedisClient extends ICommands<Promise<any>> {
    connected: boolean;
    command_queue_length: number;
    offline_queue_length: number;
    retry_delay: number;
    retry_backoff: number;
    command_queue: any[];
    offline_queue: any[];
    connection_id: number;
    server_info: IServerInfo;
    stream: any;
    on(event: 'message' | 'message_buffer', listener: (channel: string, message: string) => void): this;
    on(event: 'pmessage' | 'pmessage_buffer', listener: (pattern: string, channel: string, message: string) => void): this;
    on(event: 'subscribe' | 'unsubscribe', listener: (channel: string, count: number) => void): this;
    on(event: 'psubscribe' | 'punsubscribe', listener: (pattern: string, count: number) => void): this;
    on(event: string, listener: (...args: any[]) => void): this;
    end(flush?: boolean): void;
    unref(): void;
    cork(): void;
    uncork(): void;
    duplicate(options?: IClientOpts, cb?: Callback<IWrappedRedisClient>): IWrappedRedisClient;
    sendCommand(command: string, cb?: Callback<any>): boolean;
    sendCommand(command: string, args?: any[], cb?: Callback<any>): boolean;
    send_command(command: string, cb?: Callback<any>): boolean;
    send_command(command: string, args?: any[], cb?: Callback<any>): boolean;
    addCommand(command: string): void;
    add_command(command: string): void;
}
