import { IMetricsService } from './interfaces/IMetricsService'; export interface MetricsConfig { collectorUrl?: string; serviceName?: string; serviceVersion?: string; debug?: boolean; customerId?: string; tenantId?: string; environment?: string; exportIntervalMillis?: number; } export declare class MetricsService implements IMetricsService { private meterProvider; private meter; private readonly collectorUrl; private readonly serviceName; private readonly serviceVersion; private readonly debug; private readonly customerId?; private readonly tenantId?; private readonly environment?; private readonly exportIntervalMillis; private metricReader; private captureCounter; private errorCounter; private modelLoadCounter; private userInteractionCounter; private captureLatencyHistogram; private modelLoadLatencyHistogram; private detectionLatencyHistogram; private imageSizeHistogram; private activeSessionsGauge; private memoryUsageGauge; private activeSessions; private gaugeValues; constructor(config?: MetricsConfig); initialize(): void; private initializeMetrics; private getBaseAttributes; incrementCounter(name: string, value?: number, attributes?: Record): void; recordHistogram(name: string, value: number, attributes?: Record): void; setGauge(name: string, value: number, attributes?: Record): void; measureDuration(name: string, fn: () => T | Promise, attributes?: Record): Promise; flush(): Promise; cleanup(): Promise; /** * Record a successful capture */ recordCapture(side: 'front' | 'back', mode: 'auto' | 'manual', durationMs: number): void; /** * Record an error */ recordError(errorType: string, operation: string): void; /** * Record model load performance */ recordModelLoad(modelType: 'detection' | 'classification', durationMs: number, cached: boolean): void; /** * Record detection performance */ recordDetection(durationMs: number, detectionsFound: number): void; /** * Record image size */ recordImageSize(side: 'front' | 'back', sizeBytes: number): void; /** * Update active sessions count */ updateActiveSessions(count: number): void; /** * Record user interaction */ recordUserInteraction(interactionType: string): void; }