@blockcast/mmt-container 0.1.0 → 0.3.0-main.d9354616fdf2

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 (799) hide show
  1. package/README.md +524 -0
  2. package/dist/.build-stamp +0 -0
  3. package/dist/__tests__/test-utils.d.ts +71 -0
  4. package/dist/__tests__/test-utils.d.ts.map +1 -0
  5. package/dist/align.d.ts +152 -0
  6. package/dist/align.d.ts.map +1 -0
  7. package/dist/align.js +88 -0
  8. package/dist/align.js.map +7 -0
  9. package/dist/audio-init-parser.d.ts +66 -0
  10. package/dist/audio-init-parser.d.ts.map +1 -0
  11. package/dist/audio-init-parser.js +118 -0
  12. package/dist/audio-init-parser.js.map +7 -0
  13. package/dist/audio-ring-buffer.d.ts +50 -0
  14. package/dist/audio-ring-buffer.d.ts.map +1 -0
  15. package/dist/audio-ring-buffer.js +80 -0
  16. package/dist/audio-ring-buffer.js.map +7 -0
  17. package/dist/authored-timing.d.ts +32 -0
  18. package/dist/authored-timing.d.ts.map +1 -0
  19. package/dist/authored-timing.js +32 -0
  20. package/dist/authored-timing.js.map +7 -0
  21. package/dist/block-policy.d.ts +314 -0
  22. package/dist/block-policy.d.ts.map +1 -0
  23. package/dist/block-policy.js +466 -0
  24. package/dist/block-policy.js.map +7 -0
  25. package/dist/browser-runtime.js +26549 -0
  26. package/dist/browser-runtime.js.map +7 -0
  27. package/dist/carp-catalog.d.ts +429 -0
  28. package/dist/carp-catalog.d.ts.map +1 -0
  29. package/dist/carp-catalog.js +985 -0
  30. package/dist/carp-catalog.js.map +7 -0
  31. package/dist/catalog-fec-params.d.ts +275 -0
  32. package/dist/catalog-fec-params.d.ts.map +1 -0
  33. package/dist/catalog-fec-params.js +702 -0
  34. package/dist/catalog-fec-params.js.map +7 -0
  35. package/dist/catalog-network-source.d.ts +42 -0
  36. package/dist/catalog-network-source.d.ts.map +1 -0
  37. package/dist/catalog-network-source.js +47 -0
  38. package/dist/catalog-network-source.js.map +7 -0
  39. package/dist/catalog-validator.d.ts +18 -0
  40. package/dist/catalog-validator.d.ts.map +1 -0
  41. package/dist/catalog-validator.js +7747 -0
  42. package/dist/catalog-validator.js.map +7 -0
  43. package/dist/cmaf-block-assembler.d.ts +285 -0
  44. package/dist/cmaf-block-assembler.d.ts.map +1 -0
  45. package/dist/cmaf-block-assembler.js +1966 -0
  46. package/dist/cmaf-block-assembler.js.map +7 -0
  47. package/dist/cmaf-group-batcher.d.ts +38 -0
  48. package/dist/cmaf-group-batcher.d.ts.map +1 -0
  49. package/dist/cmaf-group-batcher.js +176 -0
  50. package/dist/cmaf-group-batcher.js.map +7 -0
  51. package/dist/cmcd-producer.d.ts +104 -0
  52. package/dist/cmcd-producer.d.ts.map +1 -0
  53. package/dist/cmcd-producer.js +183 -0
  54. package/dist/cmcd-producer.js.map +7 -0
  55. package/dist/codec-utils.d.ts +384 -0
  56. package/dist/codec-utils.d.ts.map +1 -0
  57. package/dist/codec-utils.js +1546 -0
  58. package/dist/codec-utils.js.map +7 -0
  59. package/dist/conceal-timeline.d.ts +146 -0
  60. package/dist/conceal-timeline.d.ts.map +1 -0
  61. package/dist/conceal-timeline.js +137 -0
  62. package/dist/conceal-timeline.js.map +7 -0
  63. package/dist/delivery-gap.d.ts +75 -0
  64. package/dist/delivery-gap.d.ts.map +1 -0
  65. package/dist/delivery-gap.js +88 -0
  66. package/dist/delivery-gap.js.map +7 -0
  67. package/dist/duplicate-ledger.d.ts +197 -0
  68. package/dist/duplicate-ledger.d.ts.map +1 -0
  69. package/dist/duplicate-ledger.js +226 -0
  70. package/dist/duplicate-ledger.js.map +7 -0
  71. package/dist/fec-codec.d.ts +32 -0
  72. package/dist/fec-codec.d.ts.map +1 -0
  73. package/dist/fec-codec.js +47 -0
  74. package/dist/fec-codec.js.map +7 -0
  75. package/dist/fec-manager.d.ts +583 -0
  76. package/dist/fec-manager.d.ts.map +1 -0
  77. package/dist/fec-manager.js +3899 -0
  78. package/dist/fec-manager.js.map +7 -0
  79. package/dist/fec-starvation-detector.d.ts +59 -0
  80. package/dist/fec-starvation-detector.d.ts.map +1 -0
  81. package/dist/fec-starvation-detector.js +60 -0
  82. package/dist/fec-starvation-detector.js.map +7 -0
  83. package/dist/fec-state.d.ts +131 -0
  84. package/dist/fec-state.d.ts.map +1 -0
  85. package/dist/fec-state.js +87 -0
  86. package/dist/fec-state.js.map +7 -0
  87. package/dist/fec-worker-setup.d.ts +94 -0
  88. package/dist/fec-worker-setup.d.ts.map +1 -0
  89. package/dist/fec-worker-setup.js +673 -0
  90. package/dist/fec-worker-setup.js.map +7 -0
  91. package/dist/fmp4-completion.d.ts +30 -0
  92. package/dist/fmp4-completion.d.ts.map +1 -0
  93. package/dist/fmp4-completion.js +21 -0
  94. package/dist/fmp4-completion.js.map +7 -0
  95. package/dist/fmp4-reader.d.ts +37 -0
  96. package/dist/fmp4-reader.d.ts.map +1 -0
  97. package/dist/fmp4-reader.js +100 -0
  98. package/dist/fmp4-reader.js.map +7 -0
  99. package/dist/index.d.ts +44 -3
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +460 -14
  102. package/dist/index.js.map +7 -1
  103. package/dist/iso-block-locator.d.ts +118 -0
  104. package/dist/iso-block-locator.d.ts.map +1 -0
  105. package/dist/iso-block-locator.js +289 -0
  106. package/dist/iso-block-locator.js.map +7 -0
  107. package/dist/iso-bmff-timing.d.ts +78 -0
  108. package/dist/iso-bmff-timing.d.ts.map +1 -0
  109. package/dist/iso-bmff-timing.js +593 -0
  110. package/dist/iso-bmff-timing.js.map +7 -0
  111. package/dist/loc.d.ts +70 -75
  112. package/dist/loc.d.ts.map +1 -1
  113. package/dist/loc.js +106 -192
  114. package/dist/loc.js.map +7 -1
  115. package/dist/manifest-auth-plan.d.ts +30 -0
  116. package/dist/manifest-auth-plan.d.ts.map +1 -0
  117. package/dist/manifest-auth-plan.js +1266 -0
  118. package/dist/manifest-auth-plan.js.map +7 -0
  119. package/dist/media-router.d.ts +262 -0
  120. package/dist/media-router.d.ts.map +1 -0
  121. package/dist/media-router.js +584 -0
  122. package/dist/media-router.js.map +7 -0
  123. package/dist/mfu-reassembler.d.ts +313 -9
  124. package/dist/mfu-reassembler.d.ts.map +1 -1
  125. package/dist/mfu-reassembler.js +3051 -285
  126. package/dist/mfu-reassembler.js.map +7 -1
  127. package/dist/mfu-reassembly-policy.d.ts +24 -0
  128. package/dist/mfu-reassembly-policy.d.ts.map +1 -0
  129. package/dist/mfu-reassembly-policy.js +99 -0
  130. package/dist/mfu-reassembly-policy.js.map +7 -0
  131. package/dist/mmtp-container-parser.d.ts +568 -0
  132. package/dist/mmtp-container-parser.d.ts.map +1 -0
  133. package/dist/mmtp-container-parser.js +6580 -0
  134. package/dist/mmtp-container-parser.js.map +7 -0
  135. package/dist/mmtp-container-parser.no-modules.js +9616 -0
  136. package/dist/mmtp-container-parser.no-modules.js.map +7 -0
  137. package/dist/mmtp-decode-pipeline.d.ts +138 -0
  138. package/dist/mmtp-decode-pipeline.d.ts.map +1 -0
  139. package/dist/mmtp-decode-pipeline.js +6814 -0
  140. package/dist/mmtp-decode-pipeline.js.map +7 -0
  141. package/dist/mmtp-router.d.ts +679 -0
  142. package/dist/mmtp-router.d.ts.map +1 -0
  143. package/dist/mmtp-router.js +11278 -0
  144. package/dist/mmtp-router.js.map +7 -0
  145. package/dist/mmtp-to-cmaf.d.ts +187 -0
  146. package/dist/mmtp-to-cmaf.d.ts.map +1 -0
  147. package/dist/mmtp-to-cmaf.js +716 -0
  148. package/dist/mmtp-to-cmaf.js.map +7 -0
  149. package/dist/multicast-auth-catalog.d.ts +115 -0
  150. package/dist/multicast-auth-catalog.d.ts.map +1 -0
  151. package/dist/multicast-auth-catalog.js +202 -0
  152. package/dist/multicast-auth-catalog.js.map +7 -0
  153. package/dist/multicast-input.d.ts +141 -0
  154. package/dist/multicast-input.d.ts.map +1 -0
  155. package/dist/multicast-input.js +390 -0
  156. package/dist/multicast-input.js.map +7 -0
  157. package/dist/multicast-manager.d.ts +669 -0
  158. package/dist/multicast-manager.d.ts.map +1 -0
  159. package/dist/multicast-manager.js +19101 -0
  160. package/dist/multicast-manager.js.map +7 -0
  161. package/dist/multicast-transport.d.ts +271 -0
  162. package/dist/multicast-transport.d.ts.map +1 -0
  163. package/dist/multicast-transport.js +2264 -0
  164. package/dist/multicast-transport.js.map +7 -0
  165. package/dist/multicast-unwrap.d.ts +57 -0
  166. package/dist/multicast-unwrap.d.ts.map +1 -0
  167. package/dist/multicast-unwrap.js +418 -0
  168. package/dist/multicast-unwrap.js.map +7 -0
  169. package/dist/no-modules.d.ts +10 -0
  170. package/dist/no-modules.d.ts.map +1 -0
  171. package/dist/no-modules.js +9491 -0
  172. package/dist/no-modules.js.map +7 -0
  173. package/dist/phase14-catalog-override.d.ts +126 -0
  174. package/dist/phase14-catalog-override.d.ts.map +1 -0
  175. package/dist/phase14-catalog-override.js +155 -0
  176. package/dist/phase14-catalog-override.js.map +7 -0
  177. package/dist/repair-fetch.d.ts +270 -0
  178. package/dist/repair-fetch.d.ts.map +1 -0
  179. package/dist/repair-fetch.js +381 -0
  180. package/dist/repair-fetch.js.map +7 -0
  181. package/dist/repair-layers.d.ts +158 -0
  182. package/dist/repair-layers.d.ts.map +1 -0
  183. package/dist/repair-layers.js +344 -0
  184. package/dist/repair-layers.js.map +7 -0
  185. package/dist/sample-combiner.d.ts +212 -0
  186. package/dist/sample-combiner.d.ts.map +1 -0
  187. package/dist/sample-combiner.js +595 -0
  188. package/dist/sample-combiner.js.map +7 -0
  189. package/dist/signaling.d.ts +29 -0
  190. package/dist/signaling.d.ts.map +1 -0
  191. package/dist/signaling.js +572 -0
  192. package/dist/signaling.js.map +7 -0
  193. package/dist/source-auth.d.ts +2 -0
  194. package/dist/source-auth.d.ts.map +1 -0
  195. package/dist/source-auth.js +1209 -0
  196. package/dist/source-auth.js.map +7 -0
  197. package/dist/switching-set-alignment.d.ts +61 -0
  198. package/dist/switching-set-alignment.d.ts.map +1 -0
  199. package/dist/switching-set-alignment.js +70 -0
  200. package/dist/switching-set-alignment.js.map +7 -0
  201. package/dist/timestamp-codec.d.ts +34 -0
  202. package/dist/timestamp-codec.d.ts.map +1 -0
  203. package/dist/timestamp-codec.js +473 -0
  204. package/dist/timestamp-codec.js.map +7 -0
  205. package/dist/track-pipeline-setup.d.ts +83 -0
  206. package/dist/track-pipeline-setup.d.ts.map +1 -0
  207. package/dist/track-pipeline-setup.js +291 -0
  208. package/dist/track-pipeline-setup.js.map +7 -0
  209. package/dist/track-pipeline.d.ts +121 -0
  210. package/dist/track-pipeline.d.ts.map +1 -0
  211. package/dist/track-pipeline.js +209 -0
  212. package/dist/track-pipeline.js.map +7 -0
  213. package/dist/track-session.d.ts +414 -0
  214. package/dist/track-session.d.ts.map +1 -0
  215. package/dist/track-session.js +754 -0
  216. package/dist/track-session.js.map +7 -0
  217. package/dist/transport-pool.d.ts +69 -0
  218. package/dist/transport-pool.d.ts.map +1 -0
  219. package/dist/transport-pool.js +74 -0
  220. package/dist/transport-pool.js.map +7 -0
  221. package/dist/wasm-mfu-reassembler.d.ts +97 -0
  222. package/dist/wasm-mfu-reassembler.d.ts.map +1 -0
  223. package/dist/wasm-mfu-reassembler.js +2133 -0
  224. package/dist/wasm-mfu-reassembler.js.map +7 -0
  225. package/dist/wasm-mmtp-container-parser.d.ts +10 -0
  226. package/dist/wasm-mmtp-container-parser.d.ts.map +1 -0
  227. package/dist/wasm-mmtp-container-parser.js +6834 -0
  228. package/dist/wasm-mmtp-container-parser.js.map +7 -0
  229. package/node_modules/@blockcast/fec-worker/README.md +223 -0
  230. package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
  231. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +38 -0
  232. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +1 -0
  233. package/node_modules/@blockcast/fec-worker/dist/block-order.js +78 -0
  234. package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +1 -0
  235. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +93 -0
  236. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +1 -0
  237. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +346 -0
  238. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +1 -0
  239. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +380 -0
  240. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +1 -0
  241. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +11 -0
  242. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +1 -0
  243. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +14 -0
  244. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +1 -0
  245. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +859 -0
  246. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +7 -0
  247. package/node_modules/@blockcast/fec-worker/dist/index.d.ts +10 -0
  248. package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +1 -0
  249. package/node_modules/@blockcast/fec-worker/dist/index.js +8 -0
  250. package/node_modules/@blockcast/fec-worker/dist/index.js.map +1 -0
  251. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +20 -0
  252. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +1 -0
  253. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +370 -0
  254. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +7 -0
  255. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +104 -0
  256. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +1 -0
  257. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +181 -0
  258. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +1 -0
  259. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +194 -0
  260. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +1 -0
  261. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +62 -0
  262. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +1 -0
  263. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +9 -0
  264. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +1 -0
  265. package/node_modules/@blockcast/fec-worker/dist/transfer.js +13 -0
  266. package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +1 -0
  267. package/node_modules/@blockcast/fec-worker/package.json +59 -0
  268. package/node_modules/@blockcast/fec-worker/src/block-order.ts +93 -0
  269. package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +392 -0
  270. package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +399 -0
  271. package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +1502 -0
  272. package/node_modules/@blockcast/fec-worker/src/index.ts +35 -0
  273. package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +589 -0
  274. package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +222 -0
  275. package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +209 -0
  276. package/node_modules/@blockcast/fec-worker/src/transfer.ts +12 -0
  277. package/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  278. package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  279. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  280. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  281. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  282. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  283. package/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  284. package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  285. package/node_modules/@blockcast/mmt-base/README.md +134 -0
  286. package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  287. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +55 -0
  288. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +1 -0
  289. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +128 -0
  290. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +1 -0
  291. package/node_modules/@blockcast/mmt-base/dist/index.d.ts +7 -0
  292. package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  293. package/node_modules/@blockcast/mmt-base/dist/index.js +7 -0
  294. package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  295. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +292 -0
  296. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  297. package/node_modules/@blockcast/mmt-base/dist/mmtp.js +612 -0
  298. package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  299. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
  300. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
  301. package/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
  302. package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
  303. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
  304. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
  305. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
  306. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
  307. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
  308. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
  309. package/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
  310. package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
  311. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
  312. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
  313. package/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
  314. package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
  315. package/node_modules/@blockcast/mmt-base/package.json +49 -0
  316. package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +145 -0
  317. package/node_modules/@blockcast/mmt-base/src/index.ts +6 -0
  318. package/node_modules/@blockcast/mmt-base/src/mmtp.ts +892 -0
  319. package/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
  320. package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
  321. package/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
  322. package/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
  323. package/node_modules/@blockcast/mmt-fec/README.md +271 -0
  324. package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
  325. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +82 -0
  326. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +1 -0
  327. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +296 -0
  328. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +1 -0
  329. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +106 -0
  330. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +1 -0
  331. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +288 -0
  332. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +1 -0
  333. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +46 -0
  334. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +1 -0
  335. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +96 -0
  336. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +1 -0
  337. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +33 -0
  338. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +1 -0
  339. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +57 -0
  340. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +1 -0
  341. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +205 -0
  342. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +1 -0
  343. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +240 -0
  344. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +1 -0
  345. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +28 -0
  346. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +1 -0
  347. package/node_modules/@blockcast/mmt-fec/dist/index.js +28 -0
  348. package/node_modules/@blockcast/mmt-fec/dist/index.js.map +1 -0
  349. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +20 -0
  350. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +1 -0
  351. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +28 -0
  352. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +1 -0
  353. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +258 -0
  354. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +1 -0
  355. package/node_modules/@blockcast/mmt-fec/dist/oti.js +382 -0
  356. package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +1 -0
  357. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +41 -0
  358. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +1 -0
  359. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +81 -0
  360. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +1 -0
  361. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts +82 -0
  362. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts.map +1 -0
  363. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js +170 -0
  364. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js.map +1 -0
  365. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  366. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  367. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  368. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  369. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  370. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  371. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  372. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  373. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +134 -0
  374. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  375. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +55 -0
  376. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +1 -0
  377. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +128 -0
  378. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +1 -0
  379. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +7 -0
  380. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  381. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +7 -0
  382. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  383. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +292 -0
  384. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  385. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +612 -0
  386. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  387. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
  388. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
  389. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
  390. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
  391. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
  392. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
  393. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
  394. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
  395. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
  396. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
  397. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
  398. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
  399. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
  400. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
  401. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
  402. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
  403. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +49 -0
  404. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +145 -0
  405. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +6 -0
  406. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +892 -0
  407. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
  408. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
  409. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
  410. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
  411. package/node_modules/@blockcast/mmt-fec/package.json +79 -0
  412. package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +371 -0
  413. package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +439 -0
  414. package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +127 -0
  415. package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +68 -0
  416. package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +310 -0
  417. package/node_modules/@blockcast/mmt-fec/src/index.ts +94 -0
  418. package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +34 -0
  419. package/node_modules/@blockcast/mmt-fec/src/oti.ts +463 -0
  420. package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +101 -0
  421. package/node_modules/@blockcast/mmt-fec/src/repair-group.ts +195 -0
  422. package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
  423. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +28 -0
  424. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +1 -0
  425. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +128 -0
  426. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +1 -0
  427. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +4 -0
  428. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +1 -0
  429. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +4 -0
  430. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +1 -0
  431. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +37 -0
  432. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +1 -0
  433. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +179 -0
  434. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +1 -0
  435. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +99 -0
  436. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +1 -0
  437. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +492 -0
  438. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +1 -0
  439. package/node_modules/@blockcast/mmt-manifest-verify/package.json +45 -0
  440. package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +171 -0
  441. package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +3 -0
  442. package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +230 -0
  443. package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +669 -0
  444. package/node_modules/@noble/hashes/LICENSE +21 -0
  445. package/node_modules/@noble/hashes/README.md +521 -0
  446. package/node_modules/@noble/hashes/_assert.d.ts +17 -0
  447. package/node_modules/@noble/hashes/_assert.d.ts.map +1 -0
  448. package/node_modules/@noble/hashes/_assert.js +18 -0
  449. package/node_modules/@noble/hashes/_assert.js.map +1 -0
  450. package/node_modules/@noble/hashes/_blake.d.ts +14 -0
  451. package/node_modules/@noble/hashes/_blake.d.ts.map +1 -0
  452. package/node_modules/@noble/hashes/_blake.js +50 -0
  453. package/node_modules/@noble/hashes/_blake.js.map +1 -0
  454. package/node_modules/@noble/hashes/_md.d.ts +51 -0
  455. package/node_modules/@noble/hashes/_md.d.ts.map +1 -0
  456. package/node_modules/@noble/hashes/_md.js +162 -0
  457. package/node_modules/@noble/hashes/_md.js.map +1 -0
  458. package/node_modules/@noble/hashes/_u64.d.ts +55 -0
  459. package/node_modules/@noble/hashes/_u64.d.ts.map +1 -0
  460. package/node_modules/@noble/hashes/_u64.js +90 -0
  461. package/node_modules/@noble/hashes/_u64.js.map +1 -0
  462. package/node_modules/@noble/hashes/argon2.d.ts +32 -0
  463. package/node_modules/@noble/hashes/argon2.d.ts.map +1 -0
  464. package/node_modules/@noble/hashes/argon2.js +401 -0
  465. package/node_modules/@noble/hashes/argon2.js.map +1 -0
  466. package/node_modules/@noble/hashes/blake1.d.ts +106 -0
  467. package/node_modules/@noble/hashes/blake1.d.ts.map +1 -0
  468. package/node_modules/@noble/hashes/blake1.js +459 -0
  469. package/node_modules/@noble/hashes/blake1.js.map +1 -0
  470. package/node_modules/@noble/hashes/blake2.d.ts +116 -0
  471. package/node_modules/@noble/hashes/blake2.d.ts.map +1 -0
  472. package/node_modules/@noble/hashes/blake2.js +420 -0
  473. package/node_modules/@noble/hashes/blake2.js.map +1 -0
  474. package/node_modules/@noble/hashes/blake2b.d.ts +11 -0
  475. package/node_modules/@noble/hashes/blake2b.d.ts.map +1 -0
  476. package/node_modules/@noble/hashes/blake2b.js +14 -0
  477. package/node_modules/@noble/hashes/blake2b.js.map +1 -0
  478. package/node_modules/@noble/hashes/blake2s.d.ts +20 -0
  479. package/node_modules/@noble/hashes/blake2s.d.ts.map +1 -0
  480. package/node_modules/@noble/hashes/blake2s.js +24 -0
  481. package/node_modules/@noble/hashes/blake2s.js.map +1 -0
  482. package/node_modules/@noble/hashes/blake3.d.ts +54 -0
  483. package/node_modules/@noble/hashes/blake3.d.ts.map +1 -0
  484. package/node_modules/@noble/hashes/blake3.js +255 -0
  485. package/node_modules/@noble/hashes/blake3.js.map +1 -0
  486. package/node_modules/@noble/hashes/crypto.d.ts +2 -0
  487. package/node_modules/@noble/hashes/crypto.d.ts.map +1 -0
  488. package/node_modules/@noble/hashes/crypto.js +5 -0
  489. package/node_modules/@noble/hashes/crypto.js.map +1 -0
  490. package/node_modules/@noble/hashes/cryptoNode.d.ts +2 -0
  491. package/node_modules/@noble/hashes/cryptoNode.d.ts.map +1 -0
  492. package/node_modules/@noble/hashes/cryptoNode.js +18 -0
  493. package/node_modules/@noble/hashes/cryptoNode.js.map +1 -0
  494. package/node_modules/@noble/hashes/eskdf.d.ts +47 -0
  495. package/node_modules/@noble/hashes/eskdf.d.ts.map +1 -0
  496. package/node_modules/@noble/hashes/eskdf.js +166 -0
  497. package/node_modules/@noble/hashes/eskdf.js.map +1 -0
  498. package/node_modules/@noble/hashes/esm/_assert.d.ts +17 -0
  499. package/node_modules/@noble/hashes/esm/_assert.d.ts.map +1 -0
  500. package/node_modules/@noble/hashes/esm/_assert.js +15 -0
  501. package/node_modules/@noble/hashes/esm/_assert.js.map +1 -0
  502. package/node_modules/@noble/hashes/esm/_blake.d.ts +14 -0
  503. package/node_modules/@noble/hashes/esm/_blake.d.ts.map +1 -0
  504. package/node_modules/@noble/hashes/esm/_blake.js +45 -0
  505. package/node_modules/@noble/hashes/esm/_blake.js.map +1 -0
  506. package/node_modules/@noble/hashes/esm/_md.d.ts +51 -0
  507. package/node_modules/@noble/hashes/esm/_md.d.ts.map +1 -0
  508. package/node_modules/@noble/hashes/esm/_md.js +155 -0
  509. package/node_modules/@noble/hashes/esm/_md.js.map +1 -0
  510. package/node_modules/@noble/hashes/esm/_u64.d.ts +55 -0
  511. package/node_modules/@noble/hashes/esm/_u64.d.ts.map +1 -0
  512. package/node_modules/@noble/hashes/esm/_u64.js +67 -0
  513. package/node_modules/@noble/hashes/esm/_u64.js.map +1 -0
  514. package/node_modules/@noble/hashes/esm/argon2.d.ts +32 -0
  515. package/node_modules/@noble/hashes/esm/argon2.d.ts.map +1 -0
  516. package/node_modules/@noble/hashes/esm/argon2.js +392 -0
  517. package/node_modules/@noble/hashes/esm/argon2.js.map +1 -0
  518. package/node_modules/@noble/hashes/esm/blake1.d.ts +106 -0
  519. package/node_modules/@noble/hashes/esm/blake1.d.ts.map +1 -0
  520. package/node_modules/@noble/hashes/esm/blake1.js +452 -0
  521. package/node_modules/@noble/hashes/esm/blake1.js.map +1 -0
  522. package/node_modules/@noble/hashes/esm/blake2.d.ts +116 -0
  523. package/node_modules/@noble/hashes/esm/blake2.d.ts.map +1 -0
  524. package/node_modules/@noble/hashes/esm/blake2.js +413 -0
  525. package/node_modules/@noble/hashes/esm/blake2.js.map +1 -0
  526. package/node_modules/@noble/hashes/esm/blake2b.d.ts +11 -0
  527. package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +1 -0
  528. package/node_modules/@noble/hashes/esm/blake2b.js +11 -0
  529. package/node_modules/@noble/hashes/esm/blake2b.js.map +1 -0
  530. package/node_modules/@noble/hashes/esm/blake2s.d.ts +20 -0
  531. package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +1 -0
  532. package/node_modules/@noble/hashes/esm/blake2s.js +21 -0
  533. package/node_modules/@noble/hashes/esm/blake2s.js.map +1 -0
  534. package/node_modules/@noble/hashes/esm/blake3.d.ts +54 -0
  535. package/node_modules/@noble/hashes/esm/blake3.d.ts.map +1 -0
  536. package/node_modules/@noble/hashes/esm/blake3.js +251 -0
  537. package/node_modules/@noble/hashes/esm/blake3.js.map +1 -0
  538. package/node_modules/@noble/hashes/esm/crypto.d.ts +2 -0
  539. package/node_modules/@noble/hashes/esm/crypto.d.ts.map +1 -0
  540. package/node_modules/@noble/hashes/esm/crypto.js +2 -0
  541. package/node_modules/@noble/hashes/esm/crypto.js.map +1 -0
  542. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +2 -0
  543. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +1 -0
  544. package/node_modules/@noble/hashes/esm/cryptoNode.js +15 -0
  545. package/node_modules/@noble/hashes/esm/cryptoNode.js.map +1 -0
  546. package/node_modules/@noble/hashes/esm/eskdf.d.ts +47 -0
  547. package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +1 -0
  548. package/node_modules/@noble/hashes/esm/eskdf.js +160 -0
  549. package/node_modules/@noble/hashes/esm/eskdf.js.map +1 -0
  550. package/node_modules/@noble/hashes/esm/hkdf.d.ts +36 -0
  551. package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +1 -0
  552. package/node_modules/@noble/hashes/esm/hkdf.js +82 -0
  553. package/node_modules/@noble/hashes/esm/hkdf.js.map +1 -0
  554. package/node_modules/@noble/hashes/esm/hmac.d.ts +35 -0
  555. package/node_modules/@noble/hashes/esm/hmac.d.ts.map +1 -0
  556. package/node_modules/@noble/hashes/esm/hmac.js +86 -0
  557. package/node_modules/@noble/hashes/esm/hmac.js.map +1 -0
  558. package/node_modules/@noble/hashes/esm/index.d.ts +2 -0
  559. package/node_modules/@noble/hashes/esm/index.d.ts.map +1 -0
  560. package/node_modules/@noble/hashes/esm/index.js +33 -0
  561. package/node_modules/@noble/hashes/esm/index.js.map +1 -0
  562. package/node_modules/@noble/hashes/esm/legacy.d.ts +71 -0
  563. package/node_modules/@noble/hashes/esm/legacy.d.ts.map +1 -0
  564. package/node_modules/@noble/hashes/esm/legacy.js +281 -0
  565. package/node_modules/@noble/hashes/esm/legacy.js.map +1 -0
  566. package/node_modules/@noble/hashes/esm/package.json +10 -0
  567. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +23 -0
  568. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +1 -0
  569. package/node_modules/@noble/hashes/esm/pbkdf2.js +97 -0
  570. package/node_modules/@noble/hashes/esm/pbkdf2.js.map +1 -0
  571. package/node_modules/@noble/hashes/esm/ripemd160.d.ts +13 -0
  572. package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +1 -0
  573. package/node_modules/@noble/hashes/esm/ripemd160.js +13 -0
  574. package/node_modules/@noble/hashes/esm/ripemd160.js.map +1 -0
  575. package/node_modules/@noble/hashes/esm/scrypt.d.ts +34 -0
  576. package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +1 -0
  577. package/node_modules/@noble/hashes/esm/scrypt.js +228 -0
  578. package/node_modules/@noble/hashes/esm/scrypt.js.map +1 -0
  579. package/node_modules/@noble/hashes/esm/sha1.d.ts +11 -0
  580. package/node_modules/@noble/hashes/esm/sha1.d.ts.map +1 -0
  581. package/node_modules/@noble/hashes/esm/sha1.js +11 -0
  582. package/node_modules/@noble/hashes/esm/sha1.js.map +1 -0
  583. package/node_modules/@noble/hashes/esm/sha2.d.ts +159 -0
  584. package/node_modules/@noble/hashes/esm/sha2.d.ts.map +1 -0
  585. package/node_modules/@noble/hashes/esm/sha2.js +375 -0
  586. package/node_modules/@noble/hashes/esm/sha2.js.map +1 -0
  587. package/node_modules/@noble/hashes/esm/sha256.d.ts +20 -0
  588. package/node_modules/@noble/hashes/esm/sha256.d.ts.map +1 -0
  589. package/node_modules/@noble/hashes/esm/sha256.js +20 -0
  590. package/node_modules/@noble/hashes/esm/sha256.js.map +1 -0
  591. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +142 -0
  592. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +1 -0
  593. package/node_modules/@noble/hashes/esm/sha3-addons.js +393 -0
  594. package/node_modules/@noble/hashes/esm/sha3-addons.js.map +1 -0
  595. package/node_modules/@noble/hashes/esm/sha3.d.ts +53 -0
  596. package/node_modules/@noble/hashes/esm/sha3.d.ts.map +1 -0
  597. package/node_modules/@noble/hashes/esm/sha3.js +234 -0
  598. package/node_modules/@noble/hashes/esm/sha3.js.map +1 -0
  599. package/node_modules/@noble/hashes/esm/sha512.d.ts +26 -0
  600. package/node_modules/@noble/hashes/esm/sha512.d.ts.map +1 -0
  601. package/node_modules/@noble/hashes/esm/sha512.js +26 -0
  602. package/node_modules/@noble/hashes/esm/sha512.js.map +1 -0
  603. package/node_modules/@noble/hashes/esm/utils.d.ts +161 -0
  604. package/node_modules/@noble/hashes/esm/utils.d.ts.map +1 -0
  605. package/node_modules/@noble/hashes/esm/utils.js +281 -0
  606. package/node_modules/@noble/hashes/esm/utils.js.map +1 -0
  607. package/node_modules/@noble/hashes/hkdf.d.ts +36 -0
  608. package/node_modules/@noble/hashes/hkdf.d.ts.map +1 -0
  609. package/node_modules/@noble/hashes/hkdf.js +88 -0
  610. package/node_modules/@noble/hashes/hkdf.js.map +1 -0
  611. package/node_modules/@noble/hashes/hmac.d.ts +35 -0
  612. package/node_modules/@noble/hashes/hmac.d.ts.map +1 -0
  613. package/node_modules/@noble/hashes/hmac.js +91 -0
  614. package/node_modules/@noble/hashes/hmac.js.map +1 -0
  615. package/node_modules/@noble/hashes/index.d.ts +1 -0
  616. package/node_modules/@noble/hashes/index.d.ts.map +1 -0
  617. package/node_modules/@noble/hashes/index.js +33 -0
  618. package/node_modules/@noble/hashes/index.js.map +1 -0
  619. package/node_modules/@noble/hashes/legacy.d.ts +71 -0
  620. package/node_modules/@noble/hashes/legacy.d.ts.map +1 -0
  621. package/node_modules/@noble/hashes/legacy.js +287 -0
  622. package/node_modules/@noble/hashes/legacy.js.map +1 -0
  623. package/node_modules/@noble/hashes/package.json +266 -0
  624. package/node_modules/@noble/hashes/pbkdf2.d.ts +23 -0
  625. package/node_modules/@noble/hashes/pbkdf2.d.ts.map +1 -0
  626. package/node_modules/@noble/hashes/pbkdf2.js +101 -0
  627. package/node_modules/@noble/hashes/pbkdf2.js.map +1 -0
  628. package/node_modules/@noble/hashes/ripemd160.d.ts +13 -0
  629. package/node_modules/@noble/hashes/ripemd160.d.ts.map +1 -0
  630. package/node_modules/@noble/hashes/ripemd160.js +16 -0
  631. package/node_modules/@noble/hashes/ripemd160.js.map +1 -0
  632. package/node_modules/@noble/hashes/scrypt.d.ts +34 -0
  633. package/node_modules/@noble/hashes/scrypt.d.ts.map +1 -0
  634. package/node_modules/@noble/hashes/scrypt.js +232 -0
  635. package/node_modules/@noble/hashes/scrypt.js.map +1 -0
  636. package/node_modules/@noble/hashes/sha1.d.ts +11 -0
  637. package/node_modules/@noble/hashes/sha1.d.ts.map +1 -0
  638. package/node_modules/@noble/hashes/sha1.js +14 -0
  639. package/node_modules/@noble/hashes/sha1.js.map +1 -0
  640. package/node_modules/@noble/hashes/sha2.d.ts +159 -0
  641. package/node_modules/@noble/hashes/sha2.d.ts.map +1 -0
  642. package/node_modules/@noble/hashes/sha2.js +384 -0
  643. package/node_modules/@noble/hashes/sha2.js.map +1 -0
  644. package/node_modules/@noble/hashes/sha256.d.ts +20 -0
  645. package/node_modules/@noble/hashes/sha256.d.ts.map +1 -0
  646. package/node_modules/@noble/hashes/sha256.js +23 -0
  647. package/node_modules/@noble/hashes/sha256.js.map +1 -0
  648. package/node_modules/@noble/hashes/sha3-addons.d.ts +142 -0
  649. package/node_modules/@noble/hashes/sha3-addons.d.ts.map +1 -0
  650. package/node_modules/@noble/hashes/sha3-addons.js +402 -0
  651. package/node_modules/@noble/hashes/sha3-addons.js.map +1 -0
  652. package/node_modules/@noble/hashes/sha3.d.ts +53 -0
  653. package/node_modules/@noble/hashes/sha3.d.ts.map +1 -0
  654. package/node_modules/@noble/hashes/sha3.js +239 -0
  655. package/node_modules/@noble/hashes/sha3.js.map +1 -0
  656. package/node_modules/@noble/hashes/sha512.d.ts +26 -0
  657. package/node_modules/@noble/hashes/sha512.d.ts.map +1 -0
  658. package/node_modules/@noble/hashes/sha512.js +29 -0
  659. package/node_modules/@noble/hashes/sha512.js.map +1 -0
  660. package/node_modules/@noble/hashes/src/_assert.ts +22 -0
  661. package/node_modules/@noble/hashes/src/_blake.ts +50 -0
  662. package/node_modules/@noble/hashes/src/_md.ts +176 -0
  663. package/node_modules/@noble/hashes/src/_u64.ts +91 -0
  664. package/node_modules/@noble/hashes/src/argon2.ts +497 -0
  665. package/node_modules/@noble/hashes/src/blake1.ts +534 -0
  666. package/node_modules/@noble/hashes/src/blake2.ts +486 -0
  667. package/node_modules/@noble/hashes/src/blake2b.ts +10 -0
  668. package/node_modules/@noble/hashes/src/blake2s.ts +20 -0
  669. package/node_modules/@noble/hashes/src/blake3.ts +272 -0
  670. package/node_modules/@noble/hashes/src/crypto.ts +9 -0
  671. package/node_modules/@noble/hashes/src/cryptoNode.ts +15 -0
  672. package/node_modules/@noble/hashes/src/eskdf.ts +187 -0
  673. package/node_modules/@noble/hashes/src/hkdf.ts +88 -0
  674. package/node_modules/@noble/hashes/src/hmac.ts +94 -0
  675. package/node_modules/@noble/hashes/src/index.ts +31 -0
  676. package/node_modules/@noble/hashes/src/legacy.ts +293 -0
  677. package/node_modules/@noble/hashes/src/pbkdf2.ts +122 -0
  678. package/node_modules/@noble/hashes/src/ripemd160.ts +12 -0
  679. package/node_modules/@noble/hashes/src/scrypt.ts +257 -0
  680. package/node_modules/@noble/hashes/src/sha1.ts +10 -0
  681. package/node_modules/@noble/hashes/src/sha2.ts +402 -0
  682. package/node_modules/@noble/hashes/src/sha256.ts +24 -0
  683. package/node_modules/@noble/hashes/src/sha3-addons.ts +499 -0
  684. package/node_modules/@noble/hashes/src/sha3.ts +258 -0
  685. package/node_modules/@noble/hashes/src/sha512.ts +34 -0
  686. package/node_modules/@noble/hashes/src/utils.ts +395 -0
  687. package/node_modules/@noble/hashes/utils.d.ts +161 -0
  688. package/node_modules/@noble/hashes/utils.d.ts.map +1 -0
  689. package/node_modules/@noble/hashes/utils.js +313 -0
  690. package/node_modules/@noble/hashes/utils.js.map +1 -0
  691. package/package.json +179 -8
  692. package/schemas/catalog.schema.json +357 -0
  693. package/src/align.ts +239 -0
  694. package/src/audio-init-parser.ts +189 -0
  695. package/src/audio-ring-buffer.ts +120 -0
  696. package/src/authored-timing.ts +63 -0
  697. package/src/block-policy.ts +903 -0
  698. package/src/carp-catalog.ts +1065 -0
  699. package/src/catalog-fec-params.ts +729 -0
  700. package/src/catalog-network-source.ts +74 -0
  701. package/src/catalog-validator.ts +34 -0
  702. package/src/cmaf-block-assembler.ts +1255 -0
  703. package/src/cmaf-group-batcher.ts +104 -0
  704. package/src/cmcd-producer.ts +329 -0
  705. package/src/codec-utils.ts +1984 -0
  706. package/src/conceal-timeline.ts +293 -0
  707. package/src/delivery-gap.ts +147 -0
  708. package/src/duplicate-ledger.ts +372 -0
  709. package/src/fec-codec.ts +61 -0
  710. package/src/fec-manager.ts +4298 -0
  711. package/src/fec-starvation-detector.ts +128 -0
  712. package/src/fec-state.ts +219 -0
  713. package/src/fec-worker-setup.ts +283 -0
  714. package/src/fmp4-completion.ts +47 -0
  715. package/src/fmp4-reader.ts +112 -0
  716. package/src/index.ts +590 -21
  717. package/src/iso-block-locator.ts +329 -0
  718. package/src/iso-bmff-timing.ts +813 -0
  719. package/src/loc.ts +128 -154
  720. package/src/manifest-auth-plan.ts +107 -0
  721. package/src/media-router.ts +841 -0
  722. package/src/mfu-reassembler.ts +3480 -155
  723. package/src/mfu-reassembly-policy.ts +134 -0
  724. package/src/mmtp-container-parser.ts +2380 -0
  725. package/src/mmtp-decode-pipeline.ts +406 -0
  726. package/src/mmtp-router.ts +4860 -0
  727. package/src/mmtp-to-cmaf.ts +977 -0
  728. package/src/multicast-auth-catalog.ts +340 -0
  729. package/src/multicast-input.ts +793 -0
  730. package/src/multicast-manager.ts +2783 -0
  731. package/src/multicast-transport.ts +1058 -0
  732. package/src/multicast-unwrap.ts +132 -0
  733. package/src/no-modules.ts +21 -0
  734. package/src/phase14-catalog-override.ts +336 -0
  735. package/src/repair-fetch.ts +772 -0
  736. package/src/repair-layers.ts +533 -0
  737. package/src/sample-combiner.ts +938 -0
  738. package/src/signaling.ts +78 -0
  739. package/src/source-auth.ts +1 -0
  740. package/src/switching-set-alignment.ts +109 -0
  741. package/src/timestamp-codec.ts +265 -0
  742. package/src/track-pipeline-setup.ts +205 -0
  743. package/src/track-pipeline.ts +332 -0
  744. package/src/track-session.ts +1010 -0
  745. package/src/transport-pool.ts +128 -0
  746. package/src/wasm-mfu-reassembler.ts +405 -0
  747. package/src/wasm-mmtp-container-parser.ts +23 -0
  748. package/test-vectors/align.json +199 -0
  749. package/test-vectors/catalog/README.md +106 -0
  750. package/test-vectors/catalog/negative/archive-origin-with-path.json +33 -0
  751. package/test-vectors/catalog/negative/archive-unknown-field.json +34 -0
  752. package/test-vectors/catalog/negative/fec-block-profile-missing.json +51 -0
  753. package/test-vectors/catalog/negative/fec-block-profile-unknown.json +52 -0
  754. package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +28 -0
  755. package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +33 -0
  756. package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +31 -0
  757. package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +32 -0
  758. package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +34 -0
  759. package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +24 -0
  760. package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +33 -0
  761. package/test-vectors/catalog/negative/legacy-selection-params.json +15 -0
  762. package/test-vectors/catalog/negative/media-track-repair-layer.json +16 -0
  763. package/test-vectors/catalog/negative/missing-mmtp-fields.json +12 -0
  764. package/test-vectors/catalog/negative/multicast-auth-padded-key.json +37 -0
  765. package/test-vectors/catalog/negative/multicast-auth-reused-track-format.json +53 -0
  766. package/test-vectors/catalog/negative/multicast-auth-trailing-pad-bits.json +37 -0
  767. package/test-vectors/catalog/negative/multicast-endpoint-missing-protocol-and-source.json +24 -0
  768. package/test-vectors/catalog/negative/multicast-network-source-empty.json +44 -0
  769. package/test-vectors/catalog/negative/multicast-packet-id-signaling.json +26 -0
  770. package/test-vectors/catalog/negative/network-source-object.json +25 -0
  771. package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +24 -0
  772. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +27 -0
  773. package/test-vectors/catalog/negative/repair-track-legacy-shape.json +19 -0
  774. package/test-vectors/catalog/negative/track-role-empty.json +16 -0
  775. package/test-vectors/catalog/negative/track-role-non-string.json +16 -0
  776. package/test-vectors/catalog/positive/archive-origin.json +34 -0
  777. package/test-vectors/catalog/positive/fec-iso-ssbg1.json +52 -0
  778. package/test-vectors/catalog/positive/fec-layered-repair.json +106 -0
  779. package/test-vectors/catalog/positive/fec-multicast.json +52 -0
  780. package/test-vectors/catalog/positive/flat-av.json +30 -0
  781. package/test-vectors/catalog/positive/multicast-auth-rotation.json +55 -0
  782. package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +43 -0
  783. package/test-vectors/catalog/positive/ticks-and-mixed-timescales.json +39 -0
  784. package/test-vectors/catalog/positive/track-role.json +49 -0
  785. package/test-vectors/catalog/releases/moqcast-native-v16-v1/catalog.json +65 -0
  786. package/test-vectors/catalog/releases/moqcast-native-v16-v1.archive.sha256 +1 -0
  787. package/test-vectors/catalog-multicast-auth-v1.json +26 -0
  788. package/test-vectors/catalog-validation.json +732 -0
  789. package/test-vectors/catalog-validator-public-api.mjs +25 -0
  790. package/test-vectors/generate-source-auth-fixture.mjs +114 -0
  791. package/test-vectors/hevc-x265-repeat-headers-v1.json +40 -0
  792. package/test-vectors/source-auth-v1.json +61 -0
  793. package/test-vectors/source-contiguity-v1.json +131 -0
  794. package/test-vectors/subsample-placement-v1.json +230 -0
  795. package/dist/mmtp.d.ts +0 -73
  796. package/dist/mmtp.d.ts.map +0 -1
  797. package/dist/mmtp.js +0 -210
  798. package/dist/mmtp.js.map +0 -1
  799. package/src/mmtp.ts +0 -277
@@ -0,0 +1,669 @@
1
+ /**
2
+ * Facade composing FECManager + MmtpRouter + MulticastTransport.
3
+ *
4
+ * Public methods delegate to the decomposed components. Applications that
5
+ * need individual layers can use them directly:
6
+ * - FECManager — codec-agnostic FEC decode
7
+ * - MmtpRouter — MMTP packet parsing + frame routing
8
+ * - MulticastTransport — SSM join/socket/watchdog
9
+ */
10
+ import { type FecBlockProfile } from "@blockcast/mmt-base";
11
+ import { FECManager, type FECManagerConfig, type WasmFecDecoder, type FecDecoderUnavailableReason, type FecFallbackDecoder, type MulticastSymbolDelivery, type RepairVia } from "./fec-manager.js";
12
+ import { type BlockClass, type ClassifierMode, type ClassifierReason, type FrameGapDecision, type ReclassificationEvidence, type RepairPriority, type TrackKind } from "./block-policy.js";
13
+ import type { RepairPriorityReason, RepairSkipReason, RepairSubscribeCallback } from "./repair-fetch.js";
14
+ import { MmtpRouter, type FrameCallback, type ManifestIdentityResolver, type MmtpIngressContext, type MmtpStreamIdentity, type StreamSwitchCommit, type TrackPacketCallback } from "./mmtp-router.js";
15
+ import { MulticastTransport, type MulticastFailbackReason, type MulticastJoinOutcome, type MulticastJoinStats } from "./multicast-transport.js";
16
+ import type { FecTrackStats, FecWorkerClient } from "@blockcast/fec-worker";
17
+ import type { MfuReassemblerBackend } from "./mfu-reassembler.js";
18
+ import type { MfuReassemblyPolicy } from "./mfu-reassembly-policy.js";
19
+ import type { ManifestObjectIdentity, ManifestVerifier } from "@blockcast/mmt-manifest-verify";
20
+ import type { BlockAssemblerConfig, CmafBlockSample } from "./cmaf-block-assembler.js";
21
+ export interface MulticastEndpointConfig {
22
+ sourceAddress: string;
23
+ groupAddress: string;
24
+ port: number;
25
+ /** Explicit gateway transport policy. Omitted means gateway-selected auto mode. */
26
+ mode?: 'auto' | 'native' | 'tunnel';
27
+ /** AMT relay hostname/IP from catalog endpoint. */
28
+ relayAddress?: string;
29
+ /** AMT relay port from catalog endpoint. */
30
+ relayPort?: number;
31
+ /** AMT relay hostname/IP from player/UI overrides. Wins over `relayAddress`. */
32
+ amtRelay?: string;
33
+ /** AMT relay port from player/UI overrides. Wins over `relayPort`. */
34
+ amtRelayPort?: number;
35
+ /** MMTP packet IDs to forward before data enters the page transport queue. */
36
+ packetIds?: number[];
37
+ /** Exact catalog tracks carried by this physical multicast endpoint. */
38
+ tracks?: MmtpIngressContext["tracks"];
39
+ /**
40
+ * The catalog `fec.blockProfile` (BLO-35597): `k-padded-v1` or
41
+ * `iso-ssbg1-v1`. Required for per-track FEC configuration; never defaulted.
42
+ */
43
+ fecBlockProfile?: FecBlockProfile;
44
+ fecK?: number;
45
+ /** Number of repair symbols per FEC block (P). Used to size recovery reorder latency. */
46
+ fecRepairSymbols?: number;
47
+ /** Symbol size in bytes (T). NOT repair count. */
48
+ fecSymbolSize?: number;
49
+ /** Catalog fec.reorderToleranceMs — signaled jitter/reorder allowance, ADDED
50
+ * to the derived delivery window. Never a multiplier on the span, so one
51
+ * network yields the same slack on a wide video span and a narrow audio one.
52
+ *
53
+ * Absence widens the window by zero rather than throwing, unlike the datagram
54
+ * MFU deadline in hang-mmt-fec. The distinction is which way absence fails:
55
+ * there the tolerance IS the deadline's slack term and guessing one invents
56
+ * a reorder budget, so it must fail loud; here the window is already fully
57
+ * derived from other catalog values and the tolerance only widens it, so
58
+ * adding nothing is the identity and errs toward earlier failback. Do not
59
+ * "harmonize" this into a throw, and do not turn the zero into a default. */
60
+ fecReorderToleranceMs?: number;
61
+ fecInterleaveDepthMs?: number;
62
+ /** Aggregate endpoint bandwidth in bits per second from the multicast catalog. */
63
+ bandwidth?: number;
64
+ fps?: number;
65
+ /** Track media kind (repair class `audio` vs video block classification). */
66
+ trackKind?: TrackKind;
67
+ /** Catalog codec string (video conceal mode, codec-aware RAP checks). */
68
+ codec?: string;
69
+ /** Catalog track timescale for `keyframeIntervalTicks`. */
70
+ timescale?: number;
71
+ /** Raw catalog `keyframeIntervalTicks` (never a resolved cadence). */
72
+ keyframeIntervalTicks?: number;
73
+ /** Raw catalog `keyframeIntervalMs` (never a resolved cadence). */
74
+ keyframeIntervalMs?: number;
75
+ /** Catalog-derived lower bound for packet-silence failback (for example, keyframe repair cadence). */
76
+ minimumFailbackWindowMs?: number;
77
+ }
78
+ export interface MulticastManagerOptions {
79
+ /**
80
+ * MFU reassembly timeout (ms). Threaded to the inner MmtpRouter (and its
81
+ * MmtpContainerParser). Caller derives from catalog `fec.interleaveDepthMs`,
82
+ * which is already in milliseconds — `moqenc_mmt.c` converts
83
+ * `depth_ms = fec_depth * (1000/fps)` before populating the catalog.
84
+ * Defaults to 1000ms (with parser warning) when omitted.
85
+ */
86
+ mfuTimeoutMs?: number;
87
+ reassemblyPolicy?: MfuReassemblyPolicy;
88
+ reassembler?: MfuReassemblerBackend;
89
+ maxBufferedMfus?: number;
90
+ manifestVerifier?: ManifestVerifier;
91
+ manifestVerifierOwnership?: "caller" | "router";
92
+ resolveManifestIdentity?: (packetId: number, sbn: number, esi: number, catalogTrackName?: string) => ManifestObjectIdentity | null;
93
+ resolveManifestIdentityForRoute?: ManifestIdentityResolver;
94
+ /**
95
+ * Also write every repair lifecycle event to the console as one
96
+ * `REPAIR_LIFECYCLE_LOG_PREFIX` JSON line. Off unless asked for: the lines
97
+ * are serialized on the page thread for every failed block and repair step
98
+ * (and again for an attached inspector), and addRepairLifecycleObserver is
99
+ * the lifecycle API. Enable only for interactive debugging (BLO-36599).
100
+ */
101
+ logRepairLifecycle?: boolean;
102
+ }
103
+ /**
104
+ * An in-place video rendition switch on the live join: MulticastManager
105
+ * .switchRendition. Every rendition of a ladder can share one SSM group and
106
+ * differ only by MMTP packet ID, so the switch remaps packet IDs at a RAP
107
+ * instead of leaving and re-joining the group.
108
+ */
109
+ export interface RenditionSwitchRequest {
110
+ /** The rendition playing now: an ingress track of the live join. */
111
+ readonly from: MmtpStreamIdentity;
112
+ /**
113
+ * The rendition replacing it, already registered as video with everything
114
+ * it plays through (setPacketIdType, setTrackCodec, configureTrackFec, its
115
+ * FEC decoder, frame and init callbacks, MSE assembler, repair owner).
116
+ */
117
+ readonly to: MmtpStreamIdentity;
118
+ /**
119
+ * The live join's complete ingress once the switch commits: every track
120
+ * that stays admitted (audio, repair legs) plus `to` and its repair legs.
121
+ * It must carry `to`, nothing on `from`'s packet ID (the commit retires
122
+ * it), and no live packet ID under another name.
123
+ */
124
+ readonly tracks: MmtpIngressContext["tracks"];
125
+ /**
126
+ * The allow-list once the switch commits, when it changes: an allow-list
127
+ * scoped to the active rendition. Omit it for a rendition-stable allow-list
128
+ * that already admits `to`; the live allow-list is then kept unchanged.
129
+ */
130
+ readonly packetIds?: readonly number[];
131
+ /**
132
+ * Called synchronously at the commit, inside the frame path, after `from`
133
+ * is retired and the admission narrowed, and before `to`'s newest init and
134
+ * its RAP are delivered: reconfigure the decoder here. Throwing fails the
135
+ * switch (`commit-failed`): `from` cannot be restored, so `to` is retired
136
+ * as well and none of it is delivered.
137
+ */
138
+ readonly onCommit: (commit: StreamSwitchCommit) => void;
139
+ /** Called once when the switch ends without a completed commit. */
140
+ readonly onCancel: (cancel: RenditionSwitchCancel) => void;
141
+ }
142
+ /**
143
+ * Why a staged rendition switch ended without a completed commit.
144
+ *
145
+ * - `cancelled`: RenditionSwitch.cancel().
146
+ * - `superseded`: join() or dispose() replaced the admission it was staged on.
147
+ * - `provider-refused`: the subscription refused to widen its packet filter to
148
+ * `to`, so `to` can never arrive.
149
+ * - `commit-failed`: `onCommit` threw. `from` was already retired, so `to` is
150
+ * retired as well and the subscription now delivers neither rendition;
151
+ * recover with join().
152
+ */
153
+ export type RenditionSwitchCancel = {
154
+ readonly reason: "cancelled";
155
+ } | {
156
+ readonly reason: "superseded";
157
+ } | {
158
+ readonly reason: "provider-refused";
159
+ readonly error: unknown;
160
+ } | {
161
+ readonly reason: "commit-failed";
162
+ readonly error: unknown;
163
+ };
164
+ export type RenditionSwitchState = "staged" | "committed" | "cancelled" | "failed";
165
+ /** A rendition switch MulticastManager.switchRendition staged. */
166
+ export interface RenditionSwitch {
167
+ readonly state: RenditionSwitchState;
168
+ /**
169
+ * Abandon the switch before it commits: the pre-switch admission is
170
+ * restored and `to` is retired (its router registrations and FEC state
171
+ * released). Returns false once the switch committed or ended.
172
+ */
173
+ cancel(): boolean;
174
+ }
175
+ export interface RepairStreamIdentity {
176
+ readonly packetId: number;
177
+ /** Non-empty catalog identity, or null when the producer has no track name. */
178
+ readonly catalogTrackName: string | null;
179
+ }
180
+ export interface RepairBlockIdentity extends RepairStreamIdentity {
181
+ readonly sbn: number;
182
+ }
183
+ interface RepairSymbolCounts {
184
+ readonly multicast: number;
185
+ readonly moq: number;
186
+ }
187
+ /**
188
+ * Typed repair lifecycle, version 2 (keyframe-protected FEC policy). One
189
+ * clean cut from version 1: there is no v1 emit and no alias.
190
+ *
191
+ * - `requested`: a block short of its source at the repair deadline; its
192
+ * class sets the QUIC repair priority (P0 keyframe/unknown, P1 audio,
193
+ * P2 delta).
194
+ * - `reclassified`: new evidence (or a disabled classifier) changed a block's
195
+ * class.
196
+ * - `recovered` / `failed`: every block that could not complete from its
197
+ * first-arrival source symbols resolves with exactly one of these.
198
+ * - `repair-preempted` / `repair-deferred`: the scheduler aborted a delta
199
+ * repair for keyframe work, or never ran it before its block resolved.
200
+ * - `repair-priority`: the catalog could not supply the SUBSCRIBER_PRIORITY a
201
+ * repair FETCH must carry (draft-ramadan-moq-fec §11.4.5), so the FETCH was
202
+ * sent without the parameter (`omitted`, keyframe/unknown blocks) or not
203
+ * sent at all (`declined`, delta/audio blocks).
204
+ * - `classifier`: a video stream's classifier mode and why.
205
+ * - `gap`: the stall/conceal decision attached to the first frame released
206
+ * after a lossy gap — the very object carried as `gapBefore`.
207
+ * - `decoder-unavailable`: a stream's Worker decoder left routing.
208
+ */
209
+ export type RepairLifecycleEvent = {
210
+ readonly version: 2;
211
+ readonly type: "requested";
212
+ readonly block: RepairBlockIdentity;
213
+ readonly blockClass: BlockClass;
214
+ readonly priority: RepairPriority;
215
+ } | {
216
+ readonly version: 2;
217
+ readonly type: "reclassified";
218
+ readonly block: RepairBlockIdentity;
219
+ readonly from: BlockClass;
220
+ readonly to: BlockClass;
221
+ readonly evidence: ReclassificationEvidence;
222
+ } | {
223
+ readonly version: 2;
224
+ readonly type: "recovered";
225
+ readonly block: RepairBlockIdentity;
226
+ readonly blockClass: BlockClass;
227
+ readonly via: RepairVia;
228
+ readonly symbols: RepairSymbolCounts;
229
+ } | {
230
+ readonly version: 2;
231
+ readonly type: "failed";
232
+ readonly block: RepairBlockIdentity;
233
+ readonly blockClass: BlockClass;
234
+ readonly symbols: RepairSymbolCounts;
235
+ } | {
236
+ readonly version: 2;
237
+ readonly type: "repair-preempted" | "repair-deferred";
238
+ readonly block: RepairBlockIdentity;
239
+ } | {
240
+ readonly version: 2;
241
+ /**
242
+ * The scheduler sent no FETCH for a requested block (BLO-35597): the
243
+ * measured reliable-path RTT could not come back before the block's
244
+ * presentation deadline, the path offered no RTT, or the player gave
245
+ * no presentation delay. `rttMs` is null when unmeasured; `budgetMs` is
246
+ * the time that was left to the deadline.
247
+ */
248
+ readonly type: "repair-skipped";
249
+ readonly block: RepairBlockIdentity;
250
+ readonly reason: RepairSkipReason;
251
+ readonly rttMs: number | null;
252
+ readonly budgetMs: number;
253
+ } | {
254
+ readonly version: 2;
255
+ readonly type: "repair-priority";
256
+ readonly block: RepairBlockIdentity;
257
+ readonly blockClass: BlockClass;
258
+ readonly action: "omitted" | "declined";
259
+ readonly reason: RepairPriorityReason;
260
+ } | {
261
+ readonly version: 2;
262
+ readonly type: "classifier";
263
+ readonly stream: RepairStreamIdentity;
264
+ readonly mode: ClassifierMode;
265
+ readonly reason: ClassifierReason | null;
266
+ } | FrameGapDecision | {
267
+ readonly version: 2;
268
+ /**
269
+ * The stream's Worker decoder left routing (FECManager.clearFecWorker,
270
+ * or a disposed client evicted on its next symbol). `fallbackDecoder`
271
+ * says what still decodes the stream: 'sync' when a synchronous WASM
272
+ * decoder registered for the same stream keeps serving it, 'none' when
273
+ * nothing does. Only 'none' means the stream's symbols reach no decoder
274
+ * until a host registers one again; consumers fail closed on that
275
+ * instead of reading the following silence as a clean stream.
276
+ */
277
+ readonly type: "decoder-unavailable";
278
+ readonly stream: RepairStreamIdentity;
279
+ readonly reason: FecDecoderUnavailableReason;
280
+ readonly fallbackDecoder: FecFallbackDecoder;
281
+ };
282
+ /**
283
+ * Keyframe-protected repair policy counters for one catalog track. Reset
284
+ * whenever the track's epoch changes (catalog geometry change or reset).
285
+ *
286
+ * "Protected" means the block was short of its source at the repair deadline
287
+ * with class `keyframe` or `unknown`. The `keyframe*` recovered/failed
288
+ * counters cover every P0 block (class `keyframe` or `unknown`).
289
+ */
290
+ export interface BlockPolicyStats {
291
+ readonly packetId: number;
292
+ readonly catalogTrackName: string | null;
293
+ readonly epoch: number;
294
+ classifierMode: ClassifierMode | null;
295
+ classifierReason: ClassifierReason | null;
296
+ keyframeBlocksProtected: number;
297
+ unknownBlocksProtected: number;
298
+ keyframeBlocksRecoveredInband: number;
299
+ keyframeBlocksRecoveredQuic: number;
300
+ keyframeBlocksFailed: number;
301
+ deltaBlocksShort: number;
302
+ deltaBlocksRecoveredInband: number;
303
+ deltaBlocksRecoveredQuic: number;
304
+ deltaRepairsPreempted: number;
305
+ deltaRepairsDeferred: number;
306
+ /** Repair requests sent no FETCH (see the `repair-skipped` event). */
307
+ repairsSkipped: number;
308
+ deltaBlocksFailed: number;
309
+ audioBlocksRecoveredInband: number;
310
+ audioBlocksRecoveredQuic: number;
311
+ audioBlocksFailed: number;
312
+ stalls: number;
313
+ concealedBlocks: number;
314
+ concealedGaps: number;
315
+ concealedFrames: number;
316
+ concealedAudioMs: number;
317
+ vanishedBlocks: number;
318
+ }
319
+ export type RepairLifecycleObserver = (event: RepairLifecycleEvent) => void;
320
+ export interface RepairLifecycleSource {
321
+ addRepairLifecycleObserver(observer: RepairLifecycleObserver): () => void;
322
+ }
323
+ /** Minimal event shape accepted by application-owned event targets. */
324
+ export interface RepairLifecycleApplicationEvent {
325
+ readonly type: string;
326
+ readonly detail: RepairLifecycleEvent;
327
+ }
328
+ /** DOM EventTarget event shape, including the Node 18 Event fallback. */
329
+ export interface RepairLifecycleDomEvent extends Event {
330
+ readonly detail: RepairLifecycleEvent;
331
+ }
332
+ /** Structural target contract shared by DOM and Closure-style event targets. */
333
+ export interface RepairLifecycleEventTarget<TEvent extends RepairLifecycleApplicationEvent> {
334
+ dispatchEvent(event: TEvent): unknown;
335
+ }
336
+ export interface RepairLifecycleEventOptions<TEvent extends RepairLifecycleApplicationEvent = RepairLifecycleDomEvent> {
337
+ bubbles?: boolean;
338
+ composed?: boolean;
339
+ createEvent?: RepairLifecycleEventFactory<TEvent>;
340
+ }
341
+ export type RepairLifecycleEventFactory<TEvent extends RepairLifecycleApplicationEvent = RepairLifecycleDomEvent> = (type: typeof REPAIR_LIFECYCLE_EVENT_TYPE, detail: RepairLifecycleEvent, options: Readonly<{
342
+ bubbles: boolean;
343
+ composed: boolean;
344
+ }>) => TEvent;
345
+ /** Public EventTarget event carrying an immutable RepairLifecycleEvent detail. */
346
+ export declare const REPAIR_LIFECYCLE_EVENT_TYPE = "repairlifecycle";
347
+ /** Diagnostic JSON-lines prefix. Never consume logs as a lifecycle API. */
348
+ export declare const REPAIR_LIFECYCLE_LOG_PREFIX = "[MulticastManager] repair-lifecycle ";
349
+ /** Runtime guard for observer, DOM-event, and cross-realm consumers. */
350
+ export declare function isRepairLifecycleEvent(value: unknown): value is RepairLifecycleEvent;
351
+ /**
352
+ * Forward typed repair lifecycle observations through an application-owned
353
+ * EventTarget. The adapter retains no history; the returned function detaches
354
+ * the observer.
355
+ */
356
+ export declare function forwardRepairLifecycleEvents<TEvent extends RepairLifecycleApplicationEvent>(source: RepairLifecycleSource, target: RepairLifecycleEventTarget<TEvent>, options: RepairLifecycleEventOptions<TEvent> & {
357
+ createEvent: RepairLifecycleEventFactory<TEvent>;
358
+ }): () => void;
359
+ export declare function forwardRepairLifecycleEvents(source: RepairLifecycleSource, target: EventTarget, options?: RepairLifecycleEventOptions): () => void;
360
+ /** Catalog track descriptor for configureMultiTrack(). */
361
+ export interface MultiTrackCatalogTrack {
362
+ name: string;
363
+ altGroup?: number;
364
+ framerate?: number;
365
+ fec?: unknown;
366
+ /** PacketId for testability — in production, learned at subscribe time (Plan 03). */
367
+ packetId?: number;
368
+ /** `"fec-repair"` marks a self-describing repair track (draft-ramadan-moq-fec
369
+ * §6.3). Absent on media tracks and on naming-era catalogs. */
370
+ packaging?: string;
371
+ /** The one source track this repair track carries repair symbols for. Layers
372
+ * 1..n and a keyframe overlay are reachable only through `depends`; layer 0
373
+ * is additionally named by the source's `fec.repairTrack`. */
374
+ depends?: string[];
375
+ /** Base layer index. Absent on a keyframe overlay, which is a separate FEC
376
+ * instance rather than a member of the layer chain. */
377
+ repairLayer?: number;
378
+ /** `"keyframe"` on an overlay track. */
379
+ scope?: string;
380
+ }
381
+ /** Multi-track catalog shape accepted by configureMultiTrack(). */
382
+ export interface MultiTrackCatalog {
383
+ tracks: MultiTrackCatalogTrack[];
384
+ }
385
+ /** Creates one stateful synchronous FEC decoder per physical catalog stream. */
386
+ export type WasmFecDecoderFactory = (track: Readonly<MultiTrackCatalogTrack>) => WasmFecDecoder;
387
+ export declare class MulticastManager {
388
+ #private;
389
+ constructor(options?: MulticastManagerOptions);
390
+ get fecManager(): FECManager;
391
+ get router(): MmtpRouter;
392
+ get transport(): MulticastTransport<MmtpIngressContext>;
393
+ get reassembler(): MfuReassemblerBackend;
394
+ get diagnostics(): {
395
+ _fec: {
396
+ timeoutMs: number;
397
+ activeBlocks: number;
398
+ completedBlocks: number;
399
+ cleanlyCompletedBlocks: number;
400
+ pendingCounts: {
401
+ [k: string]: number;
402
+ };
403
+ fpsDetected: boolean;
404
+ interleaveDepthMs: number;
405
+ startupAlignedPackets: number[];
406
+ startupPartialBlocks: number;
407
+ startupRepairReadyPackets: number[];
408
+ startupRepairFailOpenPackets: number[];
409
+ pendingWorkerCleanups: number;
410
+ decoderUnavailableEvents: number;
411
+ repairTrackedBlocks: number;
412
+ multicastSymbolDelivery: MulticastSymbolDelivery;
413
+ orderedFrontiers: {
414
+ [k: string]: number;
415
+ };
416
+ orderedPendingBlocks: number;
417
+ lifecycleTrace: {
418
+ atMs: number;
419
+ event: "repair-requested" | "repair-arrived" | "timeout-queued" | "horizon-settled" | "cleanup-ack" | "cleanup-ack-timeout" | "recovered" | "failed" | "decoder-unavailable";
420
+ packetId: number;
421
+ sbn: number;
422
+ catalogTrackName?: string;
423
+ sourceCount: number;
424
+ sourceEsis: number[];
425
+ repairRsIds: number[];
426
+ decoderPath: "worker" | "sync" | "none";
427
+ deadlineRemainingMs?: number;
428
+ pendingCleanup: boolean;
429
+ rsId?: number;
430
+ }[];
431
+ };
432
+ };
433
+ get stats(): import("./multicast-transport.js").MulticastTransportStats;
434
+ /**
435
+ * See MulticastTransport.lastJoinOutcome: how the newest join() to resolve
436
+ * did, and the typed reason it resolved false. join() here adds no false
437
+ * path of its own, so every false it returns is named there; a join() that
438
+ * rejects (catalog FEC configuration that configureFec refuses, for one)
439
+ * records nothing.
440
+ */
441
+ get lastJoinOutcome(): MulticastJoinOutcome | undefined;
442
+ /** See MulticastTransport.joinStats: join() calls by how they resolved. */
443
+ get joinStats(): MulticastJoinStats;
444
+ /**
445
+ * Accepted bytes for these MMTP packet_ids, cumulative like
446
+ * `stats.bytesReceived`; see MulticastTransport.bytesReceivedForPacketIds.
447
+ * Scopes an ABR throughput sample to the active tier when the join admits
448
+ * more packet_ids than that tier's. Monotonic only while the set is fixed:
449
+ * re-baseline when the queried set changes (e.g. on a tier switch).
450
+ */
451
+ bytesReceivedForPacketIds(packetIds: ReadonlySet<number>): number;
452
+ get fecStats(): import("./fec-manager.js").FecStats;
453
+ /** The raw WASM decoder for stats access */
454
+ get wasmDecoder(): WasmFecDecoder | null;
455
+ setFecDecoder(packetId: number, client: WasmFecDecoder, k: number, trackType?: "video" | "audio", config?: FECManagerConfig, catalogTrackName?: string): void;
456
+ /**
457
+ * Register a Worker-backed FEC decoder for a specific packetId (track).
458
+ * Worker-backed tracks decode asynchronously — recovered frames arrive via
459
+ * FECManager.onBlockRecovered callback instead of feedSourceSymbol return value.
460
+ */
461
+ setFecWorker(packetId: number, client: FecWorkerClient, trackType: "video" | "audio", config: FECManagerConfig, catalogTrackName?: string): void;
462
+ /**
463
+ * Stop routing a stream's symbols to its Worker decoder. Returns false when
464
+ * none is registered; on success one `decoder-unavailable` repair lifecycle
465
+ * event with reason 'cleared' reaches every observer, carrying whether a
466
+ * synchronous WASM decoder still serves the stream. The packet mapping and
467
+ * track type are untouched: the track still exists, it just has no Worker
468
+ * decoder. Call this before disposing the client.
469
+ */
470
+ clearFecWorker(packetId: number, catalogTrackName?: string): boolean;
471
+ /** Register callback for Worker-level FecTrackStats updates. */
472
+ setOnFecStatsUpdate(cb: (packetId: number, stats: FecTrackStats) => void): void;
473
+ setFramerate(fps: number): void;
474
+ /**
475
+ * Configure one track's FEC geometry, block mapper, and block-inactivity
476
+ * deadline from that track's own catalog values, then re-reduce the
477
+ * stream-global deadlines across every registered track.
478
+ *
479
+ * This is the packet-specific replacement for the global `configureFec`
480
+ * side effects: per-track concerns stay per-track, and the genuinely
481
+ * stream-global ones (transport failback, router MFU timeout, router reorder
482
+ * window) become an explicit max reduction instead of a last-caller-wins race
483
+ * in which whichever track configured last silently set the whole stream's
484
+ * timing.
485
+ *
486
+ * `catalogTrackName` scopes the block-classifier geometry (kind, fps,
487
+ * interleave, cadence) to that one stream. Pass it whenever ABR rungs can
488
+ * share this packetId: each rung then classifies with its own framerate
489
+ * and GOP, and a rung on the packetId that was never configured this way
490
+ * runs all-protected (`stream-geometry-absent`) instead of borrowing a
491
+ * sibling's geometry. K, T and the delivery timing stay per packetId.
492
+ */
493
+ configureTrackFec(packetId: number, config: Pick<MulticastEndpointConfig, "fecBlockProfile" | "fecK" | "fecRepairSymbols" | "fecSymbolSize" | "fecInterleaveDepthMs" | "fecReorderToleranceMs" | "fps" | "bandwidth" | "minimumFailbackWindowMs" | "trackKind" | "codec" | "timescale" | "keyframeIntervalTicks" | "keyframeIntervalMs">, catalogTrackName?: string): void;
494
+ configureFec(config: Pick<MulticastEndpointConfig, "fecBlockProfile" | "fecK" | "fecRepairSymbols" | "fecSymbolSize" | "fecInterleaveDepthMs" | "fecReorderToleranceMs" | "fps" | "bandwidth" | "minimumFailbackWindowMs">): void;
495
+ /** Register callback for track type discovery (from init data / inline signaling). */
496
+ onTrackTypeDiscovered(cb: (packetId: number, trackType: "video" | "audio") => void): void;
497
+ setPacketIdType(packetId: number, trackType: "video" | "audio"): void;
498
+ /**
499
+ * Set the keyframe loss timeout on the inner MmtpRouter (Phase 13).
500
+ * Applies only to tracks WITHOUT FEC: an FEC track never arms the timer,
501
+ * because its vanished blocks resolve through catalog-derived block
502
+ * deadlines and the release gate's stall decision.
503
+ * Must be called BEFORE setPacketIdType('video'). A reader is passed
504
+ * through; see MmtpRouter.setKeyframeLostTimeoutMs.
505
+ */
506
+ setKeyframeLostTimeoutMs(ms: number | (() => number)): void;
507
+ setMfuTimeoutMs(ms: number): void;
508
+ setTrackCodec(packetId: number, codec: string): void;
509
+ onVideoFrame(cb: FrameCallback): void;
510
+ onAudioFrame(cb: FrameCallback): void;
511
+ onTrackFrame(packetId: number, cb: FrameCallback): void;
512
+ onTrackPacket(packetId: number, cb: TrackPacketCallback): void;
513
+ onInitSegment(cb: (data: Uint8Array) => void): void;
514
+ onTrackInit(packetId: number, cb: (data: Uint8Array) => void): void;
515
+ onFecBlockStarted(cb: (sbn: number, packetId: number) => void): void;
516
+ /** Unrecoverable-FEC-block signal. Players drive decoder recovery from this
517
+ * (a starved decoder cannot resync on its own once the block is abandoned). */
518
+ onFecBlockFailed(cb: (sbn: number, packetId: number, catalogTrackName?: string) => void): void;
519
+ enableMseAssembler(packetId: number, config: Omit<BlockAssemblerConfig, "k">, catalogTrackName?: string): import("./cmaf-block-assembler.js").CmafBlockAssembler;
520
+ onMseSegment(packetId: number, cb: (segment: Uint8Array) => void, catalogTrackName?: string): void;
521
+ onMseSample(packetId: number, cb: (sample: CmafBlockSample) => void, catalogTrackName?: string): void;
522
+ onMseInitSegment(packetId: number, cb: (init: Uint8Array) => void, catalogTrackName?: string): void;
523
+ emitMseInit(packetId: number, catalogTrackName?: string): void;
524
+ markExternalVideoSync(packetId?: number, catalogTrackName?: string): void;
525
+ onTakeover(cb: () => void): void;
526
+ onFailback(cb: (reason: MulticastFailbackReason) => void): void;
527
+ /** See MulticastTransport.onDataPlaneLive: the join's first accepted packet. */
528
+ onDataPlaneLive(cb: () => void): void;
529
+ confirmVideo(): void;
530
+ confirmAudio(): void;
531
+ static isAvailable(): boolean;
532
+ join(config: MulticastEndpointConfig): Promise<boolean>;
533
+ /**
534
+ * Switch the live join from one video rendition to another in place: the
535
+ * subscription (socket, group membership, AMT tunnel) is kept, and the
536
+ * packet-ID remap commits atomically at a RAP of the incoming rendition.
537
+ *
538
+ * Staging widens the admission to carry both renditions: the ingress
539
+ * tracks become the live ones plus `tracks`, and, when `packetIds` is
540
+ * given, the allow-list becomes the live one plus `packetIds` (a provider
541
+ * that cannot widen in place is refused here, before anything changes).
542
+ * The incoming rendition's packets then feed its FEC and parser while the
543
+ * outgoing rendition keeps playing, and MmtpRouter.stageStreamSwitch
544
+ * withholds every incoming frame and its init until the commit.
545
+ *
546
+ * The commit is one synchronous step inside the frame path, at the
547
+ * incoming RAP (see MmtpRouter.stageStreamSwitch for where exactly): the
548
+ * outgoing packet ID is retired from the router, the admission becomes
549
+ * exactly `tracks` (and `packetIds`), the outgoing stream's FEC and repair
550
+ * state is released (FECManager.releasePacket; repair fetches in flight are
551
+ * aborted through the track-reset observers), `onCommit` runs, and then the
552
+ * incoming init and RAP are delivered. No outgoing frame is delivered after
553
+ * it and no incoming frame before it. No timer is armed: the switch waits
554
+ * on RAPs and on the outgoing stream's own frames.
555
+ *
556
+ * Exactly one of `onCommit` and `onCancel` is called per switch. One switch
557
+ * may be staged at a time.
558
+ */
559
+ switchRendition(request: RenditionSwitchRequest): RenditionSwitch;
560
+ /** Feed a raw packet from an external source (AMT tunnel, ASM subscription).
561
+ *
562
+ * For MoQ-unicast-fallback mode (no SSM bridge), call
563
+ * `manager.router.feedPacket(packet, "moq")` directly to bypass
564
+ * MulticastTransport's takeover/watchdog/failback gates while preserving
565
+ * transport attribution in FEC path counters.
566
+ * The `router` accessor above is already public.
567
+ */
568
+ feedPacket(data: ArrayBuffer | Uint8Array, ingress?: MmtpIngressContext): void;
569
+ /**
570
+ * Declare how packets given to feedPacket() reach this manager. A consumer
571
+ * that owns the multicast socket itself declares its own leg; join()
572
+ * applies what the window.multicast subscription declares instead.
573
+ */
574
+ setMulticastSymbolDelivery(delivery: MulticastSymbolDelivery): void;
575
+ /** Process a repair packet from MoQ (reliable QUIC). */
576
+ processRepairFromMoQ(packet: Uint8Array, ownerPacketId?: number, catalogTrackName?: string): void;
577
+ /** Route a Worker-recovered FEC block through the MMTP parser + dedup pipeline. */
578
+ routeRecoveredBlock(blockId: number, data: Uint8Array, packetId: number, catalogTrackName?: string): void;
579
+ /** Route one Worker-recovered source symbol through the MMTP parser + dedup pipeline. */
580
+ routeRecoveredSymbol(blockId: number, data: Uint8Array, packetId: number, esi?: number, catalogTrackName?: string): void;
581
+ /**
582
+ * Configure the manager for a multi-track (base/delta/repair) CMAF switching set.
583
+ *
584
+ * D-04: Validates completeness via validateSwitchingSet — throws if incomplete.
585
+ * D-07: Applies per-track FEC configs (base+delta get decoders; repair does not).
586
+ * D-17: Builds altGroup → track-name index for getSwitchingSet().
587
+ * D-26: Registers packetId → TrackRole on MmtpRouter for block-complete fanout.
588
+ *
589
+ * @param catalog - Multi-track catalog (tracks array with name, altGroup, fec, packetId).
590
+ * @param wasmDecoderSource - One WASM FEC decoder for a single FEC stream, or
591
+ * a factory returning a distinct decoder per stream.
592
+ */
593
+ configureMultiTrack(catalog: MultiTrackCatalog, wasmDecoderSource?: WasmFecDecoder | WasmFecDecoderFactory): void;
594
+ /**
595
+ * Return the track names belonging to the given altGroup switching set.
596
+ * D-17: altGroup groups base+delta+repair into one switching set.
597
+ *
598
+ * @param altGroup - The altGroup number to look up.
599
+ * @returns Array of track names in that switching set (empty if none).
600
+ */
601
+ getSwitchingSet(altGroup: number): string[];
602
+ /**
603
+ * Register callback fired when a repair fetch should be issued for an FEC block.
604
+ *
605
+ * D-28: At most one outstanding repair fetch per (packetId, sbn) block.
606
+ * clearRepairForBlock fires automatically when the block resolves (via
607
+ * FECManager.onRepairResolved); call it manually only on fetch failure
608
+ * paths the FEC layer cannot observe (fetch error, range not retained,
609
+ * transport timeout) so a stuck fetch cannot wedge the block's slot.
610
+ *
611
+ * Registering also arms the FEC repair deadline: each block gets a one-shot
612
+ * timer for the derived K-symbol source-production horizon; a block still
613
+ * short of K when it fires requests repair here. Failure accounting timing
614
+ * is unchanged.
615
+ */
616
+ onRepairSubscribe(cb: RepairSubscribeCallback): void;
617
+ /**
618
+ * Record a repair request whose SUBSCRIBER_PRIORITY the catalog could not
619
+ * supply (draft-ramadan-moq-fec §11.4.5): sent without the parameter, or
620
+ * not sent. Emits one `repair-priority` lifecycle event.
621
+ */
622
+ noteRepairPriority(action: "omitted" | "declined", reason: RepairPriorityReason, blockClass: BlockClass, sbn: number, packetId: number, catalogTrackName?: string): void;
623
+ /** Record a repair request the scheduler sent no FETCH for. */
624
+ noteRepairSkipped(reason: RepairSkipReason, measurement: {
625
+ readonly rttMs: number | null;
626
+ readonly budgetMs: number;
627
+ }, sbn: number, packetId: number, catalogTrackName?: string): void;
628
+ /**
629
+ * Record a repair-scheduler decision about a delta block: preempted for
630
+ * keyframe/audio work, or never dispatched before its block resolved.
631
+ */
632
+ noteRepairScheduling(type: "repair-preempted" | "repair-deferred", sbn: number, packetId: number, catalogTrackName?: string): void;
633
+ /** Catalog/reset epoch of a packet's streams; gap decisions carry it. */
634
+ epochFor(packetId: number): number;
635
+ /**
636
+ * Keyframe-protected repair policy counters, keyed by catalog track name
637
+ * (`packetId:<n>` for a stream with no catalog name). Each track's
638
+ * counters reset with its epoch.
639
+ */
640
+ getBlockPolicyStats(): Record<string, BlockPolicyStats>;
641
+ /**
642
+ * Observe causal repair lifecycle events without retaining snapshots in the
643
+ * transport. Returns an unsubscribe function.
644
+ */
645
+ addRepairLifecycleObserver(observer: RepairLifecycleObserver): () => void;
646
+ /** Observe per-stream epoch resets (used by repair transports to abort I/O). */
647
+ addTrackResetObserver(observer: (packetId: number, catalogTrackName: string) => void): () => void;
648
+ /** Begin a fresh retained-replay epoch for one physical media stream. */
649
+ resetTrack(packetId: number, catalogTrackName: string): void;
650
+ /**
651
+ * Request a repair-track fetch for the given FEC block.
652
+ *
653
+ * D-28: duplicate requests for the same (packetId, sbn) are suppressed
654
+ * until clearRepairForBlock is called.
655
+ *
656
+ * @param sbn - Source Block Number identifying the FEC block needing repair.
657
+ * @param packetId - MMTP packet_id owning the block (video/audio tracks have
658
+ * independent SBN spaces, so the in-flight key must be composite).
659
+ */
660
+ requestRepairForBlock(sbn: number, packetId: number, catalogTrackName: string | undefined, blockClass: BlockClass): void;
661
+ /**
662
+ * Clear in-flight repair state for the given block.
663
+ * Fired automatically when the block resolves; safe to call redundantly.
664
+ */
665
+ clearRepairForBlock(sbn: number, packetId: number, catalogTrackName?: string): void;
666
+ dispose(): void;
667
+ }
668
+ export {};
669
+ //# sourceMappingURL=multicast-manager.d.ts.map