import type { RedisClientType } from 'redis';
export default class RedisKvs<T> implements RKVS<T> {
    private redisClient;
    private readonly dbName;
    private readonly dehydratedKeys?;
    private readonly hydratedKeys?;
    constructor(redisClient: RedisClientType, dbName: string, keyMapping?: KVS<string>);
    get(prop: string): Promise<T>;
    getMany(prop: string[]): Promise<KVS<T>>;
    exists(prop: string): Promise<boolean>;
    existsMany(prop: string[], blocking?: boolean): Promise<KVS<boolean>>;
    set(prop: string, val: T): Promise<number>;
    setMany(val: KVS<T>): Promise<number>;
    delete(prop: string): Promise<number>;
    deleteMany(prop: string[]): Promise<number>;
    keys(): Promise<string[]>;
    len(): Promise<number>;
    iterateItems(numWorkers: number, func: (items: KVS<T>, runningWorkers: number) => Promise<void>): Promise<void>;
    scan(scanCursor: number): Promise<{
        cursor: number;
        items: KVS<T>;
    }>;
    flush(): Promise<number>;
    private hydrateObject;
    private dehydrateObject;
}
