/** * Metrics Collection and Monitoring * Comprehensive observability for lock operations */ import { EventEmitter } from "events"; import { LockMetrics, CircuitBreakerMetrics } from "../core/types"; export type { CircuitBreakerMetrics } from "../core/types"; /** * Histogram for measuring operation latencies */ declare class Histogram { private buckets; private sum; private count; constructor(buckets?: number[]); /** * Record a measurement */ observe(value: number): void; /** * Get percentile value */ getPercentile(percentile: number): number; /** * Get average value */ getAverage(): number; /** * Get summary statistics */ getSummary(): { count: number; sum: number; average: number; p50: number; p90: number; p95: number; p99: number; }; /** * Reset histogram */ reset(): void; } /** * Comprehensive metrics collector for NeoLock */ export declare class MetricsCollector extends EventEmitter { private locksAcquired; private locksReleased; private lockExtensions; private failedAcquisitions; private retriesTotal; private activeLocks; private lockDuration; private acquisitionLatency; private releaseLatency; private extensionLatency; private circuitBreakerMetrics; private activeLocksMap; private startTime; private evictionTimer?; /** * Record lock acquisition */ recordLockAcquired(identifier: string, resources: string[], acquisitionLatencyMs: number, ttl?: number): void; /** * Record lock release */ recordLockReleased(identifier: string, releaseLatencyMs: number): void; /** * Record lock extension */ recordLockExtended(identifier: string, extensionLatencyMs: number): void; /** * Record failed acquisition */ recordAcquisitionFailed(resources: string[], error: Error, attempts: number, totalLatencyMs: number): void; /** * Record retry attempt */ recordRetry(identifier: string, attempt: number): void; /** * Update circuit breaker metrics */ updateCircuitBreakerMetrics(clientId: string, metrics: CircuitBreakerMetrics): void; /** * Get comprehensive metrics */ getMetrics(): LockMetrics & { detailed: { lockDurationStats: ReturnType; acquisitionLatencyStats: ReturnType; releaseLatencyStats: ReturnType; extensionLatencyStats: ReturnType; uptimeMs: number; activeLockDetails: Array<{ identifier: string; resources: string[]; durationMs: number; extensions: number; }>; }; }; /** * Get circuit breaker metrics for specific client */ getCircuitBreakerMetrics(clientId: string): CircuitBreakerMetrics | undefined; /** * Get all circuit breaker metrics */ getAllCircuitBreakerMetrics(): Map; /** * Get performance summary */ getPerformanceSummary(): { successRate: number; averageAcquisitionLatency: number; averageReleaseLatency: number; averageLockDuration: number; retryRate: number; circuitBreakerHealth: { overallState: "healthy" | "degraded" | "unhealthy"; openCircuits: number; totalCircuits: number; }; }; /** * Start periodic eviction of expired entries from activeLocksMap. * Runs at most once (idempotent). */ private startEvictionTimer; /** * Remove locks from activeLocksMap that have expired based on * their acquisition time + TTL (with 2x margin for extensions). */ private evictExpiredLocks; /** * Stop the eviction timer (for cleanup/shutdown). */ stopEviction(): void; /** * Reset all metrics */ reset(): void; /** * Export metrics in Prometheus format */ exportPrometheusMetrics(): string; } //# sourceMappingURL=metrics.d.ts.map