import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import Redlock, { ExecutionResult, Lock, RedlockAbortSignal } from 'redlock';
import { LockServiceOptions } from './types';
export declare class LockService implements OnModuleInit, OnModuleDestroy {
    readonly options: LockServiceOptions;
    private readonly defaultLockOptions;
    private redis;
    redlock: Redlock;
    constructor(options: LockServiceOptions);
    onModuleInit(): Promise<void>;
    onModuleDestroy(): Promise<void>;
    private waitUntilInitialized;
    get isInitialized(): boolean;
    checkInitialization(): void;
    errorHandler(error: unknown): void;
    createConnection(): void;
    optimistic<T = unknown>(key: string, ttl: number, cb: (signal: RedlockAbortSignal) => Promise<T>): Promise<T>;
    lock(key: string, ttl: number): Promise<Lock>;
    get(key: string, lockId: string): Promise<Lock | null>;
    unlock(key: string, lockId: string): Promise<ExecutionResult>;
    close(): Promise<void>;
}
