import { ICallback } from '../../async/index.js';
import { PanicError } from '../../errors/index.js';
import { EventEmitter } from '../../event/index.js';
import { IRedisClient, IRedisTransaction, TRedisClientEvent } from '../types/index.js';
export declare enum ELuaScriptName {
    LPOPRPUSH = "LPOPRPUSH",
    ZPOPRPUSH = "ZPOPRPUSH",
    ZPOPLPUSH = "ZPOPLPUSH"
}
export declare abstract class RedisClientAbstract extends EventEmitter<TRedisClientEvent> implements IRedisClient {
    protected static scripts: Record<string, string>;
    protected static redisServerVersion: number[] | null;
    protected connectionClosed: boolean;
    protected init(): void;
    validateRedisVersion(major: number, feature?: number, minor?: number): boolean;
    validateRedisServerSupport(cb: ICallback): void;
    abstract exists(key: string, cb: ICallback<boolean>): void;
    abstract ping(cb: ICallback<string>): void;
    abstract mget(keys: string[], cb: ICallback<(string | null)[]>): void;
    abstract incr(key: string, cb: ICallback<number>): void;
    abstract decr(key: string, cb: ICallback<number>): void;
    abstract incrby(key: string, increment: number, cb: ICallback<number>): void;
    abstract decrby(key: string, decrement: number, cb: ICallback<number>): void;
    abstract expire(key: string, seconds: number, cb: ICallback<number>): void;
    abstract pexpire(key: string, milliseconds: number, cb: ICallback<number>): void;
    abstract ttl(key: string, cb: ICallback<number>): void;
    abstract pttl(key: string, cb: ICallback<number>): void;
    abstract lpush(key: string, elements: string | string[], cb: ICallback<number>): void;
    abstract rpush(key: string, elements: string | string[], cb: ICallback<number>): void;
    abstract lpop(key: string, cb: ICallback<string | null>): void;
    abstract ltrim(key: string, start: number, stop: number, cb: ICallback<string>): void;
    abstract zcount(key: string, min: string | number, max: string | number, cb: ICallback<number>): void;
    abstract zscore(key: string, member: string, cb: ICallback<string | null>): void;
    abstract set(key: string, value: string, options: {
        expire?: {
            mode: 'EX' | 'PX';
            value: number;
        };
        exists?: 'NX' | 'XX';
    }, cb: ICallback<string | null>): void;
    abstract zadd(key: string, score: number, member: string, cb: ICallback<number | string>): void;
    abstract multi(): IRedisTransaction;
    abstract watch(args: string[], cb: ICallback<string>): void;
    abstract unwatch(cb: ICallback<string>): void;
    abstract sismember(key: string, member: string, cb: ICallback<number>): void;
    abstract zcard(key: string, cb: ICallback<number>): void;
    abstract zrange(key: string, min: number, max: number, cb: ICallback<string[]>): void;
    abstract zrevrange(key: string, min: number, max: number, cb: ICallback<string[]>): void;
    abstract psubscribe(pattern: string): void;
    abstract punsubscribe(channel?: string): void;
    abstract subscribe(channel: string): void;
    abstract unsubscribe(channel?: string): void;
    abstract zrangebyscore(key: string, min: number | string, max: number | string, offset: number, count: number, cb: ICallback<string[]>): void;
    abstract smembers(key: string, cb: ICallback<string[]>): void;
    abstract sscan(key: string, cursor: string, options: {
        MATCH?: string;
        COUNT?: number;
    }, cb: ICallback<{
        cursor: string;
        items: string[];
    }>): void;
    sscanAll(key: string, options: {
        MATCH?: string;
        COUNT?: number;
    }, cb: ICallback<string[]>): void;
    abstract sadd(key: string, member: string, cb: ICallback<number>): void;
    abstract srem(key: string, member: string, cb: ICallback<number>): void;
    abstract scard(key: string, cb: ICallback<number>): void;
    abstract hgetall(key: string, cb: ICallback<Record<string, string>>): void;
    abstract hscan(key: string, cursor: string, options: {
        MATCH?: string;
        COUNT?: number;
    }, cb: ICallback<{
        cursor: string;
        result: Record<string, string>;
    }>): void;
    hscanAll(key: string, options: {
        MATCH?: string;
        COUNT?: number;
    }, cb: ICallback<Record<string, string>>): void;
    abstract hget(key: string, field: string, cb: ICallback<string | null>): void;
    abstract hset(key: string, field: string, value: string | number, cb: ICallback<number>): void;
    abstract hdel(key: string, fields: string | string[], cb: ICallback<number>): void;
    abstract lrange(key: string, start: number, stop: number, cb: ICallback<string[]>): void;
    abstract lindex(key: string, index: number, cb: ICallback<string | null>): void;
    abstract hkeys(key: string, cb: ICallback<string[]>): void;
    abstract hlen(key: string, cb: ICallback<number>): void;
    abstract brpoplpush(source: string, destination: string, timeout: number, cb: ICallback<string | null>): void;
    abstract rpoplpush(source: string, destination: string, cb: ICallback<string | null>): void;
    zpoprpush(source: string, destination: string, cb: ICallback<string | null>): void;
    zpoplpush(source: string, destination: string, cb: ICallback<string | null>): void;
    abstract zscan(key: string, cursor: string, options: {
        MATCH?: string;
        COUNT?: number;
    }, cb: ICallback<{
        cursor: string;
        items: string[];
    }>): void;
    lpoprpush(source: string, destination: string, cb: ICallback<string | null>): void;
    abstract zrangebyscorewithscores(source: string, min: number, max: number, cb: ICallback<Record<string, string>>): void;
    abstract zrem(source: string, id: string, cb: ICallback<number>): void;
    abstract rpop(key: string, cb: ICallback<string | null>): void;
    abstract lrem(key: string, count: number, element: string, cb: ICallback<number>): void;
    abstract publish(channel: string, message: string, cb: ICallback<number>): void;
    abstract flushall(cb: ICallback<string>): void;
    abstract loadScript(script: string, cb: ICallback<string>): void;
    abstract evalsha(hash: string, args: (string | number)[] | string | number, cb: (err?: Error | null, res?: unknown) => void): void;
    abstract get(key: string, cb: ICallback<string | null>): void;
    abstract del(key: string | string[], cb: ICallback<number>): void;
    abstract llen(key: string, cb: ICallback<number>): void;
    abstract lmove(source: string, destination: string, from: 'LEFT' | 'RIGHT', to: 'LEFT' | 'RIGHT', cb: ICallback<string | null>): void;
    abstract zremrangebyscore(source: string, min: number | string, max: number | string, cb: ICallback<number>): void;
    abstract hmget(source: string, keys: string[], cb: ICallback<(string | null)[]>): void;
    abstract halt(cb: ICallback): void;
    abstract end(flush: boolean): void;
    abstract shutdown(cb: ICallback): void;
    abstract getInfo(cb: ICallback<string>): void;
    updateServerVersion(cb: ICallback): void;
    loadBuiltInScriptFiles(cb: ICallback): void;
    loadScriptFiles(scriptMap: Record<string, string | string[]>, cb: ICallback<Record<string, string>>): void;
    getScriptId(name: string): string | PanicError;
    runScript(scriptName: string, keys: (string | number)[], args: (string | number)[], cb: ICallback<unknown>): void;
}
//# sourceMappingURL=redis-client-abstract.d.ts.map