export declare const schemaVersion = "3.0.0";
export type ExtensionStat = {
    type: string;
    payload?: string;
};
export type ClientMetaData = {
    type: string;
    payload?: string;
    peerConnectionId?: string;
    trackId?: string;
    ssrc?: number;
    timestamp?: number;
};
export type ClientIssue = {
    type: string;
    payload?: string;
    timestamp?: number;
};
export type ClientEvent = {
    type: string;
    payload?: string;
    timestamp?: number;
};
export type CertificateStats = {
    timestamp: number;
    id: string;
    fingerprint?: string;
    fingerprintAlgorithm?: string;
    base64Certificate?: string;
    issuerCertificateId?: string;
    attachments?: Record<string, unknown>;
};
export type IceCandidatePairStats = {
    id: string;
    timestamp: number;
    transportId?: string;
    localCandidateId?: string;
    remoteCandidateId?: string;
    state?: "new" | "in-progress" | "waiting" | "failed" | "succeeded" | "cancelled" | "inprogress";
    nominated?: boolean;
    packetsSent?: number;
    packetsReceived?: number;
    bytesSent?: number;
    bytesReceived?: number;
    lastPacketSentTimestamp?: number;
    lastPacketReceivedTimestamp?: number;
    totalRoundTripTime?: number;
    currentRoundTripTime?: number;
    availableOutgoingBitrate?: number;
    availableIncomingBitrate?: number;
    requestsReceived?: number;
    requestsSent?: number;
    responsesReceived?: number;
    responsesSent?: number;
    consentRequestsSent?: number;
    packetsDiscardedOnSend?: number;
    bytesDiscardedOnSend?: number;
    attachments?: Record<string, unknown>;
};
export type IceCandidateStats = {
    timestamp: number;
    id: string;
    transportId?: string;
    address?: string;
    port?: number;
    protocol?: string;
    candidateType?: string;
    priority?: number;
    url?: string;
    relayProtocol?: string;
    foundation?: string;
    relatedAddress?: string;
    relatedPort?: number;
    usernameFragment?: string;
    tcpType?: string;
    attachments?: Record<string, unknown>;
};
export type IceTransportStats = {
    timestamp: number;
    id: string;
    packetsSent?: number;
    packetsReceived?: number;
    bytesSent?: number;
    bytesReceived?: number;
    iceRole?: string;
    iceLocalUsernameFragment?: string;
    dtlsState?: string;
    iceState?: string;
    selectedCandidatePairId?: string;
    localCertificateId?: string;
    remoteCertificateId?: string;
    tlsVersion?: string;
    dtlsCipher?: string;
    dtlsRole?: string;
    srtpCipher?: string;
    selectedCandidatePairChanges?: number;
    attachments?: Record<string, unknown>;
};
export type DataChannelStats = {
    timestamp: number;
    id: string;
    label?: string;
    protocol?: string;
    dataChannelIdentifier?: number;
    state?: string;
    messagesSent?: number;
    bytesSent?: number;
    messagesReceived?: number;
    bytesReceived?: number;
    attachments?: Record<string, unknown>;
};
export type PeerConnectionTransportStats = {
    timestamp: number;
    id: string;
    dataChannelsOpened?: number;
    dataChannelsClosed?: number;
    attachments?: Record<string, unknown>;
};
export type MediaPlayoutStats = {
    timestamp: number;
    id: string;
    kind: string;
    synthesizedSamplesDuration?: number;
    synthesizedSamplesEvents?: number;
    totalSamplesDuration?: number;
    totalPlayoutDelay?: number;
    totalSamplesCount?: number;
    attachments?: Record<string, unknown>;
};
export type MediaSourceStats = {
    timestamp: number;
    id: string;
    kind: string;
    trackIdentifier?: string;
    audioLevel?: number;
    totalAudioEnergy?: number;
    totalSamplesDuration?: number;
    echoReturnLoss?: number;
    echoReturnLossEnhancement?: number;
    width?: number;
    height?: number;
    frames?: number;
    framesPerSecond?: number;
    attachments?: Record<string, unknown>;
};
export type RemoteOutboundRtpStats = {
    timestamp: number;
    id: string;
    ssrc: number;
    kind: string;
    transportId?: string;
    codecId?: string;
    packetsSent?: number;
    bytesSent?: number;
    localId?: string;
    remoteTimestamp?: number;
    reportsSent?: number;
    roundTripTime?: number;
    totalRoundTripTime?: number;
    roundTripTimeMeasurements?: number;
    attachments?: Record<string, unknown>;
};
export type QualityLimitationDurations = {
    none: number;
    cpu: number;
    bandwidth: number;
    other: number;
};
export type OutboundRtpStats = {
    timestamp: number;
    id: string;
    ssrc: number;
    kind: string;
    transportId?: string;
    codecId?: string;
    packetsSent?: number;
    bytesSent?: number;
    mid?: string;
    mediaSourceId?: string;
    remoteId?: string;
    rid?: string;
    headerBytesSent?: number;
    retransmittedPacketsSent?: number;
    retransmittedBytesSent?: number;
    rtxSsrc?: number;
    targetBitrate?: number;
    totalEncodedBytesTarget?: number;
    frameWidth?: number;
    frameHeight?: number;
    framesPerSecond?: number;
    framesSent?: number;
    hugeFramesSent?: number;
    framesEncoded?: number;
    keyFramesEncoded?: number;
    qpSum?: number;
    totalEncodeTime?: number;
    totalPacketSendDelay?: number;
    qualityLimitationReason?: string;
    qualityLimitationResolutionChanges?: number;
    nackCount?: number;
    firCount?: number;
    pliCount?: number;
    encoderImplementation?: string;
    powerEfficientEncoder?: boolean;
    active?: boolean;
    scalabilityMode?: string;
    qualityLimitationDurations?: QualityLimitationDurations;
    attachments?: Record<string, unknown>;
};
export type RemoteInboundRtpStats = {
    timestamp: number;
    id: string;
    ssrc: number;
    kind: string;
    transportId?: string;
    codecId?: string;
    packetsReceived?: number;
    packetsLost?: number;
    jitter?: number;
    localId?: string;
    roundTripTime?: number;
    totalRoundTripTime?: number;
    fractionLost?: number;
    roundTripTimeMeasurements?: number;
    attachments?: Record<string, unknown>;
};
export type InboundRtpStats = {
    timestamp: number;
    id: string;
    ssrc: number;
    kind: string;
    trackIdentifier: string;
    transportId?: string;
    codecId?: string;
    packetsReceived?: number;
    packetsLost?: number;
    jitter?: number;
    mid?: string;
    remoteId?: string;
    framesDecoded?: number;
    keyFramesDecoded?: number;
    framesRendered?: number;
    framesDropped?: number;
    frameWidth?: number;
    frameHeight?: number;
    framesPerSecond?: number;
    qpSum?: number;
    totalDecodeTime?: number;
    totalInterFrameDelay?: number;
    totalSquaredInterFrameDelay?: number;
    pauseCount?: number;
    totalPausesDuration?: number;
    freezeCount?: number;
    totalFreezesDuration?: number;
    lastPacketReceivedTimestamp?: number;
    headerBytesReceived?: number;
    packetsDiscarded?: number;
    fecBytesReceived?: number;
    fecPacketsReceived?: number;
    fecPacketsDiscarded?: number;
    bytesReceived?: number;
    nackCount?: number;
    firCount?: number;
    pliCount?: number;
    totalProcessingDelay?: number;
    estimatedPlayoutTimestamp?: number;
    jitterBufferDelay?: number;
    jitterBufferTargetDelay?: number;
    jitterBufferEmittedCount?: number;
    jitterBufferMinimumDelay?: number;
    totalSamplesReceived?: number;
    concealedSamples?: number;
    silentConcealedSamples?: number;
    concealmentEvents?: number;
    insertedSamplesForDeceleration?: number;
    removedSamplesForAcceleration?: number;
    audioLevel?: number;
    totalAudioEnergy?: number;
    totalSamplesDuration?: number;
    framesReceived?: number;
    decoderImplementation?: string;
    playoutId?: string;
    powerEfficientDecoder?: boolean;
    framesAssembledFromMultiplePackets?: number;
    totalAssemblyTime?: number;
    retransmittedPacketsReceived?: number;
    retransmittedBytesReceived?: number;
    rtxSsrc?: number;
    fecSsrc?: number;
    totalCorruptionProbability?: number;
    totalSquaredCorruptionProbability?: number;
    corruptionMeasurements?: number;
    attachments?: Record<string, unknown>;
};
export type CodecStats = {
    timestamp: number;
    id: string;
    mimeType: string;
    payloadType?: number;
    transportId?: string;
    clockRate?: number;
    channels?: number;
    sdpFmtpLine?: string;
    attachments?: Record<string, unknown>;
};
export type OutboundTrackSample = {
    timestamp: number;
    id: string;
    kind: string;
    score?: number;
    scoreReasons?: string;
    attachments?: Record<string, unknown>;
};
export type InboundTrackSample = {
    timestamp: number;
    id: string;
    kind: string;
    score?: number;
    scoreReasons?: string;
    attachments?: Record<string, unknown>;
};
export type PeerConnectionSample = {
    peerConnectionId: string;
    attachments?: Record<string, unknown>;
    score?: number;
    scoreReasons?: string;
    inboundTracks?: InboundTrackSample[];
    outboundTracks?: OutboundTrackSample[];
    codecs?: CodecStats[];
    inboundRtps?: InboundRtpStats[];
    remoteInboundRtps?: RemoteInboundRtpStats[];
    outboundRtps?: OutboundRtpStats[];
    remoteOutboundRtps?: RemoteOutboundRtpStats[];
    mediaSources?: MediaSourceStats[];
    mediaPlayouts?: MediaPlayoutStats[];
    peerConnectionTransports?: PeerConnectionTransportStats[];
    dataChannels?: DataChannelStats[];
    iceTransports?: IceTransportStats[];
    iceCandidates?: IceCandidateStats[];
    iceCandidatePairs?: IceCandidatePairStats[];
    certificates?: CertificateStats[];
};
export type ClientSample = {
    timestamp: number;
    callId?: string;
    clientId?: string;
    attachments?: Record<string, unknown>;
    score?: number;
    scoreReasons?: string;
    peerConnections?: PeerConnectionSample[];
    clientEvents?: ClientEvent[];
    clientIssues?: ClientIssue[];
    clientMetaItems?: ClientMetaData[];
    extensionStats?: ExtensionStat[];
};
