import { RedisClientType } from "redis";
import { types } from "@apiratorjs/locking";
import { BaseDistributedLockPrimitive } from "./base-distributed-lock-primitive";
export declare class RedisDistributedMutex extends BaseDistributedLockPrimitive implements types.IDistributedMutex {
    constructor(props: types.TDistributedMutexConstructorProps & {
        redisClient: RedisClientType;
    });
    destroy(message?: string): Promise<void>;
    acquire(params?: types.TAcquireParams): Promise<types.IReleaser<types.TMutexToken>>;
    cancel(errMessage?: string): Promise<void>;
    isLocked(): Promise<boolean>;
    runExclusive<T>(fn: () => Promise<T> | T): Promise<T>;
    runExclusive<T>(params: types.TAcquireParams, fn: () => Promise<T> | T): Promise<T>;
    waitForUnlock(): Promise<void>;
    protected tryAcquire(timeoutMs: number): Promise<types.TAcquireToken | undefined>;
    protected release(token: types.TAcquireToken): Promise<void>;
    private ensureAlive;
}
//# sourceMappingURL=redis-distributed-mutex.d.ts.map