// Type definitions for Redlock // Project: https://github.com/mike-marcacci/node-redlock // Definitions by: Ilya Mochalov // Definitions: https://github.com/borisyankov/DefinitelyTyped /// declare module RedlockTypes { interface LockError extends Error {} interface NodeifyCallback { (err: any, value?: T): void; } interface Lock { redlock: Redlock; resource: string; value: any; expiration: number; unlock(callback?: NodeifyCallback): Promise; extend(ttl: number, callback?: NodeifyCallback): Promise; } interface RedlockOptions { driftFactor?: number; retryCount?: number; retryDelay?: number; } class Redlock { LockError: LockError; driftFactor: number; retryCount: number; retryDelay: number; servers: any[]; // array of redis.RedisClient constructor(clients: any[], options?: RedlockOptions); acquire(resource: string, ttl: number, callback?: NodeifyCallback): Promise; lock(resource: string, ttl: number, callback?: NodeifyCallback): Promise; disposer(resource: string, ttl: number): any; // return bluebird.Disposer release(lock: Lock, callback?: NodeifyCallback): Promise; unlock(lock: Lock, callback?: NodeifyCallback): Promise; extend(lock: Lock, ttl: number, callback?: NodeifyCallback): Promise; _lock(resource: string, value: string, ttl: number, callback?: NodeifyCallback): Promise; _random(): string; } } declare module "redlock" { import Redlock = RedlockTypes.Redlock; export = Redlock; }