/** * AutoExtensionManager - Unified auto-extension logic for locks * Eliminates duplication between Lock and InternalRedlockLock classes */ import { EventEmitter } from "events"; export interface AutoExtensionConfig { /** Time-to-live for the lock in milliseconds */ ttl: number; /** Threshold in milliseconds before expiration to trigger extension */ autoExtendThreshold: number; /** Current expiration timestamp */ expiration: number; /** Whether the lock is still valid */ isValid: () => boolean; /** Function to extend the lock */ extend: (ttl: number) => Promise<{ success: boolean; expiration: number; }>; /** Optional error handler */ onError?: (error: Error) => void; } export interface AutoExtensionSignal extends EventEmitter { aborted: boolean; error?: Error; expiration: number; abort(error?: Error): void; addEventListener(type: "abort", listener: () => void): void; removeEventListener(type: "abort", listener: () => void): void; } /** * Manages automatic lock extension with configurable thresholds */ export declare class AutoExtensionManager { private config; private extensionTimer?; private extensionPromise?; private signal?; private _expiration; private _extensions; private _stopped; constructor(config: AutoExtensionConfig); /** * Get current expiration timestamp */ get expiration(): number; /** * Get number of successful extensions */ get extensions(): number; /** * Get time until expiration in milliseconds */ get timeToExpiration(): number; /** * Start auto-extension cycle */ start(): AutoExtensionSignal; /** * Stop auto-extension cycle */ stop(): Promise; /** * Schedule the next extension check */ private scheduleNextExtension; /** * Perform lock extension */ private performExtension; /** * Update expiration (for manual extensions) */ updateExpiration(expiration: number): void; } //# sourceMappingURL=auto-extension-manager.d.ts.map