import { CacheSetting, LockCacheSettings, LockerOptions } from './cache-settings';
import { Lock } from 'redlock';
import { Logger } from './logger';
export declare class JohnyCacheService {
    private instanceId;
    private logger;
    private memoryCache;
    private redis;
    private redisPubSubServices;
    private redisCache;
    private redlock;
    private defaultLockOptions;
    private defaultRedlock;
    constructor(redisConnectionString: string, logger?: Logger, defaultLockOptions?: LockerOptions);
    set(cacheSettings: CacheSetting, value: any): Promise<void>;
    get(cacheSettings: CacheSetting): Promise<any>;
    deleteMulti(keys: string[]): Promise<void>;
    deleteByKey(key: string, localTtl?: number): Promise<void>;
    delete(cacheSettings: CacheSetting): Promise<void>;
    getOrSetCache<T>(cacheSettings: CacheSetting, promise: () => Promise<T>, forceRefresh?: boolean): Promise<T>;
    acquireLock(cacheSettings: LockCacheSettings): Promise<Lock | null>;
    releaseLock(lock: Lock): Promise<void>;
    sendDeleteRemoteKeysEvent(keys: string[]): Promise<void>;
    sendRefreshRemoteKeysEvent(keys: string[], ttl: number): Promise<void>;
    handleDeleteRemoteKeysEvent(event: any): Promise<void>;
    handleRefreshRemoteKeysEvent(event: any): Promise<void>;
}
//# sourceMappingURL=johny-cache.d.ts.map