import Logger from '../logger/Logger'; export declare enum BackgroundSegmentationInitializationStatus { SUCCESS = 0, ASSET_LOADING_FAILURE = 1, COMPATIBILITY_FAILURE = 2, PROCESSOR_CREATION_FAILURE = 3 } /** * [[BackgroundSegmentationInitializationMetrics]] contains metrics reported * once per processor creation by [[BackgroundSegmentationVideoFrameProcessor]]. */ export interface BackgroundSegmentationInitializationMetrics { initializationStatus: BackgroundSegmentationInitializationStatus; assetLoadingTimeMs?: number; } export interface BackgroundSegmentationProcessorMetrics { segmentationDurationMs: number; effectRenderDurationMs: number; framesPerSegmentation: number; framesSubmitted: number; framesSegmented: number; estimatedCPUUsagePercentage: number; modelType: string; delegateType: string; initializationDurationMs?: number; initializationFailure?: number; errorCount: number; } /** * Observer interface for receiving background segmentation metrics */ export interface BackgroundSegmentationMetricsObserver { backgroundSegmentationInitializationMetricsDidReceive(metric: BackgroundSegmentationInitializationMetrics): void; backgroundSegmentationProcessorMetricsDidReceive(metric: BackgroundSegmentationProcessorMetrics): void; } /** * Metrics collection for background segmentation processing. * Collects one-time processor creation metrics and periodic CDN processor metrics. */ export default class BackgroundSegmentationMetrics { private logger; private static readonly MAX_BUFFERED_METRICS; private metricsCollector; private bufferedMetrics; private _initializationStatus; private _assetLoadingTimeMs; constructor(logger: Logger, metricsCollector?: BackgroundSegmentationMetricsObserver); /** * Update the metrics collector and flush any buffered metrics */ setMetricsCollector(metricsCollector: BackgroundSegmentationMetricsObserver): void; private flushBufferedMetrics; reportCompatibilityCheck(isCompatible: boolean): void; reportAssetLoadingResult(error?: string, loadTimeMs?: number): void; reportProcessorError(): void; emitInitializationMetrics(): void; reportProcessorMetrics(metric: BackgroundSegmentationProcessorMetrics): void; private sendToCollector; }