import { IMetricsService } from './interfaces/MetricsService.types';
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 detectionCounter;
    private errorCounter;
    private modelLoadCounter;
    private userInteractionCounter;
    private detectionLatencyHistogram;
    private modelLoadLatencyHistogram;
    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<string, any>): void;
    recordHistogram(name: string, value: number, attributes?: Record<string, any>): void;
    setGauge(name: string, value: number, attributes?: Record<string, any>): void;
    measureDuration<T>(name: string, fn: () => T | Promise<T>, attributes?: Record<string, any>): Promise<T>;
    flush(): Promise<void>;
    cleanup(): Promise<void>;
    /**
     * Record a successful face detection
     */
    recordDetection(facesDetected: number, durationMs: number): void;
    /**
     * Record an error
     */
    recordError(errorType: string, operation: string): void;
    /**
     * Record model load performance
     */
    recordModelLoad(modelType: 'face-detection', durationMs: number, cached: boolean): void;
    /**
     * Record image size
     */
    recordImageSize(sizeBytes: number): void;
    /**
     * Update active sessions count
     */
    updateActiveSessions(count: number): void;
    /**
     * Record user interaction
     */
    recordUserInteraction(interactionType: string): void;
}
