export type MetricsSnapshot = { schemaVersion: 1; updatedAt: number; provider: string | null; transcriptUi: { supported: boolean; currentPartialText: string | null; lastFinalText: string | null; partialCount: number; finalCount: number; diarizationCount: number; utteranceCount: number; lastFirstPartialLatencyMs: number | null; avgFirstPartialLatencyMs: number | null; p95FirstPartialLatencyMs: number | null; lastFinalLatencyMs: number | null; avgFinalLatencyMs: number | null; p95FinalLatencyMs: number | null; lastStabilizationLatencyMs: number | null; avgStabilizationLatencyMs: number | null; p95StabilizationLatencyMs: number | null; }; session: { supported: boolean; sessionStartedAt: number | null; sessionStoppedAt: number | null; sessionDurationMs: number | null; initializationLatencyMs: number | null; pauseCount: number; resumeCount: number; pausedDurationMs: number | null; errorCount: number; fatalErrorCount: number; }; connection: { supported: boolean; connectionState: string; websocketState: string; browserOnline: boolean; connectionOpenCount: number; connectionCloseCount: number; connectedDurationMs: number | null; reconnectingDurationMs: number | null; disconnectedDurationMs: number | null; transportBufferedAmountBytes: number; lastDisconnectCode: number | null; lastDisconnectReason: string | null; }; recovery: { supported: boolean; reconnectCount: number; recoverySuccessCount: number; terminalDisconnectCount: number; currentReconnectAttempt: number | null; nextReconnectDelayMs: number | null; remainingReconnectAttempts: number | null; lastRecoveryDurationMs: number | null; avgRecoveryDurationMs: number | null; p95RecoveryDurationMs: number | null; }; buffering: { supported: boolean; isBufferingAudio: boolean; isDrainingAudio: boolean; pendingBufferedAudioBytes: number; persistedBufferedAudioBytes: number; persistedBufferedAudioSegments: number; totalBufferedAudioBytes: number; peakBufferedAudioBytes: number; bufferingDurationMs: number | null; drainingDurationMs: number | null; lastDrainProgressAt: number | null; drainCycles: number; drainExitReason: string | null; finishDeliveryState: string | null; avgBufferGrowthRateBytesPerSecond: number | null; avgBufferDrainRateBytesPerSecond: number | null; bufferStallCount: number; }; browserNetwork: { supported: boolean; onlineTransitionCount: number; offlineTransitionCount: number; offlineDurationMs: number | null; flapCount: number; effectiveType: string | null; downlinkMbps: number | null; rttMs: number | null; }; audioCapture: { supported: boolean; inputSampleRate: number | null; targetSampleRate: number | null; channelCount: number | null; currentRms: number | null; peakRms: number | null; currentPeakAmplitude: number | null; clippingEventCount: number; silenceRatio: number | null; speechActivityRatio: number | null; audioCallbackGapCount: number; longestAudioCallbackGapMs: number | null; }; }; export const createMetricsSnapshot = ( overrides: Partial = {} ): MetricsSnapshot => { const now = 1_700_000_000_000; return { schemaVersion: 1, updatedAt: now, provider: "sofya_as_service", transcriptUi: { supported: true, currentPartialText: null, lastFinalText: null, partialCount: 0, finalCount: 0, diarizationCount: 0, utteranceCount: 0, lastFirstPartialLatencyMs: null, avgFirstPartialLatencyMs: null, p95FirstPartialLatencyMs: null, lastFinalLatencyMs: null, avgFinalLatencyMs: null, p95FinalLatencyMs: null, lastStabilizationLatencyMs: null, avgStabilizationLatencyMs: null, p95StabilizationLatencyMs: null, }, session: { supported: true, sessionStartedAt: now, sessionStoppedAt: null, sessionDurationMs: null, initializationLatencyMs: 42, pauseCount: 0, resumeCount: 0, pausedDurationMs: null, errorCount: 0, fatalErrorCount: 0, }, connection: { supported: true, connectionState: "connecting", websocketState: "connecting", browserOnline: true, connectionOpenCount: 0, connectionCloseCount: 0, connectedDurationMs: null, reconnectingDurationMs: null, disconnectedDurationMs: null, transportBufferedAmountBytes: 0, lastDisconnectCode: null, lastDisconnectReason: null, }, recovery: { supported: true, reconnectCount: 0, recoverySuccessCount: 0, terminalDisconnectCount: 0, currentReconnectAttempt: null, nextReconnectDelayMs: null, remainingReconnectAttempts: 96, lastRecoveryDurationMs: null, avgRecoveryDurationMs: null, p95RecoveryDurationMs: null, }, buffering: { supported: true, isBufferingAudio: false, isDrainingAudio: false, pendingBufferedAudioBytes: 0, persistedBufferedAudioBytes: 0, persistedBufferedAudioSegments: 0, totalBufferedAudioBytes: 0, peakBufferedAudioBytes: 0, bufferingDurationMs: null, drainingDurationMs: null, lastDrainProgressAt: null, drainCycles: 0, drainExitReason: null, finishDeliveryState: null, avgBufferGrowthRateBytesPerSecond: null, avgBufferDrainRateBytesPerSecond: null, bufferStallCount: 0, }, browserNetwork: { supported: true, onlineTransitionCount: 0, offlineTransitionCount: 0, offlineDurationMs: null, flapCount: 0, effectiveType: null, downlinkMbps: null, rttMs: null, }, audioCapture: { supported: true, inputSampleRate: 44_100, targetSampleRate: 16_000, channelCount: 1, currentRms: null, peakRms: null, currentPeakAmplitude: null, clippingEventCount: 0, silenceRatio: null, speechActivityRatio: null, audioCallbackGapCount: 0, longestAudioCallbackGapMs: null, }, ...overrides, }; }; export const createUnsupportedMetricsSnapshot = ( overrides: Partial = {} ): MetricsSnapshot => createMetricsSnapshot({ provider: "oracle", transcriptUi: { supported: false, currentPartialText: null, lastFinalText: null, partialCount: 0, finalCount: 0, diarizationCount: 0, utteranceCount: 0, lastFirstPartialLatencyMs: null, avgFirstPartialLatencyMs: null, p95FirstPartialLatencyMs: null, lastFinalLatencyMs: null, avgFinalLatencyMs: null, p95FinalLatencyMs: null, lastStabilizationLatencyMs: null, avgStabilizationLatencyMs: null, p95StabilizationLatencyMs: null, }, session: { supported: false, sessionStartedAt: null, sessionStoppedAt: null, sessionDurationMs: null, initializationLatencyMs: null, pauseCount: 0, resumeCount: 0, pausedDurationMs: null, errorCount: 0, fatalErrorCount: 0, }, connection: { supported: false, connectionState: "disconnected", websocketState: "unavailable", browserOnline: true, connectionOpenCount: 0, connectionCloseCount: 0, connectedDurationMs: null, reconnectingDurationMs: null, disconnectedDurationMs: null, transportBufferedAmountBytes: 0, lastDisconnectCode: null, lastDisconnectReason: null, }, recovery: { supported: false, reconnectCount: 0, recoverySuccessCount: 0, terminalDisconnectCount: 0, currentReconnectAttempt: null, nextReconnectDelayMs: null, remainingReconnectAttempts: null, lastRecoveryDurationMs: null, avgRecoveryDurationMs: null, p95RecoveryDurationMs: null, }, buffering: { supported: false, isBufferingAudio: false, isDrainingAudio: false, pendingBufferedAudioBytes: 0, persistedBufferedAudioBytes: 0, persistedBufferedAudioSegments: 0, totalBufferedAudioBytes: 0, peakBufferedAudioBytes: 0, bufferingDurationMs: null, drainingDurationMs: null, lastDrainProgressAt: null, drainCycles: 0, drainExitReason: null, finishDeliveryState: null, avgBufferGrowthRateBytesPerSecond: null, avgBufferDrainRateBytesPerSecond: null, bufferStallCount: 0, }, browserNetwork: { supported: false, onlineTransitionCount: 0, offlineTransitionCount: 0, offlineDurationMs: null, flapCount: 0, effectiveType: null, downlinkMbps: null, rttMs: null, }, audioCapture: { supported: false, inputSampleRate: null, targetSampleRate: null, channelCount: null, currentRms: null, peakRms: null, currentPeakAmplitude: null, clippingEventCount: 0, silenceRatio: null, speechActivityRatio: null, audioCallbackGapCount: 0, longestAudioCallbackGapMs: null, }, ...overrides, });