export interface IMetricsService {
    /**
     * Initializes the metrics service with the collector endpoint
     */
    initialize(): void;
    /**
     * Increments a counter metric
     * @param name - Name of the counter
     * @param value - Value to add (default: 1)
     * @param attributes - Optional attributes
     */
    incrementCounter(name: string, value?: number, attributes?: Record<string, any>): void;
    /**
     * Records a histogram value (for latencies, sizes, etc.)
     * @param name - Name of the histogram
     * @param value - Value to record
     * @param attributes - Optional attributes
     */
    recordHistogram(name: string, value: number, attributes?: Record<string, any>): void;
    /**
     * Sets a gauge value (for current state values)
     * @param name - Name of the gauge
     * @param value - Current value
     * @param attributes - Optional attributes
     */
    setGauge(name: string, value: number, attributes?: Record<string, any>): void;
    /**
     * Records operation duration automatically
     * @param name - Name of the operation
     * @param fn - Function to measure
     * @param attributes - Optional attributes
     */
    measureDuration<T>(name: string, fn: () => T | Promise<T>, attributes?: Record<string, any>): Promise<T>;
    /**
     * Forces flush of metrics
     */
    flush(): Promise<void>;
    /**
     * Cleans up resources
     */
    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;
}
