import { ResultAsync } from "neverthrow";
import redis from "redis";
import Redlock from "redlock";
import { IRedisClient } from "./IRedisClient";
import { IRedisConfig } from "./IRedisConfig";
import { IRedlockWrapper } from "./IRedlockWrapper";
import { RedisError } from "./RedisError";
export declare class RedisClient implements IRedisClient {
    protected redisClient: redis.RedisClient;
    protected config: IRedisConfig;
    protected redlock: Redlock;
    constructor(redisClient: redis.RedisClient, config: IRedisConfig);
    get(key: string): ResultAsync<string | null, RedisError>;
    del(key: string): ResultAsync<void, RedisError>;
    set(key: string, value: string, duration: number): ResultAsync<void, RedisError>;
    sendCommand<T>(command: string, args: unknown[]): ResultAsync<T, RedisError>;
    lock(lockNames: string | string[], ttl: number): ResultAsync<IRedlockWrapper, RedisError>;
    duplicate(): IRedisClient;
    getClient(): redis.RedisClient;
}
//# sourceMappingURL=RedisClient.d.ts.map