import Redis from 'ioredis';
export interface Logger {
    log(message: string, ...args: any[]): void;
    error(message: string, ...args: any[]): void;
    warn(message: string, ...args: any[]): void;
}
export declare class RedisCacheService {
    private redis;
    private logger;
    constructor(redis: Redis, logger?: Logger);
    get<T>(key: string): Promise<T | undefined>;
    getMany<T>(keys: string[]): Promise<(T | undefined | null)[]>;
    setnx<T>(key: string, value: T, cacheNullable?: boolean): Promise<boolean>;
    set<T>(key: string, value: T, ttl?: number | null, cacheNullable?: boolean): Promise<void>;
    setMany<T>(keys: string[], values: T[], ttl: number, cacheNullable?: boolean): Promise<void>;
    expire(key: string, ttl: number): Promise<void>;
    pexpire(key: string, ttl: number): Promise<void>;
    delete(key: string): Promise<void>;
    deleteMany(keys: string[]): Promise<void>;
    deleteByPattern(keyPattern: string): Promise<void>;
    flushDb(): Promise<void>;
    getOrSet<T>(key: string, createValueFunc: () => Promise<T>, ttl: number, cacheNullable?: boolean): Promise<T>;
    setOrUpdate<T>(key: string, createValueFunc: () => Promise<T>, ttl: number, cacheNullable?: boolean): Promise<T>;
    scan(pattern: string): Promise<string[]>;
    increment(key: string, ttl?: number | null): Promise<number>;
    incrby(key: string, value: number | string): Promise<number>;
    decrement(key: string, ttl?: number | null): Promise<number>;
    hget<T>(hash: string, field: string): Promise<T | null>;
    hgetall(hash: string): Promise<Record<string, any> | null>;
    hset<T>(hash: string, field: string, value: T, cacheNullable?: boolean): Promise<number>;
    hsetMany(hash: string, fieldsValues: [string, any][], cacheNullable?: boolean): Promise<number>;
    hincrby(hash: string, field: string, value: number | string): Promise<number>;
    hkeys(hash: string): Promise<string[]>;
    zadd(key: string, member: string, value: number, options?: string[]): Promise<string | number>;
    zincrby(key: string, member: string, increment: number): Promise<string>;
    zrank(key: string, member: string): Promise<number | null>;
    keys(key: string): Promise<string[]>;
    zrevrank(key: string, member: string): Promise<number | null>;
    sadd(key: string, ...values: string[]): Promise<number | null>;
    sunionstore(destination: string, keys: string[]): Promise<number>;
    smembers(key: string): Promise<string[]>;
    zrevrange(setName: string, start: number, stop: number, withScores?: boolean): Promise<string[]>;
    zrangebyscore(setName: string, start: number | string, stop: number | string, options?: {
        withScores?: boolean;
    }): Promise<string[]>;
    zrange(setName: string, start: number | string, stop: number | string, options?: {
        order?: 'REV' | undefined;
        withScores?: boolean;
    }): Promise<string[]>;
    zmscore(setName: string, ...args: string[]): Promise<(string | null)[]>;
    scard(key: string): Promise<number>;
    zcount(key: string, min: number | '-inf', max: number | '+inf'): Promise<number>;
    defineCommand(name: string, definition: {
        lua: string;
        numberOfKeys?: number;
        readOnly?: boolean;
    }): void;
    executeCommand(name: string, ...args: (string | Buffer | number)[]): Promise<unknown>;
    rpush(key: string, items: any): Promise<void>;
    lrange(key: string, start?: number, stop?: number): Promise<string[]>;
    lpop(key: string): Promise<string[]>;
    private buildInternalCreateValueFunc;
    asyncMulti: (commands: any[]) => Promise<any>;
}
//# sourceMappingURL=redis-cache.service.d.ts.map