import { type ReceiveStream } from "../receiveStats.js"; export interface LatencyBreakdown { contextBaseLatencyMs: number | null; contextOutputLatencyMs: number | null; rnnoiseBufferMs: number | null; networkRttMs: number | null; oneWayNetworkMs: number | null; jitterMs: number | null; jitterBufferMs: number | null; packetsLost: number | null; packetsSent: number | null; packetsReceived: number | null; /** Each incoming audio stream on its own (gh-53). The fields above are the worst, or the sum. */ receiveStreams: ReceiveStream[]; codec: string | null; bitrateKbps: number | null; availableOutKbps: number | null; sfuEndpoint: string | null; remoteAddress: string | null; localAddress: string | null; candidateType: string | null; localPipelineMs: number | null; estimatedOneWayMs: number | null; estimatedRoundTripMs: number | null; /** One-way plus the worst receive jitter buffer and this device's output latency (gh-53). */ estimatedMouthToEarMs: number | null; /** How long this connection has been up, so long-call growth can be read against it. */ callAgeMs: number | null; /** On the own transport: one frame, and the most anyone's audio waits here before it plays. Null off it. */ transportFrameMs: number | null; transportBufferedMs: number | null; /** The slowest measured round trip on the own transport, through the SFU to someone and back (GRYT-1836). */ transportRttMs: number | null; } export declare function useVoiceLatency(enabled: boolean): { latency: LatencyBreakdown; modeLabel: string; };