@livekit/rtc-node 0.13.14 → 0.13.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/audio_stream.cjs +3 -2
  2. package/dist/audio_stream.cjs.map +1 -1
  3. package/dist/audio_stream.d.cts +2 -1
  4. package/dist/audio_stream.d.ts +2 -1
  5. package/dist/audio_stream.d.ts.map +1 -1
  6. package/dist/audio_stream.js +2 -1
  7. package/dist/audio_stream.js.map +1 -1
  8. package/dist/data_streams/index.d.cts +2 -2
  9. package/dist/data_streams/index.d.ts +2 -2
  10. package/dist/data_streams/stream_reader.cjs.map +1 -1
  11. package/dist/data_streams/stream_reader.d.cts +2 -2
  12. package/dist/data_streams/stream_reader.d.ts +2 -2
  13. package/dist/data_streams/stream_reader.d.ts.map +1 -1
  14. package/dist/data_streams/stream_reader.js.map +1 -1
  15. package/dist/data_streams/stream_writer.cjs.map +1 -1
  16. package/dist/data_streams/stream_writer.d.cts +2 -2
  17. package/dist/data_streams/stream_writer.d.ts +2 -2
  18. package/dist/data_streams/stream_writer.d.ts.map +1 -1
  19. package/dist/data_streams/stream_writer.js.map +1 -1
  20. package/dist/data_streams/types.d.cts +2 -2
  21. package/dist/data_streams/types.d.ts +2 -2
  22. package/dist/ffi_client.d.cts +1 -0
  23. package/dist/ffi_client.d.ts +1 -0
  24. package/dist/index.d.cts +2 -2
  25. package/dist/index.d.ts +2 -2
  26. package/dist/participant.cjs +13 -15
  27. package/dist/participant.cjs.map +1 -1
  28. package/dist/participant.d.cts +2 -2
  29. package/dist/participant.d.ts +2 -2
  30. package/dist/participant.d.ts.map +1 -1
  31. package/dist/participant.js +5 -7
  32. package/dist/participant.js.map +1 -1
  33. package/dist/proto/audio_frame_pb.cjs +4 -2
  34. package/dist/proto/audio_frame_pb.cjs.map +1 -1
  35. package/dist/proto/audio_frame_pb.d.cts +8 -0
  36. package/dist/proto/audio_frame_pb.d.ts +8 -0
  37. package/dist/proto/audio_frame_pb.d.ts.map +1 -1
  38. package/dist/proto/audio_frame_pb.js +4 -2
  39. package/dist/proto/audio_frame_pb.js.map +1 -1
  40. package/dist/proto/data_stream_pb.cjs +1549 -0
  41. package/dist/proto/data_stream_pb.cjs.map +1 -0
  42. package/dist/proto/data_stream_pb.d.cts +1358 -0
  43. package/dist/proto/data_stream_pb.d.ts +1358 -0
  44. package/dist/proto/data_stream_pb.d.ts.map +1 -0
  45. package/dist/proto/data_stream_pb.js +1473 -0
  46. package/dist/proto/data_stream_pb.js.map +1 -0
  47. package/dist/proto/ffi_pb.cjs +43 -3
  48. package/dist/proto/ffi_pb.cjs.map +1 -1
  49. package/dist/proto/ffi_pb.d.cts +244 -1
  50. package/dist/proto/ffi_pb.d.ts +244 -1
  51. package/dist/proto/ffi_pb.d.ts.map +1 -1
  52. package/dist/proto/ffi_pb.js +43 -3
  53. package/dist/proto/ffi_pb.js.map +1 -1
  54. package/dist/proto/participant_pb.cjs +5 -1
  55. package/dist/proto/participant_pb.cjs.map +1 -1
  56. package/dist/proto/participant_pb.d.cts +9 -1
  57. package/dist/proto/participant_pb.d.ts +9 -1
  58. package/dist/proto/participant_pb.d.ts.map +1 -1
  59. package/dist/proto/participant_pb.js +5 -1
  60. package/dist/proto/participant_pb.js.map +1 -1
  61. package/dist/proto/room_pb.cjs +99 -2
  62. package/dist/proto/room_pb.cjs.map +1 -1
  63. package/dist/proto/room_pb.d.cts +130 -2
  64. package/dist/proto/room_pb.d.ts +130 -2
  65. package/dist/proto/room_pb.d.ts.map +1 -1
  66. package/dist/proto/room_pb.js +97 -3
  67. package/dist/proto/room_pb.js.map +1 -1
  68. package/dist/proto/track_pb.cjs +27 -1
  69. package/dist/proto/track_pb.cjs.map +1 -1
  70. package/dist/proto/track_pb.d.cts +40 -1
  71. package/dist/proto/track_pb.d.ts +40 -1
  72. package/dist/proto/track_pb.d.ts.map +1 -1
  73. package/dist/proto/track_pb.js +26 -1
  74. package/dist/proto/track_pb.js.map +1 -1
  75. package/dist/room.cjs +79 -3
  76. package/dist/room.cjs.map +1 -1
  77. package/dist/room.d.cts +51 -3
  78. package/dist/room.d.ts +51 -3
  79. package/dist/room.d.ts.map +1 -1
  80. package/dist/room.js +77 -1
  81. package/dist/room.js.map +1 -1
  82. package/dist/{stream_reader-a8_oiaOi.d.cts → stream_reader-Ch2zvjU3.d.cts} +0 -1
  83. package/dist/{stream_reader-DWUV4eJB.d.ts → stream_reader-DRyR29vo.d.ts} +0 -1
  84. package/dist/track.cjs +23 -4
  85. package/dist/track.cjs.map +1 -1
  86. package/dist/track.d.cts +8 -2
  87. package/dist/track.d.ts +8 -2
  88. package/dist/track.d.ts.map +1 -1
  89. package/dist/track.js +23 -4
  90. package/dist/track.js.map +1 -1
  91. package/dist/track_publication.d.cts +1 -0
  92. package/dist/track_publication.d.ts +1 -0
  93. package/dist/version.cjs +1 -1
  94. package/dist/version.cjs.map +1 -1
  95. package/dist/version.d.cts +1 -1
  96. package/dist/version.d.ts +1 -1
  97. package/dist/version.js +1 -1
  98. package/dist/version.js.map +1 -1
  99. package/dist/video_source.d.cts +1 -0
  100. package/dist/video_source.d.ts +1 -0
  101. package/dist/video_stream.cjs +1 -2
  102. package/dist/video_stream.cjs.map +1 -1
  103. package/dist/video_stream.d.cts +1 -1
  104. package/dist/video_stream.d.ts +1 -1
  105. package/dist/video_stream.d.ts.map +1 -1
  106. package/dist/video_stream.js +0 -1
  107. package/dist/video_stream.js.map +1 -1
  108. package/package.json +7 -7
  109. package/src/audio_stream.ts +5 -1
  110. package/src/data_streams/stream_reader.ts +0 -1
  111. package/src/data_streams/stream_writer.ts +0 -1
  112. package/src/participant.ts +13 -15
  113. package/src/proto/audio_frame_pb.ts +12 -0
  114. package/src/proto/data_stream_pb.ts +2515 -0
  115. package/src/proto/ffi_pb.ts +283 -1
  116. package/src/proto/participant_pb.ts +12 -0
  117. package/src/proto/room_pb.ts +212 -1
  118. package/src/proto/track_pb.ts +58 -0
  119. package/src/room.ts +79 -1
  120. package/src/track.ts +28 -4
  121. package/src/version.ts +1 -1
  122. package/src/video_stream.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/proto/track_pb.ts"],"sourcesContent":["// Copyright 2023 LiveKit, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v1.10.0 with parameter \"target=ts,import_extension=.js\"\n// @generated from file track.proto (package livekit.proto, syntax proto2)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto2 } from \"@bufbuild/protobuf\";\nimport { RtcStats } from \"./stats_pb.js\";\nimport { EncryptionType } from \"./e2ee_pb.js\";\nimport { FfiOwnedHandle } from \"./handle_pb.js\";\n\n/**\n * @generated from enum livekit.proto.TrackKind\n */\nexport enum TrackKind {\n /**\n * @generated from enum value: KIND_UNKNOWN = 0;\n */\n KIND_UNKNOWN = 0,\n\n /**\n * @generated from enum value: KIND_AUDIO = 1;\n */\n KIND_AUDIO = 1,\n\n /**\n * @generated from enum value: KIND_VIDEO = 2;\n */\n KIND_VIDEO = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(TrackKind)\nproto2.util.setEnumType(TrackKind, \"livekit.proto.TrackKind\", [\n { no: 0, name: \"KIND_UNKNOWN\" },\n { no: 1, name: \"KIND_AUDIO\" },\n { no: 2, name: \"KIND_VIDEO\" },\n]);\n\n/**\n * @generated from enum livekit.proto.TrackSource\n */\nexport enum TrackSource {\n /**\n * @generated from enum value: SOURCE_UNKNOWN = 0;\n */\n SOURCE_UNKNOWN = 0,\n\n /**\n * @generated from enum value: SOURCE_CAMERA = 1;\n */\n SOURCE_CAMERA = 1,\n\n /**\n * @generated from enum value: SOURCE_MICROPHONE = 2;\n */\n SOURCE_MICROPHONE = 2,\n\n /**\n * @generated from enum value: SOURCE_SCREENSHARE = 3;\n */\n SOURCE_SCREENSHARE = 3,\n\n /**\n * @generated from enum value: SOURCE_SCREENSHARE_AUDIO = 4;\n */\n SOURCE_SCREENSHARE_AUDIO = 4,\n}\n// Retrieve enum metadata with: proto2.getEnumType(TrackSource)\nproto2.util.setEnumType(TrackSource, \"livekit.proto.TrackSource\", [\n { no: 0, name: \"SOURCE_UNKNOWN\" },\n { no: 1, name: \"SOURCE_CAMERA\" },\n { no: 2, name: \"SOURCE_MICROPHONE\" },\n { no: 3, name: \"SOURCE_SCREENSHARE\" },\n { no: 4, name: \"SOURCE_SCREENSHARE_AUDIO\" },\n]);\n\n/**\n * @generated from enum livekit.proto.StreamState\n */\nexport enum StreamState {\n /**\n * @generated from enum value: STATE_UNKNOWN = 0;\n */\n STATE_UNKNOWN = 0,\n\n /**\n * @generated from enum value: STATE_ACTIVE = 1;\n */\n STATE_ACTIVE = 1,\n\n /**\n * @generated from enum value: STATE_PAUSED = 2;\n */\n STATE_PAUSED = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(StreamState)\nproto2.util.setEnumType(StreamState, \"livekit.proto.StreamState\", [\n { no: 0, name: \"STATE_UNKNOWN\" },\n { no: 1, name: \"STATE_ACTIVE\" },\n { no: 2, name: \"STATE_PAUSED\" },\n]);\n\n/**\n * Create a new VideoTrack from a VideoSource\n *\n * @generated from message livekit.proto.CreateVideoTrackRequest\n */\nexport class CreateVideoTrackRequest extends Message<CreateVideoTrackRequest> {\n /**\n * @generated from field: required string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: required uint64 source_handle = 2;\n */\n sourceHandle?: bigint;\n\n constructor(data?: PartialMessage<CreateVideoTrackRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateVideoTrackRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"source_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateVideoTrackRequest {\n return new CreateVideoTrackRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateVideoTrackRequest {\n return new CreateVideoTrackRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateVideoTrackRequest {\n return new CreateVideoTrackRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateVideoTrackRequest | PlainMessage<CreateVideoTrackRequest> | undefined, b: CreateVideoTrackRequest | PlainMessage<CreateVideoTrackRequest> | undefined): boolean {\n return proto2.util.equals(CreateVideoTrackRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.CreateVideoTrackResponse\n */\nexport class CreateVideoTrackResponse extends Message<CreateVideoTrackResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedTrack track = 1;\n */\n track?: OwnedTrack;\n\n constructor(data?: PartialMessage<CreateVideoTrackResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateVideoTrackResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track\", kind: \"message\", T: OwnedTrack, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateVideoTrackResponse {\n return new CreateVideoTrackResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateVideoTrackResponse {\n return new CreateVideoTrackResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateVideoTrackResponse {\n return new CreateVideoTrackResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateVideoTrackResponse | PlainMessage<CreateVideoTrackResponse> | undefined, b: CreateVideoTrackResponse | PlainMessage<CreateVideoTrackResponse> | undefined): boolean {\n return proto2.util.equals(CreateVideoTrackResponse, a, b);\n }\n}\n\n/**\n * Create a new AudioTrack from a AudioSource\n *\n * @generated from message livekit.proto.CreateAudioTrackRequest\n */\nexport class CreateAudioTrackRequest extends Message<CreateAudioTrackRequest> {\n /**\n * @generated from field: required string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: required uint64 source_handle = 2;\n */\n sourceHandle?: bigint;\n\n constructor(data?: PartialMessage<CreateAudioTrackRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateAudioTrackRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"source_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateAudioTrackRequest {\n return new CreateAudioTrackRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateAudioTrackRequest {\n return new CreateAudioTrackRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateAudioTrackRequest {\n return new CreateAudioTrackRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAudioTrackRequest | PlainMessage<CreateAudioTrackRequest> | undefined, b: CreateAudioTrackRequest | PlainMessage<CreateAudioTrackRequest> | undefined): boolean {\n return proto2.util.equals(CreateAudioTrackRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.CreateAudioTrackResponse\n */\nexport class CreateAudioTrackResponse extends Message<CreateAudioTrackResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedTrack track = 1;\n */\n track?: OwnedTrack;\n\n constructor(data?: PartialMessage<CreateAudioTrackResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateAudioTrackResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track\", kind: \"message\", T: OwnedTrack, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateAudioTrackResponse {\n return new CreateAudioTrackResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateAudioTrackResponse {\n return new CreateAudioTrackResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateAudioTrackResponse {\n return new CreateAudioTrackResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAudioTrackResponse | PlainMessage<CreateAudioTrackResponse> | undefined, b: CreateAudioTrackResponse | PlainMessage<CreateAudioTrackResponse> | undefined): boolean {\n return proto2.util.equals(CreateAudioTrackResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.GetStatsRequest\n */\nexport class GetStatsRequest extends Message<GetStatsRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n constructor(data?: PartialMessage<GetStatsRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.GetStatsRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetStatsRequest {\n return new GetStatsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetStatsRequest {\n return new GetStatsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetStatsRequest {\n return new GetStatsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetStatsRequest | PlainMessage<GetStatsRequest> | undefined, b: GetStatsRequest | PlainMessage<GetStatsRequest> | undefined): boolean {\n return proto2.util.equals(GetStatsRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.GetStatsResponse\n */\nexport class GetStatsResponse extends Message<GetStatsResponse> {\n /**\n * @generated from field: required uint64 async_id = 1;\n */\n asyncId?: bigint;\n\n constructor(data?: PartialMessage<GetStatsResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.GetStatsResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"async_id\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetStatsResponse {\n return new GetStatsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetStatsResponse {\n return new GetStatsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetStatsResponse {\n return new GetStatsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetStatsResponse | PlainMessage<GetStatsResponse> | undefined, b: GetStatsResponse | PlainMessage<GetStatsResponse> | undefined): boolean {\n return proto2.util.equals(GetStatsResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.GetStatsCallback\n */\nexport class GetStatsCallback extends Message<GetStatsCallback> {\n /**\n * @generated from field: required uint64 async_id = 1;\n */\n asyncId?: bigint;\n\n /**\n * @generated from field: optional string error = 2;\n */\n error?: string;\n\n /**\n * @generated from field: repeated livekit.proto.RtcStats stats = 3;\n */\n stats: RtcStats[] = [];\n\n constructor(data?: PartialMessage<GetStatsCallback>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.GetStatsCallback\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"async_id\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"stats\", kind: \"message\", T: RtcStats, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetStatsCallback {\n return new GetStatsCallback().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetStatsCallback {\n return new GetStatsCallback().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetStatsCallback {\n return new GetStatsCallback().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetStatsCallback | PlainMessage<GetStatsCallback> | undefined, b: GetStatsCallback | PlainMessage<GetStatsCallback> | undefined): boolean {\n return proto2.util.equals(GetStatsCallback, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.TrackEvent\n */\nexport class TrackEvent extends Message<TrackEvent> {\n constructor(data?: PartialMessage<TrackEvent>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.TrackEvent\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TrackEvent {\n return new TrackEvent().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TrackEvent {\n return new TrackEvent().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TrackEvent {\n return new TrackEvent().fromJsonString(jsonString, options);\n }\n\n static equals(a: TrackEvent | PlainMessage<TrackEvent> | undefined, b: TrackEvent | PlainMessage<TrackEvent> | undefined): boolean {\n return proto2.util.equals(TrackEvent, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.TrackPublicationInfo\n */\nexport class TrackPublicationInfo extends Message<TrackPublicationInfo> {\n /**\n * @generated from field: required string sid = 1;\n */\n sid?: string;\n\n /**\n * @generated from field: required string name = 2;\n */\n name?: string;\n\n /**\n * @generated from field: required livekit.proto.TrackKind kind = 3;\n */\n kind?: TrackKind;\n\n /**\n * @generated from field: required livekit.proto.TrackSource source = 4;\n */\n source?: TrackSource;\n\n /**\n * @generated from field: required bool simulcasted = 5;\n */\n simulcasted?: boolean;\n\n /**\n * @generated from field: required uint32 width = 6;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 7;\n */\n height?: number;\n\n /**\n * @generated from field: required string mime_type = 8;\n */\n mimeType?: string;\n\n /**\n * @generated from field: required bool muted = 9;\n */\n muted?: boolean;\n\n /**\n * @generated from field: required bool remote = 10;\n */\n remote?: boolean;\n\n /**\n * @generated from field: required livekit.proto.EncryptionType encryption_type = 11;\n */\n encryptionType?: EncryptionType;\n\n constructor(data?: PartialMessage<TrackPublicationInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.TrackPublicationInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"sid\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 3, name: \"kind\", kind: \"enum\", T: proto2.getEnumType(TrackKind), req: true },\n { no: 4, name: \"source\", kind: \"enum\", T: proto2.getEnumType(TrackSource), req: true },\n { no: 5, name: \"simulcasted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 6, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 7, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 8, name: \"mime_type\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 9, name: \"muted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 10, name: \"remote\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 11, name: \"encryption_type\", kind: \"enum\", T: proto2.getEnumType(EncryptionType), req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TrackPublicationInfo {\n return new TrackPublicationInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TrackPublicationInfo {\n return new TrackPublicationInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TrackPublicationInfo {\n return new TrackPublicationInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: TrackPublicationInfo | PlainMessage<TrackPublicationInfo> | undefined, b: TrackPublicationInfo | PlainMessage<TrackPublicationInfo> | undefined): boolean {\n return proto2.util.equals(TrackPublicationInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedTrackPublication\n */\nexport class OwnedTrackPublication extends Message<OwnedTrackPublication> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.TrackPublicationInfo info = 2;\n */\n info?: TrackPublicationInfo;\n\n constructor(data?: PartialMessage<OwnedTrackPublication>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedTrackPublication\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: TrackPublicationInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedTrackPublication {\n return new OwnedTrackPublication().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedTrackPublication {\n return new OwnedTrackPublication().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedTrackPublication {\n return new OwnedTrackPublication().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedTrackPublication | PlainMessage<OwnedTrackPublication> | undefined, b: OwnedTrackPublication | PlainMessage<OwnedTrackPublication> | undefined): boolean {\n return proto2.util.equals(OwnedTrackPublication, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.TrackInfo\n */\nexport class TrackInfo extends Message<TrackInfo> {\n /**\n * @generated from field: required string sid = 1;\n */\n sid?: string;\n\n /**\n * @generated from field: required string name = 2;\n */\n name?: string;\n\n /**\n * @generated from field: required livekit.proto.TrackKind kind = 3;\n */\n kind?: TrackKind;\n\n /**\n * @generated from field: required livekit.proto.StreamState stream_state = 4;\n */\n streamState?: StreamState;\n\n /**\n * @generated from field: required bool muted = 5;\n */\n muted?: boolean;\n\n /**\n * @generated from field: required bool remote = 6;\n */\n remote?: boolean;\n\n constructor(data?: PartialMessage<TrackInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.TrackInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"sid\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 3, name: \"kind\", kind: \"enum\", T: proto2.getEnumType(TrackKind), req: true },\n { no: 4, name: \"stream_state\", kind: \"enum\", T: proto2.getEnumType(StreamState), req: true },\n { no: 5, name: \"muted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 6, name: \"remote\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TrackInfo {\n return new TrackInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TrackInfo {\n return new TrackInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TrackInfo {\n return new TrackInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: TrackInfo | PlainMessage<TrackInfo> | undefined, b: TrackInfo | PlainMessage<TrackInfo> | undefined): boolean {\n return proto2.util.equals(TrackInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedTrack\n */\nexport class OwnedTrack extends Message<OwnedTrack> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.TrackInfo info = 2;\n */\n info?: TrackInfo;\n\n constructor(data?: PartialMessage<OwnedTrack>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedTrack\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: TrackInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedTrack {\n return new OwnedTrack().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedTrack {\n return new OwnedTrack().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedTrack {\n return new OwnedTrack().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedTrack | PlainMessage<OwnedTrack> | undefined, b: OwnedTrack | PlainMessage<OwnedTrack> | undefined): boolean {\n return proto2.util.equals(OwnedTrack, a, b);\n }\n}\n\n/**\n * Mute/UnMute a track\n *\n * @generated from message livekit.proto.LocalTrackMuteRequest\n */\nexport class LocalTrackMuteRequest extends Message<LocalTrackMuteRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n /**\n * @generated from field: required bool mute = 2;\n */\n mute?: boolean;\n\n constructor(data?: PartialMessage<LocalTrackMuteRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.LocalTrackMuteRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"mute\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): LocalTrackMuteRequest {\n return new LocalTrackMuteRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): LocalTrackMuteRequest {\n return new LocalTrackMuteRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): LocalTrackMuteRequest {\n return new LocalTrackMuteRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: LocalTrackMuteRequest | PlainMessage<LocalTrackMuteRequest> | undefined, b: LocalTrackMuteRequest | PlainMessage<LocalTrackMuteRequest> | undefined): boolean {\n return proto2.util.equals(LocalTrackMuteRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.LocalTrackMuteResponse\n */\nexport class LocalTrackMuteResponse extends Message<LocalTrackMuteResponse> {\n /**\n * @generated from field: required bool muted = 1;\n */\n muted?: boolean;\n\n constructor(data?: PartialMessage<LocalTrackMuteResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.LocalTrackMuteResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"muted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): LocalTrackMuteResponse {\n return new LocalTrackMuteResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): LocalTrackMuteResponse {\n return new LocalTrackMuteResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): LocalTrackMuteResponse {\n return new LocalTrackMuteResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: LocalTrackMuteResponse | PlainMessage<LocalTrackMuteResponse> | undefined, b: LocalTrackMuteResponse | PlainMessage<LocalTrackMuteResponse> | undefined): boolean {\n return proto2.util.equals(LocalTrackMuteResponse, a, b);\n }\n}\n\n/**\n * Enable/Disable a remote track\n *\n * @generated from message livekit.proto.EnableRemoteTrackRequest\n */\nexport class EnableRemoteTrackRequest extends Message<EnableRemoteTrackRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n /**\n * @generated from field: required bool enabled = 2;\n */\n enabled?: boolean;\n\n constructor(data?: PartialMessage<EnableRemoteTrackRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.EnableRemoteTrackRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnableRemoteTrackRequest {\n return new EnableRemoteTrackRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnableRemoteTrackRequest {\n return new EnableRemoteTrackRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnableRemoteTrackRequest {\n return new EnableRemoteTrackRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnableRemoteTrackRequest | PlainMessage<EnableRemoteTrackRequest> | undefined, b: EnableRemoteTrackRequest | PlainMessage<EnableRemoteTrackRequest> | undefined): boolean {\n return proto2.util.equals(EnableRemoteTrackRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.EnableRemoteTrackResponse\n */\nexport class EnableRemoteTrackResponse extends Message<EnableRemoteTrackResponse> {\n /**\n * @generated from field: required bool enabled = 1;\n */\n enabled?: boolean;\n\n constructor(data?: PartialMessage<EnableRemoteTrackResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.EnableRemoteTrackResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnableRemoteTrackResponse {\n return new EnableRemoteTrackResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnableRemoteTrackResponse {\n return new EnableRemoteTrackResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnableRemoteTrackResponse {\n return new EnableRemoteTrackResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnableRemoteTrackResponse | PlainMessage<EnableRemoteTrackResponse> | undefined, b: EnableRemoteTrackResponse | PlainMessage<EnableRemoteTrackResponse> | undefined): boolean {\n return proto2.util.equals(EnableRemoteTrackResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.SetTrackSubscriptionPermissionsRequest\n */\nexport class SetTrackSubscriptionPermissionsRequest extends Message<SetTrackSubscriptionPermissionsRequest> {\n /**\n * @generated from field: required uint64 local_participant_handle = 1;\n */\n localParticipantHandle?: bigint;\n\n /**\n * @generated from field: required bool all_participants_allowed = 2;\n */\n allParticipantsAllowed?: boolean;\n\n /**\n * @generated from field: repeated livekit.proto.ParticipantTrackPermission permissions = 3;\n */\n permissions: ParticipantTrackPermission[] = [];\n\n constructor(data?: PartialMessage<SetTrackSubscriptionPermissionsRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.SetTrackSubscriptionPermissionsRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"local_participant_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"all_participants_allowed\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 3, name: \"permissions\", kind: \"message\", T: ParticipantTrackPermission, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetTrackSubscriptionPermissionsRequest {\n return new SetTrackSubscriptionPermissionsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsRequest {\n return new SetTrackSubscriptionPermissionsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsRequest {\n return new SetTrackSubscriptionPermissionsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetTrackSubscriptionPermissionsRequest | PlainMessage<SetTrackSubscriptionPermissionsRequest> | undefined, b: SetTrackSubscriptionPermissionsRequest | PlainMessage<SetTrackSubscriptionPermissionsRequest> | undefined): boolean {\n return proto2.util.equals(SetTrackSubscriptionPermissionsRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.ParticipantTrackPermission\n */\nexport class ParticipantTrackPermission extends Message<ParticipantTrackPermission> {\n /**\n * The participant identity this permission applies to.\n *\n * @generated from field: required string participant_identity = 1;\n */\n participantIdentity?: string;\n\n /**\n * Grant permission to all all tracks. Takes precedence over allowedTrackSids.\n *\n * @generated from field: optional bool allow_all = 2;\n */\n allowAll?: boolean;\n\n /**\n * List of track sids to grant permission to.\n *\n * @generated from field: repeated string allowed_track_sids = 3;\n */\n allowedTrackSids: string[] = [];\n\n constructor(data?: PartialMessage<ParticipantTrackPermission>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.ParticipantTrackPermission\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"participant_identity\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"allow_all\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 3, name: \"allowed_track_sids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ParticipantTrackPermission {\n return new ParticipantTrackPermission().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ParticipantTrackPermission {\n return new ParticipantTrackPermission().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ParticipantTrackPermission {\n return new ParticipantTrackPermission().fromJsonString(jsonString, options);\n }\n\n static equals(a: ParticipantTrackPermission | PlainMessage<ParticipantTrackPermission> | undefined, b: ParticipantTrackPermission | PlainMessage<ParticipantTrackPermission> | undefined): boolean {\n return proto2.util.equals(ParticipantTrackPermission, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.SetTrackSubscriptionPermissionsResponse\n */\nexport class SetTrackSubscriptionPermissionsResponse extends Message<SetTrackSubscriptionPermissionsResponse> {\n constructor(data?: PartialMessage<SetTrackSubscriptionPermissionsResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.SetTrackSubscriptionPermissionsResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetTrackSubscriptionPermissionsResponse {\n return new SetTrackSubscriptionPermissionsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsResponse {\n return new SetTrackSubscriptionPermissionsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsResponse {\n return new SetTrackSubscriptionPermissionsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetTrackSubscriptionPermissionsResponse | PlainMessage<SetTrackSubscriptionPermissionsResponse> | undefined, b: SetTrackSubscriptionPermissionsResponse | PlainMessage<SetTrackSubscriptionPermissionsResponse> | undefined): boolean {\n return proto2.util.equals(SetTrackSubscriptionPermissionsResponse, a, b);\n }\n}\n\n"],"mappings":"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","names":["TrackKind","TrackSource","StreamState"]}
1
+ {"version":3,"sources":["../../src/proto/track_pb.ts"],"sourcesContent":["// Copyright 2023 LiveKit, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v1.10.0 with parameter \"target=ts,import_extension=.js\"\n// @generated from file track.proto (package livekit.proto, syntax proto2)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto2 } from \"@bufbuild/protobuf\";\nimport { RtcStats } from \"./stats_pb.js\";\nimport { EncryptionType } from \"./e2ee_pb.js\";\nimport { FfiOwnedHandle } from \"./handle_pb.js\";\n\n/**\n * @generated from enum livekit.proto.TrackKind\n */\nexport enum TrackKind {\n /**\n * @generated from enum value: KIND_UNKNOWN = 0;\n */\n KIND_UNKNOWN = 0,\n\n /**\n * @generated from enum value: KIND_AUDIO = 1;\n */\n KIND_AUDIO = 1,\n\n /**\n * @generated from enum value: KIND_VIDEO = 2;\n */\n KIND_VIDEO = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(TrackKind)\nproto2.util.setEnumType(TrackKind, \"livekit.proto.TrackKind\", [\n { no: 0, name: \"KIND_UNKNOWN\" },\n { no: 1, name: \"KIND_AUDIO\" },\n { no: 2, name: \"KIND_VIDEO\" },\n]);\n\n/**\n * @generated from enum livekit.proto.TrackSource\n */\nexport enum TrackSource {\n /**\n * @generated from enum value: SOURCE_UNKNOWN = 0;\n */\n SOURCE_UNKNOWN = 0,\n\n /**\n * @generated from enum value: SOURCE_CAMERA = 1;\n */\n SOURCE_CAMERA = 1,\n\n /**\n * @generated from enum value: SOURCE_MICROPHONE = 2;\n */\n SOURCE_MICROPHONE = 2,\n\n /**\n * @generated from enum value: SOURCE_SCREENSHARE = 3;\n */\n SOURCE_SCREENSHARE = 3,\n\n /**\n * @generated from enum value: SOURCE_SCREENSHARE_AUDIO = 4;\n */\n SOURCE_SCREENSHARE_AUDIO = 4,\n}\n// Retrieve enum metadata with: proto2.getEnumType(TrackSource)\nproto2.util.setEnumType(TrackSource, \"livekit.proto.TrackSource\", [\n { no: 0, name: \"SOURCE_UNKNOWN\" },\n { no: 1, name: \"SOURCE_CAMERA\" },\n { no: 2, name: \"SOURCE_MICROPHONE\" },\n { no: 3, name: \"SOURCE_SCREENSHARE\" },\n { no: 4, name: \"SOURCE_SCREENSHARE_AUDIO\" },\n]);\n\n/**\n * @generated from enum livekit.proto.StreamState\n */\nexport enum StreamState {\n /**\n * @generated from enum value: STATE_UNKNOWN = 0;\n */\n STATE_UNKNOWN = 0,\n\n /**\n * @generated from enum value: STATE_ACTIVE = 1;\n */\n STATE_ACTIVE = 1,\n\n /**\n * @generated from enum value: STATE_PAUSED = 2;\n */\n STATE_PAUSED = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(StreamState)\nproto2.util.setEnumType(StreamState, \"livekit.proto.StreamState\", [\n { no: 0, name: \"STATE_UNKNOWN\" },\n { no: 1, name: \"STATE_ACTIVE\" },\n { no: 2, name: \"STATE_PAUSED\" },\n]);\n\n/**\n * @generated from enum livekit.proto.AudioTrackFeature\n */\nexport enum AudioTrackFeature {\n /**\n * @generated from enum value: TF_STEREO = 0;\n */\n TF_STEREO = 0,\n\n /**\n * @generated from enum value: TF_NO_DTX = 1;\n */\n TF_NO_DTX = 1,\n\n /**\n * @generated from enum value: TF_AUTO_GAIN_CONTROL = 2;\n */\n TF_AUTO_GAIN_CONTROL = 2,\n\n /**\n * @generated from enum value: TF_ECHO_CANCELLATION = 3;\n */\n TF_ECHO_CANCELLATION = 3,\n\n /**\n * @generated from enum value: TF_NOISE_SUPPRESSION = 4;\n */\n TF_NOISE_SUPPRESSION = 4,\n\n /**\n * @generated from enum value: TF_ENHANCED_NOISE_CANCELLATION = 5;\n */\n TF_ENHANCED_NOISE_CANCELLATION = 5,\n\n /**\n * client will buffer audio once available and send it to the server via bytes stream once connected\n *\n * @generated from enum value: TF_PRECONNECT_BUFFER = 6;\n */\n TF_PRECONNECT_BUFFER = 6,\n}\n// Retrieve enum metadata with: proto2.getEnumType(AudioTrackFeature)\nproto2.util.setEnumType(AudioTrackFeature, \"livekit.proto.AudioTrackFeature\", [\n { no: 0, name: \"TF_STEREO\" },\n { no: 1, name: \"TF_NO_DTX\" },\n { no: 2, name: \"TF_AUTO_GAIN_CONTROL\" },\n { no: 3, name: \"TF_ECHO_CANCELLATION\" },\n { no: 4, name: \"TF_NOISE_SUPPRESSION\" },\n { no: 5, name: \"TF_ENHANCED_NOISE_CANCELLATION\" },\n { no: 6, name: \"TF_PRECONNECT_BUFFER\" },\n]);\n\n/**\n * Create a new VideoTrack from a VideoSource\n *\n * @generated from message livekit.proto.CreateVideoTrackRequest\n */\nexport class CreateVideoTrackRequest extends Message<CreateVideoTrackRequest> {\n /**\n * @generated from field: required string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: required uint64 source_handle = 2;\n */\n sourceHandle?: bigint;\n\n constructor(data?: PartialMessage<CreateVideoTrackRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateVideoTrackRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"source_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateVideoTrackRequest {\n return new CreateVideoTrackRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateVideoTrackRequest {\n return new CreateVideoTrackRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateVideoTrackRequest {\n return new CreateVideoTrackRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateVideoTrackRequest | PlainMessage<CreateVideoTrackRequest> | undefined, b: CreateVideoTrackRequest | PlainMessage<CreateVideoTrackRequest> | undefined): boolean {\n return proto2.util.equals(CreateVideoTrackRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.CreateVideoTrackResponse\n */\nexport class CreateVideoTrackResponse extends Message<CreateVideoTrackResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedTrack track = 1;\n */\n track?: OwnedTrack;\n\n constructor(data?: PartialMessage<CreateVideoTrackResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateVideoTrackResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track\", kind: \"message\", T: OwnedTrack, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateVideoTrackResponse {\n return new CreateVideoTrackResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateVideoTrackResponse {\n return new CreateVideoTrackResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateVideoTrackResponse {\n return new CreateVideoTrackResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateVideoTrackResponse | PlainMessage<CreateVideoTrackResponse> | undefined, b: CreateVideoTrackResponse | PlainMessage<CreateVideoTrackResponse> | undefined): boolean {\n return proto2.util.equals(CreateVideoTrackResponse, a, b);\n }\n}\n\n/**\n * Create a new AudioTrack from a AudioSource\n *\n * @generated from message livekit.proto.CreateAudioTrackRequest\n */\nexport class CreateAudioTrackRequest extends Message<CreateAudioTrackRequest> {\n /**\n * @generated from field: required string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: required uint64 source_handle = 2;\n */\n sourceHandle?: bigint;\n\n constructor(data?: PartialMessage<CreateAudioTrackRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateAudioTrackRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"source_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateAudioTrackRequest {\n return new CreateAudioTrackRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateAudioTrackRequest {\n return new CreateAudioTrackRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateAudioTrackRequest {\n return new CreateAudioTrackRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAudioTrackRequest | PlainMessage<CreateAudioTrackRequest> | undefined, b: CreateAudioTrackRequest | PlainMessage<CreateAudioTrackRequest> | undefined): boolean {\n return proto2.util.equals(CreateAudioTrackRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.CreateAudioTrackResponse\n */\nexport class CreateAudioTrackResponse extends Message<CreateAudioTrackResponse> {\n /**\n * @generated from field: required livekit.proto.OwnedTrack track = 1;\n */\n track?: OwnedTrack;\n\n constructor(data?: PartialMessage<CreateAudioTrackResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.CreateAudioTrackResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track\", kind: \"message\", T: OwnedTrack, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateAudioTrackResponse {\n return new CreateAudioTrackResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateAudioTrackResponse {\n return new CreateAudioTrackResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateAudioTrackResponse {\n return new CreateAudioTrackResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAudioTrackResponse | PlainMessage<CreateAudioTrackResponse> | undefined, b: CreateAudioTrackResponse | PlainMessage<CreateAudioTrackResponse> | undefined): boolean {\n return proto2.util.equals(CreateAudioTrackResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.GetStatsRequest\n */\nexport class GetStatsRequest extends Message<GetStatsRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n constructor(data?: PartialMessage<GetStatsRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.GetStatsRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetStatsRequest {\n return new GetStatsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetStatsRequest {\n return new GetStatsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetStatsRequest {\n return new GetStatsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetStatsRequest | PlainMessage<GetStatsRequest> | undefined, b: GetStatsRequest | PlainMessage<GetStatsRequest> | undefined): boolean {\n return proto2.util.equals(GetStatsRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.GetStatsResponse\n */\nexport class GetStatsResponse extends Message<GetStatsResponse> {\n /**\n * @generated from field: required uint64 async_id = 1;\n */\n asyncId?: bigint;\n\n constructor(data?: PartialMessage<GetStatsResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.GetStatsResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"async_id\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetStatsResponse {\n return new GetStatsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetStatsResponse {\n return new GetStatsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetStatsResponse {\n return new GetStatsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetStatsResponse | PlainMessage<GetStatsResponse> | undefined, b: GetStatsResponse | PlainMessage<GetStatsResponse> | undefined): boolean {\n return proto2.util.equals(GetStatsResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.GetStatsCallback\n */\nexport class GetStatsCallback extends Message<GetStatsCallback> {\n /**\n * @generated from field: required uint64 async_id = 1;\n */\n asyncId?: bigint;\n\n /**\n * @generated from field: optional string error = 2;\n */\n error?: string;\n\n /**\n * @generated from field: repeated livekit.proto.RtcStats stats = 3;\n */\n stats: RtcStats[] = [];\n\n constructor(data?: PartialMessage<GetStatsCallback>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.GetStatsCallback\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"async_id\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"stats\", kind: \"message\", T: RtcStats, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetStatsCallback {\n return new GetStatsCallback().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetStatsCallback {\n return new GetStatsCallback().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetStatsCallback {\n return new GetStatsCallback().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetStatsCallback | PlainMessage<GetStatsCallback> | undefined, b: GetStatsCallback | PlainMessage<GetStatsCallback> | undefined): boolean {\n return proto2.util.equals(GetStatsCallback, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.TrackEvent\n */\nexport class TrackEvent extends Message<TrackEvent> {\n constructor(data?: PartialMessage<TrackEvent>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.TrackEvent\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TrackEvent {\n return new TrackEvent().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TrackEvent {\n return new TrackEvent().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TrackEvent {\n return new TrackEvent().fromJsonString(jsonString, options);\n }\n\n static equals(a: TrackEvent | PlainMessage<TrackEvent> | undefined, b: TrackEvent | PlainMessage<TrackEvent> | undefined): boolean {\n return proto2.util.equals(TrackEvent, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.TrackPublicationInfo\n */\nexport class TrackPublicationInfo extends Message<TrackPublicationInfo> {\n /**\n * @generated from field: required string sid = 1;\n */\n sid?: string;\n\n /**\n * @generated from field: required string name = 2;\n */\n name?: string;\n\n /**\n * @generated from field: required livekit.proto.TrackKind kind = 3;\n */\n kind?: TrackKind;\n\n /**\n * @generated from field: required livekit.proto.TrackSource source = 4;\n */\n source?: TrackSource;\n\n /**\n * @generated from field: required bool simulcasted = 5;\n */\n simulcasted?: boolean;\n\n /**\n * @generated from field: required uint32 width = 6;\n */\n width?: number;\n\n /**\n * @generated from field: required uint32 height = 7;\n */\n height?: number;\n\n /**\n * @generated from field: required string mime_type = 8;\n */\n mimeType?: string;\n\n /**\n * @generated from field: required bool muted = 9;\n */\n muted?: boolean;\n\n /**\n * @generated from field: required bool remote = 10;\n */\n remote?: boolean;\n\n /**\n * @generated from field: required livekit.proto.EncryptionType encryption_type = 11;\n */\n encryptionType?: EncryptionType;\n\n /**\n * @generated from field: repeated livekit.proto.AudioTrackFeature audio_features = 12;\n */\n audioFeatures: AudioTrackFeature[] = [];\n\n constructor(data?: PartialMessage<TrackPublicationInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.TrackPublicationInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"sid\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 3, name: \"kind\", kind: \"enum\", T: proto2.getEnumType(TrackKind), req: true },\n { no: 4, name: \"source\", kind: \"enum\", T: proto2.getEnumType(TrackSource), req: true },\n { no: 5, name: \"simulcasted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 6, name: \"width\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 7, name: \"height\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */, req: true },\n { no: 8, name: \"mime_type\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 9, name: \"muted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 10, name: \"remote\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 11, name: \"encryption_type\", kind: \"enum\", T: proto2.getEnumType(EncryptionType), req: true },\n { no: 12, name: \"audio_features\", kind: \"enum\", T: proto2.getEnumType(AudioTrackFeature), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TrackPublicationInfo {\n return new TrackPublicationInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TrackPublicationInfo {\n return new TrackPublicationInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TrackPublicationInfo {\n return new TrackPublicationInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: TrackPublicationInfo | PlainMessage<TrackPublicationInfo> | undefined, b: TrackPublicationInfo | PlainMessage<TrackPublicationInfo> | undefined): boolean {\n return proto2.util.equals(TrackPublicationInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedTrackPublication\n */\nexport class OwnedTrackPublication extends Message<OwnedTrackPublication> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.TrackPublicationInfo info = 2;\n */\n info?: TrackPublicationInfo;\n\n constructor(data?: PartialMessage<OwnedTrackPublication>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedTrackPublication\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: TrackPublicationInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedTrackPublication {\n return new OwnedTrackPublication().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedTrackPublication {\n return new OwnedTrackPublication().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedTrackPublication {\n return new OwnedTrackPublication().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedTrackPublication | PlainMessage<OwnedTrackPublication> | undefined, b: OwnedTrackPublication | PlainMessage<OwnedTrackPublication> | undefined): boolean {\n return proto2.util.equals(OwnedTrackPublication, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.TrackInfo\n */\nexport class TrackInfo extends Message<TrackInfo> {\n /**\n * @generated from field: required string sid = 1;\n */\n sid?: string;\n\n /**\n * @generated from field: required string name = 2;\n */\n name?: string;\n\n /**\n * @generated from field: required livekit.proto.TrackKind kind = 3;\n */\n kind?: TrackKind;\n\n /**\n * @generated from field: required livekit.proto.StreamState stream_state = 4;\n */\n streamState?: StreamState;\n\n /**\n * @generated from field: required bool muted = 5;\n */\n muted?: boolean;\n\n /**\n * @generated from field: required bool remote = 6;\n */\n remote?: boolean;\n\n constructor(data?: PartialMessage<TrackInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.TrackInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"sid\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 3, name: \"kind\", kind: \"enum\", T: proto2.getEnumType(TrackKind), req: true },\n { no: 4, name: \"stream_state\", kind: \"enum\", T: proto2.getEnumType(StreamState), req: true },\n { no: 5, name: \"muted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 6, name: \"remote\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TrackInfo {\n return new TrackInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TrackInfo {\n return new TrackInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TrackInfo {\n return new TrackInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: TrackInfo | PlainMessage<TrackInfo> | undefined, b: TrackInfo | PlainMessage<TrackInfo> | undefined): boolean {\n return proto2.util.equals(TrackInfo, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.OwnedTrack\n */\nexport class OwnedTrack extends Message<OwnedTrack> {\n /**\n * @generated from field: required livekit.proto.FfiOwnedHandle handle = 1;\n */\n handle?: FfiOwnedHandle;\n\n /**\n * @generated from field: required livekit.proto.TrackInfo info = 2;\n */\n info?: TrackInfo;\n\n constructor(data?: PartialMessage<OwnedTrack>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.OwnedTrack\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"handle\", kind: \"message\", T: FfiOwnedHandle, req: true },\n { no: 2, name: \"info\", kind: \"message\", T: TrackInfo, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OwnedTrack {\n return new OwnedTrack().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OwnedTrack {\n return new OwnedTrack().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OwnedTrack {\n return new OwnedTrack().fromJsonString(jsonString, options);\n }\n\n static equals(a: OwnedTrack | PlainMessage<OwnedTrack> | undefined, b: OwnedTrack | PlainMessage<OwnedTrack> | undefined): boolean {\n return proto2.util.equals(OwnedTrack, a, b);\n }\n}\n\n/**\n * Mute/UnMute a track\n *\n * @generated from message livekit.proto.LocalTrackMuteRequest\n */\nexport class LocalTrackMuteRequest extends Message<LocalTrackMuteRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n /**\n * @generated from field: required bool mute = 2;\n */\n mute?: boolean;\n\n constructor(data?: PartialMessage<LocalTrackMuteRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.LocalTrackMuteRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"mute\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): LocalTrackMuteRequest {\n return new LocalTrackMuteRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): LocalTrackMuteRequest {\n return new LocalTrackMuteRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): LocalTrackMuteRequest {\n return new LocalTrackMuteRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: LocalTrackMuteRequest | PlainMessage<LocalTrackMuteRequest> | undefined, b: LocalTrackMuteRequest | PlainMessage<LocalTrackMuteRequest> | undefined): boolean {\n return proto2.util.equals(LocalTrackMuteRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.LocalTrackMuteResponse\n */\nexport class LocalTrackMuteResponse extends Message<LocalTrackMuteResponse> {\n /**\n * @generated from field: required bool muted = 1;\n */\n muted?: boolean;\n\n constructor(data?: PartialMessage<LocalTrackMuteResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.LocalTrackMuteResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"muted\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): LocalTrackMuteResponse {\n return new LocalTrackMuteResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): LocalTrackMuteResponse {\n return new LocalTrackMuteResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): LocalTrackMuteResponse {\n return new LocalTrackMuteResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: LocalTrackMuteResponse | PlainMessage<LocalTrackMuteResponse> | undefined, b: LocalTrackMuteResponse | PlainMessage<LocalTrackMuteResponse> | undefined): boolean {\n return proto2.util.equals(LocalTrackMuteResponse, a, b);\n }\n}\n\n/**\n * Enable/Disable a remote track\n *\n * @generated from message livekit.proto.EnableRemoteTrackRequest\n */\nexport class EnableRemoteTrackRequest extends Message<EnableRemoteTrackRequest> {\n /**\n * @generated from field: required uint64 track_handle = 1;\n */\n trackHandle?: bigint;\n\n /**\n * @generated from field: required bool enabled = 2;\n */\n enabled?: boolean;\n\n constructor(data?: PartialMessage<EnableRemoteTrackRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.EnableRemoteTrackRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"track_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnableRemoteTrackRequest {\n return new EnableRemoteTrackRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnableRemoteTrackRequest {\n return new EnableRemoteTrackRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnableRemoteTrackRequest {\n return new EnableRemoteTrackRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnableRemoteTrackRequest | PlainMessage<EnableRemoteTrackRequest> | undefined, b: EnableRemoteTrackRequest | PlainMessage<EnableRemoteTrackRequest> | undefined): boolean {\n return proto2.util.equals(EnableRemoteTrackRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.EnableRemoteTrackResponse\n */\nexport class EnableRemoteTrackResponse extends Message<EnableRemoteTrackResponse> {\n /**\n * @generated from field: required bool enabled = 1;\n */\n enabled?: boolean;\n\n constructor(data?: PartialMessage<EnableRemoteTrackResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.EnableRemoteTrackResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnableRemoteTrackResponse {\n return new EnableRemoteTrackResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnableRemoteTrackResponse {\n return new EnableRemoteTrackResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnableRemoteTrackResponse {\n return new EnableRemoteTrackResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnableRemoteTrackResponse | PlainMessage<EnableRemoteTrackResponse> | undefined, b: EnableRemoteTrackResponse | PlainMessage<EnableRemoteTrackResponse> | undefined): boolean {\n return proto2.util.equals(EnableRemoteTrackResponse, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.SetTrackSubscriptionPermissionsRequest\n */\nexport class SetTrackSubscriptionPermissionsRequest extends Message<SetTrackSubscriptionPermissionsRequest> {\n /**\n * @generated from field: required uint64 local_participant_handle = 1;\n */\n localParticipantHandle?: bigint;\n\n /**\n * @generated from field: required bool all_participants_allowed = 2;\n */\n allParticipantsAllowed?: boolean;\n\n /**\n * @generated from field: repeated livekit.proto.ParticipantTrackPermission permissions = 3;\n */\n permissions: ParticipantTrackPermission[] = [];\n\n constructor(data?: PartialMessage<SetTrackSubscriptionPermissionsRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.SetTrackSubscriptionPermissionsRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"local_participant_handle\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, req: true },\n { no: 2, name: \"all_participants_allowed\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, req: true },\n { no: 3, name: \"permissions\", kind: \"message\", T: ParticipantTrackPermission, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetTrackSubscriptionPermissionsRequest {\n return new SetTrackSubscriptionPermissionsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsRequest {\n return new SetTrackSubscriptionPermissionsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsRequest {\n return new SetTrackSubscriptionPermissionsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetTrackSubscriptionPermissionsRequest | PlainMessage<SetTrackSubscriptionPermissionsRequest> | undefined, b: SetTrackSubscriptionPermissionsRequest | PlainMessage<SetTrackSubscriptionPermissionsRequest> | undefined): boolean {\n return proto2.util.equals(SetTrackSubscriptionPermissionsRequest, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.ParticipantTrackPermission\n */\nexport class ParticipantTrackPermission extends Message<ParticipantTrackPermission> {\n /**\n * The participant identity this permission applies to.\n *\n * @generated from field: required string participant_identity = 1;\n */\n participantIdentity?: string;\n\n /**\n * Grant permission to all all tracks. Takes precedence over allowedTrackSids.\n *\n * @generated from field: optional bool allow_all = 2;\n */\n allowAll?: boolean;\n\n /**\n * List of track sids to grant permission to.\n *\n * @generated from field: repeated string allowed_track_sids = 3;\n */\n allowedTrackSids: string[] = [];\n\n constructor(data?: PartialMessage<ParticipantTrackPermission>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.ParticipantTrackPermission\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"participant_identity\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, req: true },\n { no: 2, name: \"allow_all\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 3, name: \"allowed_track_sids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ParticipantTrackPermission {\n return new ParticipantTrackPermission().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ParticipantTrackPermission {\n return new ParticipantTrackPermission().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ParticipantTrackPermission {\n return new ParticipantTrackPermission().fromJsonString(jsonString, options);\n }\n\n static equals(a: ParticipantTrackPermission | PlainMessage<ParticipantTrackPermission> | undefined, b: ParticipantTrackPermission | PlainMessage<ParticipantTrackPermission> | undefined): boolean {\n return proto2.util.equals(ParticipantTrackPermission, a, b);\n }\n}\n\n/**\n * @generated from message livekit.proto.SetTrackSubscriptionPermissionsResponse\n */\nexport class SetTrackSubscriptionPermissionsResponse extends Message<SetTrackSubscriptionPermissionsResponse> {\n constructor(data?: PartialMessage<SetTrackSubscriptionPermissionsResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto2 = proto2;\n static readonly typeName = \"livekit.proto.SetTrackSubscriptionPermissionsResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetTrackSubscriptionPermissionsResponse {\n return new SetTrackSubscriptionPermissionsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsResponse {\n return new SetTrackSubscriptionPermissionsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetTrackSubscriptionPermissionsResponse {\n return new SetTrackSubscriptionPermissionsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetTrackSubscriptionPermissionsResponse | PlainMessage<SetTrackSubscriptionPermissionsResponse> | undefined, b: SetTrackSubscriptionPermissionsResponse | PlainMessage<SetTrackSubscriptionPermissionsResponse> | undefined): boolean {\n return proto2.util.equals(SetTrackSubscriptionPermissionsResponse, a, b);\n }\n}\n\n"],"mappings":"AAoBA,SAAS,SAAS,cAAc;AAChC,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAKxB,IAAK,YAAL,kBAAKA,eAAL;AAIL,EAAAA,sBAAA,kBAAe,KAAf;AAKA,EAAAA,sBAAA,gBAAa,KAAb;AAKA,EAAAA,sBAAA,gBAAa,KAAb;AAdU,SAAAA;AAAA,GAAA;AAiBZ,OAAO,KAAK,YAAY,WAAW,2BAA2B;AAAA,EAC5D,EAAE,IAAI,GAAG,MAAM,eAAe;AAAA,EAC9B,EAAE,IAAI,GAAG,MAAM,aAAa;AAAA,EAC5B,EAAE,IAAI,GAAG,MAAM,aAAa;AAC9B,CAAC;AAKM,IAAK,cAAL,kBAAKC,iBAAL;AAIL,EAAAA,0BAAA,oBAAiB,KAAjB;AAKA,EAAAA,0BAAA,mBAAgB,KAAhB;AAKA,EAAAA,0BAAA,uBAAoB,KAApB;AAKA,EAAAA,0BAAA,wBAAqB,KAArB;AAKA,EAAAA,0BAAA,8BAA2B,KAA3B;AAxBU,SAAAA;AAAA,GAAA;AA2BZ,OAAO,KAAK,YAAY,aAAa,6BAA6B;AAAA,EAChE,EAAE,IAAI,GAAG,MAAM,iBAAiB;AAAA,EAChC,EAAE,IAAI,GAAG,MAAM,gBAAgB;AAAA,EAC/B,EAAE,IAAI,GAAG,MAAM,oBAAoB;AAAA,EACnC,EAAE,IAAI,GAAG,MAAM,qBAAqB;AAAA,EACpC,EAAE,IAAI,GAAG,MAAM,2BAA2B;AAC5C,CAAC;AAKM,IAAK,cAAL,kBAAKC,iBAAL;AAIL,EAAAA,0BAAA,mBAAgB,KAAhB;AAKA,EAAAA,0BAAA,kBAAe,KAAf;AAKA,EAAAA,0BAAA,kBAAe,KAAf;AAdU,SAAAA;AAAA,GAAA;AAiBZ,OAAO,KAAK,YAAY,aAAa,6BAA6B;AAAA,EAChE,EAAE,IAAI,GAAG,MAAM,gBAAgB;AAAA,EAC/B,EAAE,IAAI,GAAG,MAAM,eAAe;AAAA,EAC9B,EAAE,IAAI,GAAG,MAAM,eAAe;AAChC,CAAC;AAKM,IAAK,oBAAL,kBAAKC,uBAAL;AAIL,EAAAA,sCAAA,eAAY,KAAZ;AAKA,EAAAA,sCAAA,eAAY,KAAZ;AAKA,EAAAA,sCAAA,0BAAuB,KAAvB;AAKA,EAAAA,sCAAA,0BAAuB,KAAvB;AAKA,EAAAA,sCAAA,0BAAuB,KAAvB;AAKA,EAAAA,sCAAA,oCAAiC,KAAjC;AAOA,EAAAA,sCAAA,0BAAuB,KAAvB;AApCU,SAAAA;AAAA,GAAA;AAuCZ,OAAO,KAAK,YAAY,mBAAmB,mCAAmC;AAAA,EAC5E,EAAE,IAAI,GAAG,MAAM,YAAY;AAAA,EAC3B,EAAE,IAAI,GAAG,MAAM,YAAY;AAAA,EAC3B,EAAE,IAAI,GAAG,MAAM,uBAAuB;AAAA,EACtC,EAAE,IAAI,GAAG,MAAM,uBAAuB;AAAA,EACtC,EAAE,IAAI,GAAG,MAAM,uBAAuB;AAAA,EACtC,EAAE,IAAI,GAAG,MAAM,iCAAiC;AAAA,EAChD,EAAE,IAAI,GAAG,MAAM,uBAAuB;AACxC,CAAC;AAOM,MAAM,2BAAN,MAAM,iCAAgC,QAAiC;AAAA,EAW5E,YAAY,MAAgD;AAC1D,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EASA,OAAO,WAAW,OAAmB,SAA+D;AAClG,WAAO,IAAI,yBAAwB,EAAE,WAAW,OAAO,OAAO;AAAA,EAChE;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA6D;AACjG,WAAO,IAAI,yBAAwB,EAAE,SAAS,WAAW,OAAO;AAAA,EAClE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA6D;AACrG,WAAO,IAAI,yBAAwB,EAAE,eAAe,YAAY,OAAO;AAAA,EACzE;AAAA,EAEA,OAAO,OAAO,GAAgF,GAAyF;AACrL,WAAO,OAAO,KAAK,OAAO,0BAAyB,GAAG,CAAC;AAAA,EACzD;AACF;AAtCa,yBAgBK,UAAyB;AAhB9B,yBAiBK,WAAW;AAjBhB,yBAkBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAC/E,EAAE,IAAI,GAAG,MAAM,iBAAiB,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAC1F,CAAC;AArBI,IAAM,0BAAN;AA2CA,MAAM,4BAAN,MAAM,kCAAiC,QAAkC;AAAA,EAM9E,YAAY,MAAiD;AAC3D,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAQA,OAAO,WAAW,OAAmB,SAAgE;AACnG,WAAO,IAAI,0BAAyB,EAAE,WAAW,OAAO,OAAO;AAAA,EACjE;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA8D;AAClG,WAAO,IAAI,0BAAyB,EAAE,SAAS,WAAW,OAAO;AAAA,EACnE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA8D;AACtG,WAAO,IAAI,0BAAyB,EAAE,eAAe,YAAY,OAAO;AAAA,EAC1E;AAAA,EAEA,OAAO,OAAO,GAAkF,GAA2F;AACzL,WAAO,OAAO,KAAK,OAAO,2BAA0B,GAAG,CAAC;AAAA,EAC1D;AACF;AAhCa,0BAWK,UAAyB;AAX9B,0BAYK,WAAW;AAZhB,0BAaK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,WAAW,GAAG,YAAY,KAAK,KAAK;AACpE,CAAC;AAfI,IAAM,2BAAN;AAuCA,MAAM,2BAAN,MAAM,iCAAgC,QAAiC;AAAA,EAW5E,YAAY,MAAgD;AAC1D,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EASA,OAAO,WAAW,OAAmB,SAA+D;AAClG,WAAO,IAAI,yBAAwB,EAAE,WAAW,OAAO,OAAO;AAAA,EAChE;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA6D;AACjG,WAAO,IAAI,yBAAwB,EAAE,SAAS,WAAW,OAAO;AAAA,EAClE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA6D;AACrG,WAAO,IAAI,yBAAwB,EAAE,eAAe,YAAY,OAAO;AAAA,EACzE;AAAA,EAEA,OAAO,OAAO,GAAgF,GAAyF;AACrL,WAAO,OAAO,KAAK,OAAO,0BAAyB,GAAG,CAAC;AAAA,EACzD;AACF;AAtCa,yBAgBK,UAAyB;AAhB9B,yBAiBK,WAAW;AAjBhB,yBAkBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAC/E,EAAE,IAAI,GAAG,MAAM,iBAAiB,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAC1F,CAAC;AArBI,IAAM,0BAAN;AA2CA,MAAM,4BAAN,MAAM,kCAAiC,QAAkC;AAAA,EAM9E,YAAY,MAAiD;AAC3D,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAQA,OAAO,WAAW,OAAmB,SAAgE;AACnG,WAAO,IAAI,0BAAyB,EAAE,WAAW,OAAO,OAAO;AAAA,EACjE;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA8D;AAClG,WAAO,IAAI,0BAAyB,EAAE,SAAS,WAAW,OAAO;AAAA,EACnE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA8D;AACtG,WAAO,IAAI,0BAAyB,EAAE,eAAe,YAAY,OAAO;AAAA,EAC1E;AAAA,EAEA,OAAO,OAAO,GAAkF,GAA2F;AACzL,WAAO,OAAO,KAAK,OAAO,2BAA0B,GAAG,CAAC;AAAA,EAC1D;AACF;AAhCa,0BAWK,UAAyB;AAX9B,0BAYK,WAAW;AAZhB,0BAaK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,WAAW,GAAG,YAAY,KAAK,KAAK;AACpE,CAAC;AAfI,IAAM,2BAAN;AAqCA,MAAM,mBAAN,MAAM,yBAAwB,QAAyB;AAAA,EAM5D,YAAY,MAAwC;AAClD,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAQA,OAAO,WAAW,OAAmB,SAAuD;AAC1F,WAAO,IAAI,iBAAgB,EAAE,WAAW,OAAO,OAAO;AAAA,EACxD;AAAA,EAEA,OAAO,SAAS,WAAsB,SAAqD;AACzF,WAAO,IAAI,iBAAgB,EAAE,SAAS,WAAW,OAAO;AAAA,EAC1D;AAAA,EAEA,OAAO,eAAe,YAAoB,SAAqD;AAC7F,WAAO,IAAI,iBAAgB,EAAE,eAAe,YAAY,OAAO;AAAA,EACjE;AAAA,EAEA,OAAO,OAAO,GAAgE,GAAyE;AACrJ,WAAO,OAAO,KAAK,OAAO,kBAAiB,GAAG,CAAC;AAAA,EACjD;AACF;AAhCa,iBAWK,UAAyB;AAX9B,iBAYK,WAAW;AAZhB,iBAaK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,gBAAgB,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AACzF,CAAC;AAfI,IAAM,kBAAN;AAqCA,MAAM,oBAAN,MAAM,0BAAyB,QAA0B;AAAA,EAM9D,YAAY,MAAyC;AACnD,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAQA,OAAO,WAAW,OAAmB,SAAwD;AAC3F,WAAO,IAAI,kBAAiB,EAAE,WAAW,OAAO,OAAO;AAAA,EACzD;AAAA,EAEA,OAAO,SAAS,WAAsB,SAAsD;AAC1F,WAAO,IAAI,kBAAiB,EAAE,SAAS,WAAW,OAAO;AAAA,EAC3D;AAAA,EAEA,OAAO,eAAe,YAAoB,SAAsD;AAC9F,WAAO,IAAI,kBAAiB,EAAE,eAAe,YAAY,OAAO;AAAA,EAClE;AAAA,EAEA,OAAO,OAAO,GAAkE,GAA2E;AACzJ,WAAO,OAAO,KAAK,OAAO,mBAAkB,GAAG,CAAC;AAAA,EAClD;AACF;AAhCa,kBAWK,UAAyB;AAX9B,kBAYK,WAAW;AAZhB,kBAaK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,YAAY,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AACrF,CAAC;AAfI,IAAM,mBAAN;AAqCA,MAAM,oBAAN,MAAM,0BAAyB,QAA0B;AAAA,EAgB9D,YAAY,MAAyC;AACnD,UAAM;AAHR;AAAA;AAAA;AAAA,iBAAoB,CAAC;AAInB,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAUA,OAAO,WAAW,OAAmB,SAAwD;AAC3F,WAAO,IAAI,kBAAiB,EAAE,WAAW,OAAO,OAAO;AAAA,EACzD;AAAA,EAEA,OAAO,SAAS,WAAsB,SAAsD;AAC1F,WAAO,IAAI,kBAAiB,EAAE,SAAS,WAAW,OAAO;AAAA,EAC3D;AAAA,EAEA,OAAO,eAAe,YAAoB,SAAsD;AAC9F,WAAO,IAAI,kBAAiB,EAAE,eAAe,YAAY,OAAO;AAAA,EAClE;AAAA,EAEA,OAAO,OAAO,GAAkE,GAA2E;AACzJ,WAAO,OAAO,KAAK,OAAO,mBAAkB,GAAG,CAAC;AAAA,EAClD;AACF;AA5Ca,kBAqBK,UAAyB;AArB9B,kBAsBK,WAAW;AAtBhB,kBAuBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,YAAY,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EACnF,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAChF,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,WAAW,GAAG,UAAU,UAAU,KAAK;AACvE,CAAC;AA3BI,IAAM,mBAAN;AAiDA,MAAM,cAAN,MAAM,oBAAmB,QAAoB;AAAA,EAClD,YAAY,MAAmC;AAC7C,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAOA,OAAO,WAAW,OAAmB,SAAkD;AACrF,WAAO,IAAI,YAAW,EAAE,WAAW,OAAO,OAAO;AAAA,EACnD;AAAA,EAEA,OAAO,SAAS,WAAsB,SAAgD;AACpF,WAAO,IAAI,YAAW,EAAE,SAAS,WAAW,OAAO;AAAA,EACrD;AAAA,EAEA,OAAO,eAAe,YAAoB,SAAgD;AACxF,WAAO,IAAI,YAAW,EAAE,eAAe,YAAY,OAAO;AAAA,EAC5D;AAAA,EAEA,OAAO,OAAO,GAAsD,GAA+D;AACjI,WAAO,OAAO,KAAK,OAAO,aAAY,GAAG,CAAC;AAAA,EAC5C;AACF;AA1Ba,YAMK,UAAyB;AAN9B,YAOK,WAAW;AAPhB,YAQK,SAAoB,OAAO,KAAK,aAAa,MAAM,CACnE,CAAC;AATI,IAAM,aAAN;AA+BA,MAAM,wBAAN,MAAM,8BAA6B,QAA8B;AAAA,EA6DtE,YAAY,MAA6C;AACvD,UAAM;AAHR;AAAA;AAAA;AAAA,yBAAqC,CAAC;AAIpC,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAmBA,OAAO,WAAW,OAAmB,SAA4D;AAC/F,WAAO,IAAI,sBAAqB,EAAE,WAAW,OAAO,OAAO;AAAA,EAC7D;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA0D;AAC9F,WAAO,IAAI,sBAAqB,EAAE,SAAS,WAAW,OAAO;AAAA,EAC/D;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA0D;AAClG,WAAO,IAAI,sBAAqB,EAAE,eAAe,YAAY,OAAO;AAAA,EACtE;AAAA,EAEA,OAAO,OAAO,GAA0E,GAAmF;AACzK,WAAO,OAAO,KAAK,OAAO,uBAAsB,GAAG,CAAC;AAAA,EACtD;AACF;AAlGa,sBAkEK,UAAyB;AAlE9B,sBAmEK,WAAW;AAnEhB,sBAoEK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,OAAO,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAC9E,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAC/E,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,GAAG,OAAO,YAAY,SAAS,GAAG,KAAK,KAAK;AAAA,EACjF,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,QAAQ,GAAG,OAAO,YAAY,WAAW,GAAG,KAAK,KAAK;AAAA,EACrF,EAAE,IAAI,GAAG,MAAM,eAAe,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAAA,EACpF,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,UAAU,GAAG,IAA4B,KAAK,KAAK;AAAA,EACjF,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,UAAU,GAAG,IAA4B,KAAK,KAAK;AAAA,EAClF,EAAE,IAAI,GAAG,MAAM,aAAa,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EACpF,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAAA,EAC9E,EAAE,IAAI,IAAI,MAAM,UAAU,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAAA,EAChF,EAAE,IAAI,IAAI,MAAM,mBAAmB,MAAM,QAAQ,GAAG,OAAO,YAAY,cAAc,GAAG,KAAK,KAAK;AAAA,EAClG,EAAE,IAAI,IAAI,MAAM,kBAAkB,MAAM,QAAQ,GAAG,OAAO,YAAY,iBAAiB,GAAG,UAAU,KAAK;AAC3G,CAAC;AAjFI,IAAM,uBAAN;AAuGA,MAAM,yBAAN,MAAM,+BAA8B,QAA+B;AAAA,EAWxE,YAAY,MAA8C;AACxD,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EASA,OAAO,WAAW,OAAmB,SAA6D;AAChG,WAAO,IAAI,uBAAsB,EAAE,WAAW,OAAO,OAAO;AAAA,EAC9D;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA2D;AAC/F,WAAO,IAAI,uBAAsB,EAAE,SAAS,WAAW,OAAO;AAAA,EAChE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA2D;AACnG,WAAO,IAAI,uBAAsB,EAAE,eAAe,YAAY,OAAO;AAAA,EACvE;AAAA,EAEA,OAAO,OAAO,GAA4E,GAAqF;AAC7K,WAAO,OAAO,KAAK,OAAO,wBAAuB,GAAG,CAAC;AAAA,EACvD;AACF;AAtCa,uBAgBK,UAAyB;AAhB9B,uBAiBK,WAAW;AAjBhB,uBAkBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,WAAW,GAAG,gBAAgB,KAAK,KAAK;AAAA,EACvE,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,WAAW,GAAG,sBAAsB,KAAK,KAAK;AAC7E,CAAC;AArBI,IAAM,wBAAN;AA2CA,MAAM,aAAN,MAAM,mBAAkB,QAAmB;AAAA,EA+BhD,YAAY,MAAkC;AAC5C,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAaA,OAAO,WAAW,OAAmB,SAAiD;AACpF,WAAO,IAAI,WAAU,EAAE,WAAW,OAAO,OAAO;AAAA,EAClD;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA+C;AACnF,WAAO,IAAI,WAAU,EAAE,SAAS,WAAW,OAAO;AAAA,EACpD;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA+C;AACvF,WAAO,IAAI,WAAU,EAAE,eAAe,YAAY,OAAO;AAAA,EAC3D;AAAA,EAEA,OAAO,OAAO,GAAoD,GAA6D;AAC7H,WAAO,OAAO,KAAK,OAAO,YAAW,GAAG,CAAC;AAAA,EAC3C;AACF;AA9Da,WAoCK,UAAyB;AApC9B,WAqCK,WAAW;AArChB,WAsCK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,OAAO,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAC9E,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAC/E,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,GAAG,OAAO,YAAY,SAAS,GAAG,KAAK,KAAK;AAAA,EACjF,EAAE,IAAI,GAAG,MAAM,gBAAgB,MAAM,QAAQ,GAAG,OAAO,YAAY,WAAW,GAAG,KAAK,KAAK;AAAA,EAC3F,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAAA,EAC9E,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AACjF,CAAC;AA7CI,IAAM,YAAN;AAmEA,MAAM,cAAN,MAAM,oBAAmB,QAAoB;AAAA,EAWlD,YAAY,MAAmC;AAC7C,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EASA,OAAO,WAAW,OAAmB,SAAkD;AACrF,WAAO,IAAI,YAAW,EAAE,WAAW,OAAO,OAAO;AAAA,EACnD;AAAA,EAEA,OAAO,SAAS,WAAsB,SAAgD;AACpF,WAAO,IAAI,YAAW,EAAE,SAAS,WAAW,OAAO;AAAA,EACrD;AAAA,EAEA,OAAO,eAAe,YAAoB,SAAgD;AACxF,WAAO,IAAI,YAAW,EAAE,eAAe,YAAY,OAAO;AAAA,EAC5D;AAAA,EAEA,OAAO,OAAO,GAAsD,GAA+D;AACjI,WAAO,OAAO,KAAK,OAAO,aAAY,GAAG,CAAC;AAAA,EAC5C;AACF;AAtCa,YAgBK,UAAyB;AAhB9B,YAiBK,WAAW;AAjBhB,YAkBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,WAAW,GAAG,gBAAgB,KAAK,KAAK;AAAA,EACvE,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,WAAW,GAAG,WAAW,KAAK,KAAK;AAClE,CAAC;AArBI,IAAM,aAAN;AA6CA,MAAM,yBAAN,MAAM,+BAA8B,QAA+B;AAAA,EAWxE,YAAY,MAA8C;AACxD,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EASA,OAAO,WAAW,OAAmB,SAA6D;AAChG,WAAO,IAAI,uBAAsB,EAAE,WAAW,OAAO,OAAO;AAAA,EAC9D;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA2D;AAC/F,WAAO,IAAI,uBAAsB,EAAE,SAAS,WAAW,OAAO;AAAA,EAChE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA2D;AACnG,WAAO,IAAI,uBAAsB,EAAE,eAAe,YAAY,OAAO;AAAA,EACvE;AAAA,EAEA,OAAO,OAAO,GAA4E,GAAqF;AAC7K,WAAO,OAAO,KAAK,OAAO,wBAAuB,GAAG,CAAC;AAAA,EACvD;AACF;AAtCa,uBAgBK,UAAyB;AAhB9B,uBAiBK,WAAW;AAjBhB,uBAkBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,gBAAgB,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EACvF,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAC/E,CAAC;AArBI,IAAM,wBAAN;AA2CA,MAAM,0BAAN,MAAM,gCAA+B,QAAgC;AAAA,EAM1E,YAAY,MAA+C;AACzD,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAQA,OAAO,WAAW,OAAmB,SAA8D;AACjG,WAAO,IAAI,wBAAuB,EAAE,WAAW,OAAO,OAAO;AAAA,EAC/D;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA4D;AAChG,WAAO,IAAI,wBAAuB,EAAE,SAAS,WAAW,OAAO;AAAA,EACjE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA4D;AACpG,WAAO,IAAI,wBAAuB,EAAE,eAAe,YAAY,OAAO;AAAA,EACxE;AAAA,EAEA,OAAO,OAAO,GAA8E,GAAuF;AACjL,WAAO,OAAO,KAAK,OAAO,yBAAwB,GAAG,CAAC;AAAA,EACxD;AACF;AAhCa,wBAWK,UAAyB;AAX9B,wBAYK,WAAW;AAZhB,wBAaK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAChF,CAAC;AAfI,IAAM,yBAAN;AAuCA,MAAM,4BAAN,MAAM,kCAAiC,QAAkC;AAAA,EAW9E,YAAY,MAAiD;AAC3D,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EASA,OAAO,WAAW,OAAmB,SAAgE;AACnG,WAAO,IAAI,0BAAyB,EAAE,WAAW,OAAO,OAAO;AAAA,EACjE;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA8D;AAClG,WAAO,IAAI,0BAAyB,EAAE,SAAS,WAAW,OAAO;AAAA,EACnE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA8D;AACtG,WAAO,IAAI,0BAAyB,EAAE,eAAe,YAAY,OAAO;AAAA,EAC1E;AAAA,EAEA,OAAO,OAAO,GAAkF,GAA2F;AACzL,WAAO,OAAO,KAAK,OAAO,2BAA0B,GAAG,CAAC;AAAA,EAC1D;AACF;AAtCa,0BAgBK,UAAyB;AAhB9B,0BAiBK,WAAW;AAjBhB,0BAkBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,gBAAgB,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EACvF,EAAE,IAAI,GAAG,MAAM,WAAW,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAClF,CAAC;AArBI,IAAM,2BAAN;AA2CA,MAAM,6BAAN,MAAM,mCAAkC,QAAmC;AAAA,EAMhF,YAAY,MAAkD;AAC5D,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAQA,OAAO,WAAW,OAAmB,SAAiE;AACpG,WAAO,IAAI,2BAA0B,EAAE,WAAW,OAAO,OAAO;AAAA,EAClE;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA+D;AACnG,WAAO,IAAI,2BAA0B,EAAE,SAAS,WAAW,OAAO;AAAA,EACpE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA+D;AACvG,WAAO,IAAI,2BAA0B,EAAE,eAAe,YAAY,OAAO;AAAA,EAC3E;AAAA,EAEA,OAAO,OAAO,GAAoF,GAA6F;AAC7L,WAAO,OAAO,KAAK,OAAO,4BAA2B,GAAG,CAAC;AAAA,EAC3D;AACF;AAhCa,2BAWK,UAAyB;AAX9B,2BAYK,WAAW;AAZhB,2BAaK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,WAAW,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAClF,CAAC;AAfI,IAAM,4BAAN;AAqCA,MAAM,0CAAN,MAAM,gDAA+C,QAAgD;AAAA,EAgB1G,YAAY,MAA+D;AACzE,UAAM;AAHR;AAAA;AAAA;AAAA,uBAA4C,CAAC;AAI3C,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAUA,OAAO,WAAW,OAAmB,SAA8E;AACjH,WAAO,IAAI,wCAAuC,EAAE,WAAW,OAAO,OAAO;AAAA,EAC/E;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA4E;AAChH,WAAO,IAAI,wCAAuC,EAAE,SAAS,WAAW,OAAO;AAAA,EACjF;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA4E;AACpH,WAAO,IAAI,wCAAuC,EAAE,eAAe,YAAY,OAAO;AAAA,EACxF;AAAA,EAEA,OAAO,OAAO,GAA8G,GAAuH;AACjP,WAAO,OAAO,KAAK,OAAO,yCAAwC,GAAG,CAAC;AAAA,EACxE;AACF;AA5Ca,wCAqBK,UAAyB;AArB9B,wCAsBK,WAAW;AAtBhB,wCAuBK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,4BAA4B,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EACnG,EAAE,IAAI,GAAG,MAAM,4BAA4B,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAAA,EACjG,EAAE,IAAI,GAAG,MAAM,eAAe,MAAM,WAAW,GAAG,4BAA4B,UAAU,KAAK;AAC/F,CAAC;AA3BI,IAAM,yCAAN;AAiDA,MAAM,8BAAN,MAAM,oCAAmC,QAAoC;AAAA,EAsBlF,YAAY,MAAmD;AAC7D,UAAM;AAHR;AAAA;AAAA;AAAA;AAAA;AAAA,4BAA6B,CAAC;AAI5B,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAUA,OAAO,WAAW,OAAmB,SAAkE;AACrG,WAAO,IAAI,4BAA2B,EAAE,WAAW,OAAO,OAAO;AAAA,EACnE;AAAA,EAEA,OAAO,SAAS,WAAsB,SAAgE;AACpG,WAAO,IAAI,4BAA2B,EAAE,SAAS,WAAW,OAAO;AAAA,EACrE;AAAA,EAEA,OAAO,eAAe,YAAoB,SAAgE;AACxG,WAAO,IAAI,4BAA2B,EAAE,eAAe,YAAY,OAAO;AAAA,EAC5E;AAAA,EAEA,OAAO,OAAO,GAAsF,GAA+F;AACjM,WAAO,OAAO,KAAK,OAAO,6BAA4B,GAAG,CAAC;AAAA,EAC5D;AACF;AAlDa,4BA2BK,UAAyB;AA3B9B,4BA4BK,WAAW;AA5BhB,4BA6BK,SAAoB,OAAO,KAAK,aAAa,MAAM;AAAA,EACjE,EAAE,IAAI,GAAG,MAAM,wBAAwB,MAAM,UAAU,GAAG,GAA2B,KAAK,KAAK;AAAA,EAC/F,EAAE,IAAI,GAAG,MAAM,aAAa,MAAM,UAAU,GAAG,GAAyB,KAAK,KAAK;AAAA,EAClF,EAAE,IAAI,GAAG,MAAM,sBAAsB,MAAM,UAAU,GAAG,GAA2B,UAAU,KAAK;AACpG,CAAC;AAjCI,IAAM,6BAAN;AAuDA,MAAM,2CAAN,MAAM,iDAAgD,QAAiD;AAAA,EAC5G,YAAY,MAAgE;AAC1E,UAAM;AACN,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAOA,OAAO,WAAW,OAAmB,SAA+E;AAClH,WAAO,IAAI,yCAAwC,EAAE,WAAW,OAAO,OAAO;AAAA,EAChF;AAAA,EAEA,OAAO,SAAS,WAAsB,SAA6E;AACjH,WAAO,IAAI,yCAAwC,EAAE,SAAS,WAAW,OAAO;AAAA,EAClF;AAAA,EAEA,OAAO,eAAe,YAAoB,SAA6E;AACrH,WAAO,IAAI,yCAAwC,EAAE,eAAe,YAAY,OAAO;AAAA,EACzF;AAAA,EAEA,OAAO,OAAO,GAAgH,GAAyH;AACrP,WAAO,OAAO,KAAK,OAAO,0CAAyC,GAAG,CAAC;AAAA,EACzE;AACF;AA1Ba,yCAMK,UAAyB;AAN9B,yCAOK,WAAW;AAPhB,yCAQK,SAAoB,OAAO,KAAK,aAAa,MAAM,CACnE,CAAC;AATI,IAAM,0CAAN;","names":["TrackKind","TrackSource","StreamState","AudioTrackFeature"]}
package/dist/room.cjs CHANGED
@@ -36,7 +36,6 @@ __export(room_exports, {
36
36
  });
37
37
  module.exports = __toCommonJS(room_exports);
38
38
  var import_events = __toESM(require("events"), 1);
39
- var import_web = require("node:stream/web");
40
39
  var import_stream_reader = require("./data_streams/stream_reader.cjs");
41
40
  var import_e2ee = require("./e2ee.cjs");
42
41
  var import_ffi_client = require("./ffi_client.cjs");
@@ -263,6 +262,19 @@ class Room extends import_events.default {
263
262
  this.handleStreamChunk(ev.value.chunk);
264
263
  } else if (ev.case === "streamTrailerReceived" && ev.value.trailer) {
265
264
  this.handleStreamTrailer(ev.value.trailer);
265
+ } else if (ev.case === "roomUpdated") {
266
+ this.info = ev.value;
267
+ this.emit("roomUpdated" /* RoomUpdated */);
268
+ } else if (ev.case === "moved") {
269
+ this.info = ev.value;
270
+ this.emit("moved" /* Moved */);
271
+ } else if (ev.case === "participantsUpdated") {
272
+ for (const info of ev.value.participants) {
273
+ const participant = this.retrieveParticipantByIdentity(info.identity);
274
+ if (participant) {
275
+ participant.info = info;
276
+ }
277
+ }
266
278
  }
267
279
  };
268
280
  }
@@ -277,6 +289,12 @@ class Room extends import_events.default {
277
289
  get isConnected() {
278
290
  return this.ffiHandle != void 0 && this.connectionState != import_room_pb.ConnectionState.CONN_DISCONNECTED;
279
291
  }
292
+ /**
293
+ * Gets the room's server ID. This ID is assigned by the LiveKit server
294
+ * and is unique for each room session.
295
+ * SID is assigned asynchronously after connection.
296
+ * @returns Promise that resolves to the room's server ID, or empty string if not connected
297
+ */
280
298
  async getSid() {
281
299
  var _a;
282
300
  if (!this.isConnected) {
@@ -299,6 +317,44 @@ class Room extends import_events.default {
299
317
  });
300
318
  });
301
319
  }
320
+ get numParticipants() {
321
+ var _a;
322
+ return ((_a = this.info) == null ? void 0 : _a.numParticipants) ?? 0;
323
+ }
324
+ get numPublishers() {
325
+ var _a;
326
+ return ((_a = this.info) == null ? void 0 : _a.numPublishers) ?? 0;
327
+ }
328
+ get creationTime() {
329
+ var _a;
330
+ return new Date(Number(((_a = this.info) == null ? void 0 : _a.creationTime) ?? 0));
331
+ }
332
+ get isRecording() {
333
+ var _a;
334
+ return ((_a = this.info) == null ? void 0 : _a.activeRecording) ?? false;
335
+ }
336
+ /**
337
+ * The time in seconds after which a room will be closed after the last
338
+ * participant has disconnected.
339
+ */
340
+ get departureTimeout() {
341
+ var _a;
342
+ return ((_a = this.info) == null ? void 0 : _a.departureTimeout) ?? 0;
343
+ }
344
+ /**
345
+ * The time in seconds after which an empty room will be automatically closed.
346
+ */
347
+ get emptyTimeout() {
348
+ var _a;
349
+ return ((_a = this.info) == null ? void 0 : _a.emptyTimeout) ?? 0;
350
+ }
351
+ /**
352
+ * Connects to a LiveKit room using the provided URL and access token.
353
+ * @param url The WebSocket URL of the LiveKit server
354
+ * @param token A valid LiveKit access token for authentication
355
+ * @param opts Optional room configuration options
356
+ * @throws ConnectError if connection fails
357
+ */
302
358
  async connect(url, token, opts) {
303
359
  const options = { ...defaultRoomOptions, ...opts };
304
360
  const e2eeOptions = { ...import_e2ee.defaultE2EEOptions, ...options.e2ee };
@@ -338,6 +394,10 @@ class Room extends import_events.default {
338
394
  throw new ConnectError(cb.message.value || "");
339
395
  }
340
396
  }
397
+ /**
398
+ * Disconnects from the room and cleans up all resources.
399
+ * This will stop all tracks and close the connection.
400
+ */
341
401
  async disconnect() {
342
402
  var _a;
343
403
  if (!this.isConnected) {
@@ -354,6 +414,13 @@ class Room extends import_events.default {
354
414
  import_ffi_client.FfiClient.instance.removeListener(import_ffi_client.FfiClientEvent.FfiEvent, this.onFfiEvent);
355
415
  this.removeAllListeners();
356
416
  }
417
+ /**
418
+ * Registers a handler for incoming text data streams on a specific topic.
419
+ * Text streams are used for receiving structured text data from other participants.
420
+ * @param topic The topic to listen for text streams on
421
+ * @param callback Function to handle incoming text stream data
422
+ * @throws Error if a handler for this topic is already registered
423
+ */
357
424
  registerTextStreamHandler(topic, callback) {
358
425
  if (this.textStreamHandlers.has(topic)) {
359
426
  throw new Error(`A text stream handler for topic "${topic}" has already been set.`);
@@ -363,6 +430,13 @@ class Room extends import_events.default {
363
430
  unregisterTextStreamHandler(topic) {
364
431
  this.textStreamHandlers.delete(topic);
365
432
  }
433
+ /**
434
+ * Registers a handler for incoming byte data streams on a specific topic.
435
+ * Byte streams are used for receiving binary data like files from other participants.
436
+ * @param topic The topic to listen for byte streams on
437
+ * @param callback Function to handle incoming byte stream data
438
+ * @throws Error if a handler for this topic is already registered
439
+ */
366
440
  registerByteStreamHandler(topic, callback) {
367
441
  if (this.byteStreamHandlers.has(topic)) {
368
442
  throw new Error(`A byte stream handler for topic "${topic}" has already been set.`);
@@ -429,7 +503,7 @@ class Room extends import_events.default {
429
503
  return;
430
504
  }
431
505
  let streamController;
432
- const stream = new import_web.ReadableStream({
506
+ const stream = new ReadableStream({
433
507
  start: (controller) => {
434
508
  streamController = controller;
435
509
  this.byteStreamControllers.set(streamHeader.streamId, {
@@ -459,7 +533,7 @@ class Room extends import_events.default {
459
533
  return;
460
534
  }
461
535
  let streamController;
462
- const stream = new import_web.ReadableStream({
536
+ const stream = new ReadableStream({
463
537
  start: (controller) => {
464
538
  streamController = controller;
465
539
  this.textStreamControllers.set(streamHeader.streamId, {
@@ -545,6 +619,8 @@ var RoomEvent = /* @__PURE__ */ ((RoomEvent2) => {
545
619
  RoomEvent2["Disconnected"] = "disconnected";
546
620
  RoomEvent2["Reconnecting"] = "reconnecting";
547
621
  RoomEvent2["Reconnected"] = "reconnected";
622
+ RoomEvent2["RoomUpdated"] = "roomUpdated";
623
+ RoomEvent2["Moved"] = "moved";
548
624
  return RoomEvent2;
549
625
  })(RoomEvent || {});
550
626
  // Annotate the CommonJS export names for ESM import in node:
package/dist/room.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/room.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport { ReadableStream } from 'node:stream/web';\nimport { ByteStreamReader, TextStreamReader } from './data_streams/stream_reader.js';\nimport type {\n ByteStreamHandler,\n ByteStreamInfo,\n StreamController,\n TextStreamHandler,\n TextStreamInfo,\n} from './data_streams/types.js';\nimport type { E2EEOptions } from './e2ee.js';\nimport { E2EEManager, defaultE2EEOptions } from './e2ee.js';\nimport { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';\nimport { log } from './log.js';\nimport type { Participant } from './participant.js';\nimport { LocalParticipant, RemoteParticipant } from './participant.js';\nimport { EncryptionState } from './proto/e2ee_pb.js';\nimport type { FfiEvent } from './proto/ffi_pb.js';\nimport type { DisconnectReason, OwnedParticipant } from './proto/participant_pb.js';\nimport type { DataStream_Trailer } from './proto/room_pb.js';\nimport {\n type ConnectCallback,\n ConnectRequest,\n type ConnectResponse,\n type ConnectionQuality,\n ConnectionState,\n ContinualGatheringPolicy,\n type DataPacketKind,\n type DataStream_Chunk,\n type DataStream_Header,\n type DisconnectResponse,\n RoomOptions as FfiRoomOptions,\n type IceServer,\n IceTransportType,\n type RoomInfo,\n} from './proto/room_pb.js';\nimport { TrackKind } from './proto/track_pb.js';\nimport type { LocalTrack, RemoteTrack } from './track.js';\nimport { RemoteAudioTrack, RemoteVideoTrack } from './track.js';\nimport type { LocalTrackPublication, TrackPublication } from './track_publication.js';\nimport { RemoteTrackPublication } from './track_publication.js';\nimport type { ChatMessage } from './types.js';\nimport { bigIntToNumber } from './utils.js';\n\nexport interface RtcConfiguration {\n iceTransportType: IceTransportType;\n continualGatheringPolicy: ContinualGatheringPolicy;\n iceServers: IceServer[];\n}\n\nexport const defaultRtcConfiguration: RtcConfiguration = {\n iceTransportType: IceTransportType.TRANSPORT_ALL,\n continualGatheringPolicy: ContinualGatheringPolicy.GATHER_CONTINUALLY,\n iceServers: [],\n};\n\nexport interface RoomOptions {\n autoSubscribe: boolean;\n dynacast: boolean;\n e2ee?: E2EEOptions;\n rtcConfig?: RtcConfiguration;\n}\n\nexport const defaultRoomOptions = new FfiRoomOptions({\n autoSubscribe: true,\n dynacast: false,\n e2ee: undefined,\n rtcConfig: undefined,\n adaptiveStream: false,\n joinRetries: 1,\n});\n\nexport class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>) {\n private info?: RoomInfo;\n private ffiHandle?: FfiHandle;\n\n private byteStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private textStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private byteStreamHandlers = new Map<string, ByteStreamHandler>();\n private textStreamHandlers = new Map<string, TextStreamHandler>();\n\n e2eeManager?: E2EEManager;\n connectionState: ConnectionState = ConnectionState.CONN_DISCONNECTED;\n\n remoteParticipants: Map<string, RemoteParticipant> = new Map();\n localParticipant?: LocalParticipant;\n\n constructor() {\n super();\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get metadata(): string | undefined {\n return this.info?.metadata;\n }\n\n get isConnected(): boolean {\n return this.ffiHandle != undefined && this.connectionState != ConnectionState.CONN_DISCONNECTED;\n }\n\n async getSid(): Promise<string> {\n if (!this.isConnected) {\n return '';\n }\n if (this.info?.sid && this.info.sid !== '') {\n return this.info.sid;\n }\n return new Promise((resolve, reject) => {\n const handleRoomUpdate = (sid: string) => {\n if (sid !== '') {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n resolve(sid);\n }\n };\n this.on(RoomEvent.RoomSidChanged, handleRoomUpdate);\n this.once(RoomEvent.Disconnected, () => {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n reject('Room disconnected before room server id was available');\n });\n });\n }\n\n async connect(url: string, token: string, opts?: RoomOptions) {\n const options = { ...defaultRoomOptions, ...opts };\n const e2eeOptions = { ...defaultE2EEOptions, ...options.e2ee };\n\n const req = new ConnectRequest({\n url: url,\n token: token,\n options,\n });\n\n const res = FfiClient.instance.request<ConnectResponse>({\n message: {\n case: 'connect',\n value: req,\n },\n });\n\n const cb = await FfiClient.instance.waitFor<ConnectCallback>((ev: FfiEvent) => {\n return ev.message.case == 'connect' && ev.message.value.asyncId == res.asyncId;\n });\n\n log.debug('Connect callback received');\n\n switch (cb.message.case) {\n case 'result':\n this.ffiHandle = new FfiHandle(cb.message.value.room!.handle!.id!);\n this.e2eeManager = options.e2ee && new E2EEManager(this.ffiHandle.handle, e2eeOptions);\n\n this.info = cb.message.value.room!.info;\n this.connectionState = ConnectionState.CONN_CONNECTED;\n this.localParticipant = new LocalParticipant(cb.message.value.localParticipant!);\n\n for (const pt of cb.message.value.participants) {\n const rp = this.createRemoteParticipant(pt.participant!);\n\n for (const pub of pt.publications) {\n const publication = new RemoteTrackPublication(pub);\n rp.trackPublications.set(publication.sid!, publication);\n }\n }\n\n FfiClient.instance.on(FfiClientEvent.FfiEvent, this.onFfiEvent);\n break;\n case 'error':\n default:\n throw new ConnectError(cb.message.value || '');\n }\n }\n\n async disconnect() {\n if (!this.isConnected) {\n return;\n }\n\n FfiClient.instance.request<DisconnectResponse>({\n message: {\n case: 'disconnect',\n value: {\n roomHandle: this.ffiHandle?.handle,\n },\n },\n });\n\n FfiClient.instance.removeListener(FfiClientEvent.FfiEvent, this.onFfiEvent);\n this.removeAllListeners();\n }\n\n registerTextStreamHandler(topic: string, callback: TextStreamHandler) {\n if (this.textStreamHandlers.has(topic)) {\n throw new Error(`A text stream handler for topic \"${topic}\" has already been set.`);\n }\n this.textStreamHandlers.set(topic, callback);\n }\n\n unregisterTextStreamHandler(topic: string) {\n this.textStreamHandlers.delete(topic);\n }\n\n registerByteStreamHandler(topic: string, callback: ByteStreamHandler) {\n if (this.byteStreamHandlers.has(topic)) {\n throw new Error(`A byte stream handler for topic \"${topic}\" has already been set.`);\n }\n this.byteStreamHandlers.set(topic, callback);\n }\n\n unregisterByteStreamHandler(topic: string) {\n this.byteStreamHandlers.delete(topic);\n }\n\n private onFfiEvent = (ffiEvent: FfiEvent) => {\n if (!this.localParticipant || !this.ffiHandle || !this.info) {\n throw TypeError('cannot handle ffi events before connectCallback');\n }\n\n if (ffiEvent.message.case == 'rpcMethodInvocation') {\n if (\n ffiEvent.message.value.localParticipantHandle == this.localParticipant.ffi_handle.handle\n ) {\n this.localParticipant.handleRpcMethodInvocation(\n ffiEvent.message.value.invocationId!,\n ffiEvent.message.value.method!,\n ffiEvent.message.value.requestId!,\n ffiEvent.message.value.callerIdentity!,\n ffiEvent.message.value.payload!,\n ffiEvent.message.value.responseTimeoutMs!,\n );\n }\n return;\n } else if (\n ffiEvent.message.case != 'roomEvent' ||\n ffiEvent.message.value.roomHandle != this.ffiHandle.handle\n ) {\n return;\n }\n\n const ev = ffiEvent.message.value.message;\n if (ev.case == 'participantConnected') {\n const participant = this.createRemoteParticipant(ev.value.info!);\n this.remoteParticipants.set(participant.identity!, participant);\n this.emit(RoomEvent.ParticipantConnected, participant);\n } else if (ev.case == 'participantDisconnected') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n this.remoteParticipants.delete(participant!.identity);\n participant!.info.disconnectReason = ev.value.disconnectReason;\n this.emit(RoomEvent.ParticipantDisconnected, participant!);\n } else if (ev.case == 'localTrackPublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n this.emit(RoomEvent.LocalTrackPublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackUnpublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.publicationSid!);\n this.localParticipant!.trackPublications.delete(ev.value.publicationSid!);\n this.emit(RoomEvent.LocalTrackUnpublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackSubscribed') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n publication!.resolveFirstSubscription();\n this.emit(RoomEvent.LocalTrackSubscribed, publication!.track!);\n } else if (ev.case == 'trackPublished') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const publication = new RemoteTrackPublication(ev.value.publication!);\n participant!.trackPublications.set(publication.sid!, publication);\n this.emit(RoomEvent.TrackPublished, publication, participant!);\n } else if (ev.case == 'trackUnpublished') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n const publication = participant.trackPublications.get(ev.value.publicationSid!);\n participant.trackPublications.delete(ev.value.publicationSid!);\n if (publication) {\n this.emit(RoomEvent.TrackUnpublished, publication, participant);\n }\n } else if (ev.case == 'trackSubscribed') {\n const ownedTrack = ev.value.track!;\n const trackInfo = ownedTrack.info!;\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n trackInfo.sid!,\n );\n publication.subscribed = true;\n if (trackInfo.kind == TrackKind.KIND_VIDEO) {\n publication.track = new RemoteVideoTrack(ownedTrack);\n } else if (trackInfo.kind == TrackKind.KIND_AUDIO) {\n publication.track = new RemoteAudioTrack(ownedTrack);\n }\n\n this.emit(RoomEvent.TrackSubscribed, publication.track!, publication, participant);\n } else if (ev.case == 'trackUnsubscribed') {\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n const track = publication.track!;\n publication.track = undefined;\n publication.subscribed = false;\n this.emit(RoomEvent.TrackUnsubscribed, track, publication, participant);\n } else if (ev.case == 'trackSubscriptionFailed') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n this.emit(RoomEvent.TrackSubscriptionFailed, ev.value.trackSid!, participant, ev.value.error);\n } else if (ev.case == 'trackMuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = true;\n if (publication.track) {\n publication.track.info!.muted = true;\n }\n this.emit(RoomEvent.TrackMuted, publication, participant);\n } else if (ev.case == 'trackUnmuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = false;\n if (publication.track) {\n publication.track.info!.muted = false;\n }\n this.emit(RoomEvent.TrackUnmuted, publication, participant);\n } else if (ev.case == 'activeSpeakersChanged') {\n const activeSpeakers = ev.value.participantIdentities.map((identity) =>\n this.requireParticipantByIdentity(identity),\n );\n this.emit(RoomEvent.ActiveSpeakersChanged, activeSpeakers);\n } else if (ev.case == 'roomMetadataChanged') {\n this.info!.metadata = ev.value.metadata;\n this.emit(RoomEvent.RoomMetadataChanged, this.info!.metadata!);\n } else if (ev.case == 'participantMetadataChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.metadata = ev.value.metadata;\n this.emit(RoomEvent.ParticipantMetadataChanged, participant.metadata, participant);\n } else if (ev.case == 'participantNameChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.name = ev.value.name;\n this.emit(RoomEvent.ParticipantNameChanged, participant.name!, participant);\n } else if (ev.case == 'participantAttributesChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.attributes = ev.value.attributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n if (Object.keys(ev.value.changedAttributes).length > 0) {\n const changedAttributes = ev.value.changedAttributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n this.emit(RoomEvent.ParticipantAttributesChanged, changedAttributes, participant);\n }\n } else if (ev.case == 'connectionQualityChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n this.emit(RoomEvent.ConnectionQualityChanged, ev.value.quality!, participant);\n } else if (ev.case == 'chatMessage') {\n const participant = this.retrieveParticipantByIdentity(ev.value.participantIdentity!);\n const { id, message: messageText, timestamp, editTimestamp, generated } = ev.value.message!;\n const message: ChatMessage = {\n id: id!,\n message: messageText!,\n timestamp: Number(timestamp),\n editTimestamp: Number(editTimestamp),\n generated,\n };\n this.emit(RoomEvent.ChatMessage, message, participant);\n } else if (ev.case == 'dataPacketReceived') {\n // Can be undefined if the data is sent from a Server SDK\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const dataPacket = ev.value.value;\n switch (dataPacket.case) {\n case 'user':\n const buffer = FfiClient.instance.copyBuffer(\n dataPacket.value.data!.data!.dataPtr!,\n Number(dataPacket.value.data!.data!.dataLen),\n );\n new FfiHandle(dataPacket.value.data!.handle!.id!).dispose();\n this.emit(\n RoomEvent.DataReceived,\n buffer,\n participant,\n ev.value.kind,\n dataPacket.value.topic,\n );\n break;\n case 'sipDtmf':\n const { code, digit } = dataPacket.value;\n this.emit(RoomEvent.DtmfReceived, code!, digit!, participant!);\n break;\n default:\n break;\n }\n } else if (ev.case == 'e2eeStateChanged') {\n if (ev.value.state == EncryptionState.INTERNAL_ERROR) {\n // throw generic error until Rust SDK is updated to supply the error alongside INTERNAL_ERROR\n this.emit(RoomEvent.EncryptionError, new Error('internal server error'));\n }\n } else if (ev.case == 'connectionStateChanged') {\n this.connectionState = ev.value.state!;\n this.emit(RoomEvent.ConnectionStateChanged, this.connectionState);\n /*} else if (ev.case == 'connected') {\n this.emit(RoomEvent.Connected);*/\n } else if (ev.case == 'disconnected') {\n this.emit(RoomEvent.Disconnected, ev.value.reason!);\n } else if (ev.case == 'reconnecting') {\n this.emit(RoomEvent.Reconnecting);\n } else if (ev.case == 'reconnected') {\n this.emit(RoomEvent.Reconnected);\n } else if (ev.case == 'roomSidChanged') {\n this.emit(RoomEvent.RoomSidChanged, ev.value.sid!);\n } else if (ev.case === 'streamHeaderReceived' && ev.value.header) {\n this.handleStreamHeader(ev.value.header, ev.value.participantIdentity!);\n } else if (ev.case === 'streamChunkReceived' && ev.value.chunk) {\n this.handleStreamChunk(ev.value.chunk);\n } else if (ev.case === 'streamTrailerReceived' && ev.value.trailer) {\n this.handleStreamTrailer(ev.value.trailer);\n }\n };\n\n private retrieveParticipantByIdentity(identity: string): Participant | undefined {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else {\n return this.remoteParticipants.get(identity);\n }\n }\n\n private requireParticipantByIdentity(identity: string): Participant {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else if (this.remoteParticipants.has(identity)) {\n return this.remoteParticipants.get(identity)!;\n } else {\n throw new TypeError(`participant ${identity} not found`);\n }\n }\n\n private requireRemoteParticipant(identity: string) {\n const participant = this.remoteParticipants.get(identity);\n if (!participant) {\n throw new TypeError(`participant ${identity} not found`);\n }\n return participant;\n }\n\n private requirePublicationOfParticipant(identity: string, trackSid: string) {\n const participant = this.requireParticipantByIdentity(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private requirePublicationOfRemoteParticipant(identity: string, trackSid: string) {\n const participant = this.requireRemoteParticipant(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private createRemoteParticipant(ownedInfo: OwnedParticipant) {\n if (this.remoteParticipants.has(ownedInfo.info!.identity!)) {\n throw new Error('Participant already exists');\n }\n\n const participant = new RemoteParticipant(ownedInfo);\n this.remoteParticipants.set(ownedInfo.info!.identity!, participant);\n return participant;\n }\n\n private handleStreamHeader(streamHeader: DataStream_Header, participantIdentity: string) {\n if (streamHeader.contentHeader.case === 'byteHeader') {\n const streamHandlerCallback = this.byteStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming byte stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream({\n start: (controller) => {\n streamController = controller;\n this.byteStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: ByteStreamInfo = {\n streamId: streamHeader.streamId!,\n name: streamHeader.contentHeader.value.name ?? 'unknown',\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: bigIntToNumber(streamHeader.timestamp!),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new ByteStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n } else if (streamHeader.contentHeader.case === 'textHeader') {\n const streamHandlerCallback = this.textStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming text stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream<DataStream_Chunk>({\n start: (controller) => {\n streamController = controller;\n this.textStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: TextStreamInfo = {\n streamId: streamHeader.streamId!,\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: Number(streamHeader.timestamp),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new TextStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n }\n }\n\n private handleStreamChunk(chunk: DataStream_Chunk) {\n const fileBuffer = this.byteStreamControllers.get(chunk.streamId!);\n if (fileBuffer) {\n if (chunk.content!.length > 0) {\n fileBuffer.controller.enqueue(chunk);\n }\n }\n const textBuffer = this.textStreamControllers.get(chunk.streamId!);\n if (textBuffer) {\n if (chunk.content!.length > 0) {\n textBuffer.controller.enqueue(chunk);\n }\n }\n }\n\n private handleStreamTrailer(trailer: DataStream_Trailer) {\n const streamId = trailer.streamId!;\n const fileBuffer = this.byteStreamControllers.get(streamId);\n if (fileBuffer) {\n fileBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n const textBuffer = this.textStreamControllers.get(streamId);\n if (textBuffer) {\n textBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n }\n}\n\nexport class ConnectError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type RoomCallbacks = {\n participantConnected: (participant: RemoteParticipant) => void;\n participantDisconnected: (participant: RemoteParticipant) => void;\n localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;\n localTrackUnpublished: (\n publication: LocalTrackPublication,\n participant: LocalParticipant,\n ) => void;\n localTrackSubscribed: (track: LocalTrack) => void;\n trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackSubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackUnsubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackSubscriptionFailed: (\n trackSid: string,\n participant: RemoteParticipant,\n reason?: string,\n ) => void;\n trackMuted: (publication: TrackPublication, participant: Participant) => void;\n trackUnmuted: (publication: TrackPublication, participant: Participant) => void;\n activeSpeakersChanged: (speakers: Participant[]) => void;\n roomMetadataChanged: (metadata: string) => void;\n roomInfoUpdated: (info: RoomInfo) => void;\n participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;\n participantNameChanged: (name: string, participant: Participant) => void;\n participantAttributesChanged: (\n changedAttributes: Record<string, string>,\n participant: Participant,\n ) => void;\n connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;\n dataReceived: (\n payload: Uint8Array,\n participant?: RemoteParticipant,\n kind?: DataPacketKind,\n topic?: string,\n ) => void;\n chatMessage: (message: ChatMessage, participant?: Participant) => void;\n dtmfReceived: (code: number, digit: string, participant: RemoteParticipant) => void;\n encryptionError: (error: Error) => void;\n connectionStateChanged: (state: ConnectionState) => void;\n connected: () => void;\n disconnected: (reason: DisconnectReason) => void;\n reconnecting: () => void;\n reconnected: () => void;\n roomSidChanged: (sid: string) => void;\n};\n\nexport enum RoomEvent {\n ParticipantConnected = 'participantConnected',\n ParticipantDisconnected = 'participantDisconnected',\n LocalTrackPublished = 'localTrackPublished',\n LocalTrackUnpublished = 'localTrackUnpublished',\n LocalTrackSubscribed = 'localTrackSubscribed',\n TrackPublished = 'trackPublished',\n TrackUnpublished = 'trackUnpublished',\n TrackSubscribed = 'trackSubscribed',\n TrackUnsubscribed = 'trackUnsubscribed',\n TrackSubscriptionFailed = 'trackSubscriptionFailed',\n TrackMuted = 'trackMuted',\n TrackUnmuted = 'trackUnmuted',\n ActiveSpeakersChanged = 'activeSpeakersChanged',\n RoomMetadataChanged = 'roomMetadataChanged',\n RoomSidChanged = 'roomSidChanged',\n ParticipantMetadataChanged = 'participantMetadataChanged',\n ParticipantNameChanged = 'participantNameChanged',\n ParticipantAttributesChanged = 'participantAttributesChanged',\n ConnectionQualityChanged = 'connectionQualityChanged',\n DataReceived = 'dataReceived',\n ChatMessage = 'chatMessage',\n DtmfReceived = 'dtmfReceived',\n EncryptionError = 'encryptionError',\n ConnectionStateChanged = 'connectionStateChanged',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Reconnecting = 'reconnecting',\n Reconnected = 'reconnected',\n}\n"],"mappings":"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","names":["FfiRoomOptions","EventEmitter","RoomEvent"]}
1
+ {"version":3,"sources":["../src/room.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport { ByteStreamReader, TextStreamReader } from './data_streams/stream_reader.js';\nimport type {\n ByteStreamHandler,\n ByteStreamInfo,\n StreamController,\n TextStreamHandler,\n TextStreamInfo,\n} from './data_streams/types.js';\nimport type { E2EEOptions } from './e2ee.js';\nimport { E2EEManager, defaultE2EEOptions } from './e2ee.js';\nimport { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';\nimport { log } from './log.js';\nimport type { Participant } from './participant.js';\nimport { LocalParticipant, RemoteParticipant } from './participant.js';\nimport { EncryptionState } from './proto/e2ee_pb.js';\nimport type { FfiEvent } from './proto/ffi_pb.js';\nimport type { DisconnectReason, OwnedParticipant } from './proto/participant_pb.js';\nimport type { DataStream_Trailer } from './proto/room_pb.js';\nimport {\n type ConnectCallback,\n ConnectRequest,\n type ConnectResponse,\n type ConnectionQuality,\n ConnectionState,\n ContinualGatheringPolicy,\n type DataPacketKind,\n type DataStream_Chunk,\n type DataStream_Header,\n type DisconnectResponse,\n RoomOptions as FfiRoomOptions,\n type IceServer,\n IceTransportType,\n type RoomInfo,\n} from './proto/room_pb.js';\nimport { TrackKind } from './proto/track_pb.js';\nimport type { LocalTrack, RemoteTrack } from './track.js';\nimport { RemoteAudioTrack, RemoteVideoTrack } from './track.js';\nimport type { LocalTrackPublication, TrackPublication } from './track_publication.js';\nimport { RemoteTrackPublication } from './track_publication.js';\nimport type { ChatMessage } from './types.js';\nimport { bigIntToNumber } from './utils.js';\n\nexport interface RtcConfiguration {\n iceTransportType: IceTransportType;\n continualGatheringPolicy: ContinualGatheringPolicy;\n iceServers: IceServer[];\n}\n\nexport const defaultRtcConfiguration: RtcConfiguration = {\n iceTransportType: IceTransportType.TRANSPORT_ALL,\n continualGatheringPolicy: ContinualGatheringPolicy.GATHER_CONTINUALLY,\n iceServers: [],\n};\n\nexport interface RoomOptions {\n autoSubscribe: boolean;\n dynacast: boolean;\n e2ee?: E2EEOptions;\n rtcConfig?: RtcConfiguration;\n}\n\nexport const defaultRoomOptions = new FfiRoomOptions({\n autoSubscribe: true,\n dynacast: false,\n e2ee: undefined,\n rtcConfig: undefined,\n adaptiveStream: false,\n joinRetries: 1,\n});\n\nexport class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>) {\n private info?: RoomInfo;\n private ffiHandle?: FfiHandle;\n\n private byteStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private textStreamControllers = new Map<string, StreamController<DataStream_Chunk>>();\n private byteStreamHandlers = new Map<string, ByteStreamHandler>();\n private textStreamHandlers = new Map<string, TextStreamHandler>();\n\n e2eeManager?: E2EEManager;\n connectionState: ConnectionState = ConnectionState.CONN_DISCONNECTED;\n\n remoteParticipants: Map<string, RemoteParticipant> = new Map();\n localParticipant?: LocalParticipant;\n\n constructor() {\n super();\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get metadata(): string | undefined {\n return this.info?.metadata;\n }\n\n get isConnected(): boolean {\n return this.ffiHandle != undefined && this.connectionState != ConnectionState.CONN_DISCONNECTED;\n }\n\n /**\n * Gets the room's server ID. This ID is assigned by the LiveKit server\n * and is unique for each room session.\n * SID is assigned asynchronously after connection.\n * @returns Promise that resolves to the room's server ID, or empty string if not connected\n */\n async getSid(): Promise<string> {\n if (!this.isConnected) {\n return '';\n }\n if (this.info?.sid && this.info.sid !== '') {\n return this.info.sid;\n }\n return new Promise((resolve, reject) => {\n const handleRoomUpdate = (sid: string) => {\n if (sid !== '') {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n resolve(sid);\n }\n };\n this.on(RoomEvent.RoomSidChanged, handleRoomUpdate);\n this.once(RoomEvent.Disconnected, () => {\n this.off(RoomEvent.RoomSidChanged, handleRoomUpdate);\n reject('Room disconnected before room server id was available');\n });\n });\n }\n\n get numParticipants(): number {\n return this.info?.numParticipants ?? 0;\n }\n\n get numPublishers(): number {\n return this.info?.numPublishers ?? 0;\n }\n\n get creationTime(): Date {\n return new Date(Number(this.info?.creationTime ?? 0));\n }\n\n get isRecording(): boolean {\n return this.info?.activeRecording ?? false;\n }\n\n /**\n * The time in seconds after which a room will be closed after the last\n * participant has disconnected.\n */\n get departureTimeout(): number {\n return this.info?.departureTimeout ?? 0;\n }\n\n /**\n * The time in seconds after which an empty room will be automatically closed.\n */\n get emptyTimeout(): number {\n return this.info?.emptyTimeout ?? 0;\n }\n\n /**\n * Connects to a LiveKit room using the provided URL and access token.\n * @param url The WebSocket URL of the LiveKit server\n * @param token A valid LiveKit access token for authentication\n * @param opts Optional room configuration options\n * @throws ConnectError if connection fails\n */\n async connect(url: string, token: string, opts?: RoomOptions) {\n const options = { ...defaultRoomOptions, ...opts };\n const e2eeOptions = { ...defaultE2EEOptions, ...options.e2ee };\n\n const req = new ConnectRequest({\n url: url,\n token: token,\n options,\n });\n\n const res = FfiClient.instance.request<ConnectResponse>({\n message: {\n case: 'connect',\n value: req,\n },\n });\n\n const cb = await FfiClient.instance.waitFor<ConnectCallback>((ev: FfiEvent) => {\n return ev.message.case == 'connect' && ev.message.value.asyncId == res.asyncId;\n });\n\n log.debug('Connect callback received');\n\n switch (cb.message.case) {\n case 'result':\n this.ffiHandle = new FfiHandle(cb.message.value.room!.handle!.id!);\n this.e2eeManager = options.e2ee && new E2EEManager(this.ffiHandle.handle, e2eeOptions);\n\n this.info = cb.message.value.room!.info;\n this.connectionState = ConnectionState.CONN_CONNECTED;\n this.localParticipant = new LocalParticipant(cb.message.value.localParticipant!);\n\n for (const pt of cb.message.value.participants) {\n const rp = this.createRemoteParticipant(pt.participant!);\n\n for (const pub of pt.publications) {\n const publication = new RemoteTrackPublication(pub);\n rp.trackPublications.set(publication.sid!, publication);\n }\n }\n\n FfiClient.instance.on(FfiClientEvent.FfiEvent, this.onFfiEvent);\n break;\n case 'error':\n default:\n throw new ConnectError(cb.message.value || '');\n }\n }\n\n /**\n * Disconnects from the room and cleans up all resources.\n * This will stop all tracks and close the connection.\n */\n async disconnect() {\n if (!this.isConnected) {\n return;\n }\n\n FfiClient.instance.request<DisconnectResponse>({\n message: {\n case: 'disconnect',\n value: {\n roomHandle: this.ffiHandle?.handle,\n },\n },\n });\n\n FfiClient.instance.removeListener(FfiClientEvent.FfiEvent, this.onFfiEvent);\n this.removeAllListeners();\n }\n\n /**\n * Registers a handler for incoming text data streams on a specific topic.\n * Text streams are used for receiving structured text data from other participants.\n * @param topic The topic to listen for text streams on\n * @param callback Function to handle incoming text stream data\n * @throws Error if a handler for this topic is already registered\n */\n registerTextStreamHandler(topic: string, callback: TextStreamHandler) {\n if (this.textStreamHandlers.has(topic)) {\n throw new Error(`A text stream handler for topic \"${topic}\" has already been set.`);\n }\n this.textStreamHandlers.set(topic, callback);\n }\n\n unregisterTextStreamHandler(topic: string) {\n this.textStreamHandlers.delete(topic);\n }\n\n /**\n * Registers a handler for incoming byte data streams on a specific topic.\n * Byte streams are used for receiving binary data like files from other participants.\n * @param topic The topic to listen for byte streams on\n * @param callback Function to handle incoming byte stream data\n * @throws Error if a handler for this topic is already registered\n */\n registerByteStreamHandler(topic: string, callback: ByteStreamHandler) {\n if (this.byteStreamHandlers.has(topic)) {\n throw new Error(`A byte stream handler for topic \"${topic}\" has already been set.`);\n }\n this.byteStreamHandlers.set(topic, callback);\n }\n\n unregisterByteStreamHandler(topic: string) {\n this.byteStreamHandlers.delete(topic);\n }\n\n private onFfiEvent = (ffiEvent: FfiEvent) => {\n if (!this.localParticipant || !this.ffiHandle || !this.info) {\n throw TypeError('cannot handle ffi events before connectCallback');\n }\n\n if (ffiEvent.message.case == 'rpcMethodInvocation') {\n if (\n ffiEvent.message.value.localParticipantHandle == this.localParticipant.ffi_handle.handle\n ) {\n this.localParticipant.handleRpcMethodInvocation(\n ffiEvent.message.value.invocationId!,\n ffiEvent.message.value.method!,\n ffiEvent.message.value.requestId!,\n ffiEvent.message.value.callerIdentity!,\n ffiEvent.message.value.payload!,\n ffiEvent.message.value.responseTimeoutMs!,\n );\n }\n return;\n } else if (\n ffiEvent.message.case != 'roomEvent' ||\n ffiEvent.message.value.roomHandle != this.ffiHandle.handle\n ) {\n return;\n }\n\n const ev = ffiEvent.message.value.message;\n if (ev.case == 'participantConnected') {\n const participant = this.createRemoteParticipant(ev.value.info!);\n this.remoteParticipants.set(participant.identity!, participant);\n this.emit(RoomEvent.ParticipantConnected, participant);\n } else if (ev.case == 'participantDisconnected') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n this.remoteParticipants.delete(participant!.identity);\n participant!.info.disconnectReason = ev.value.disconnectReason;\n this.emit(RoomEvent.ParticipantDisconnected, participant!);\n } else if (ev.case == 'localTrackPublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n this.emit(RoomEvent.LocalTrackPublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackUnpublished') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.publicationSid!);\n this.localParticipant!.trackPublications.delete(ev.value.publicationSid!);\n this.emit(RoomEvent.LocalTrackUnpublished, publication!, this.localParticipant!);\n } else if (ev.case == 'localTrackSubscribed') {\n const publication = this.localParticipant!.trackPublications.get(ev.value.trackSid!);\n publication!.resolveFirstSubscription();\n this.emit(RoomEvent.LocalTrackSubscribed, publication!.track!);\n } else if (ev.case == 'trackPublished') {\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const publication = new RemoteTrackPublication(ev.value.publication!);\n participant!.trackPublications.set(publication.sid!, publication);\n this.emit(RoomEvent.TrackPublished, publication, participant!);\n } else if (ev.case == 'trackUnpublished') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n const publication = participant.trackPublications.get(ev.value.publicationSid!);\n participant.trackPublications.delete(ev.value.publicationSid!);\n if (publication) {\n this.emit(RoomEvent.TrackUnpublished, publication, participant);\n }\n } else if (ev.case == 'trackSubscribed') {\n const ownedTrack = ev.value.track!;\n const trackInfo = ownedTrack.info!;\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n trackInfo.sid!,\n );\n publication.subscribed = true;\n if (trackInfo.kind == TrackKind.KIND_VIDEO) {\n publication.track = new RemoteVideoTrack(ownedTrack);\n } else if (trackInfo.kind == TrackKind.KIND_AUDIO) {\n publication.track = new RemoteAudioTrack(ownedTrack);\n }\n\n this.emit(RoomEvent.TrackSubscribed, publication.track!, publication, participant);\n } else if (ev.case == 'trackUnsubscribed') {\n const { participant, publication } = this.requirePublicationOfRemoteParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n const track = publication.track!;\n publication.track = undefined;\n publication.subscribed = false;\n this.emit(RoomEvent.TrackUnsubscribed, track, publication, participant);\n } else if (ev.case == 'trackSubscriptionFailed') {\n const participant = this.requireRemoteParticipant(ev.value.participantIdentity!);\n this.emit(RoomEvent.TrackSubscriptionFailed, ev.value.trackSid!, participant, ev.value.error);\n } else if (ev.case == 'trackMuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = true;\n if (publication.track) {\n publication.track.info!.muted = true;\n }\n this.emit(RoomEvent.TrackMuted, publication, participant);\n } else if (ev.case == 'trackUnmuted') {\n const { participant, publication } = this.requirePublicationOfParticipant(\n ev.value.participantIdentity!,\n ev.value.trackSid!,\n );\n publication.info!.muted = false;\n if (publication.track) {\n publication.track.info!.muted = false;\n }\n this.emit(RoomEvent.TrackUnmuted, publication, participant);\n } else if (ev.case == 'activeSpeakersChanged') {\n const activeSpeakers = ev.value.participantIdentities.map((identity) =>\n this.requireParticipantByIdentity(identity),\n );\n this.emit(RoomEvent.ActiveSpeakersChanged, activeSpeakers);\n } else if (ev.case == 'roomMetadataChanged') {\n this.info!.metadata = ev.value.metadata;\n this.emit(RoomEvent.RoomMetadataChanged, this.info!.metadata!);\n } else if (ev.case == 'participantMetadataChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.metadata = ev.value.metadata;\n this.emit(RoomEvent.ParticipantMetadataChanged, participant.metadata, participant);\n } else if (ev.case == 'participantNameChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.name = ev.value.name;\n this.emit(RoomEvent.ParticipantNameChanged, participant.name!, participant);\n } else if (ev.case == 'participantAttributesChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n participant.info.attributes = ev.value.attributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n if (Object.keys(ev.value.changedAttributes).length > 0) {\n const changedAttributes = ev.value.changedAttributes.reduce(\n (acc, value) => {\n acc[value.key!] = value.value!;\n return acc;\n },\n {} as Record<string, string>,\n );\n this.emit(RoomEvent.ParticipantAttributesChanged, changedAttributes, participant);\n }\n } else if (ev.case == 'connectionQualityChanged') {\n const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);\n this.emit(RoomEvent.ConnectionQualityChanged, ev.value.quality!, participant);\n } else if (ev.case == 'chatMessage') {\n const participant = this.retrieveParticipantByIdentity(ev.value.participantIdentity!);\n const { id, message: messageText, timestamp, editTimestamp, generated } = ev.value.message!;\n const message: ChatMessage = {\n id: id!,\n message: messageText!,\n timestamp: Number(timestamp),\n editTimestamp: Number(editTimestamp),\n generated,\n };\n this.emit(RoomEvent.ChatMessage, message, participant);\n } else if (ev.case == 'dataPacketReceived') {\n // Can be undefined if the data is sent from a Server SDK\n const participant = this.remoteParticipants.get(ev.value.participantIdentity!);\n const dataPacket = ev.value.value;\n switch (dataPacket.case) {\n case 'user':\n const buffer = FfiClient.instance.copyBuffer(\n dataPacket.value.data!.data!.dataPtr!,\n Number(dataPacket.value.data!.data!.dataLen),\n );\n new FfiHandle(dataPacket.value.data!.handle!.id!).dispose();\n this.emit(\n RoomEvent.DataReceived,\n buffer,\n participant,\n ev.value.kind,\n dataPacket.value.topic,\n );\n break;\n case 'sipDtmf':\n const { code, digit } = dataPacket.value;\n this.emit(RoomEvent.DtmfReceived, code!, digit!, participant!);\n break;\n default:\n break;\n }\n } else if (ev.case == 'e2eeStateChanged') {\n if (ev.value.state == EncryptionState.INTERNAL_ERROR) {\n // throw generic error until Rust SDK is updated to supply the error alongside INTERNAL_ERROR\n this.emit(RoomEvent.EncryptionError, new Error('internal server error'));\n }\n } else if (ev.case == 'connectionStateChanged') {\n this.connectionState = ev.value.state!;\n this.emit(RoomEvent.ConnectionStateChanged, this.connectionState);\n /*} else if (ev.case == 'connected') {\n this.emit(RoomEvent.Connected);*/\n } else if (ev.case == 'disconnected') {\n this.emit(RoomEvent.Disconnected, ev.value.reason!);\n } else if (ev.case == 'reconnecting') {\n this.emit(RoomEvent.Reconnecting);\n } else if (ev.case == 'reconnected') {\n this.emit(RoomEvent.Reconnected);\n } else if (ev.case == 'roomSidChanged') {\n this.emit(RoomEvent.RoomSidChanged, ev.value.sid!);\n } else if (ev.case === 'streamHeaderReceived' && ev.value.header) {\n this.handleStreamHeader(ev.value.header, ev.value.participantIdentity!);\n } else if (ev.case === 'streamChunkReceived' && ev.value.chunk) {\n this.handleStreamChunk(ev.value.chunk);\n } else if (ev.case === 'streamTrailerReceived' && ev.value.trailer) {\n this.handleStreamTrailer(ev.value.trailer);\n } else if (ev.case === 'roomUpdated') {\n this.info = ev.value;\n this.emit(RoomEvent.RoomUpdated);\n } else if (ev.case === 'moved') {\n this.info = ev.value;\n this.emit(RoomEvent.Moved);\n } else if (ev.case === 'participantsUpdated') {\n for (const info of ev.value.participants) {\n const participant = this.retrieveParticipantByIdentity(info.identity!);\n if (participant) {\n participant.info = info;\n }\n }\n }\n };\n\n private retrieveParticipantByIdentity(identity: string): Participant | undefined {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else {\n return this.remoteParticipants.get(identity);\n }\n }\n\n private requireParticipantByIdentity(identity: string): Participant {\n if (this.localParticipant?.identity === identity) {\n return this.localParticipant;\n } else if (this.remoteParticipants.has(identity)) {\n return this.remoteParticipants.get(identity)!;\n } else {\n throw new TypeError(`participant ${identity} not found`);\n }\n }\n\n private requireRemoteParticipant(identity: string) {\n const participant = this.remoteParticipants.get(identity);\n if (!participant) {\n throw new TypeError(`participant ${identity} not found`);\n }\n return participant;\n }\n\n private requirePublicationOfParticipant(identity: string, trackSid: string) {\n const participant = this.requireParticipantByIdentity(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private requirePublicationOfRemoteParticipant(identity: string, trackSid: string) {\n const participant = this.requireRemoteParticipant(identity);\n const publication = participant.trackPublications.get(trackSid);\n if (!publication) {\n throw new TypeError(`publication ${trackSid} not found`);\n }\n return { participant, publication };\n }\n\n private createRemoteParticipant(ownedInfo: OwnedParticipant) {\n if (this.remoteParticipants.has(ownedInfo.info!.identity!)) {\n throw new Error('Participant already exists');\n }\n\n const participant = new RemoteParticipant(ownedInfo);\n this.remoteParticipants.set(ownedInfo.info!.identity!, participant);\n return participant;\n }\n\n private handleStreamHeader(streamHeader: DataStream_Header, participantIdentity: string) {\n if (streamHeader.contentHeader.case === 'byteHeader') {\n const streamHandlerCallback = this.byteStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming byte stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream({\n start: (controller) => {\n streamController = controller;\n this.byteStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: ByteStreamInfo = {\n streamId: streamHeader.streamId!,\n name: streamHeader.contentHeader.value.name ?? 'unknown',\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: bigIntToNumber(streamHeader.timestamp!),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new ByteStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n } else if (streamHeader.contentHeader.case === 'textHeader') {\n const streamHandlerCallback = this.textStreamHandlers.get(streamHeader.topic ?? '');\n\n if (!streamHandlerCallback) {\n log.debug('ignoring incoming text stream due to no handler for topic', streamHeader.topic);\n return;\n }\n let streamController: ReadableStreamDefaultController<DataStream_Chunk>;\n const stream = new ReadableStream<DataStream_Chunk>({\n start: (controller) => {\n streamController = controller;\n this.textStreamControllers.set(streamHeader.streamId!, {\n header: streamHeader,\n controller: streamController,\n startTime: Date.now(),\n });\n },\n });\n const info: TextStreamInfo = {\n streamId: streamHeader.streamId!,\n mimeType: streamHeader.mimeType!,\n totalSize: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,\n topic: streamHeader.topic!,\n timestamp: Number(streamHeader.timestamp),\n attributes: streamHeader.attributes,\n };\n streamHandlerCallback(\n new TextStreamReader(info, stream, bigIntToNumber(streamHeader.totalLength)),\n { identity: participantIdentity },\n );\n }\n }\n\n private handleStreamChunk(chunk: DataStream_Chunk) {\n const fileBuffer = this.byteStreamControllers.get(chunk.streamId!);\n if (fileBuffer) {\n if (chunk.content!.length > 0) {\n fileBuffer.controller.enqueue(chunk);\n }\n }\n const textBuffer = this.textStreamControllers.get(chunk.streamId!);\n if (textBuffer) {\n if (chunk.content!.length > 0) {\n textBuffer.controller.enqueue(chunk);\n }\n }\n }\n\n private handleStreamTrailer(trailer: DataStream_Trailer) {\n const streamId = trailer.streamId!;\n const fileBuffer = this.byteStreamControllers.get(streamId);\n if (fileBuffer) {\n fileBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n const textBuffer = this.textStreamControllers.get(streamId);\n if (textBuffer) {\n textBuffer.controller.close();\n this.byteStreamControllers.delete(streamId);\n }\n }\n}\n\nexport class ConnectError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type RoomCallbacks = {\n participantConnected: (participant: RemoteParticipant) => void;\n participantDisconnected: (participant: RemoteParticipant) => void;\n localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;\n localTrackUnpublished: (\n publication: LocalTrackPublication,\n participant: LocalParticipant,\n ) => void;\n localTrackSubscribed: (track: LocalTrack) => void;\n trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackSubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackUnsubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackSubscriptionFailed: (\n trackSid: string,\n participant: RemoteParticipant,\n reason?: string,\n ) => void;\n trackMuted: (publication: TrackPublication, participant: Participant) => void;\n trackUnmuted: (publication: TrackPublication, participant: Participant) => void;\n activeSpeakersChanged: (speakers: Participant[]) => void;\n roomMetadataChanged: (metadata: string) => void;\n roomInfoUpdated: (info: RoomInfo) => void;\n participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;\n participantNameChanged: (name: string, participant: Participant) => void;\n participantAttributesChanged: (\n changedAttributes: Record<string, string>,\n participant: Participant,\n ) => void;\n connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;\n dataReceived: (\n payload: Uint8Array,\n participant?: RemoteParticipant,\n kind?: DataPacketKind,\n topic?: string,\n ) => void;\n chatMessage: (message: ChatMessage, participant?: Participant) => void;\n dtmfReceived: (code: number, digit: string, participant: RemoteParticipant) => void;\n encryptionError: (error: Error) => void;\n connectionStateChanged: (state: ConnectionState) => void;\n connected: () => void;\n disconnected: (reason: DisconnectReason) => void;\n reconnecting: () => void;\n reconnected: () => void;\n roomSidChanged: (sid: string) => void;\n roomUpdated: () => void;\n moved: () => void;\n};\n\nexport enum RoomEvent {\n ParticipantConnected = 'participantConnected',\n ParticipantDisconnected = 'participantDisconnected',\n LocalTrackPublished = 'localTrackPublished',\n LocalTrackUnpublished = 'localTrackUnpublished',\n LocalTrackSubscribed = 'localTrackSubscribed',\n TrackPublished = 'trackPublished',\n TrackUnpublished = 'trackUnpublished',\n TrackSubscribed = 'trackSubscribed',\n TrackUnsubscribed = 'trackUnsubscribed',\n TrackSubscriptionFailed = 'trackSubscriptionFailed',\n TrackMuted = 'trackMuted',\n TrackUnmuted = 'trackUnmuted',\n ActiveSpeakersChanged = 'activeSpeakersChanged',\n RoomMetadataChanged = 'roomMetadataChanged',\n RoomSidChanged = 'roomSidChanged',\n ParticipantMetadataChanged = 'participantMetadataChanged',\n ParticipantNameChanged = 'participantNameChanged',\n ParticipantAttributesChanged = 'participantAttributesChanged',\n ConnectionQualityChanged = 'connectionQualityChanged',\n DataReceived = 'dataReceived',\n ChatMessage = 'chatMessage',\n DtmfReceived = 'dtmfReceived',\n EncryptionError = 'encryptionError',\n ConnectionStateChanged = 'connectionStateChanged',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Reconnecting = 'reconnecting',\n Reconnected = 'reconnected',\n RoomUpdated = 'roomUpdated',\n Moved = 'moved',\n}\n"],"mappings":"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","names":["FfiRoomOptions","EventEmitter","RoomEvent"]}