// @generated by protoc-gen-es v1.0.0 with parameter "target=ts"
// @generated from file outputs/proto/ProtobufClientSampleV3Optional.proto (package org.observertc.schemas.protobuf, syntax proto3)
/* eslint-disable */
// @ts-nocheck

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";

/**
 * *
 * Schema Version: 3.0.0
 *
 * @generated from message org.observertc.schemas.protobuf.ClientSample
 */
export class ClientSample extends Message<ClientSample> {
  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.ClientEvent clientEvents = 1;
   */
  clientEvents: ClientSample_ClientEvent[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.ClientIssue clientIssues = 2;
   */
  clientIssues: ClientSample_ClientIssue[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.ClientMetaData clientMetaItems = 3;
   */
  clientMetaItems: ClientSample_ClientMetaData[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.ExtensionStat extensionStats = 4;
   */
  extensionStats: ClientSample_ExtensionStat[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample peerConnections = 5;
   */
  peerConnections: ClientSample_PeerConnectionSample[] = [];

  /**
   * @generated from field: optional double timestamp = 6;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 7;
   */
  attachments?: string;

  /**
   * @generated from field: optional bytes callId = 8;
   */
  callId?: Uint8Array;

  /**
   * @generated from field: optional bytes clientId = 9;
   */
  clientId?: Uint8Array;

  /**
   * @generated from field: optional double score = 10;
   */
  score?: number;

  /**
   * @generated from field: optional string scoreReasons = 11;
   */
  scoreReasons?: string;

  constructor(data?: PartialMessage<ClientSample>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "clientEvents", kind: "message", T: ClientSample_ClientEvent, repeated: true },
    { no: 2, name: "clientIssues", kind: "message", T: ClientSample_ClientIssue, repeated: true },
    { no: 3, name: "clientMetaItems", kind: "message", T: ClientSample_ClientMetaData, repeated: true },
    { no: 4, name: "extensionStats", kind: "message", T: ClientSample_ExtensionStat, repeated: true },
    { no: 5, name: "peerConnections", kind: "message", T: ClientSample_PeerConnectionSample, repeated: true },
    { no: 6, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 7, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 8, name: "callId", kind: "scalar", T: 12 /* ScalarType.BYTES */, opt: true },
    { no: 9, name: "clientId", kind: "scalar", T: 12 /* ScalarType.BYTES */, opt: true },
    { no: 10, name: "score", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 11, name: "scoreReasons", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample {
    return new ClientSample().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample {
    return new ClientSample().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample {
    return new ClientSample().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample | PlainMessage<ClientSample> | undefined, b: ClientSample | PlainMessage<ClientSample> | undefined): boolean {
    return proto3.util.equals(ClientSample, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample
 */
export class ClientSample_PeerConnectionSample extends Message<ClientSample_PeerConnectionSample> {
  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.CertificateStats certificates = 1;
   */
  certificates: ClientSample_PeerConnectionSample_CertificateStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.CodecStats codecs = 2;
   */
  codecs: ClientSample_PeerConnectionSample_CodecStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.DataChannelStats dataChannels = 3;
   */
  dataChannels: ClientSample_PeerConnectionSample_DataChannelStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidatePairStats iceCandidatePairs = 4;
   */
  iceCandidatePairs: ClientSample_PeerConnectionSample_IceCandidatePairStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidateStats iceCandidates = 5;
   */
  iceCandidates: ClientSample_PeerConnectionSample_IceCandidateStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceTransportStats iceTransports = 6;
   */
  iceTransports: ClientSample_PeerConnectionSample_IceTransportStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.InboundRtpStats inboundRtps = 7;
   */
  inboundRtps: ClientSample_PeerConnectionSample_InboundRtpStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.InboundTrackSample inboundTracks = 8;
   */
  inboundTracks: ClientSample_PeerConnectionSample_InboundTrackSample[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.MediaPlayoutStats mediaPlayouts = 9;
   */
  mediaPlayouts: ClientSample_PeerConnectionSample_MediaPlayoutStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.MediaSourceStats mediaSources = 10;
   */
  mediaSources: ClientSample_PeerConnectionSample_MediaSourceStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundRtpStats outboundRtps = 11;
   */
  outboundRtps: ClientSample_PeerConnectionSample_OutboundRtpStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundTrackSample outboundTracks = 12;
   */
  outboundTracks: ClientSample_PeerConnectionSample_OutboundTrackSample[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.PeerConnectionTransportStats peerConnectionTransports = 13;
   */
  peerConnectionTransports: ClientSample_PeerConnectionSample_PeerConnectionTransportStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.RemoteInboundRtpStats remoteInboundRtps = 14;
   */
  remoteInboundRtps: ClientSample_PeerConnectionSample_RemoteInboundRtpStats[] = [];

  /**
   * @generated from field: repeated org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.RemoteOutboundRtpStats remoteOutboundRtps = 15;
   */
  remoteOutboundRtps: ClientSample_PeerConnectionSample_RemoteOutboundRtpStats[] = [];

  /**
   * @generated from field: optional bytes peerConnectionId = 16;
   */
  peerConnectionId?: Uint8Array;

  /**
   * @generated from field: optional string attachments = 17;
   */
  attachments?: string;

  /**
   * @generated from field: optional double score = 18;
   */
  score?: number;

  /**
   * @generated from field: optional string scoreReasons = 19;
   */
  scoreReasons?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "certificates", kind: "message", T: ClientSample_PeerConnectionSample_CertificateStats, repeated: true },
    { no: 2, name: "codecs", kind: "message", T: ClientSample_PeerConnectionSample_CodecStats, repeated: true },
    { no: 3, name: "dataChannels", kind: "message", T: ClientSample_PeerConnectionSample_DataChannelStats, repeated: true },
    { no: 4, name: "iceCandidatePairs", kind: "message", T: ClientSample_PeerConnectionSample_IceCandidatePairStats, repeated: true },
    { no: 5, name: "iceCandidates", kind: "message", T: ClientSample_PeerConnectionSample_IceCandidateStats, repeated: true },
    { no: 6, name: "iceTransports", kind: "message", T: ClientSample_PeerConnectionSample_IceTransportStats, repeated: true },
    { no: 7, name: "inboundRtps", kind: "message", T: ClientSample_PeerConnectionSample_InboundRtpStats, repeated: true },
    { no: 8, name: "inboundTracks", kind: "message", T: ClientSample_PeerConnectionSample_InboundTrackSample, repeated: true },
    { no: 9, name: "mediaPlayouts", kind: "message", T: ClientSample_PeerConnectionSample_MediaPlayoutStats, repeated: true },
    { no: 10, name: "mediaSources", kind: "message", T: ClientSample_PeerConnectionSample_MediaSourceStats, repeated: true },
    { no: 11, name: "outboundRtps", kind: "message", T: ClientSample_PeerConnectionSample_OutboundRtpStats, repeated: true },
    { no: 12, name: "outboundTracks", kind: "message", T: ClientSample_PeerConnectionSample_OutboundTrackSample, repeated: true },
    { no: 13, name: "peerConnectionTransports", kind: "message", T: ClientSample_PeerConnectionSample_PeerConnectionTransportStats, repeated: true },
    { no: 14, name: "remoteInboundRtps", kind: "message", T: ClientSample_PeerConnectionSample_RemoteInboundRtpStats, repeated: true },
    { no: 15, name: "remoteOutboundRtps", kind: "message", T: ClientSample_PeerConnectionSample_RemoteOutboundRtpStats, repeated: true },
    { no: 16, name: "peerConnectionId", kind: "scalar", T: 12 /* ScalarType.BYTES */, opt: true },
    { no: 17, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 18, name: "score", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 19, name: "scoreReasons", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample {
    return new ClientSample_PeerConnectionSample().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample {
    return new ClientSample_PeerConnectionSample().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample {
    return new ClientSample_PeerConnectionSample().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample | PlainMessage<ClientSample_PeerConnectionSample> | undefined, b: ClientSample_PeerConnectionSample | PlainMessage<ClientSample_PeerConnectionSample> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.InboundTrackSample
 */
export class ClientSample_PeerConnectionSample_InboundTrackSample extends Message<ClientSample_PeerConnectionSample_InboundTrackSample> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional double timestamp = 3;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 4;
   */
  attachments?: string;

  /**
   * @generated from field: optional double score = 5;
   */
  score?: number;

  /**
   * @generated from field: optional string scoreReasons = 6;
   */
  scoreReasons?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_InboundTrackSample>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.InboundTrackSample";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 4, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 5, name: "score", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 6, name: "scoreReasons", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_InboundTrackSample {
    return new ClientSample_PeerConnectionSample_InboundTrackSample().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_InboundTrackSample {
    return new ClientSample_PeerConnectionSample_InboundTrackSample().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_InboundTrackSample {
    return new ClientSample_PeerConnectionSample_InboundTrackSample().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_InboundTrackSample | PlainMessage<ClientSample_PeerConnectionSample_InboundTrackSample> | undefined, b: ClientSample_PeerConnectionSample_InboundTrackSample | PlainMessage<ClientSample_PeerConnectionSample_InboundTrackSample> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_InboundTrackSample, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundTrackSample
 */
export class ClientSample_PeerConnectionSample_OutboundTrackSample extends Message<ClientSample_PeerConnectionSample_OutboundTrackSample> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional double timestamp = 3;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 4;
   */
  attachments?: string;

  /**
   * @generated from field: optional double score = 5;
   */
  score?: number;

  /**
   * @generated from field: optional string scoreReasons = 6;
   */
  scoreReasons?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_OutboundTrackSample>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundTrackSample";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 4, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 5, name: "score", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 6, name: "scoreReasons", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_OutboundTrackSample {
    return new ClientSample_PeerConnectionSample_OutboundTrackSample().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_OutboundTrackSample {
    return new ClientSample_PeerConnectionSample_OutboundTrackSample().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_OutboundTrackSample {
    return new ClientSample_PeerConnectionSample_OutboundTrackSample().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_OutboundTrackSample | PlainMessage<ClientSample_PeerConnectionSample_OutboundTrackSample> | undefined, b: ClientSample_PeerConnectionSample_OutboundTrackSample | PlainMessage<ClientSample_PeerConnectionSample_OutboundTrackSample> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_OutboundTrackSample, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.CodecStats
 */
export class ClientSample_PeerConnectionSample_CodecStats extends Message<ClientSample_PeerConnectionSample_CodecStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string mimeType = 2;
   */
  mimeType?: string;

  /**
   * @generated from field: optional double timestamp = 3;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 4;
   */
  attachments?: string;

  /**
   * @generated from field: optional int32 channels = 5;
   */
  channels?: number;

  /**
   * @generated from field: optional int32 clockRate = 6;
   */
  clockRate?: number;

  /**
   * @generated from field: optional int32 payloadType = 7;
   */
  payloadType?: number;

  /**
   * @generated from field: optional string sdpFmtpLine = 8;
   */
  sdpFmtpLine?: string;

  /**
   * @generated from field: optional string transportId = 9;
   */
  transportId?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_CodecStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.CodecStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "mimeType", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 4, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 5, name: "channels", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 6, name: "clockRate", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 7, name: "payloadType", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 8, name: "sdpFmtpLine", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 9, name: "transportId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_CodecStats {
    return new ClientSample_PeerConnectionSample_CodecStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_CodecStats {
    return new ClientSample_PeerConnectionSample_CodecStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_CodecStats {
    return new ClientSample_PeerConnectionSample_CodecStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_CodecStats | PlainMessage<ClientSample_PeerConnectionSample_CodecStats> | undefined, b: ClientSample_PeerConnectionSample_CodecStats | PlainMessage<ClientSample_PeerConnectionSample_CodecStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_CodecStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.InboundRtpStats
 */
export class ClientSample_PeerConnectionSample_InboundRtpStats extends Message<ClientSample_PeerConnectionSample_InboundRtpStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional int64 ssrc = 3;
   */
  ssrc?: bigint;

  /**
   * @generated from field: optional double timestamp = 4;
   */
  timestamp?: number;

  /**
   * @generated from field: optional bytes trackIdentifier = 5;
   */
  trackIdentifier?: Uint8Array;

  /**
   * @generated from field: optional string attachments = 6;
   */
  attachments?: string;

  /**
   * @generated from field: optional double audioLevel = 7;
   */
  audioLevel?: number;

  /**
   * @generated from field: optional int64 bytesReceived = 8;
   */
  bytesReceived?: bigint;

  /**
   * @generated from field: optional string codecId = 9;
   */
  codecId?: string;

  /**
   * @generated from field: optional int32 concealedSamples = 10;
   */
  concealedSamples?: number;

  /**
   * @generated from field: optional int32 concealmentEvents = 11;
   */
  concealmentEvents?: number;

  /**
   * @generated from field: optional int32 corruptionMeasurements = 12;
   */
  corruptionMeasurements?: number;

  /**
   * @generated from field: optional string decoderImplementation = 13;
   */
  decoderImplementation?: string;

  /**
   * @generated from field: optional double estimatedPlayoutTimestamp = 14;
   */
  estimatedPlayoutTimestamp?: number;

  /**
   * @generated from field: optional int64 fecBytesReceived = 15;
   */
  fecBytesReceived?: bigint;

  /**
   * @generated from field: optional int32 fecPacketsDiscarded = 16;
   */
  fecPacketsDiscarded?: number;

  /**
   * @generated from field: optional int32 fecPacketsReceived = 17;
   */
  fecPacketsReceived?: number;

  /**
   * @generated from field: optional int64 fecSsrc = 18;
   */
  fecSsrc?: bigint;

  /**
   * @generated from field: optional int32 firCount = 19;
   */
  firCount?: number;

  /**
   * @generated from field: optional int32 frameHeight = 20;
   */
  frameHeight?: number;

  /**
   * @generated from field: optional int32 frameWidth = 21;
   */
  frameWidth?: number;

  /**
   * @generated from field: optional int32 framesAssembledFromMultiplePackets = 22;
   */
  framesAssembledFromMultiplePackets?: number;

  /**
   * @generated from field: optional int32 framesDecoded = 23;
   */
  framesDecoded?: number;

  /**
   * @generated from field: optional int32 framesDropped = 24;
   */
  framesDropped?: number;

  /**
   * @generated from field: optional double framesPerSecond = 25;
   */
  framesPerSecond?: number;

  /**
   * @generated from field: optional int32 framesReceived = 26;
   */
  framesReceived?: number;

  /**
   * @generated from field: optional int32 framesRendered = 27;
   */
  framesRendered?: number;

  /**
   * @generated from field: optional int32 freezeCount = 28;
   */
  freezeCount?: number;

  /**
   * @generated from field: optional int64 headerBytesReceived = 29;
   */
  headerBytesReceived?: bigint;

  /**
   * @generated from field: optional int32 insertedSamplesForDeceleration = 30;
   */
  insertedSamplesForDeceleration?: number;

  /**
   * @generated from field: optional double jitter = 31;
   */
  jitter?: number;

  /**
   * @generated from field: optional double jitterBufferDelay = 32;
   */
  jitterBufferDelay?: number;

  /**
   * @generated from field: optional int32 jitterBufferEmittedCount = 33;
   */
  jitterBufferEmittedCount?: number;

  /**
   * @generated from field: optional double jitterBufferMinimumDelay = 34;
   */
  jitterBufferMinimumDelay?: number;

  /**
   * @generated from field: optional double jitterBufferTargetDelay = 35;
   */
  jitterBufferTargetDelay?: number;

  /**
   * @generated from field: optional int32 keyFramesDecoded = 36;
   */
  keyFramesDecoded?: number;

  /**
   * @generated from field: optional double lastPacketReceivedTimestamp = 37;
   */
  lastPacketReceivedTimestamp?: number;

  /**
   * @generated from field: optional string mid = 38;
   */
  mid?: string;

  /**
   * @generated from field: optional int32 nackCount = 39;
   */
  nackCount?: number;

  /**
   * @generated from field: optional int32 packetsDiscarded = 40;
   */
  packetsDiscarded?: number;

  /**
   * @generated from field: optional int32 packetsLost = 41;
   */
  packetsLost?: number;

  /**
   * @generated from field: optional int32 packetsReceived = 42;
   */
  packetsReceived?: number;

  /**
   * @generated from field: optional int32 pauseCount = 43;
   */
  pauseCount?: number;

  /**
   * @generated from field: optional string playoutId = 44;
   */
  playoutId?: string;

  /**
   * @generated from field: optional int32 pliCount = 45;
   */
  pliCount?: number;

  /**
   * @generated from field: optional bool powerEfficientDecoder = 46;
   */
  powerEfficientDecoder?: boolean;

  /**
   * @generated from field: optional double qpSum = 47;
   */
  qpSum?: number;

  /**
   * @generated from field: optional string remoteId = 48;
   */
  remoteId?: string;

  /**
   * @generated from field: optional int32 removedSamplesForAcceleration = 49;
   */
  removedSamplesForAcceleration?: number;

  /**
   * @generated from field: optional int64 retransmittedBytesReceived = 50;
   */
  retransmittedBytesReceived?: bigint;

  /**
   * @generated from field: optional int32 retransmittedPacketsReceived = 51;
   */
  retransmittedPacketsReceived?: number;

  /**
   * @generated from field: optional int64 rtxSsrc = 52;
   */
  rtxSsrc?: bigint;

  /**
   * @generated from field: optional int32 silentConcealedSamples = 53;
   */
  silentConcealedSamples?: number;

  /**
   * @generated from field: optional double totalAssemblyTime = 54;
   */
  totalAssemblyTime?: number;

  /**
   * @generated from field: optional double totalAudioEnergy = 55;
   */
  totalAudioEnergy?: number;

  /**
   * @generated from field: optional double totalCorruptionProbability = 56;
   */
  totalCorruptionProbability?: number;

  /**
   * @generated from field: optional double totalDecodeTime = 57;
   */
  totalDecodeTime?: number;

  /**
   * @generated from field: optional double totalFreezesDuration = 58;
   */
  totalFreezesDuration?: number;

  /**
   * @generated from field: optional double totalInterFrameDelay = 59;
   */
  totalInterFrameDelay?: number;

  /**
   * @generated from field: optional double totalPausesDuration = 60;
   */
  totalPausesDuration?: number;

  /**
   * @generated from field: optional double totalProcessingDelay = 61;
   */
  totalProcessingDelay?: number;

  /**
   * @generated from field: optional double totalSamplesDuration = 62;
   */
  totalSamplesDuration?: number;

  /**
   * @generated from field: optional int32 totalSamplesReceived = 63;
   */
  totalSamplesReceived?: number;

  /**
   * @generated from field: optional double totalSquaredCorruptionProbability = 64;
   */
  totalSquaredCorruptionProbability?: number;

  /**
   * @generated from field: optional double totalSquaredInterFrameDelay = 65;
   */
  totalSquaredInterFrameDelay?: number;

  /**
   * @generated from field: optional string transportId = 66;
   */
  transportId?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_InboundRtpStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.InboundRtpStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "ssrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 4, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 5, name: "trackIdentifier", kind: "scalar", T: 12 /* ScalarType.BYTES */, opt: true },
    { no: 6, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 7, name: "audioLevel", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 8, name: "bytesReceived", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 9, name: "codecId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 10, name: "concealedSamples", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 11, name: "concealmentEvents", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 12, name: "corruptionMeasurements", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 13, name: "decoderImplementation", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 14, name: "estimatedPlayoutTimestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 15, name: "fecBytesReceived", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 16, name: "fecPacketsDiscarded", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 17, name: "fecPacketsReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 18, name: "fecSsrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 19, name: "firCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 20, name: "frameHeight", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 21, name: "frameWidth", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 22, name: "framesAssembledFromMultiplePackets", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 23, name: "framesDecoded", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 24, name: "framesDropped", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 25, name: "framesPerSecond", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 26, name: "framesReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 27, name: "framesRendered", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 28, name: "freezeCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 29, name: "headerBytesReceived", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 30, name: "insertedSamplesForDeceleration", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 31, name: "jitter", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 32, name: "jitterBufferDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 33, name: "jitterBufferEmittedCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 34, name: "jitterBufferMinimumDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 35, name: "jitterBufferTargetDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 36, name: "keyFramesDecoded", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 37, name: "lastPacketReceivedTimestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 38, name: "mid", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 39, name: "nackCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 40, name: "packetsDiscarded", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 41, name: "packetsLost", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 42, name: "packetsReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 43, name: "pauseCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 44, name: "playoutId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 45, name: "pliCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 46, name: "powerEfficientDecoder", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true },
    { no: 47, name: "qpSum", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 48, name: "remoteId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 49, name: "removedSamplesForAcceleration", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 50, name: "retransmittedBytesReceived", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 51, name: "retransmittedPacketsReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 52, name: "rtxSsrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 53, name: "silentConcealedSamples", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 54, name: "totalAssemblyTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 55, name: "totalAudioEnergy", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 56, name: "totalCorruptionProbability", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 57, name: "totalDecodeTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 58, name: "totalFreezesDuration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 59, name: "totalInterFrameDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 60, name: "totalPausesDuration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 61, name: "totalProcessingDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 62, name: "totalSamplesDuration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 63, name: "totalSamplesReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 64, name: "totalSquaredCorruptionProbability", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 65, name: "totalSquaredInterFrameDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 66, name: "transportId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_InboundRtpStats {
    return new ClientSample_PeerConnectionSample_InboundRtpStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_InboundRtpStats {
    return new ClientSample_PeerConnectionSample_InboundRtpStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_InboundRtpStats {
    return new ClientSample_PeerConnectionSample_InboundRtpStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_InboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_InboundRtpStats> | undefined, b: ClientSample_PeerConnectionSample_InboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_InboundRtpStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_InboundRtpStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.RemoteInboundRtpStats
 */
export class ClientSample_PeerConnectionSample_RemoteInboundRtpStats extends Message<ClientSample_PeerConnectionSample_RemoteInboundRtpStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional int64 ssrc = 3;
   */
  ssrc?: bigint;

  /**
   * @generated from field: optional double timestamp = 4;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 5;
   */
  attachments?: string;

  /**
   * @generated from field: optional string codecId = 6;
   */
  codecId?: string;

  /**
   * @generated from field: optional double fractionLost = 7;
   */
  fractionLost?: number;

  /**
   * @generated from field: optional double jitter = 8;
   */
  jitter?: number;

  /**
   * @generated from field: optional string localId = 9;
   */
  localId?: string;

  /**
   * @generated from field: optional int32 packetsLost = 10;
   */
  packetsLost?: number;

  /**
   * @generated from field: optional int32 packetsReceived = 11;
   */
  packetsReceived?: number;

  /**
   * @generated from field: optional double roundTripTime = 12;
   */
  roundTripTime?: number;

  /**
   * @generated from field: optional int32 roundTripTimeMeasurements = 13;
   */
  roundTripTimeMeasurements?: number;

  /**
   * @generated from field: optional double totalRoundTripTime = 14;
   */
  totalRoundTripTime?: number;

  /**
   * @generated from field: optional string transportId = 15;
   */
  transportId?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_RemoteInboundRtpStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.RemoteInboundRtpStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "ssrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 4, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 5, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 6, name: "codecId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 7, name: "fractionLost", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 8, name: "jitter", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 9, name: "localId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 10, name: "packetsLost", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 11, name: "packetsReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 12, name: "roundTripTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 13, name: "roundTripTimeMeasurements", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 14, name: "totalRoundTripTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 15, name: "transportId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_RemoteInboundRtpStats {
    return new ClientSample_PeerConnectionSample_RemoteInboundRtpStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_RemoteInboundRtpStats {
    return new ClientSample_PeerConnectionSample_RemoteInboundRtpStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_RemoteInboundRtpStats {
    return new ClientSample_PeerConnectionSample_RemoteInboundRtpStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_RemoteInboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_RemoteInboundRtpStats> | undefined, b: ClientSample_PeerConnectionSample_RemoteInboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_RemoteInboundRtpStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_RemoteInboundRtpStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundRtpStats
 */
export class ClientSample_PeerConnectionSample_OutboundRtpStats extends Message<ClientSample_PeerConnectionSample_OutboundRtpStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional int64 ssrc = 3;
   */
  ssrc?: bigint;

  /**
   * @generated from field: optional double timestamp = 4;
   */
  timestamp?: number;

  /**
   * @generated from field: optional bool active = 5;
   */
  active?: boolean;

  /**
   * @generated from field: optional string attachments = 6;
   */
  attachments?: string;

  /**
   * @generated from field: optional int64 bytesSent = 7;
   */
  bytesSent?: bigint;

  /**
   * @generated from field: optional string codecId = 8;
   */
  codecId?: string;

  /**
   * @generated from field: optional string encoderImplementation = 9;
   */
  encoderImplementation?: string;

  /**
   * @generated from field: optional int32 firCount = 10;
   */
  firCount?: number;

  /**
   * @generated from field: optional int32 frameHeight = 11;
   */
  frameHeight?: number;

  /**
   * @generated from field: optional int32 frameWidth = 12;
   */
  frameWidth?: number;

  /**
   * @generated from field: optional int32 framesEncoded = 13;
   */
  framesEncoded?: number;

  /**
   * @generated from field: optional double framesPerSecond = 14;
   */
  framesPerSecond?: number;

  /**
   * @generated from field: optional int32 framesSent = 15;
   */
  framesSent?: number;

  /**
   * @generated from field: optional int64 headerBytesSent = 16;
   */
  headerBytesSent?: bigint;

  /**
   * @generated from field: optional int32 hugeFramesSent = 17;
   */
  hugeFramesSent?: number;

  /**
   * @generated from field: optional int32 keyFramesEncoded = 18;
   */
  keyFramesEncoded?: number;

  /**
   * @generated from field: optional string mediaSourceId = 19;
   */
  mediaSourceId?: string;

  /**
   * @generated from field: optional string mid = 20;
   */
  mid?: string;

  /**
   * @generated from field: optional int32 nackCount = 21;
   */
  nackCount?: number;

  /**
   * @generated from field: optional int32 packetsSent = 22;
   */
  packetsSent?: number;

  /**
   * @generated from field: optional int32 pliCount = 23;
   */
  pliCount?: number;

  /**
   * @generated from field: optional bool powerEfficientEncoder = 24;
   */
  powerEfficientEncoder?: boolean;

  /**
   * @generated from field: optional double qpSum = 25;
   */
  qpSum?: number;

  /**
   * @generated from field: optional org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundRtpStats.QualityLimitationDurations qualityLimitationDurations = 26;
   */
  qualityLimitationDurations?: ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations;

  /**
   * @generated from field: optional string qualityLimitationReason = 27;
   */
  qualityLimitationReason?: string;

  /**
   * @generated from field: optional int32 qualityLimitationResolutionChanges = 28;
   */
  qualityLimitationResolutionChanges?: number;

  /**
   * @generated from field: optional string remoteId = 29;
   */
  remoteId?: string;

  /**
   * @generated from field: optional int64 retransmittedBytesSent = 30;
   */
  retransmittedBytesSent?: bigint;

  /**
   * @generated from field: optional int32 retransmittedPacketsSent = 31;
   */
  retransmittedPacketsSent?: number;

  /**
   * @generated from field: optional string rid = 32;
   */
  rid?: string;

  /**
   * @generated from field: optional int64 rtxSsrc = 33;
   */
  rtxSsrc?: bigint;

  /**
   * @generated from field: optional string scalabilityMode = 34;
   */
  scalabilityMode?: string;

  /**
   * @generated from field: optional double targetBitrate = 35;
   */
  targetBitrate?: number;

  /**
   * @generated from field: optional double totalEncodeTime = 36;
   */
  totalEncodeTime?: number;

  /**
   * @generated from field: optional int64 totalEncodedBytesTarget = 37;
   */
  totalEncodedBytesTarget?: bigint;

  /**
   * @generated from field: optional double totalPacketSendDelay = 38;
   */
  totalPacketSendDelay?: number;

  /**
   * @generated from field: optional string transportId = 39;
   */
  transportId?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_OutboundRtpStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundRtpStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "ssrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 4, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 5, name: "active", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true },
    { no: 6, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 7, name: "bytesSent", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 8, name: "codecId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 9, name: "encoderImplementation", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 10, name: "firCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 11, name: "frameHeight", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 12, name: "frameWidth", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 13, name: "framesEncoded", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 14, name: "framesPerSecond", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 15, name: "framesSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 16, name: "headerBytesSent", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 17, name: "hugeFramesSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 18, name: "keyFramesEncoded", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 19, name: "mediaSourceId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 20, name: "mid", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 21, name: "nackCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 22, name: "packetsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 23, name: "pliCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 24, name: "powerEfficientEncoder", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true },
    { no: 25, name: "qpSum", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 26, name: "qualityLimitationDurations", kind: "message", T: ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations, opt: true },
    { no: 27, name: "qualityLimitationReason", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 28, name: "qualityLimitationResolutionChanges", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 29, name: "remoteId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 30, name: "retransmittedBytesSent", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 31, name: "retransmittedPacketsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 32, name: "rid", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 33, name: "rtxSsrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 34, name: "scalabilityMode", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 35, name: "targetBitrate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 36, name: "totalEncodeTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 37, name: "totalEncodedBytesTarget", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 38, name: "totalPacketSendDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 39, name: "transportId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_OutboundRtpStats {
    return new ClientSample_PeerConnectionSample_OutboundRtpStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_OutboundRtpStats {
    return new ClientSample_PeerConnectionSample_OutboundRtpStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_OutboundRtpStats {
    return new ClientSample_PeerConnectionSample_OutboundRtpStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_OutboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_OutboundRtpStats> | undefined, b: ClientSample_PeerConnectionSample_OutboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_OutboundRtpStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_OutboundRtpStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundRtpStats.QualityLimitationDurations
 */
export class ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations extends Message<ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations> {
  /**
   * @generated from field: optional double bandwidth = 1;
   */
  bandwidth?: number;

  /**
   * @generated from field: optional double cpu = 2;
   */
  cpu?: number;

  /**
   * @generated from field: optional double none = 3;
   */
  none?: number;

  /**
   * @generated from field: optional double other = 4;
   */
  other?: number;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.OutboundRtpStats.QualityLimitationDurations";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "bandwidth", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 2, name: "cpu", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 3, name: "none", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 4, name: "other", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations {
    return new ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations {
    return new ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations {
    return new ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations | PlainMessage<ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations> | undefined, b: ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations | PlainMessage<ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_OutboundRtpStats_QualityLimitationDurations, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.RemoteOutboundRtpStats
 */
export class ClientSample_PeerConnectionSample_RemoteOutboundRtpStats extends Message<ClientSample_PeerConnectionSample_RemoteOutboundRtpStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional int64 ssrc = 3;
   */
  ssrc?: bigint;

  /**
   * @generated from field: optional double timestamp = 4;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 5;
   */
  attachments?: string;

  /**
   * @generated from field: optional int64 bytesSent = 6;
   */
  bytesSent?: bigint;

  /**
   * @generated from field: optional string codecId = 7;
   */
  codecId?: string;

  /**
   * @generated from field: optional string localId = 8;
   */
  localId?: string;

  /**
   * @generated from field: optional int32 packetsSent = 9;
   */
  packetsSent?: number;

  /**
   * @generated from field: optional double remoteTimestamp = 10;
   */
  remoteTimestamp?: number;

  /**
   * @generated from field: optional int32 reportsSent = 11;
   */
  reportsSent?: number;

  /**
   * @generated from field: optional double roundTripTime = 12;
   */
  roundTripTime?: number;

  /**
   * @generated from field: optional int32 roundTripTimeMeasurements = 13;
   */
  roundTripTimeMeasurements?: number;

  /**
   * @generated from field: optional double totalRoundTripTime = 14;
   */
  totalRoundTripTime?: number;

  /**
   * @generated from field: optional string transportId = 15;
   */
  transportId?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_RemoteOutboundRtpStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.RemoteOutboundRtpStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "ssrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 4, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 5, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 6, name: "bytesSent", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 7, name: "codecId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 8, name: "localId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 9, name: "packetsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 10, name: "remoteTimestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 11, name: "reportsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 12, name: "roundTripTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 13, name: "roundTripTimeMeasurements", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 14, name: "totalRoundTripTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 15, name: "transportId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_RemoteOutboundRtpStats {
    return new ClientSample_PeerConnectionSample_RemoteOutboundRtpStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_RemoteOutboundRtpStats {
    return new ClientSample_PeerConnectionSample_RemoteOutboundRtpStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_RemoteOutboundRtpStats {
    return new ClientSample_PeerConnectionSample_RemoteOutboundRtpStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_RemoteOutboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_RemoteOutboundRtpStats> | undefined, b: ClientSample_PeerConnectionSample_RemoteOutboundRtpStats | PlainMessage<ClientSample_PeerConnectionSample_RemoteOutboundRtpStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_RemoteOutboundRtpStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.MediaSourceStats
 */
export class ClientSample_PeerConnectionSample_MediaSourceStats extends Message<ClientSample_PeerConnectionSample_MediaSourceStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional double timestamp = 3;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 4;
   */
  attachments?: string;

  /**
   * @generated from field: optional double audioLevel = 5;
   */
  audioLevel?: number;

  /**
   * @generated from field: optional double echoReturnLoss = 6;
   */
  echoReturnLoss?: number;

  /**
   * @generated from field: optional double echoReturnLossEnhancement = 7;
   */
  echoReturnLossEnhancement?: number;

  /**
   * @generated from field: optional int32 frames = 8;
   */
  frames?: number;

  /**
   * @generated from field: optional double framesPerSecond = 9;
   */
  framesPerSecond?: number;

  /**
   * @generated from field: optional int32 height = 10;
   */
  height?: number;

  /**
   * @generated from field: optional double totalAudioEnergy = 11;
   */
  totalAudioEnergy?: number;

  /**
   * @generated from field: optional double totalSamplesDuration = 12;
   */
  totalSamplesDuration?: number;

  /**
   * @generated from field: optional bytes trackIdentifier = 13;
   */
  trackIdentifier?: Uint8Array;

  /**
   * @generated from field: optional int32 width = 14;
   */
  width?: number;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_MediaSourceStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.MediaSourceStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 4, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 5, name: "audioLevel", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 6, name: "echoReturnLoss", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 7, name: "echoReturnLossEnhancement", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 8, name: "frames", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 9, name: "framesPerSecond", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 10, name: "height", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 11, name: "totalAudioEnergy", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 12, name: "totalSamplesDuration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 13, name: "trackIdentifier", kind: "scalar", T: 12 /* ScalarType.BYTES */, opt: true },
    { no: 14, name: "width", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_MediaSourceStats {
    return new ClientSample_PeerConnectionSample_MediaSourceStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_MediaSourceStats {
    return new ClientSample_PeerConnectionSample_MediaSourceStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_MediaSourceStats {
    return new ClientSample_PeerConnectionSample_MediaSourceStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_MediaSourceStats | PlainMessage<ClientSample_PeerConnectionSample_MediaSourceStats> | undefined, b: ClientSample_PeerConnectionSample_MediaSourceStats | PlainMessage<ClientSample_PeerConnectionSample_MediaSourceStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_MediaSourceStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.MediaPlayoutStats
 */
export class ClientSample_PeerConnectionSample_MediaPlayoutStats extends Message<ClientSample_PeerConnectionSample_MediaPlayoutStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional string kind = 2;
   */
  kind?: string;

  /**
   * @generated from field: optional double timestamp = 3;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 4;
   */
  attachments?: string;

  /**
   * @generated from field: optional double synthesizedSamplesDuration = 5;
   */
  synthesizedSamplesDuration?: number;

  /**
   * @generated from field: optional int32 synthesizedSamplesEvents = 6;
   */
  synthesizedSamplesEvents?: number;

  /**
   * @generated from field: optional double totalPlayoutDelay = 7;
   */
  totalPlayoutDelay?: number;

  /**
   * @generated from field: optional int32 totalSamplesCount = 8;
   */
  totalSamplesCount?: number;

  /**
   * @generated from field: optional double totalSamplesDuration = 9;
   */
  totalSamplesDuration?: number;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_MediaPlayoutStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.MediaPlayoutStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "kind", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 4, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 5, name: "synthesizedSamplesDuration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 6, name: "synthesizedSamplesEvents", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 7, name: "totalPlayoutDelay", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 8, name: "totalSamplesCount", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 9, name: "totalSamplesDuration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_MediaPlayoutStats {
    return new ClientSample_PeerConnectionSample_MediaPlayoutStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_MediaPlayoutStats {
    return new ClientSample_PeerConnectionSample_MediaPlayoutStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_MediaPlayoutStats {
    return new ClientSample_PeerConnectionSample_MediaPlayoutStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_MediaPlayoutStats | PlainMessage<ClientSample_PeerConnectionSample_MediaPlayoutStats> | undefined, b: ClientSample_PeerConnectionSample_MediaPlayoutStats | PlainMessage<ClientSample_PeerConnectionSample_MediaPlayoutStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_MediaPlayoutStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.PeerConnectionTransportStats
 */
export class ClientSample_PeerConnectionSample_PeerConnectionTransportStats extends Message<ClientSample_PeerConnectionSample_PeerConnectionTransportStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional double timestamp = 2;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 3;
   */
  attachments?: string;

  /**
   * @generated from field: optional int32 dataChannelsClosed = 4;
   */
  dataChannelsClosed?: number;

  /**
   * @generated from field: optional int32 dataChannelsOpened = 5;
   */
  dataChannelsOpened?: number;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_PeerConnectionTransportStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.PeerConnectionTransportStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 3, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 4, name: "dataChannelsClosed", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 5, name: "dataChannelsOpened", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_PeerConnectionTransportStats {
    return new ClientSample_PeerConnectionSample_PeerConnectionTransportStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_PeerConnectionTransportStats {
    return new ClientSample_PeerConnectionSample_PeerConnectionTransportStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_PeerConnectionTransportStats {
    return new ClientSample_PeerConnectionSample_PeerConnectionTransportStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_PeerConnectionTransportStats | PlainMessage<ClientSample_PeerConnectionSample_PeerConnectionTransportStats> | undefined, b: ClientSample_PeerConnectionSample_PeerConnectionTransportStats | PlainMessage<ClientSample_PeerConnectionSample_PeerConnectionTransportStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_PeerConnectionTransportStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.DataChannelStats
 */
export class ClientSample_PeerConnectionSample_DataChannelStats extends Message<ClientSample_PeerConnectionSample_DataChannelStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional double timestamp = 2;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 3;
   */
  attachments?: string;

  /**
   * @generated from field: optional int64 bytesReceived = 4;
   */
  bytesReceived?: bigint;

  /**
   * @generated from field: optional int64 bytesSent = 5;
   */
  bytesSent?: bigint;

  /**
   * @generated from field: optional int32 dataChannelIdentifier = 6;
   */
  dataChannelIdentifier?: number;

  /**
   * @generated from field: optional string label = 7;
   */
  label?: string;

  /**
   * @generated from field: optional int32 messagesReceived = 8;
   */
  messagesReceived?: number;

  /**
   * @generated from field: optional int32 messagesSent = 9;
   */
  messagesSent?: number;

  /**
   * @generated from field: optional string protocol = 10;
   */
  protocol?: string;

  /**
   * @generated from field: optional string state = 11;
   */
  state?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_DataChannelStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.DataChannelStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 3, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 4, name: "bytesReceived", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 5, name: "bytesSent", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 6, name: "dataChannelIdentifier", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 7, name: "label", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 8, name: "messagesReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 9, name: "messagesSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 10, name: "protocol", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 11, name: "state", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_DataChannelStats {
    return new ClientSample_PeerConnectionSample_DataChannelStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_DataChannelStats {
    return new ClientSample_PeerConnectionSample_DataChannelStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_DataChannelStats {
    return new ClientSample_PeerConnectionSample_DataChannelStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_DataChannelStats | PlainMessage<ClientSample_PeerConnectionSample_DataChannelStats> | undefined, b: ClientSample_PeerConnectionSample_DataChannelStats | PlainMessage<ClientSample_PeerConnectionSample_DataChannelStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_DataChannelStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceTransportStats
 */
export class ClientSample_PeerConnectionSample_IceTransportStats extends Message<ClientSample_PeerConnectionSample_IceTransportStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional double timestamp = 2;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 3;
   */
  attachments?: string;

  /**
   * @generated from field: optional int64 bytesReceived = 4;
   */
  bytesReceived?: bigint;

  /**
   * @generated from field: optional int64 bytesSent = 5;
   */
  bytesSent?: bigint;

  /**
   * @generated from field: optional string dtlsCipher = 6;
   */
  dtlsCipher?: string;

  /**
   * @generated from field: optional string dtlsRole = 7;
   */
  dtlsRole?: string;

  /**
   * @generated from field: optional string dtlsState = 8;
   */
  dtlsState?: string;

  /**
   * @generated from field: optional string iceLocalUsernameFragment = 9;
   */
  iceLocalUsernameFragment?: string;

  /**
   * @generated from field: optional string iceRole = 10;
   */
  iceRole?: string;

  /**
   * @generated from field: optional string iceState = 11;
   */
  iceState?: string;

  /**
   * @generated from field: optional string localCertificateId = 12;
   */
  localCertificateId?: string;

  /**
   * @generated from field: optional int32 packetsReceived = 13;
   */
  packetsReceived?: number;

  /**
   * @generated from field: optional int32 packetsSent = 14;
   */
  packetsSent?: number;

  /**
   * @generated from field: optional string remoteCertificateId = 15;
   */
  remoteCertificateId?: string;

  /**
   * @generated from field: optional int32 selectedCandidatePairChanges = 16;
   */
  selectedCandidatePairChanges?: number;

  /**
   * @generated from field: optional string selectedCandidatePairId = 17;
   */
  selectedCandidatePairId?: string;

  /**
   * @generated from field: optional string srtpCipher = 18;
   */
  srtpCipher?: string;

  /**
   * @generated from field: optional string tlsVersion = 19;
   */
  tlsVersion?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_IceTransportStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceTransportStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 3, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 4, name: "bytesReceived", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 5, name: "bytesSent", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 6, name: "dtlsCipher", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 7, name: "dtlsRole", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 8, name: "dtlsState", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 9, name: "iceLocalUsernameFragment", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 10, name: "iceRole", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 11, name: "iceState", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 12, name: "localCertificateId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 13, name: "packetsReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 14, name: "packetsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 15, name: "remoteCertificateId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 16, name: "selectedCandidatePairChanges", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 17, name: "selectedCandidatePairId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 18, name: "srtpCipher", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 19, name: "tlsVersion", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_IceTransportStats {
    return new ClientSample_PeerConnectionSample_IceTransportStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_IceTransportStats {
    return new ClientSample_PeerConnectionSample_IceTransportStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_IceTransportStats {
    return new ClientSample_PeerConnectionSample_IceTransportStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_IceTransportStats | PlainMessage<ClientSample_PeerConnectionSample_IceTransportStats> | undefined, b: ClientSample_PeerConnectionSample_IceTransportStats | PlainMessage<ClientSample_PeerConnectionSample_IceTransportStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_IceTransportStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidateStats
 */
export class ClientSample_PeerConnectionSample_IceCandidateStats extends Message<ClientSample_PeerConnectionSample_IceCandidateStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional double timestamp = 2;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string address = 3;
   */
  address?: string;

  /**
   * @generated from field: optional string attachments = 4;
   */
  attachments?: string;

  /**
   * @generated from field: optional string candidateType = 5;
   */
  candidateType?: string;

  /**
   * @generated from field: optional string foundation = 6;
   */
  foundation?: string;

  /**
   * @generated from field: optional int32 port = 7;
   */
  port?: number;

  /**
   * @generated from field: optional int64 priority = 8;
   */
  priority?: bigint;

  /**
   * @generated from field: optional string protocol = 9;
   */
  protocol?: string;

  /**
   * @generated from field: optional string relatedAddress = 10;
   */
  relatedAddress?: string;

  /**
   * @generated from field: optional int32 relatedPort = 11;
   */
  relatedPort?: number;

  /**
   * @generated from field: optional string relayProtocol = 12;
   */
  relayProtocol?: string;

  /**
   * @generated from field: optional string tcpType = 13;
   */
  tcpType?: string;

  /**
   * @generated from field: optional string transportId = 14;
   */
  transportId?: string;

  /**
   * @generated from field: optional string url = 15;
   */
  url?: string;

  /**
   * @generated from field: optional string usernameFragment = 16;
   */
  usernameFragment?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_IceCandidateStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidateStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 3, name: "address", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 4, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 5, name: "candidateType", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 6, name: "foundation", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 7, name: "port", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 8, name: "priority", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 9, name: "protocol", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 10, name: "relatedAddress", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 11, name: "relatedPort", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 12, name: "relayProtocol", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 13, name: "tcpType", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 14, name: "transportId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 15, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 16, name: "usernameFragment", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_IceCandidateStats {
    return new ClientSample_PeerConnectionSample_IceCandidateStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_IceCandidateStats {
    return new ClientSample_PeerConnectionSample_IceCandidateStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_IceCandidateStats {
    return new ClientSample_PeerConnectionSample_IceCandidateStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_IceCandidateStats | PlainMessage<ClientSample_PeerConnectionSample_IceCandidateStats> | undefined, b: ClientSample_PeerConnectionSample_IceCandidateStats | PlainMessage<ClientSample_PeerConnectionSample_IceCandidateStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_IceCandidateStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidatePairStats
 */
export class ClientSample_PeerConnectionSample_IceCandidatePairStats extends Message<ClientSample_PeerConnectionSample_IceCandidatePairStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional double timestamp = 2;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 3;
   */
  attachments?: string;

  /**
   * @generated from field: optional double availableIncomingBitrate = 4;
   */
  availableIncomingBitrate?: number;

  /**
   * @generated from field: optional double availableOutgoingBitrate = 5;
   */
  availableOutgoingBitrate?: number;

  /**
   * @generated from field: optional int64 bytesDiscardedOnSend = 6;
   */
  bytesDiscardedOnSend?: bigint;

  /**
   * @generated from field: optional int64 bytesReceived = 7;
   */
  bytesReceived?: bigint;

  /**
   * @generated from field: optional int64 bytesSent = 8;
   */
  bytesSent?: bigint;

  /**
   * @generated from field: optional int32 consentRequestsSent = 9;
   */
  consentRequestsSent?: number;

  /**
   * @generated from field: optional double currentRoundTripTime = 10;
   */
  currentRoundTripTime?: number;

  /**
   * @generated from field: optional double lastPacketReceivedTimestamp = 11;
   */
  lastPacketReceivedTimestamp?: number;

  /**
   * @generated from field: optional double lastPacketSentTimestamp = 12;
   */
  lastPacketSentTimestamp?: number;

  /**
   * @generated from field: optional string localCandidateId = 13;
   */
  localCandidateId?: string;

  /**
   * @generated from field: optional bool nominated = 14;
   */
  nominated?: boolean;

  /**
   * @generated from field: optional int32 packetsDiscardedOnSend = 15;
   */
  packetsDiscardedOnSend?: number;

  /**
   * @generated from field: optional int32 packetsReceived = 16;
   */
  packetsReceived?: number;

  /**
   * @generated from field: optional int32 packetsSent = 17;
   */
  packetsSent?: number;

  /**
   * @generated from field: optional string remoteCandidateId = 18;
   */
  remoteCandidateId?: string;

  /**
   * @generated from field: optional int32 requestsReceived = 19;
   */
  requestsReceived?: number;

  /**
   * @generated from field: optional int32 requestsSent = 20;
   */
  requestsSent?: number;

  /**
   * @generated from field: optional int32 responsesReceived = 21;
   */
  responsesReceived?: number;

  /**
   * @generated from field: optional int32 responsesSent = 22;
   */
  responsesSent?: number;

  /**
   * @generated from field: optional org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidatePairStats.IceCandidatePairStatsEnum state = 23;
   */
  state?: ClientSample_PeerConnectionSample_IceCandidatePairStats_IceCandidatePairStatsEnum;

  /**
   * @generated from field: optional double totalRoundTripTime = 24;
   */
  totalRoundTripTime?: number;

  /**
   * @generated from field: optional string transportId = 25;
   */
  transportId?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_IceCandidatePairStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidatePairStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 3, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 4, name: "availableIncomingBitrate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 5, name: "availableOutgoingBitrate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 6, name: "bytesDiscardedOnSend", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 7, name: "bytesReceived", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 8, name: "bytesSent", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 9, name: "consentRequestsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 10, name: "currentRoundTripTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 11, name: "lastPacketReceivedTimestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 12, name: "lastPacketSentTimestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 13, name: "localCandidateId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 14, name: "nominated", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true },
    { no: 15, name: "packetsDiscardedOnSend", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 16, name: "packetsReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 17, name: "packetsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 18, name: "remoteCandidateId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 19, name: "requestsReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 20, name: "requestsSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 21, name: "responsesReceived", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 22, name: "responsesSent", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
    { no: 23, name: "state", kind: "enum", T: proto3.getEnumType(ClientSample_PeerConnectionSample_IceCandidatePairStats_IceCandidatePairStatsEnum), opt: true },
    { no: 24, name: "totalRoundTripTime", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 25, name: "transportId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_IceCandidatePairStats {
    return new ClientSample_PeerConnectionSample_IceCandidatePairStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_IceCandidatePairStats {
    return new ClientSample_PeerConnectionSample_IceCandidatePairStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_IceCandidatePairStats {
    return new ClientSample_PeerConnectionSample_IceCandidatePairStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_IceCandidatePairStats | PlainMessage<ClientSample_PeerConnectionSample_IceCandidatePairStats> | undefined, b: ClientSample_PeerConnectionSample_IceCandidatePairStats | PlainMessage<ClientSample_PeerConnectionSample_IceCandidatePairStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_IceCandidatePairStats, a, b);
  }
}

/**
 * @generated from enum org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidatePairStats.IceCandidatePairStatsEnum
 */
export enum ClientSample_PeerConnectionSample_IceCandidatePairStats_IceCandidatePairStatsEnum {
  /**
   * For state 
   *
   * @generated from enum value: NEW = 0;
   */
  NEW = 0,

  /**
   * @generated from enum value: INPROGRESS = 1;
   */
  INPROGRESS = 1,

  /**
   * @generated from enum value: WAITING = 2;
   */
  WAITING = 2,

  /**
   * @generated from enum value: FAILED = 3;
   */
  FAILED = 3,

  /**
   * @generated from enum value: SUCCEEDED = 4;
   */
  SUCCEEDED = 4,

  /**
   * @generated from enum value: CANCELLED = 5;
   */
  CANCELLED = 5,
}
// Retrieve enum metadata with: proto3.getEnumType(ClientSample_PeerConnectionSample_IceCandidatePairStats_IceCandidatePairStatsEnum)
proto3.util.setEnumType(ClientSample_PeerConnectionSample_IceCandidatePairStats_IceCandidatePairStatsEnum, "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.IceCandidatePairStats.IceCandidatePairStatsEnum", [
  { no: 0, name: "NEW" },
  { no: 1, name: "INPROGRESS" },
  { no: 2, name: "WAITING" },
  { no: 3, name: "FAILED" },
  { no: 4, name: "SUCCEEDED" },
  { no: 5, name: "CANCELLED" },
]);

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.CertificateStats
 */
export class ClientSample_PeerConnectionSample_CertificateStats extends Message<ClientSample_PeerConnectionSample_CertificateStats> {
  /**
   * @generated from field: optional string id = 1;
   */
  id?: string;

  /**
   * @generated from field: optional double timestamp = 2;
   */
  timestamp?: number;

  /**
   * @generated from field: optional string attachments = 3;
   */
  attachments?: string;

  /**
   * @generated from field: optional string base64Certificate = 4;
   */
  base64Certificate?: string;

  /**
   * @generated from field: optional string fingerprint = 5;
   */
  fingerprint?: string;

  /**
   * @generated from field: optional string fingerprintAlgorithm = 6;
   */
  fingerprintAlgorithm?: string;

  /**
   * @generated from field: optional string issuerCertificateId = 7;
   */
  issuerCertificateId?: string;

  constructor(data?: PartialMessage<ClientSample_PeerConnectionSample_CertificateStats>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.PeerConnectionSample.CertificateStats";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 3, name: "attachments", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 4, name: "base64Certificate", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 5, name: "fingerprint", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 6, name: "fingerprintAlgorithm", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 7, name: "issuerCertificateId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_PeerConnectionSample_CertificateStats {
    return new ClientSample_PeerConnectionSample_CertificateStats().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_CertificateStats {
    return new ClientSample_PeerConnectionSample_CertificateStats().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_PeerConnectionSample_CertificateStats {
    return new ClientSample_PeerConnectionSample_CertificateStats().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_PeerConnectionSample_CertificateStats | PlainMessage<ClientSample_PeerConnectionSample_CertificateStats> | undefined, b: ClientSample_PeerConnectionSample_CertificateStats | PlainMessage<ClientSample_PeerConnectionSample_CertificateStats> | undefined): boolean {
    return proto3.util.equals(ClientSample_PeerConnectionSample_CertificateStats, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.ClientEvent
 */
export class ClientSample_ClientEvent extends Message<ClientSample_ClientEvent> {
  /**
   * @generated from field: optional string type = 1;
   */
  type?: string;

  /**
   * @generated from field: optional string payload = 2;
   */
  payload?: string;

  /**
   * @generated from field: optional double timestamp = 3;
   */
  timestamp?: number;

  constructor(data?: PartialMessage<ClientSample_ClientEvent>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.ClientEvent";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "payload", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_ClientEvent {
    return new ClientSample_ClientEvent().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_ClientEvent {
    return new ClientSample_ClientEvent().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_ClientEvent {
    return new ClientSample_ClientEvent().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_ClientEvent | PlainMessage<ClientSample_ClientEvent> | undefined, b: ClientSample_ClientEvent | PlainMessage<ClientSample_ClientEvent> | undefined): boolean {
    return proto3.util.equals(ClientSample_ClientEvent, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.ClientIssue
 */
export class ClientSample_ClientIssue extends Message<ClientSample_ClientIssue> {
  /**
   * @generated from field: optional string type = 1;
   */
  type?: string;

  /**
   * @generated from field: optional string payload = 2;
   */
  payload?: string;

  /**
   * @generated from field: optional double timestamp = 3;
   */
  timestamp?: number;

  constructor(data?: PartialMessage<ClientSample_ClientIssue>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.ClientIssue";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "payload", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_ClientIssue {
    return new ClientSample_ClientIssue().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_ClientIssue {
    return new ClientSample_ClientIssue().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_ClientIssue {
    return new ClientSample_ClientIssue().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_ClientIssue | PlainMessage<ClientSample_ClientIssue> | undefined, b: ClientSample_ClientIssue | PlainMessage<ClientSample_ClientIssue> | undefined): boolean {
    return proto3.util.equals(ClientSample_ClientIssue, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.ClientMetaData
 */
export class ClientSample_ClientMetaData extends Message<ClientSample_ClientMetaData> {
  /**
   * @generated from field: optional string type = 1;
   */
  type?: string;

  /**
   * @generated from field: optional string payload = 2;
   */
  payload?: string;

  /**
   * @generated from field: optional bytes peerConnectionId = 3;
   */
  peerConnectionId?: Uint8Array;

  /**
   * @generated from field: optional int64 ssrc = 4;
   */
  ssrc?: bigint;

  /**
   * @generated from field: optional double timestamp = 5;
   */
  timestamp?: number;

  /**
   * @generated from field: optional bytes trackId = 6;
   */
  trackId?: Uint8Array;

  constructor(data?: PartialMessage<ClientSample_ClientMetaData>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.ClientMetaData";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "payload", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 3, name: "peerConnectionId", kind: "scalar", T: 12 /* ScalarType.BYTES */, opt: true },
    { no: 4, name: "ssrc", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true },
    { no: 5, name: "timestamp", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true },
    { no: 6, name: "trackId", kind: "scalar", T: 12 /* ScalarType.BYTES */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_ClientMetaData {
    return new ClientSample_ClientMetaData().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_ClientMetaData {
    return new ClientSample_ClientMetaData().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_ClientMetaData {
    return new ClientSample_ClientMetaData().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_ClientMetaData | PlainMessage<ClientSample_ClientMetaData> | undefined, b: ClientSample_ClientMetaData | PlainMessage<ClientSample_ClientMetaData> | undefined): boolean {
    return proto3.util.equals(ClientSample_ClientMetaData, a, b);
  }
}

/**
 * @generated from message org.observertc.schemas.protobuf.ClientSample.ExtensionStat
 */
export class ClientSample_ExtensionStat extends Message<ClientSample_ExtensionStat> {
  /**
   * @generated from field: optional string type = 1;
   */
  type?: string;

  /**
   * @generated from field: optional string payload = 2;
   */
  payload?: string;

  constructor(data?: PartialMessage<ClientSample_ExtensionStat>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime = proto3;
  static readonly typeName = "org.observertc.schemas.protobuf.ClientSample.ExtensionStat";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
    { no: 2, name: "payload", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ClientSample_ExtensionStat {
    return new ClientSample_ExtensionStat().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ClientSample_ExtensionStat {
    return new ClientSample_ExtensionStat().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ClientSample_ExtensionStat {
    return new ClientSample_ExtensionStat().fromJsonString(jsonString, options);
  }

  static equals(a: ClientSample_ExtensionStat | PlainMessage<ClientSample_ExtensionStat> | undefined, b: ClientSample_ExtensionStat | PlainMessage<ClientSample_ExtensionStat> | undefined): boolean {
    return proto3.util.equals(ClientSample_ExtensionStat, a, b);
  }
}

