import { Cluster, Redis } from 'ioredis'; import { Lock, Lockable } from '@sidewinder/async'; import * as Redlock from 'redlock'; export declare function DefaultRedlockSettings(): Redlock.Settings; export declare class RedisMutexLockError extends Error { constructor(message: string); } export interface RedisMutexOptions { /** The resource being locked */ resource: string; /** The maximum lifetime in milliseconds in which a lock can be held */ lifetime: number; /** If true will log lock & release errors to stdout */ logError?: boolean; } export type RedisInstanceArray = Array; export type RedisInstance = Redis | Cluster; /** Creates a Redis mutex that issues temporal lifetime locks */ export declare class RedisMutex implements Lockable { #private; constructor(redis: RedisInstanceArray, options: RedisMutexOptions, settings?: Redlock.Settings); constructor(redis: RedisInstance, options: RedisMutexOptions, settings?: Redlock.Settings); lock(): Promise; }