/**
 * Cluster Lock Manager
 * Distributed locking using Redis for multi-instance worker coordination
 * Sealed namespace for immutability
 */
import { type RedisConfig } from '../../../src/index.js';
export type LockAcquisitionOptions = {
    lockKey: string;
    ttl: number;
    region?: string;
    userId?: string;
};
export type LockInfo = {
    lockKey: string;
    instanceId: string;
    acquiredAt: Date;
    expiresAt: Date;
    region: string;
    userId?: string;
};
export type AuditLogEntry = {
    timestamp: Date;
    operation: 'acquire' | 'release' | 'extend' | 'force-release';
    lockKey: string;
    instanceId: string;
    userId?: string;
    reason?: string;
    success: boolean;
};
/**
 * Cluster Lock Manager - Sealed namespace
 */
export declare const ClusterLock: Readonly<{
    /**
     * Initialize the lock manager with Redis connection
     */
    initialize(config: RedisConfig): void;
    /**
     * Acquire a distributed lock
     */
    acquire(options: LockAcquisitionOptions): Promise<boolean>;
    /**
     * Release a distributed lock
     */
    release(lockKey: string, userId?: string): Promise<boolean>;
    /**
     * Extend lock TTL
     */
    extend(lockKey: string, ttl: number): Promise<boolean>;
    /**
     * Check if lock is held by this instance
     */
    isHeldByMe(lockKey: string): Promise<boolean>;
    /**
     * Force release a lock (admin operation)
     */
    forceRelease(lockKey: string, userId: string, reason: string): Promise<boolean>;
    /**
     * List all locks
     */
    listLocks(): Promise<ReadonlyArray<{
        key: string;
        owner: string;
        region?: string;
    }>>;
    /**
     * Get lock owner
     */
    getLockOwner(lockKey: string): Promise<string | null>;
    /**
     * Get locks by region
     */
    getLocksByRegion(region: string): ReadonlyArray<LockInfo>;
    /**
     * Get audit log for a lock
     */
    getAuditLog(lockKey: string, limit?: number): Promise<ReadonlyArray<AuditLogEntry>>;
    /**
     * Get active locks held by this instance
     */
    getActiveLocks(): ReadonlyArray<LockInfo>;
    /**
     * Get instance ID
     */
    getInstanceId(): string;
    /**
     * Shutdown and release all locks
     */
    shutdown(): Promise<void>;
}>;
//# sourceMappingURL=ClusterLock.d.ts.map