reactor-effect-client 0.7.1 → 0.8.0

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 (514) hide show
  1. package/NOTICE +7 -2
  2. package/README.md +103 -141
  3. package/dist/Coordinator.d.ts +382 -0
  4. package/dist/Coordinator.d.ts.map +1 -0
  5. package/dist/Coordinator.js +732 -0
  6. package/dist/Coordinator.js.map +1 -0
  7. package/dist/H3.d.ts +159 -0
  8. package/dist/H3.d.ts.map +1 -0
  9. package/dist/H3.js +21 -0
  10. package/dist/H3.js.map +1 -0
  11. package/dist/H3Source.d.ts +93 -0
  12. package/dist/H3Source.d.ts.map +1 -0
  13. package/dist/H3Source.js +401 -0
  14. package/dist/H3Source.js.map +1 -0
  15. package/dist/LocalSource.d.ts +68 -0
  16. package/dist/LocalSource.d.ts.map +1 -0
  17. package/dist/LocalSource.js +354 -0
  18. package/dist/LocalSource.js.map +1 -0
  19. package/dist/Media.d.ts +106 -0
  20. package/dist/Media.d.ts.map +1 -0
  21. package/dist/Media.js +16 -0
  22. package/dist/Media.js.map +1 -0
  23. package/dist/Peer.d.ts +134 -0
  24. package/dist/Peer.d.ts.map +1 -0
  25. package/dist/Peer.js +57 -0
  26. package/dist/Peer.js.map +1 -0
  27. package/dist/Playout.d.ts +724 -0
  28. package/dist/Playout.d.ts.map +1 -0
  29. package/dist/Playout.js +28 -0
  30. package/dist/Playout.js.map +1 -0
  31. package/dist/Reactor.d.ts +135 -0
  32. package/dist/Reactor.d.ts.map +1 -0
  33. package/dist/Reactor.js +158 -0
  34. package/dist/Reactor.js.map +1 -0
  35. package/dist/ReactorError.d.ts +331 -0
  36. package/dist/ReactorError.d.ts.map +1 -0
  37. package/dist/ReactorError.js +316 -0
  38. package/dist/ReactorError.js.map +1 -0
  39. package/dist/ReactorTest.d.ts +383 -0
  40. package/dist/ReactorTest.d.ts.map +1 -0
  41. package/dist/ReactorTest.js +317 -0
  42. package/dist/ReactorTest.js.map +1 -0
  43. package/dist/Session.d.ts +314 -0
  44. package/dist/Session.d.ts.map +1 -0
  45. package/dist/Session.js +51 -0
  46. package/dist/Session.js.map +1 -0
  47. package/dist/index.d.ts +12 -22
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +12 -11
  50. package/dist/index.js.map +1 -1
  51. package/dist/internal/correlator.d.ts +46 -0
  52. package/dist/internal/correlator.d.ts.map +1 -0
  53. package/dist/internal/correlator.js +150 -0
  54. package/dist/internal/correlator.js.map +1 -0
  55. package/dist/internal/deadline.d.ts +24 -0
  56. package/dist/internal/deadline.d.ts.map +1 -0
  57. package/dist/internal/deadline.js +44 -0
  58. package/dist/internal/deadline.js.map +1 -0
  59. package/dist/{h3/_internal/contracts.d.ts → internal/h3/commands.d.ts} +39 -33
  60. package/dist/internal/h3/commands.d.ts.map +1 -0
  61. package/dist/internal/h3/commands.js +128 -0
  62. package/dist/internal/h3/commands.js.map +1 -0
  63. package/dist/{h3 → internal/h3}/messages.d.ts +16 -11
  64. package/dist/internal/h3/messages.d.ts.map +1 -0
  65. package/dist/{h3 → internal/h3}/messages.js +19 -31
  66. package/dist/internal/h3/messages.js.map +1 -0
  67. package/dist/internal/h3/operations.d.ts +145 -0
  68. package/dist/internal/h3/operations.d.ts.map +1 -0
  69. package/dist/internal/h3/operations.js +284 -0
  70. package/dist/internal/h3/operations.js.map +1 -0
  71. package/dist/{h3 → internal/h3}/profile.d.ts +63 -65
  72. package/dist/internal/h3/profile.d.ts.map +1 -0
  73. package/dist/{h3 → internal/h3}/profile.js +39 -39
  74. package/dist/internal/h3/profile.js.map +1 -0
  75. package/dist/internal/h3/provider.d.ts +14 -0
  76. package/dist/internal/h3/provider.d.ts.map +1 -0
  77. package/dist/internal/h3/provider.js +672 -0
  78. package/dist/internal/h3/provider.js.map +1 -0
  79. package/dist/internal/h3/references.d.ts +68 -0
  80. package/dist/internal/h3/references.d.ts.map +1 -0
  81. package/dist/internal/h3/references.js +339 -0
  82. package/dist/internal/h3/references.js.map +1 -0
  83. package/dist/internal/h3/request.d.ts +56 -0
  84. package/dist/internal/h3/request.d.ts.map +1 -0
  85. package/dist/internal/h3/request.js +70 -0
  86. package/dist/internal/h3/request.js.map +1 -0
  87. package/dist/internal/h3/state.d.ts +120 -0
  88. package/dist/internal/h3/state.d.ts.map +1 -0
  89. package/dist/internal/h3/state.js +270 -0
  90. package/dist/internal/h3/state.js.map +1 -0
  91. package/dist/{Submission.d.ts → internal/h3/submission.d.ts} +1 -3
  92. package/dist/internal/h3/submission.d.ts.map +1 -0
  93. package/dist/{Submission.js → internal/h3/submission.js} +1 -9
  94. package/dist/internal/h3/submission.js.map +1 -0
  95. package/dist/internal/hub.d.ts +32 -0
  96. package/dist/internal/hub.d.ts.map +1 -0
  97. package/dist/internal/hub.js +92 -0
  98. package/dist/internal/hub.js.map +1 -0
  99. package/dist/internal/playout/errors.d.ts +51 -0
  100. package/dist/internal/playout/errors.d.ts.map +1 -0
  101. package/dist/internal/playout/errors.js +40 -0
  102. package/dist/internal/playout/errors.js.map +1 -0
  103. package/dist/internal/playout/policy.d.ts +559 -0
  104. package/dist/internal/playout/policy.d.ts.map +1 -0
  105. package/dist/internal/playout/policy.js +2338 -0
  106. package/dist/internal/playout/policy.js.map +1 -0
  107. package/dist/internal/playout/runtime.d.ts +28 -0
  108. package/dist/internal/playout/runtime.d.ts.map +1 -0
  109. package/dist/internal/playout/runtime.js +766 -0
  110. package/dist/internal/playout/runtime.js.map +1 -0
  111. package/dist/internal/playout/tag.d.ts +14 -0
  112. package/dist/internal/playout/tag.d.ts.map +1 -0
  113. package/dist/internal/playout/tag.js +43 -0
  114. package/dist/internal/playout/tag.js.map +1 -0
  115. package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts +55 -0
  116. package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts.map +1 -0
  117. package/dist/internal/proto/reactor_wire/v1/common_pb.js +42 -0
  118. package/dist/internal/proto/reactor_wire/v1/common_pb.js.map +1 -0
  119. package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts +160 -0
  120. package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts.map +1 -0
  121. package/dist/internal/proto/reactor_wire/v1/control_pb.js +21 -0
  122. package/dist/internal/proto/reactor_wire/v1/control_pb.js.map +1 -0
  123. package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts +89 -0
  124. package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts.map +1 -0
  125. package/dist/internal/proto/reactor_wire/v1/data_pb.js +20 -0
  126. package/dist/internal/proto/reactor_wire/v1/data_pb.js.map +1 -0
  127. package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts +85 -0
  128. package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts.map +1 -0
  129. package/dist/internal/proto/reactor_wire/v1/model_pb.js +24 -0
  130. package/dist/internal/proto/reactor_wire/v1/model_pb.js.map +1 -0
  131. package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts +190 -0
  132. package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts.map +1 -0
  133. package/dist/internal/proto/reactor_wire/v1/platform_pb.js +54 -0
  134. package/dist/internal/proto/reactor_wire/v1/platform_pb.js.map +1 -0
  135. package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts +88 -0
  136. package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts.map +1 -0
  137. package/dist/internal/proto/reactor_wire/v1/track_pb.js +33 -0
  138. package/dist/internal/proto/reactor_wire/v1/track_pb.js.map +1 -0
  139. package/dist/internal/queue.d.ts +4 -0
  140. package/dist/internal/queue.d.ts.map +1 -0
  141. package/dist/{_internal → internal}/queue.js +0 -9
  142. package/dist/internal/queue.js.map +1 -0
  143. package/dist/internal/reactorTest/coordinator.d.ts +5 -0
  144. package/dist/internal/reactorTest/coordinator.d.ts.map +1 -0
  145. package/dist/internal/reactorTest/coordinator.js +178 -0
  146. package/dist/internal/reactorTest/coordinator.js.map +1 -0
  147. package/dist/internal/reactorTest/faults.d.ts +172 -0
  148. package/dist/internal/reactorTest/faults.d.ts.map +1 -0
  149. package/dist/internal/reactorTest/faults.js +23 -0
  150. package/dist/internal/reactorTest/faults.js.map +1 -0
  151. package/dist/internal/reactorTest/h3.d.ts +431 -0
  152. package/dist/internal/reactorTest/h3.d.ts.map +1 -0
  153. package/dist/internal/reactorTest/h3.js +625 -0
  154. package/dist/internal/reactorTest/h3.js.map +1 -0
  155. package/dist/internal/reactorTest/media.d.ts +22 -0
  156. package/dist/internal/reactorTest/media.d.ts.map +1 -0
  157. package/dist/internal/reactorTest/media.js +34 -0
  158. package/dist/internal/reactorTest/media.js.map +1 -0
  159. package/dist/internal/reactorTest/peer.d.ts +318 -0
  160. package/dist/internal/reactorTest/peer.d.ts.map +1 -0
  161. package/dist/internal/reactorTest/peer.js +206 -0
  162. package/dist/internal/reactorTest/peer.js.map +1 -0
  163. package/dist/internal/reactorTest/playout.d.ts +34 -0
  164. package/dist/internal/reactorTest/playout.d.ts.map +1 -0
  165. package/dist/internal/reactorTest/playout.js +340 -0
  166. package/dist/internal/reactorTest/playout.js.map +1 -0
  167. package/dist/internal/reactorTest/references.d.ts +25 -0
  168. package/dist/internal/reactorTest/references.d.ts.map +1 -0
  169. package/dist/{testing/Png.js → internal/reactorTest/references.js} +50 -12
  170. package/dist/internal/reactorTest/references.js.map +1 -0
  171. package/dist/internal/reactorTest/sessions.d.ts +364 -0
  172. package/dist/internal/reactorTest/sessions.d.ts.map +1 -0
  173. package/dist/internal/reactorTest/sessions.js +592 -0
  174. package/dist/internal/reactorTest/sessions.js.map +1 -0
  175. package/dist/internal/reactorTest/timing.d.ts +13 -0
  176. package/dist/internal/reactorTest/timing.d.ts.map +1 -0
  177. package/dist/internal/reactorTest/timing.js +20 -0
  178. package/dist/internal/reactorTest/timing.js.map +1 -0
  179. package/dist/internal/recording.d.ts +52 -0
  180. package/dist/internal/recording.d.ts.map +1 -0
  181. package/dist/internal/recording.js +141 -0
  182. package/dist/internal/recording.js.map +1 -0
  183. package/dist/internal/session/connect.d.ts +34 -0
  184. package/dist/internal/session/connect.d.ts.map +1 -0
  185. package/dist/internal/session/connect.js +502 -0
  186. package/dist/internal/session/connect.js.map +1 -0
  187. package/dist/internal/session/generation.d.ts +35 -0
  188. package/dist/internal/session/generation.d.ts.map +1 -0
  189. package/dist/internal/session/generation.js +185 -0
  190. package/dist/internal/session/generation.js.map +1 -0
  191. package/dist/internal/session/ice.d.ts +23 -0
  192. package/dist/internal/session/ice.d.ts.map +1 -0
  193. package/dist/internal/session/ice.js +57 -0
  194. package/dist/internal/session/ice.js.map +1 -0
  195. package/dist/internal/session/inbound.d.ts +50 -0
  196. package/dist/internal/session/inbound.d.ts.map +1 -0
  197. package/dist/internal/session/inbound.js +202 -0
  198. package/dist/internal/session/inbound.js.map +1 -0
  199. package/dist/internal/session/model.d.ts +163 -0
  200. package/dist/internal/session/model.d.ts.map +1 -0
  201. package/dist/internal/session/model.js +78 -0
  202. package/dist/internal/session/model.js.map +1 -0
  203. package/dist/internal/session/requests.d.ts +71 -0
  204. package/dist/internal/session/requests.d.ts.map +1 -0
  205. package/dist/internal/session/requests.js +240 -0
  206. package/dist/internal/session/requests.js.map +1 -0
  207. package/dist/internal/session/tracks.d.ts +21 -0
  208. package/dist/internal/session/tracks.d.ts.map +1 -0
  209. package/dist/internal/session/tracks.js +166 -0
  210. package/dist/internal/session/tracks.js.map +1 -0
  211. package/dist/internal/session/upload.d.ts +21 -0
  212. package/dist/internal/session/upload.d.ts.map +1 -0
  213. package/dist/internal/session/upload.js +68 -0
  214. package/dist/internal/session/upload.js.map +1 -0
  215. package/dist/internal/session.d.ts +66 -0
  216. package/dist/internal/session.d.ts.map +1 -0
  217. package/dist/internal/session.js +280 -0
  218. package/dist/internal/session.js.map +1 -0
  219. package/dist/{stats.d.ts → internal/stats.d.ts} +30 -16
  220. package/dist/internal/stats.d.ts.map +1 -0
  221. package/dist/internal/stats.js +201 -0
  222. package/dist/internal/stats.js.map +1 -0
  223. package/dist/internal/token.d.ts +22 -0
  224. package/dist/internal/token.d.ts.map +1 -0
  225. package/dist/internal/token.js +65 -0
  226. package/dist/internal/token.js.map +1 -0
  227. package/dist/internal/wire.d.ts +37 -0
  228. package/dist/internal/wire.d.ts.map +1 -0
  229. package/dist/internal/wire.js +49 -0
  230. package/dist/internal/wire.js.map +1 -0
  231. package/notices/bufbuild-protobuf-LICENSE +201 -0
  232. package/package.json +17 -38
  233. package/dist/FetchHttp.d.ts +0 -9
  234. package/dist/FetchHttp.d.ts.map +0 -1
  235. package/dist/FetchHttp.js +0 -63
  236. package/dist/FetchHttp.js.map +0 -1
  237. package/dist/PeerFactory.d.ts +0 -26
  238. package/dist/PeerFactory.d.ts.map +0 -1
  239. package/dist/PeerFactory.js +0 -4
  240. package/dist/PeerFactory.js.map +0 -1
  241. package/dist/PeerTypes.d.ts +0 -64
  242. package/dist/PeerTypes.d.ts.map +0 -1
  243. package/dist/PeerTypes.js +0 -2
  244. package/dist/PeerTypes.js.map +0 -1
  245. package/dist/Sequence.d.ts +0 -85
  246. package/dist/Sequence.d.ts.map +0 -1
  247. package/dist/Sequence.js +0 -210
  248. package/dist/Sequence.js.map +0 -1
  249. package/dist/SessionTypes.d.ts +0 -312
  250. package/dist/SessionTypes.d.ts.map +0 -1
  251. package/dist/SessionTypes.js +0 -19
  252. package/dist/SessionTypes.js.map +0 -1
  253. package/dist/Submission.d.ts.map +0 -1
  254. package/dist/Submission.js.map +0 -1
  255. package/dist/_internal/queue.d.ts +0 -6
  256. package/dist/_internal/queue.d.ts.map +0 -1
  257. package/dist/_internal/queue.js.map +0 -1
  258. package/dist/bytes.d.ts +0 -6
  259. package/dist/bytes.d.ts.map +0 -1
  260. package/dist/bytes.js +0 -32
  261. package/dist/bytes.js.map +0 -1
  262. package/dist/contract.d.ts +0 -149
  263. package/dist/contract.d.ts.map +0 -1
  264. package/dist/contract.js +0 -119
  265. package/dist/contract.js.map +0 -1
  266. package/dist/coordinator/_internal/client.d.ts +0 -215
  267. package/dist/coordinator/_internal/client.d.ts.map +0 -1
  268. package/dist/coordinator/_internal/client.js +0 -563
  269. package/dist/coordinator/_internal/client.js.map +0 -1
  270. package/dist/coordinator/_internal/recording.d.ts +0 -31
  271. package/dist/coordinator/_internal/recording.d.ts.map +0 -1
  272. package/dist/coordinator/_internal/recording.js +0 -123
  273. package/dist/coordinator/_internal/recording.js.map +0 -1
  274. package/dist/coordinator/_internal/response.d.ts +0 -15
  275. package/dist/coordinator/_internal/response.d.ts.map +0 -1
  276. package/dist/coordinator/_internal/response.js +0 -55
  277. package/dist/coordinator/_internal/response.js.map +0 -1
  278. package/dist/coordinator/_internal/schemas.d.ts +0 -73
  279. package/dist/coordinator/_internal/schemas.d.ts.map +0 -1
  280. package/dist/coordinator/_internal/schemas.js +0 -200
  281. package/dist/coordinator/_internal/schemas.js.map +0 -1
  282. package/dist/coordinator/index.d.ts +0 -40
  283. package/dist/coordinator/index.d.ts.map +0 -1
  284. package/dist/coordinator/index.js +0 -21
  285. package/dist/coordinator/index.js.map +0 -1
  286. package/dist/correlation.d.ts +0 -47
  287. package/dist/correlation.d.ts.map +0 -1
  288. package/dist/correlation.js +0 -131
  289. package/dist/correlation.js.map +0 -1
  290. package/dist/duration.d.ts +0 -27
  291. package/dist/duration.d.ts.map +0 -1
  292. package/dist/duration.js +0 -47
  293. package/dist/duration.js.map +0 -1
  294. package/dist/errors.d.ts +0 -1303
  295. package/dist/errors.d.ts.map +0 -1
  296. package/dist/errors.js +0 -745
  297. package/dist/errors.js.map +0 -1
  298. package/dist/h3/_internal/client.d.ts +0 -9
  299. package/dist/h3/_internal/client.d.ts.map +0 -1
  300. package/dist/h3/_internal/client.js +0 -652
  301. package/dist/h3/_internal/client.js.map +0 -1
  302. package/dist/h3/_internal/contracts.d.ts.map +0 -1
  303. package/dist/h3/_internal/contracts.js +0 -123
  304. package/dist/h3/_internal/contracts.js.map +0 -1
  305. package/dist/h3/_internal/deployment.d.ts +0 -8
  306. package/dist/h3/_internal/deployment.d.ts.map +0 -1
  307. package/dist/h3/_internal/deployment.js +0 -149
  308. package/dist/h3/_internal/deployment.js.map +0 -1
  309. package/dist/h3/_internal/evidence.d.ts +0 -17
  310. package/dist/h3/_internal/evidence.d.ts.map +0 -1
  311. package/dist/h3/_internal/evidence.js +0 -48
  312. package/dist/h3/_internal/evidence.js.map +0 -1
  313. package/dist/h3/_internal/operations.d.ts +0 -58
  314. package/dist/h3/_internal/operations.d.ts.map +0 -1
  315. package/dist/h3/_internal/operations.js +0 -268
  316. package/dist/h3/_internal/operations.js.map +0 -1
  317. package/dist/h3/_internal/references.d.ts +0 -24
  318. package/dist/h3/_internal/references.d.ts.map +0 -1
  319. package/dist/h3/_internal/references.js +0 -309
  320. package/dist/h3/_internal/references.js.map +0 -1
  321. package/dist/h3/_internal/request.d.ts +0 -21
  322. package/dist/h3/_internal/request.d.ts.map +0 -1
  323. package/dist/h3/_internal/request.js +0 -97
  324. package/dist/h3/_internal/request.js.map +0 -1
  325. package/dist/h3/_internal/retained.d.ts +0 -22
  326. package/dist/h3/_internal/retained.d.ts.map +0 -1
  327. package/dist/h3/_internal/retained.js +0 -89
  328. package/dist/h3/_internal/retained.js.map +0 -1
  329. package/dist/h3/_internal/state.d.ts +0 -44
  330. package/dist/h3/_internal/state.d.ts.map +0 -1
  331. package/dist/h3/_internal/state.js +0 -283
  332. package/dist/h3/_internal/state.js.map +0 -1
  333. package/dist/h3/index.d.ts +0 -10
  334. package/dist/h3/index.d.ts.map +0 -1
  335. package/dist/h3/index.js +0 -7
  336. package/dist/h3/index.js.map +0 -1
  337. package/dist/h3/messages.d.ts.map +0 -1
  338. package/dist/h3/messages.js.map +0 -1
  339. package/dist/h3/profile.d.ts.map +0 -1
  340. package/dist/h3/profile.js.map +0 -1
  341. package/dist/h3/types.d.ts +0 -291
  342. package/dist/h3/types.d.ts.map +0 -1
  343. package/dist/h3/types.js +0 -2
  344. package/dist/h3/types.js.map +0 -1
  345. package/dist/host.d.ts +0 -26
  346. package/dist/host.d.ts.map +0 -1
  347. package/dist/host.js +0 -20
  348. package/dist/host.js.map +0 -1
  349. package/dist/json.d.ts +0 -25
  350. package/dist/json.d.ts.map +0 -1
  351. package/dist/json.js +0 -143
  352. package/dist/json.js.map +0 -1
  353. package/dist/media-stream.d.ts +0 -10
  354. package/dist/media-stream.d.ts.map +0 -1
  355. package/dist/media-stream.js +0 -18
  356. package/dist/media-stream.js.map +0 -1
  357. package/dist/observation.d.ts +0 -38
  358. package/dist/observation.d.ts.map +0 -1
  359. package/dist/observation.js +0 -113
  360. package/dist/observation.js.map +0 -1
  361. package/dist/orchestration/elapsed.d.ts +0 -9
  362. package/dist/orchestration/elapsed.d.ts.map +0 -1
  363. package/dist/orchestration/elapsed.js +0 -8
  364. package/dist/orchestration/elapsed.js.map +0 -1
  365. package/dist/orchestration/h3-source.d.ts +0 -58
  366. package/dist/orchestration/h3-source.d.ts.map +0 -1
  367. package/dist/orchestration/h3-source.js +0 -362
  368. package/dist/orchestration/h3-source.js.map +0 -1
  369. package/dist/orchestration/index.d.ts +0 -17
  370. package/dist/orchestration/index.d.ts.map +0 -1
  371. package/dist/orchestration/index.js +0 -12
  372. package/dist/orchestration/index.js.map +0 -1
  373. package/dist/orchestration/media-buffer.d.ts +0 -32
  374. package/dist/orchestration/media-buffer.d.ts.map +0 -1
  375. package/dist/orchestration/media-buffer.js +0 -94
  376. package/dist/orchestration/media-buffer.js.map +0 -1
  377. package/dist/orchestration/open-h3.d.ts +0 -101
  378. package/dist/orchestration/open-h3.d.ts.map +0 -1
  379. package/dist/orchestration/open-h3.js +0 -127
  380. package/dist/orchestration/open-h3.js.map +0 -1
  381. package/dist/orchestration/queries.d.ts +0 -10
  382. package/dist/orchestration/queries.d.ts.map +0 -1
  383. package/dist/orchestration/queries.js +0 -43
  384. package/dist/orchestration/queries.js.map +0 -1
  385. package/dist/orchestration/references.d.ts +0 -18
  386. package/dist/orchestration/references.d.ts.map +0 -1
  387. package/dist/orchestration/references.js +0 -79
  388. package/dist/orchestration/references.js.map +0 -1
  389. package/dist/orchestration/renewal-state.d.ts +0 -84
  390. package/dist/orchestration/renewal-state.d.ts.map +0 -1
  391. package/dist/orchestration/renewal-state.js +0 -95
  392. package/dist/orchestration/renewal-state.js.map +0 -1
  393. package/dist/orchestration/renewal.d.ts +0 -103
  394. package/dist/orchestration/renewal.d.ts.map +0 -1
  395. package/dist/orchestration/renewal.js +0 -1099
  396. package/dist/orchestration/renewal.js.map +0 -1
  397. package/dist/orchestration/request.d.ts +0 -65
  398. package/dist/orchestration/request.d.ts.map +0 -1
  399. package/dist/orchestration/request.js +0 -134
  400. package/dist/orchestration/request.js.map +0 -1
  401. package/dist/orchestration/retention.d.ts +0 -100
  402. package/dist/orchestration/retention.d.ts.map +0 -1
  403. package/dist/orchestration/retention.js +0 -134
  404. package/dist/orchestration/retention.js.map +0 -1
  405. package/dist/orchestration/routing.d.ts +0 -21
  406. package/dist/orchestration/routing.d.ts.map +0 -1
  407. package/dist/orchestration/routing.js +0 -93
  408. package/dist/orchestration/routing.js.map +0 -1
  409. package/dist/orchestration/scheduler-key.d.ts +0 -14
  410. package/dist/orchestration/scheduler-key.d.ts.map +0 -1
  411. package/dist/orchestration/scheduler-key.js +0 -62
  412. package/dist/orchestration/scheduler-key.js.map +0 -1
  413. package/dist/orchestration/scheduler-policy.d.ts +0 -246
  414. package/dist/orchestration/scheduler-policy.d.ts.map +0 -1
  415. package/dist/orchestration/scheduler-policy.js +0 -668
  416. package/dist/orchestration/scheduler-policy.js.map +0 -1
  417. package/dist/orchestration/scheduler.d.ts +0 -393
  418. package/dist/orchestration/scheduler.d.ts.map +0 -1
  419. package/dist/orchestration/scheduler.js +0 -2621
  420. package/dist/orchestration/scheduler.js.map +0 -1
  421. package/dist/orchestration/source-slot.d.ts +0 -124
  422. package/dist/orchestration/source-slot.d.ts.map +0 -1
  423. package/dist/orchestration/source-slot.js +0 -348
  424. package/dist/orchestration/source-slot.js.map +0 -1
  425. package/dist/orchestration/types.d.ts +0 -1462
  426. package/dist/orchestration/types.d.ts.map +0 -1
  427. package/dist/orchestration/types.js +0 -135
  428. package/dist/orchestration/types.js.map +0 -1
  429. package/dist/protobuf.d.ts +0 -63
  430. package/dist/protobuf.d.ts.map +0 -1
  431. package/dist/protobuf.js +0 -252
  432. package/dist/protobuf.js.map +0 -1
  433. package/dist/session/_internal/acquire.d.ts +0 -21
  434. package/dist/session/_internal/acquire.d.ts.map +0 -1
  435. package/dist/session/_internal/acquire.js +0 -168
  436. package/dist/session/_internal/acquire.js.map +0 -1
  437. package/dist/session/_internal/cleanup.d.ts +0 -19
  438. package/dist/session/_internal/cleanup.d.ts.map +0 -1
  439. package/dist/session/_internal/cleanup.js +0 -102
  440. package/dist/session/_internal/cleanup.js.map +0 -1
  441. package/dist/session/_internal/lifecycle.d.ts +0 -67
  442. package/dist/session/_internal/lifecycle.d.ts.map +0 -1
  443. package/dist/session/_internal/lifecycle.js +0 -142
  444. package/dist/session/_internal/lifecycle.js.map +0 -1
  445. package/dist/session/_internal/remote.d.ts +0 -28
  446. package/dist/session/_internal/remote.d.ts.map +0 -1
  447. package/dist/session/_internal/remote.js +0 -71
  448. package/dist/session/_internal/remote.js.map +0 -1
  449. package/dist/session/_internal/uploads.d.ts +0 -7
  450. package/dist/session/_internal/uploads.d.ts.map +0 -1
  451. package/dist/session/_internal/uploads.js +0 -31
  452. package/dist/session/_internal/uploads.js.map +0 -1
  453. package/dist/session/commands.d.ts +0 -2
  454. package/dist/session/commands.d.ts.map +0 -1
  455. package/dist/session/commands.js +0 -2
  456. package/dist/session/commands.js.map +0 -1
  457. package/dist/session/files.d.ts +0 -21
  458. package/dist/session/files.d.ts.map +0 -1
  459. package/dist/session/files.js +0 -49
  460. package/dist/session/files.js.map +0 -1
  461. package/dist/session/index.d.ts +0 -84
  462. package/dist/session/index.d.ts.map +0 -1
  463. package/dist/session/index.js +0 -16
  464. package/dist/session/index.js.map +0 -1
  465. package/dist/session/media.d.ts +0 -114
  466. package/dist/session/media.d.ts.map +0 -1
  467. package/dist/session/media.js +0 -2
  468. package/dist/session/media.js.map +0 -1
  469. package/dist/session/recorder.d.ts +0 -24
  470. package/dist/session/recorder.d.ts.map +0 -1
  471. package/dist/session/recorder.js +0 -19
  472. package/dist/session/recorder.js.map +0 -1
  473. package/dist/session.d.ts +0 -105
  474. package/dist/session.d.ts.map +0 -1
  475. package/dist/session.js +0 -976
  476. package/dist/session.js.map +0 -1
  477. package/dist/simulation/_internal/source.d.ts +0 -12
  478. package/dist/simulation/_internal/source.d.ts.map +0 -1
  479. package/dist/simulation/_internal/source.js +0 -513
  480. package/dist/simulation/_internal/source.js.map +0 -1
  481. package/dist/simulation/index.d.ts +0 -13
  482. package/dist/simulation/index.d.ts.map +0 -1
  483. package/dist/simulation/index.js +0 -12
  484. package/dist/simulation/index.js.map +0 -1
  485. package/dist/simulation/types.d.ts +0 -39
  486. package/dist/simulation/types.d.ts.map +0 -1
  487. package/dist/simulation/types.js +0 -2
  488. package/dist/simulation/types.js.map +0 -1
  489. package/dist/stats.d.ts.map +0 -1
  490. package/dist/stats.js +0 -205
  491. package/dist/stats.js.map +0 -1
  492. package/dist/testing/Faults.d.ts +0 -4
  493. package/dist/testing/Faults.d.ts.map +0 -1
  494. package/dist/testing/Faults.js +0 -7
  495. package/dist/testing/Faults.js.map +0 -1
  496. package/dist/testing/Png.d.ts +0 -3
  497. package/dist/testing/Png.d.ts.map +0 -1
  498. package/dist/testing/Png.js.map +0 -1
  499. package/dist/testing/Wav.d.ts +0 -14
  500. package/dist/testing/Wav.d.ts.map +0 -1
  501. package/dist/testing/Wav.js +0 -37
  502. package/dist/testing/Wav.js.map +0 -1
  503. package/dist/testing/index.d.ts +0 -5
  504. package/dist/testing/index.d.ts.map +0 -1
  505. package/dist/testing/index.js +0 -4
  506. package/dist/testing/index.js.map +0 -1
  507. package/dist/wire.d.ts +0 -7
  508. package/dist/wire.d.ts.map +0 -1
  509. package/dist/wire.generated.d.ts +0 -305
  510. package/dist/wire.generated.d.ts.map +0 -1
  511. package/dist/wire.generated.js +0 -1257
  512. package/dist/wire.generated.js.map +0 -1
  513. package/dist/wire.js +0 -5
  514. package/dist/wire.js.map +0 -1
@@ -0,0 +1,382 @@
1
+ import * as Config from "effect/Config";
2
+ import * as Context from "effect/Context";
3
+ import * as Duration from "effect/Duration";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Redacted from "effect/Redacted";
7
+ import * as Schema from "effect/Schema";
8
+ import * as HttpClient from "effect/unstable/http/HttpClient";
9
+ import * as Recording from "./internal/recording.js";
10
+ import type { ClipReady } from "./Session.js";
11
+ import { ReactorError } from "./ReactorError.js";
12
+ export declare const defaultApiUrl = "https://api.reactor.inc";
13
+ export declare const Track: Schema.Struct<{
14
+ readonly name: Schema.NonEmptyString;
15
+ readonly kind: Schema.Literals<readonly ["audio", "video"]>;
16
+ readonly direction: Schema.Literals<readonly ["recvonly", "sendonly"]>;
17
+ }>;
18
+ export type Track = typeof Track.Type;
19
+ /** A track and the media section a host negotiated for it. */
20
+ export declare const Mapping: Schema.Struct<{
21
+ readonly name: Schema.NonEmptyString;
22
+ readonly kind: Schema.Literals<readonly ["audio", "video"]>;
23
+ readonly direction: Schema.Literals<readonly ["recvonly", "sendonly"]>;
24
+ readonly mid: Schema.String;
25
+ }>;
26
+ export type Mapping = typeof Mapping.Type;
27
+ export declare const Capabilities: Schema.Struct<{
28
+ readonly protocol_version: Schema.NonEmptyString;
29
+ readonly tracks: Schema.$Array<Schema.Struct<{
30
+ readonly name: Schema.NonEmptyString;
31
+ readonly kind: Schema.Literals<readonly ["audio", "video"]>;
32
+ readonly direction: Schema.Literals<readonly ["recvonly", "sendonly"]>;
33
+ }>>;
34
+ readonly commands: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.$Array<Schema.Struct<{
35
+ readonly name: Schema.NonEmptyString;
36
+ readonly description: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.NullOr<Schema.String>>, never, never>;
37
+ readonly schema: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
38
+ }>>>>, Schema.optionalKey<Schema.NullOr<Schema.$Array<Schema.Struct<{
39
+ readonly name: Schema.NonEmptyString;
40
+ readonly description: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.NullOr<Schema.String>>, never, never>;
41
+ readonly schema: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
42
+ }>>>>, never, never>;
43
+ readonly emission_fps: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.Finite>>, Schema.optionalKey<Schema.NullOr<Schema.Finite>>, never, never>;
44
+ }>;
45
+ export type Capabilities = typeof Capabilities.Type;
46
+ export declare const Transport: Schema.Struct<{
47
+ readonly protocol: Schema.NonEmptyString;
48
+ readonly version: Schema.NonEmptyString;
49
+ }>;
50
+ /** A session as the coordinator describes it; unknown states stay as they are. */
51
+ export declare const Descriptor: Schema.Struct<{
52
+ readonly session_id: Schema.NonEmptyString;
53
+ readonly state: Schema.NonEmptyString;
54
+ readonly capabilities: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.Struct<{
55
+ readonly protocol_version: Schema.NonEmptyString;
56
+ readonly tracks: Schema.$Array<Schema.Struct<{
57
+ readonly name: Schema.NonEmptyString;
58
+ readonly kind: Schema.Literals<readonly ["audio", "video"]>;
59
+ readonly direction: Schema.Literals<readonly ["recvonly", "sendonly"]>;
60
+ }>>;
61
+ readonly commands: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.$Array<Schema.Struct<{
62
+ readonly name: Schema.NonEmptyString;
63
+ readonly description: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.NullOr<Schema.String>>, never, never>;
64
+ readonly schema: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
65
+ }>>>>, Schema.optionalKey<Schema.NullOr<Schema.$Array<Schema.Struct<{
66
+ readonly name: Schema.NonEmptyString;
67
+ readonly description: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.NullOr<Schema.String>>, never, never>;
68
+ readonly schema: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
69
+ }>>>>, never, never>;
70
+ readonly emission_fps: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.Finite>>, Schema.optionalKey<Schema.NullOr<Schema.Finite>>, never, never>;
71
+ }>>>, Schema.optionalKey<Schema.NullOr<Schema.Struct<{
72
+ readonly protocol_version: Schema.NonEmptyString;
73
+ readonly tracks: Schema.$Array<Schema.Struct<{
74
+ readonly name: Schema.NonEmptyString;
75
+ readonly kind: Schema.Literals<readonly ["audio", "video"]>;
76
+ readonly direction: Schema.Literals<readonly ["recvonly", "sendonly"]>;
77
+ }>>;
78
+ readonly commands: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.$Array<Schema.Struct<{
79
+ readonly name: Schema.NonEmptyString;
80
+ readonly description: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.NullOr<Schema.String>>, never, never>;
81
+ readonly schema: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
82
+ }>>>>, Schema.optionalKey<Schema.NullOr<Schema.$Array<Schema.Struct<{
83
+ readonly name: Schema.NonEmptyString;
84
+ readonly description: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.NullOr<Schema.String>>, never, never>;
85
+ readonly schema: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
86
+ }>>>>, never, never>;
87
+ readonly emission_fps: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.Finite>>, Schema.optionalKey<Schema.NullOr<Schema.Finite>>, never, never>;
88
+ }>>>, never, never>;
89
+ readonly selected_transport: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.Struct<{
90
+ readonly protocol: Schema.NonEmptyString;
91
+ readonly version: Schema.NonEmptyString;
92
+ }>>>, Schema.optionalKey<Schema.NullOr<Schema.Struct<{
93
+ readonly protocol: Schema.NonEmptyString;
94
+ readonly version: Schema.NonEmptyString;
95
+ }>>>, never, never>;
96
+ }>;
97
+ export type Descriptor = typeof Descriptor.Type;
98
+ /**
99
+ * Whether a session state is final. Only `CLOSED` is: hosted Reactor reads
100
+ * `INACTIVE` for a session whose last connection dropped, and that session still
101
+ * runs (and bills) for the documented 30 s reconnect window. A paid run adopted
102
+ * one 9 s after its owner was killed, then ended it with a DELETE that
103
+ * answered 200 and moved it to `CLOSED`.
104
+ */
105
+ export declare const isTerminal: (state: string) => boolean;
106
+ export declare const IceServer: Schema.Struct<{
107
+ readonly urls: Schema.$Array<Schema.NonEmptyString>;
108
+ readonly username: Schema.optionalKey<Schema.String>;
109
+ readonly credential: Schema.optionalKey<Schema.String>;
110
+ }>;
111
+ export type IceServer = typeof IceServer.Type;
112
+ /** The coordinator's ICE server list, as it sends it. */
113
+ export declare const IceServersReply: Schema.Struct<{
114
+ readonly ice_servers: Schema.$Array<Schema.Struct<{
115
+ readonly uris: Schema.$Array<Schema.NonEmptyString>;
116
+ readonly credentials: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.Struct<{
117
+ readonly username: Schema.String;
118
+ readonly password: Schema.String;
119
+ }>>>, Schema.optionalKey<Schema.NullOr<Schema.Struct<{
120
+ readonly username: Schema.String;
121
+ readonly password: Schema.String;
122
+ }>>>, never, never>;
123
+ }>>;
124
+ }>;
125
+ export declare const IceCandidate: Schema.Struct<{
126
+ readonly candidate: Schema.String;
127
+ readonly sdp_mid: Schema.optionalKey<Schema.String>;
128
+ readonly sdp_mline_index: Schema.optionalKey<Schema.Int>;
129
+ }>;
130
+ export type IceCandidate = typeof IceCandidate.Type;
131
+ export declare const Registered: Schema.Struct<{
132
+ readonly connection_id: Schema.Int;
133
+ }>;
134
+ export declare const SdpAnswer: Schema.Struct<{
135
+ readonly sdp_answer: Schema.NonEmptyString;
136
+ readonly connection_id: Schema.decodeTo<Schema.optionalKey<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.NullOr<Schema.Int>>, never, never>;
137
+ }>;
138
+ export type SdpAnswer = typeof SdpAnswer.Type;
139
+ export declare const UploadSlot: Schema.Struct<{
140
+ readonly presigned_id: Schema.NonEmptyString;
141
+ readonly presigned_url: Schema.NonEmptyString;
142
+ readonly path: Schema.String;
143
+ }>;
144
+ export type UploadSlot = typeof UploadSlot.Type;
145
+ /** A create reply whose session id is valid; the rest is decoded by `describe`. */
146
+ export interface Allocation {
147
+ readonly sessionId: string;
148
+ readonly reply: unknown;
149
+ }
150
+ /**
151
+ * A remote termination verdict. A DELETE response alone is never proof: an
152
+ * independent read confirms the session is gone or terminal.
153
+ */
154
+ export declare const Termination: Schema.Struct<{
155
+ readonly attempted: Schema.Boolean;
156
+ readonly responseReceived: Schema.Boolean;
157
+ readonly confirmed: Schema.Boolean;
158
+ readonly evidence: Schema.NullOr<Schema.Literals<readonly ["absent", "terminal"]>>;
159
+ /** DELETE status; null means no response arrived. */
160
+ readonly deleteStatus: Schema.NullOr<Schema.Int>;
161
+ /** State from the independent confirmation, when it was valid. */
162
+ readonly state: Schema.NullOr<Schema.String>;
163
+ readonly error: Schema.optionalKey<Schema.Struct<{
164
+ readonly _tag: Schema.String;
165
+ readonly reason: Schema.String;
166
+ readonly message: Schema.String;
167
+ readonly operation: Schema.optionalKey<Schema.String>;
168
+ readonly requestId: Schema.optionalKey<Schema.String>;
169
+ readonly sessionId: Schema.optionalKey<Schema.String>;
170
+ readonly generation: Schema.optionalKey<Schema.String>;
171
+ readonly outcome: Schema.optionalKey<Schema.Literals<readonly ["not-submitted", "unknown", "replied"]>>;
172
+ }>>;
173
+ }>;
174
+ export type Termination = typeof Termination.Type;
175
+ export declare const notTerminated: Termination;
176
+ /** A termination verdict as span attributes: a successful terminate says nothing about billing. */
177
+ export declare const terminationAttributes: (termination: Termination) => Record<string, unknown>;
178
+ /**
179
+ * A model's price. Reactor's billing page says it bills by the session-minute,
180
+ * while its pricing states some models' rates per second; `per` is the unit
181
+ * the pricing states, and callers decide how time rounds.
182
+ */
183
+ export interface Rate {
184
+ readonly creditsPerDollar: number;
185
+ readonly creditsPerSecond: number;
186
+ readonly per: "second" | "minute";
187
+ }
188
+ /**
189
+ * The rate of `model` in `pricing`, by its connect slug or bare name: the
190
+ * catalog lists `h3-reference-to-video-turbo-realtime` where sessions take
191
+ * `reactor/h3-reference-to-video-turbo-realtime`. Only the settings are read
192
+ * strictly, so an entry this client cannot price never stops it pricing another.
193
+ */
194
+ export declare const modelRate: (pricing: unknown, model: string) => Effect.Effect<{
195
+ creditsPerDollar: number;
196
+ creditsPerSecond: number;
197
+ per: "minute" | "second";
198
+ }, ReactorError, never>;
199
+ export interface TokenOptions {
200
+ /** The API key; the service's configured key when omitted. */
201
+ readonly apiKey?: Redacted.Redacted<string> | undefined;
202
+ readonly modelName: string;
203
+ /**
204
+ * Caps each session the token creates, from one second to a day, or
205
+ * `"unlimited"` for Reactor's default of no cap. An uncapped session bills
206
+ * until something terminates it, so it is never a default here. A token that
207
+ * creates no session, one only `bind`s, needs none.
208
+ */
209
+ readonly maxSessionDuration?: Duration.Input | "unlimited" | undefined;
210
+ /**
211
+ * Sessions the token may create, 1 to 500; 1 by default. With `bind`,
212
+ * Reactor counts the bound sessions in it and by default leaves no room to create.
213
+ */
214
+ readonly maxSessions?: number | undefined;
215
+ /** Open sessions of this account the token acts on besides those it creates. */
216
+ readonly bind?: ReadonlyArray<string> | undefined;
217
+ /**
218
+ * How long the token stays valid; Reactor's default of an hour when omitted.
219
+ * Reactor clamps it to six hours without saying so: read `expiresAt`.
220
+ */
221
+ readonly expiresAfter?: Duration.Input | undefined;
222
+ }
223
+ /** What Reactor says a token grants, from its echo of the request; undefined where it says nothing. */
224
+ export interface Granted {
225
+ readonly models: ReadonlyArray<string>;
226
+ readonly maxSessions: number | undefined;
227
+ readonly maxSessionSeconds: number | "unlimited" | undefined;
228
+ /** Open sessions the token acts on besides those it creates. */
229
+ readonly bound: ReadonlyArray<string>;
230
+ }
231
+ export interface TokenGrant {
232
+ readonly jwt: Redacted.Redacted<string>;
233
+ /** When the token expires, in seconds since the epoch, as Reactor set it. */
234
+ readonly expiresAt: number;
235
+ /**
236
+ * The cap on each session the token creates, in seconds: as asked, or the
237
+ * narrower cap Reactor's echo states; undefined for none.
238
+ */
239
+ readonly maxSessionSeconds: number | undefined;
240
+ /** Reactor's echo of the grant, when its reply carries one; a grant wider than asked is refused. */
241
+ readonly granted?: Granted | undefined;
242
+ }
243
+ /**
244
+ * How an application gives sessions their tokens without handing over its API
245
+ * key. A session-scoped token acts only on the sessions it created or was bound
246
+ * to, and lives at most six hours, while a session can run a day or more; so a
247
+ * session starts on a token from `create` and, before that expires, carries on
248
+ * with one from `bind` for its own id.
249
+ */
250
+ export interface Tokens {
251
+ /** A token that may create one session. */
252
+ readonly create: Effect.Effect<TokenGrant, ReactorError>;
253
+ /** A fresh token bound to an open session. */
254
+ readonly bind: (sessionId: string) => Effect.Effect<TokenGrant, ReactorError>;
255
+ }
256
+ /**
257
+ * Tokens that are never refreshed, for a session shorter than its token: the
258
+ * same `token` creates the session and serves its every later call, and the
259
+ * session's calls fail once it expires.
260
+ */
261
+ export declare const fixedTokens: (token: TokenGrant) => Tokens;
262
+ export declare const Inspection: Schema.Struct<{
263
+ readonly observedAt: Schema.Finite;
264
+ readonly state: Schema.String;
265
+ readonly hasCapabilities: Schema.Boolean;
266
+ readonly selectedTransport: Schema.NullOr<Schema.Struct<{
267
+ readonly protocol: Schema.NonEmptyString;
268
+ readonly version: Schema.NonEmptyString;
269
+ }>>;
270
+ readonly cluster: Schema.NullOr<Schema.String>;
271
+ readonly zone: Schema.NullOr<Schema.String>;
272
+ readonly serverVersion: Schema.NullOr<Schema.String>;
273
+ }>;
274
+ export type Inspection = typeof Inspection.Type;
275
+ export type Segment = Recording.Segment;
276
+ export type DownloadedClip = Recording.DownloadedClip;
277
+ export type DownloadOptions = Recording.DownloadOptions;
278
+ export declare const parsePlaylist: typeof Recording.parsePlaylist;
279
+ /** The coordinator calls one session makes, authorized by its token. */
280
+ export interface Signaling {
281
+ /** Resolves once the reply names the allocated session; `describe` decodes the rest. */
282
+ readonly create: (model: {
283
+ readonly name: string;
284
+ readonly version?: string | undefined;
285
+ }, extraArgs?: Schema.Json) => Effect.Effect<Allocation, ReactorError>;
286
+ /** A reply that cannot describe its session still names one its owner must terminate. */
287
+ readonly describe: (allocation: Allocation) => Effect.Effect<Descriptor, ReactorError>;
288
+ readonly read: (sessionId: string) => Effect.Effect<Descriptor, ReactorError>;
289
+ /** Polls until the session publishes capabilities and a transport, or ends. */
290
+ readonly ready: (sessionId: string, initial?: Descriptor) => Effect.Effect<Descriptor, ReactorError>;
291
+ readonly iceServers: (sessionId: string) => Effect.Effect<ReadonlyArray<IceServer>, ReactorError>;
292
+ readonly register: (sessionId: string) => Effect.Effect<number, ReactorError>;
293
+ readonly offer: (sessionId: string, connectionId: number, sdp: string, mapping: ReadonlyArray<Mapping>, replace: boolean) => Effect.Effect<void, ReactorError>;
294
+ /** Polls while the answer is pending (202); the caller's deadline bounds it. */
295
+ readonly answer: (sessionId: string, connectionId: number) => Effect.Effect<SdpAnswer, ReactorError>;
296
+ readonly ice: (sessionId: string, connectionId: number, candidates: ReadonlyArray<IceCandidate>, isFinal: boolean) => Effect.Effect<void, ReactorError>;
297
+ readonly allocateUpload: (sessionId: string, name: string, mimeType: string, size: number) => Effect.Effect<UploadSlot, ReactorError>;
298
+ /** Sends no credential: the presigned URL is its own authority. */
299
+ readonly putUpload: (slot: UploadSlot, bytes: Uint8Array<ArrayBuffer>, mimeType: string) => Effect.Effect<void, ReactorError>;
300
+ readonly terminate: (sessionId: string) => Effect.Effect<Termination>;
301
+ /** Polls a recording's playlist, then fetches and joins its segments within a deadline. */
302
+ readonly downloadClip: (clip: ClipReady, options?: DownloadOptions) => Effect.Effect<DownloadedClip, ReactorError>;
303
+ }
304
+ export interface Options {
305
+ readonly apiUrl?: string | undefined;
306
+ /**
307
+ * The API key `mintToken` uses when its options name none. Without a
308
+ * `credential` it also authorizes `inspect`, `terminate` and `downloadClip`,
309
+ * since the key may act on any session of its account.
310
+ */
311
+ readonly apiKey?: Redacted.Redacted<string> | undefined;
312
+ /**
313
+ * The session token that authorizes `inspect`, `terminate` and
314
+ * `downloadClip`, in place of the API key.
315
+ */
316
+ readonly credential?: Effect.Effect<Redacted.Redacted<string>, ReactorError> | undefined;
317
+ }
318
+ declare const Coordinator_base: Context.ServiceClass<Coordinator, "reactor-effect-client/Coordinator", {
319
+ readonly apiUrl: string;
320
+ /** The pricing catalog, as the provider publishes it. */
321
+ readonly pricing: Effect.Effect<Schema.Json, ReactorError>;
322
+ readonly mintToken: (options: TokenOptions) => Effect.Effect<TokenGrant, ReactorError>;
323
+ /**
324
+ * `Tokens` minted with the API key: each `create` token may create one
325
+ * session capped as `maxSessionDuration` says, and each `bind` token acts
326
+ * on the one session it names.
327
+ */
328
+ readonly tokens: (options: Omit<TokenOptions, "maxSessions" | "bind"> & {
329
+ readonly maxSessionDuration: Duration.Input | "unlimited";
330
+ }) => Tokens;
331
+ readonly inspect: (sessionId: string) => Effect.Effect<Inspection, ReactorError>;
332
+ /** Uncertainty stays in the report; supervisors choose their own failure policy. */
333
+ readonly terminate: (sessionId: string) => Effect.Effect<Termination>;
334
+ readonly downloadClip: (clip: ClipReady, options?: DownloadOptions) => Effect.Effect<DownloadedClip, ReactorError>;
335
+ /**
336
+ * The calls one session makes, each with the token `credential` then gives.
337
+ * It is the session's own seam, not an application's: its `create`
338
+ * allocates a session that nothing owns, closes or reports on, so allocate
339
+ * with `Reactor.create`.
340
+ */
341
+ readonly signaling: (credential: Credential) => Signaling;
342
+ }>;
343
+ export declare class Coordinator extends Coordinator_base {
344
+ }
345
+ /** A session's token, when it has one; failing or late, the request is never sent. */
346
+ type Credential = Effect.Effect<Redacted.Redacted<string> | undefined, ReactorError>;
347
+ /** A Coordinator over the current `HttpClient`. No request runs while it is built. */
348
+ export declare const make: (options?: Options | undefined) => Effect.Effect<{
349
+ readonly apiUrl: string;
350
+ /** The pricing catalog, as the provider publishes it. */
351
+ readonly pricing: Effect.Effect<Schema.Json, ReactorError>;
352
+ readonly mintToken: (options: TokenOptions) => Effect.Effect<TokenGrant, ReactorError>;
353
+ /**
354
+ * `Tokens` minted with the API key: each `create` token may create one
355
+ * session capped as `maxSessionDuration` says, and each `bind` token acts
356
+ * on the one session it names.
357
+ */
358
+ readonly tokens: (options: Omit<TokenOptions, "maxSessions" | "bind"> & {
359
+ readonly maxSessionDuration: Duration.Input | "unlimited";
360
+ }) => Tokens;
361
+ readonly inspect: (sessionId: string) => Effect.Effect<Inspection, ReactorError>;
362
+ /** Uncertainty stays in the report; supervisors choose their own failure policy. */
363
+ readonly terminate: (sessionId: string) => Effect.Effect<Termination>;
364
+ readonly downloadClip: (clip: ClipReady, options?: DownloadOptions) => Effect.Effect<DownloadedClip, ReactorError>;
365
+ /**
366
+ * The calls one session makes, each with the token `credential` then gives.
367
+ * It is the session's own seam, not an application's: its `create`
368
+ * allocates a session that nothing owns, closes or reports on, so allocate
369
+ * with `Reactor.create`.
370
+ */
371
+ readonly signaling: (credential: Credential) => Signaling;
372
+ }, ReactorError, HttpClient.HttpClient>;
373
+ /** A Coordinator service over the application's `HttpClient`. */
374
+ export declare const layer: (options?: Options) => Layer.Layer<Coordinator, ReactorError, HttpClient.HttpClient>;
375
+ /**
376
+ * A Coordinator configured from the environment: `REACTOR_API_URL` (optional)
377
+ * and `REACTOR_API_KEY` (optional, for `mintToken`, `inspect`, `terminate`
378
+ * and `downloadClip`).
379
+ */
380
+ export declare const layerConfig: Layer.Layer<Coordinator, ReactorError | Config.ConfigError, HttpClient.HttpClient>;
381
+ export {};
382
+ //# sourceMappingURL=Coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Coordinator.d.ts","sourceRoot":"","sources":["../src/Coordinator.ts"],"names":[],"mappings":"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"}