@misofm/platform 0.26.2 → 0.28.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 (428) hide show
  1. package/README.md +309 -204
  2. package/dist/Miso.d.ts +403 -0
  3. package/dist/Miso.d.ts.map +1 -0
  4. package/dist/Miso.js +455 -0
  5. package/dist/Miso.js.map +1 -0
  6. package/dist/auth.d.ts +11 -1
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +16 -3
  9. package/dist/auth.js.map +1 -1
  10. package/dist/catalog.d.ts +8 -5
  11. package/dist/catalog.d.ts.map +1 -1
  12. package/dist/catalog.js +36 -19
  13. package/dist/catalog.js.map +1 -1
  14. package/dist/client.d.ts +52 -443
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +58 -775
  17. package/dist/client.js.map +1 -1
  18. package/dist/contracts/composition_credits/composition_credits.d.ts +38 -48
  19. package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -1
  20. package/dist/contracts/composition_credits/composition_credits.js +20 -4
  21. package/dist/contracts/composition_credits/composition_credits.js.map +1 -1
  22. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +64 -1
  23. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts.map +1 -1
  24. package/dist/contracts/composition_routed_stake/composition_routed_stake.js +66 -1
  25. package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -1
  26. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +52 -4
  27. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -1
  28. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +52 -4
  29. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -1
  30. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts +63 -1
  31. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts.map +1 -1
  32. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js +63 -1
  33. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js.map +1 -1
  34. package/dist/contracts/genre/genre.d.ts +10 -1
  35. package/dist/contracts/genre/genre.d.ts.map +1 -1
  36. package/dist/contracts/genre/genre.js +8 -1
  37. package/dist/contracts/genre/genre.js.map +1 -1
  38. package/dist/contracts/miso_pay/deps/std/type_name.d.ts.map +1 -0
  39. package/dist/contracts/miso_pay/deps/std/type_name.js.map +1 -0
  40. package/dist/contracts/miso_pay/pay.d.ts +209 -0
  41. package/dist/contracts/miso_pay/pay.d.ts.map +1 -0
  42. package/dist/contracts/miso_pay/pay.js +195 -0
  43. package/dist/contracts/miso_pay/pay.js.map +1 -0
  44. package/dist/contracts/party_cta/party_cta.d.ts +49 -3
  45. package/dist/contracts/party_cta/party_cta.d.ts.map +1 -1
  46. package/dist/contracts/party_cta/party_cta.js +27 -5
  47. package/dist/contracts/party_cta/party_cta.js.map +1 -1
  48. package/dist/contracts/party_genre/party_genre.d.ts +25 -0
  49. package/dist/contracts/party_genre/party_genre.d.ts.map +1 -1
  50. package/dist/contracts/party_genre/party_genre.js +14 -3
  51. package/dist/contracts/party_genre/party_genre.js.map +1 -1
  52. package/dist/contracts/party_media/party_media.d.ts +19 -3
  53. package/dist/contracts/party_media/party_media.d.ts.map +1 -1
  54. package/dist/contracts/party_media/party_media.js +20 -4
  55. package/dist/contracts/party_media/party_media.js.map +1 -1
  56. package/dist/contracts/party_platform_link/party_platform_link.d.ts +15 -7
  57. package/dist/contracts/party_platform_link/party_platform_link.d.ts.map +1 -1
  58. package/dist/contracts/party_platform_link/party_platform_link.js +15 -7
  59. package/dist/contracts/party_platform_link/party_platform_link.js.map +1 -1
  60. package/dist/contracts/party_profile/party_profile.d.ts +63 -8
  61. package/dist/contracts/party_profile/party_profile.d.ts.map +1 -1
  62. package/dist/contracts/party_profile/party_profile.js +33 -8
  63. package/dist/contracts/party_profile/party_profile.js.map +1 -1
  64. package/dist/contracts/party_roles/party_roles.d.ts +28 -3
  65. package/dist/contracts/party_roles/party_roles.d.ts.map +1 -1
  66. package/dist/contracts/party_roles/party_roles.js +19 -4
  67. package/dist/contracts/party_roles/party_roles.js.map +1 -1
  68. package/dist/contracts/party_tags/party_tags.d.ts +23 -3
  69. package/dist/contracts/party_tags/party_tags.d.ts.map +1 -1
  70. package/dist/contracts/party_tags/party_tags.js +16 -4
  71. package/dist/contracts/party_tags/party_tags.js.map +1 -1
  72. package/dist/contracts/party_wallet/party_wallet.d.ts +4 -1
  73. package/dist/contracts/party_wallet/party_wallet.d.ts.map +1 -1
  74. package/dist/contracts/party_wallet/party_wallet.js +2 -1
  75. package/dist/contracts/party_wallet/party_wallet.js.map +1 -1
  76. package/dist/contracts/platform_link/platform_link.d.ts +207 -0
  77. package/dist/contracts/platform_link/platform_link.d.ts.map +1 -0
  78. package/dist/contracts/platform_link/platform_link.js +209 -0
  79. package/dist/contracts/platform_link/platform_link.js.map +1 -0
  80. package/dist/contracts/record/pressing.d.ts +53 -7
  81. package/dist/contracts/record/pressing.d.ts.map +1 -1
  82. package/dist/contracts/record/pressing.js +50 -4
  83. package/dist/contracts/record/pressing.js.map +1 -1
  84. package/dist/contracts/record/record.d.ts +14 -0
  85. package/dist/contracts/record/record.d.ts.map +1 -1
  86. package/dist/contracts/record/record.js +15 -1
  87. package/dist/contracts/record/record.js.map +1 -1
  88. package/dist/contracts/record_shop/listing.d.ts +80 -35
  89. package/dist/contracts/record_shop/listing.d.ts.map +1 -1
  90. package/dist/contracts/record_shop/listing.js +76 -13
  91. package/dist/contracts/record_shop/listing.js.map +1 -1
  92. package/dist/contracts/recording_advisory/recording_advisory.d.ts +15 -15
  93. package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -1
  94. package/dist/contracts/recording_advisory/recording_advisory.js +15 -8
  95. package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -1
  96. package/dist/contracts/recording_credits/recording_credits.d.ts +95 -1350
  97. package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -1
  98. package/dist/contracts/recording_credits/recording_credits.js +63 -12
  99. package/dist/contracts/recording_credits/recording_credits.js.map +1 -1
  100. package/dist/contracts/recording_engine_session/recording_engine_session.d.ts +30 -49
  101. package/dist/contracts/recording_engine_session/recording_engine_session.d.ts.map +1 -1
  102. package/dist/contracts/recording_engine_session/recording_engine_session.js +19 -4
  103. package/dist/contracts/recording_engine_session/recording_engine_session.js.map +1 -1
  104. package/dist/contracts/recording_genre/recording_genre.d.ts +67 -9
  105. package/dist/contracts/recording_genre/recording_genre.d.ts.map +1 -1
  106. package/dist/contracts/recording_genre/recording_genre.js +53 -9
  107. package/dist/contracts/recording_genre/recording_genre.js.map +1 -1
  108. package/dist/contracts/recording_language/recording_language.d.ts +29 -5
  109. package/dist/contracts/recording_language/recording_language.d.ts.map +1 -1
  110. package/dist/contracts/recording_language/recording_language.js +18 -5
  111. package/dist/contracts/recording_language/recording_language.js.map +1 -1
  112. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +25 -15
  113. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -1
  114. package/dist/contracts/recording_master_reference/recording_master_reference.js +18 -5
  115. package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -1
  116. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +55 -4
  117. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -1
  118. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +55 -4
  119. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -1
  120. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts +66 -1
  121. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts.map +1 -1
  122. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js +66 -1
  123. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js.map +1 -1
  124. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts +12 -9
  125. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts.map +1 -1
  126. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js +11 -4
  127. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js.map +1 -1
  128. package/dist/contracts/release_cover_art/release_cover_art.d.ts +168 -74
  129. package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -1
  130. package/dist/contracts/release_cover_art/release_cover_art.js +126 -10
  131. package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -1
  132. package/dist/contracts/release_credits/release_credits.d.ts +24 -28
  133. package/dist/contracts/release_credits/release_credits.d.ts.map +1 -1
  134. package/dist/contracts/release_credits/release_credits.js +18 -4
  135. package/dist/contracts/release_credits/release_credits.js.map +1 -1
  136. package/dist/contracts/release_description/release_description.d.ts +16 -5
  137. package/dist/contracts/release_description/release_description.d.ts.map +1 -1
  138. package/dist/contracts/release_description/release_description.js +9 -4
  139. package/dist/contracts/release_description/release_description.js.map +1 -1
  140. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +130 -160
  141. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -1
  142. package/dist/contracts/release_dsp_link/release_dsp_link.js +74 -19
  143. package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -1
  144. package/dist/contracts/release_genre/release_genre.d.ts +66 -11
  145. package/dist/contracts/release_genre/release_genre.d.ts.map +1 -1
  146. package/dist/contracts/release_genre/release_genre.js +52 -11
  147. package/dist/contracts/release_genre/release_genre.js.map +1 -1
  148. package/dist/contracts/release_kind/release_kind.d.ts +28 -5
  149. package/dist/contracts/release_kind/release_kind.d.ts.map +1 -1
  150. package/dist/contracts/release_kind/release_kind.js +19 -4
  151. package/dist/contracts/release_kind/release_kind.js.map +1 -1
  152. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts +17 -0
  153. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts.map +1 -1
  154. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js +15 -0
  155. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -1
  156. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts +37 -1
  157. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts.map +1 -1
  158. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js +37 -1
  159. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js.map +1 -1
  160. package/dist/contracts/routed_stake/routed_stake.d.ts +78 -6
  161. package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -1
  162. package/dist/contracts/routed_stake/routed_stake.js +79 -7
  163. package/dist/contracts/routed_stake/routed_stake.js.map +1 -1
  164. package/dist/contracts/royalty_pool/pool.d.ts +117 -27
  165. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -1
  166. package/dist/contracts/royalty_pool/pool.js +117 -28
  167. package/dist/contracts/royalty_pool/pool.js.map +1 -1
  168. package/dist/contracts/royalty_pool/stake.d.ts +3 -0
  169. package/dist/contracts/royalty_pool/stake.d.ts.map +1 -1
  170. package/dist/contracts/royalty_pool/stake.js +5 -2
  171. package/dist/contracts/royalty_pool/stake.js.map +1 -1
  172. package/dist/contracts/share/share.d.ts +80 -0
  173. package/dist/contracts/share/share.d.ts.map +1 -0
  174. package/dist/contracts/share/share.js +72 -0
  175. package/dist/contracts/share/share.js.map +1 -0
  176. package/dist/contracts/vault/vault.d.ts +51 -0
  177. package/dist/contracts/vault/vault.d.ts.map +1 -1
  178. package/dist/contracts/vault/vault.js +55 -4
  179. package/dist/contracts/vault/vault.js.map +1 -1
  180. package/dist/contracts.d.ts +60 -0
  181. package/dist/contracts.d.ts.map +1 -1
  182. package/dist/contracts.js +17 -0
  183. package/dist/contracts.js.map +1 -1
  184. package/dist/cover.d.ts +5 -6
  185. package/dist/cover.d.ts.map +1 -1
  186. package/dist/cover.js +10 -10
  187. package/dist/cover.js.map +1 -1
  188. package/dist/credits.d.ts +12 -13
  189. package/dist/credits.d.ts.map +1 -1
  190. package/dist/credits.js +16 -10
  191. package/dist/credits.js.map +1 -1
  192. package/dist/deployments.d.ts +3 -3
  193. package/dist/deployments.d.ts.map +1 -1
  194. package/dist/deployments.js +2 -3
  195. package/dist/deployments.js.map +1 -1
  196. package/dist/errors.d.ts +32 -9
  197. package/dist/errors.d.ts.map +1 -1
  198. package/dist/errors.js +52 -16
  199. package/dist/errors.js.map +1 -1
  200. package/dist/events.d.ts +1687 -835
  201. package/dist/events.d.ts.map +1 -1
  202. package/dist/events.js +258 -39
  203. package/dist/events.js.map +1 -1
  204. package/dist/genre.d.ts +11 -12
  205. package/dist/genre.d.ts.map +1 -1
  206. package/dist/genre.js +5 -3
  207. package/dist/genre.js.map +1 -1
  208. package/dist/index.d.ts +3 -3
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +7 -2
  211. package/dist/index.js.map +1 -1
  212. package/dist/packages.d.ts +1047 -1695
  213. package/dist/packages.d.ts.map +1 -1
  214. package/dist/party/client.d.ts +113 -296
  215. package/dist/party/client.d.ts.map +1 -1
  216. package/dist/party/client.js +93 -178
  217. package/dist/party/client.js.map +1 -1
  218. package/dist/party/extensions/ctas.d.ts +3 -3
  219. package/dist/party/extensions/ctas.d.ts.map +1 -1
  220. package/dist/party/extensions/genres.d.ts +4 -4
  221. package/dist/party/extensions/genres.d.ts.map +1 -1
  222. package/dist/party/extensions/links.d.ts +5 -5
  223. package/dist/party/extensions/links.d.ts.map +1 -1
  224. package/dist/party/extensions/links.js.map +1 -1
  225. package/dist/party/extensions/media.d.ts +3 -3
  226. package/dist/party/extensions/media.d.ts.map +1 -1
  227. package/dist/party/extensions/profile.d.ts +3 -3
  228. package/dist/party/extensions/profile.d.ts.map +1 -1
  229. package/dist/party/extensions/roles.d.ts +4 -4
  230. package/dist/party/extensions/roles.d.ts.map +1 -1
  231. package/dist/party/extensions/roles.js.map +1 -1
  232. package/dist/party/extensions/tags.d.ts +4 -4
  233. package/dist/party/extensions/tags.d.ts.map +1 -1
  234. package/dist/party/index.d.ts +1 -1
  235. package/dist/party/index.d.ts.map +1 -1
  236. package/dist/party/index.js.map +1 -1
  237. package/dist/party/queries.d.ts +8 -8
  238. package/dist/party/queries.d.ts.map +1 -1
  239. package/dist/party/queries.js +83 -56
  240. package/dist/party/queries.js.map +1 -1
  241. package/dist/pressing.d.ts +13 -15
  242. package/dist/pressing.d.ts.map +1 -1
  243. package/dist/pressing.js +99 -29
  244. package/dist/pressing.js.map +1 -1
  245. package/dist/publication.d.ts +13 -6
  246. package/dist/publication.d.ts.map +1 -1
  247. package/dist/publication.js +26 -21
  248. package/dist/publication.js.map +1 -1
  249. package/dist/queries.js +3 -3
  250. package/dist/queries.js.map +1 -1
  251. package/dist/read/artist.d.ts +4 -3
  252. package/dist/read/artist.d.ts.map +1 -1
  253. package/dist/read/artist.js +24 -8
  254. package/dist/read/artist.js.map +1 -1
  255. package/dist/read/catalog.d.ts +17 -16
  256. package/dist/read/catalog.d.ts.map +1 -1
  257. package/dist/read/catalog.js +25 -11
  258. package/dist/read/catalog.js.map +1 -1
  259. package/dist/read/client.d.ts +41 -20
  260. package/dist/read/client.d.ts.map +1 -1
  261. package/dist/read/client.js +20 -12
  262. package/dist/read/client.js.map +1 -1
  263. package/dist/read/config.d.ts +27 -3
  264. package/dist/read/config.d.ts.map +1 -1
  265. package/dist/read/config.js +42 -24
  266. package/dist/read/config.js.map +1 -1
  267. package/dist/read/genres.d.ts +8 -3
  268. package/dist/read/genres.d.ts.map +1 -1
  269. package/dist/read/genres.js +23 -17
  270. package/dist/read/genres.js.map +1 -1
  271. package/dist/read/index.d.ts +3 -1
  272. package/dist/read/index.d.ts.map +1 -1
  273. package/dist/read/index.js +9 -6
  274. package/dist/read/index.js.map +1 -1
  275. package/dist/read/receipts.d.ts +5 -4
  276. package/dist/read/receipts.d.ts.map +1 -1
  277. package/dist/read/receipts.js +94 -46
  278. package/dist/read/receipts.js.map +1 -1
  279. package/dist/read/royalties.d.ts +25 -0
  280. package/dist/read/royalties.d.ts.map +1 -0
  281. package/dist/read/royalties.js +168 -0
  282. package/dist/read/royalties.js.map +1 -0
  283. package/dist/read/types.d.ts +27 -0
  284. package/dist/read/types.d.ts.map +1 -1
  285. package/dist/read/wallet.d.ts +23 -12
  286. package/dist/read/wallet.d.ts.map +1 -1
  287. package/dist/read/wallet.js +158 -177
  288. package/dist/read/wallet.js.map +1 -1
  289. package/dist/read/works.d.ts +6 -6
  290. package/dist/read/works.d.ts.map +1 -1
  291. package/dist/read/works.js +40 -26
  292. package/dist/read/works.js.map +1 -1
  293. package/dist/recording-extensions.d.ts +15 -16
  294. package/dist/recording-extensions.d.ts.map +1 -1
  295. package/dist/recording-extensions.js +12 -8
  296. package/dist/recording-extensions.js.map +1 -1
  297. package/dist/release-extensions.d.ts +5 -6
  298. package/dist/release-extensions.d.ts.map +1 -1
  299. package/dist/release-extensions.js +3 -2
  300. package/dist/release-extensions.js.map +1 -1
  301. package/dist/release-graph.d.ts +2 -2
  302. package/dist/release-graph.d.ts.map +1 -1
  303. package/dist/release-graph.js.map +1 -1
  304. package/dist/royalty.d.ts +4 -4
  305. package/dist/royalty.d.ts.map +1 -1
  306. package/dist/royalty.js +16 -7
  307. package/dist/royalty.js.map +1 -1
  308. package/dist/share.d.ts +58 -24
  309. package/dist/share.d.ts.map +1 -1
  310. package/dist/share.js +167 -92
  311. package/dist/share.js.map +1 -1
  312. package/dist/transactions.d.ts +15 -6
  313. package/dist/transactions.d.ts.map +1 -1
  314. package/dist/transactions.js +1 -0
  315. package/dist/transactions.js.map +1 -1
  316. package/dist/vault.d.ts +13 -3
  317. package/dist/vault.d.ts.map +1 -1
  318. package/dist/vault.js +22 -16
  319. package/dist/vault.js.map +1 -1
  320. package/package.json +9 -8
  321. package/src/Miso.ts +951 -0
  322. package/src/auth.ts +16 -3
  323. package/src/catalog.ts +58 -25
  324. package/src/client.ts +98 -1359
  325. package/src/contracts/composition_credits/composition_credits.ts +20 -4
  326. package/src/contracts/composition_routed_stake/composition_routed_stake.ts +67 -1
  327. package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +53 -4
  328. package/src/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts +64 -1
  329. package/src/contracts/genre/genre.ts +8 -1
  330. package/src/contracts/miso_pay/pay.ts +356 -0
  331. package/src/contracts/party_cta/party_cta.ts +27 -5
  332. package/src/contracts/party_genre/party_genre.ts +14 -3
  333. package/src/contracts/party_media/party_media.ts +20 -4
  334. package/src/contracts/party_platform_link/party_platform_link.ts +15 -7
  335. package/src/contracts/party_profile/party_profile.ts +33 -8
  336. package/src/contracts/party_roles/party_roles.ts +19 -4
  337. package/src/contracts/party_tags/party_tags.ts +16 -4
  338. package/src/contracts/party_wallet/party_wallet.ts +2 -1
  339. package/src/contracts/platform_link/platform_link.ts +322 -0
  340. package/src/contracts/record/pressing.ts +50 -4
  341. package/src/contracts/record/record.ts +15 -1
  342. package/src/contracts/record_shop/listing.ts +76 -13
  343. package/src/contracts/recording_advisory/recording_advisory.ts +15 -8
  344. package/src/contracts/recording_credits/recording_credits.ts +63 -12
  345. package/src/contracts/recording_engine_session/recording_engine_session.ts +19 -4
  346. package/src/contracts/recording_genre/recording_genre.ts +53 -9
  347. package/src/contracts/recording_language/recording_language.ts +18 -5
  348. package/src/contracts/recording_master_reference/recording_master_reference.ts +18 -5
  349. package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +56 -4
  350. package/src/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts +67 -1
  351. package/src/contracts/recording_streaming_transcode/recording_streaming_transcode.ts +11 -4
  352. package/src/contracts/release_cover_art/release_cover_art.ts +126 -10
  353. package/src/contracts/release_credits/release_credits.ts +18 -4
  354. package/src/contracts/release_description/release_description.ts +9 -4
  355. package/src/contracts/release_dsp_link/release_dsp_link.ts +74 -19
  356. package/src/contracts/release_genre/release_genre.ts +52 -11
  357. package/src/contracts/release_kind/release_kind.ts +19 -4
  358. package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +15 -0
  359. package/src/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts +38 -1
  360. package/src/contracts/routed_stake/routed_stake.ts +79 -7
  361. package/src/contracts/royalty_pool/pool.ts +140 -38
  362. package/src/contracts/royalty_pool/stake.ts +5 -2
  363. package/src/contracts/share/share.ts +97 -0
  364. package/src/contracts/vault/vault.ts +55 -4
  365. package/src/contracts.ts +18 -0
  366. package/src/cover.ts +14 -15
  367. package/src/credits.ts +27 -22
  368. package/src/deployments.ts +3 -4
  369. package/src/errors.ts +77 -34
  370. package/src/events.ts +260 -39
  371. package/src/genre.ts +15 -14
  372. package/src/index.ts +19 -10
  373. package/src/party/client.ts +217 -208
  374. package/src/party/extensions/ctas.ts +3 -3
  375. package/src/party/extensions/genres.ts +4 -4
  376. package/src/party/extensions/links.ts +7 -7
  377. package/src/party/extensions/media.ts +3 -3
  378. package/src/party/extensions/profile.ts +3 -3
  379. package/src/party/extensions/roles.ts +5 -5
  380. package/src/party/extensions/tags.ts +4 -4
  381. package/src/party/index.ts +0 -1
  382. package/src/party/queries.ts +90 -87
  383. package/src/pressing.ts +132 -89
  384. package/src/publication.ts +33 -32
  385. package/src/queries.ts +3 -3
  386. package/src/read/artist.ts +36 -17
  387. package/src/read/catalog.ts +68 -36
  388. package/src/read/client.ts +55 -30
  389. package/src/read/config.ts +57 -29
  390. package/src/read/genres.ts +22 -18
  391. package/src/read/index.ts +15 -6
  392. package/src/read/receipts.ts +130 -67
  393. package/src/read/royalties.ts +212 -0
  394. package/src/read/types.ts +30 -0
  395. package/src/read/wallet.ts +226 -216
  396. package/src/read/works.ts +51 -44
  397. package/src/recording-extensions.ts +27 -24
  398. package/src/release-extensions.ts +7 -7
  399. package/src/release-graph.ts +2 -1
  400. package/src/royalty.ts +19 -25
  401. package/src/share.ts +197 -128
  402. package/src/transactions.ts +15 -8
  403. package/src/vault.ts +24 -31
  404. package/dist/contracts/record_shop/deps/std/type_name.d.ts.map +0 -1
  405. package/dist/contracts/record_shop/deps/std/type_name.js.map +0 -1
  406. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +0 -6
  407. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +0 -1
  408. package/dist/contracts/recording_language/deps/language_code/language_code.js +0 -8
  409. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +0 -1
  410. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts +0 -24
  411. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts.map +0 -1
  412. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js +0 -24
  413. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js.map +0 -1
  414. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts +0 -16
  415. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts.map +0 -1
  416. package/dist/contracts/recording_master_reference/deps/ori/data.js +0 -12
  417. package/dist/contracts/recording_master_reference/deps/ori/data.js.map +0 -1
  418. package/dist/execute.d.ts +0 -32
  419. package/dist/execute.d.ts.map +0 -1
  420. package/dist/execute.js +0 -36
  421. package/dist/execute.js.map +0 -1
  422. package/src/contracts/recording_language/deps/language_code/language_code.ts +0 -8
  423. package/src/contracts/recording_master_reference/deps/ori/confidentiality.ts +0 -24
  424. package/src/contracts/recording_master_reference/deps/ori/data.ts +0 -12
  425. package/src/execute.ts +0 -56
  426. /package/dist/contracts/{record_shop → miso_pay}/deps/std/type_name.d.ts +0 -0
  427. /package/dist/contracts/{record_shop → miso_pay}/deps/std/type_name.js +0 -0
  428. /package/src/contracts/{record_shop → miso_pay}/deps/std/type_name.ts +0 -0
package/dist/client.js CHANGED
@@ -1,781 +1,64 @@
1
1
  // Copyright (c) Miso Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { miso as protocolMiso, } from "@misofm/musicos/client";
4
- import { PartyosClient } from "@misofm/partyos";
5
- import { PartyPlatformClient } from "./party/index.js";
6
- import * as recordContract from "./contracts/record/record.js";
7
- import * as pressingContract from "./contracts/record/pressing.js";
8
- import * as listingContract from "./contracts/record_shop/listing.js";
9
- import * as genreContract from "./contracts/genre/genre.js";
10
- import * as releaseDescriptionContract from "./contracts/release_description/release_description.js";
11
- import * as releaseDspLinkContract from "./contracts/release_dsp_link/release_dsp_link.js";
12
- import * as releaseGenreContract from "./contracts/release_genre/release_genre.js";
13
- import * as releaseKindContract from "./contracts/release_kind/release_kind.js";
14
- import * as releaseRevenueDistributorContract from "./contracts/release_revenue_distributor/release_revenue_distributor.js";
15
- import * as vaultContract from "./contracts/vault/vault.js";
16
- import * as compositionRoyaltyPoolContract from "./contracts/composition_royalty_pool/composition_royalty_pool.js";
17
- import * as recordingRoyaltyPoolContract from "./contracts/recording_royalty_pool/recording_royalty_pool.js";
18
- import * as partyWalletContract from "./contracts/party_wallet/party_wallet.js";
19
- import * as compositionRoutedStakeContract from "./contracts/composition_routed_stake/composition_routed_stake.js";
20
- import * as compositionRoyaltyPoolPluginContract from "./contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js";
21
- import * as recordingRoyaltyPoolPluginContract from "./contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js";
22
- import * as releaseRevenueDistributorPluginContract from "./contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js";
23
- import * as routedStakeContract from "./contracts/routed_stake/routed_stake.js";
24
- import * as royaltyPoolContract from "./contracts/royalty_pool/pool.js";
25
- import * as recordingAdvisoryContract from "./contracts/recording_advisory/recording_advisory.js";
26
- import * as recordingLanguageContract from "./contracts/recording_language/recording_language.js";
27
- import * as recordingMasterReferenceContract from "./contracts/recording_master_reference/recording_master_reference.js";
28
- import * as recordingStreamingTranscodeContract from "./contracts/recording_streaming_transcode/recording_streaming_transcode.js";
29
- import * as recordingGenreContract from "./contracts/recording_genre/recording_genre.js";
30
- import * as vaultActions from "./vault.js";
31
- import * as coverArtContract from "./contracts/cover_art/cover_art.js";
32
- import * as releaseCoverArtContract from "./contracts/release_cover_art/release_cover_art.js";
33
- import * as releaseCreditsContract from "./contracts/release_credits/release_credits.js";
34
- import { authorizeRecordShop, deriveListingId, derivePressingAdminCapId, derivePressingId, deriveRecordId, deriveSaleIds, getListing, getPressing, getRecord, getSale, openListing, openPressing, purchaseRecord, revokeRecordShop, setListingPrice, setListingState, } from "./pressing.js";
35
- import { publishShareCurrency, initializeShareCurrency, publishComposition, publishRecording, publishCompositionAndRecording, publishRelease, } from "./transactions.js";
36
- import * as share from "./share.js";
37
- import { publishReleaseGraph, } from "./release-graph.js";
38
- import { getMisoPlatformDeployment, requireOperationsDeployment, requireRecordSalesDeployment, } from "./deployments.js";
39
- import { immutableSnapshot } from "./internal.js";
40
- import { setReleaseDescription, setReleaseDspLinks, setReleaseKind, } from "./release-extensions.js";
41
- import { deriveGenreAddress, setReleaseGenres, setRecordingGenres, clearReleaseGenres, clearRecordingGenres, } from "./genre.js";
42
- import { setRecordingStreamingTranscode, unsetRecordingStreamingTranscode, } from "./recording-extensions.js";
43
- import { addReleaseCredit } from "./credits.js";
44
- import { setReleaseCover, setReleaseTrackCover, } from "./cover.js";
45
- import { executeViaExecutor as executePlatformViaExecutor, } from "./execute.js";
46
- import { Effect } from "effect";
47
- import { SuiClient, SuiRpcError, } from "@misofm/effect";
48
- import { MisoChainIdentifierMismatchError, MisoClientNotReadyError, MisoNetworkMismatchError, } from "./errors.js";
49
- export { MisoChainIdentifierMismatchError, MisoClientNotReadyError, MisoNetworkMismatchError, } from "./errors.js";
3
+ import { Effect, Layer } from "effect";
4
+ import { Sui, SuiGraphQL } from "@unconfirmed/sui-effect";
5
+ import { SuiExtension } from "@unconfirmed/sui-effect/extension";
6
+ import { getMisoPlatformDeployment } from "./deployments.js";
7
+ import { Miso } from "./Miso.js";
8
+ import { MisoPlatformDeploymentInvalidError } from "./errors.js";
9
+ export { MisoChainIdentifierMismatchError, MisoNetworkMismatchError, MisoPlatformDeploymentInvalidError } from "./errors.js";
50
10
  /**
51
- * Bind an explicit safe subset of a generated module to one immutable package.
52
- * Callers cannot supply or override `package`; reference-returning, UID-only,
53
- * and package-internal constructors never appear in this executable facade.
54
- */
55
- function bindModulePackage(mod, pkg, available) {
56
- const out = {};
57
- for (const key of available) {
58
- const value = mod[key];
59
- out[String(key)] =
60
- typeof value === "function"
61
- ? (options) => value({ ...options, package: pkg })
62
- : value;
63
- }
64
- return out;
65
- }
66
- /** Keep synchronous, client-bound surfaces unusable until the endpoint's exact
67
- * ledger has been validated. The underlying standalone builders remain pure. */
68
- function requireReadyOnFunctions(surface, requireReady, namespace) {
69
- return new Proxy(surface, {
70
- get(target, property, receiver) {
71
- const value = Reflect.get(target, property, receiver);
72
- if (typeof value !== "function")
73
- return value;
74
- return (...args) => {
75
- requireReady(`${namespace}.${String(property)}`);
76
- return Reflect.apply(value, target, args);
77
- };
78
- },
79
- });
80
- }
81
- function requireReadyOnModuleFunctions(surface, requireReady, namespace) {
82
- return new Proxy(surface, {
83
- get(target, property, receiver) {
84
- const value = Reflect.get(target, property, receiver);
85
- if (!value || typeof value !== "object")
86
- return value;
87
- return requireReadyOnFunctions(value, requireReady, `${namespace}.${String(property)}`);
88
- },
89
- });
90
- }
91
- export class MisoPlatformClient {
92
- #client;
93
- #config;
94
- #protocol;
95
- #party;
96
- #chainIdentifier;
97
- /** Bundled/custom deployment selected for the full facade, when available. */
98
- deployment;
99
- #readyState = "unvalidated";
100
- /** Set once in the constructor via `Effect.cached`, so every caller of
101
- * `ready()` shares the same in-flight/completed chain read. */
102
- #readyEffect;
103
- #layer;
104
- constructor(client, config, protocol, deployment) {
105
- const configSnapshot = immutableSnapshot(config);
106
- const deploymentSnapshot = deployment
107
- ? immutableSnapshot(deployment)
108
- : undefined;
109
- this.#client = client;
110
- this.#config = configSnapshot;
111
- if (configSnapshot.operations?.status === "available") {
112
- requireOperationsDeployment(configSnapshot.operations);
113
- }
114
- // A pressing-only facade must not implicitly register a fail-closed core
115
- // extension. Supply a core deployment/misoPackageId when `protocol` is
116
- // needed; otherwise this remains a safe, independent pressing client.
117
- this.#protocol =
118
- protocol ??
119
- (configSnapshot.misoPackageId
120
- ? protocolMiso({
121
- deployment: { packageId: configSnapshot.misoPackageId },
122
- }).register(client)
123
- : undefined);
124
- this.deployment = deploymentSnapshot;
125
- // The one place `PartyPlatformClient` is constructed: from this platform
126
- // deployment's `partyos` (core) and `party` (extensions) sections, not
127
- // from the object-model protocol client.
128
- this.#party = deploymentSnapshot
129
- ? new PartyPlatformClient(client, new PartyosClient(client, deploymentSnapshot.partyos), deploymentSnapshot.party)
130
- : undefined;
131
- this.#chainIdentifier =
132
- deploymentSnapshot?.chainIdentifier ?? configSnapshot.chainIdentifier;
133
- this.#layer = SuiClient.layer(client);
134
- // Built once; `Effect.cached` shares the same in-flight/completed chain
135
- // read across every caller of `ready()` — the outer `Effect.cached(...)`
136
- // itself only sets up the memoization ref, so running it synchronously
137
- // here does not perform the underlying Core API read.
138
- this.#readyEffect = Effect.runSync(Effect.cached(Effect.suspend(() => {
139
- this.#readyState = "validating";
140
- if (!this.#chainIdentifier) {
141
- return Effect.die(new Error("misoPlatform: chain readiness requires a complete deployment or an explicit `chainIdentifier`."));
142
- }
143
- const expected = this.#chainIdentifier;
144
- return Effect.tryPromise({
145
- try: (signal) => this.#client.core.getChainIdentifier({ signal }),
146
- catch: (cause) => new SuiRpcError({ operation: "getChainIdentifier", cause }),
147
- }).pipe(Effect.flatMap(({ chainIdentifier }) => chainIdentifier === expected
148
- ? Effect.void
149
- : new MisoChainIdentifierMismatchError({ actual: chainIdentifier, expected })), Effect.tap(() => Effect.sync(() => { this.#readyState = "ready"; })), Effect.tapError(() => Effect.sync(() => { this.#readyState = "failed"; })));
150
- })));
151
- }
152
- /** Permissionless protocol APIs bound to the same validated ledger. */
153
- get protocol() {
154
- if (!this.#protocol)
155
- return undefined;
156
- this.#requireReady("protocol APIs");
157
- return this.#protocol;
158
- }
159
- /**
160
- * Memoized exact-ledger readiness gate. Registration already rejects a
161
- * synchronous network-label mismatch; this Core API read protects every
162
- * client-bound write surface from a mislabeled or custom endpoint.
163
- */
164
- ready() {
165
- return this.#readyEffect;
166
- }
167
- /** Compatibility hook; prefer `client.miso.ready()`. */
168
- validateChainIdentifier() {
169
- return this.ready().pipe(Effect.map(() => this.#chainIdentifier));
170
- }
171
- #requireReady(operation) {
172
- // Capability availability remains the first fail-closed boundary. This
173
- // keeps an unavailable deployment from masquerading as a mere lifecycle
174
- // error while still preventing configured builders from running pre-ready.
175
- if (operation === "ids.pressing" ||
176
- operation === "ids.pressingAdminCap" ||
177
- operation === "ids.record" ||
178
- operation === "ids.listing" ||
179
- operation === "ids.sale" ||
180
- operation === "tx.purchaseRecord" ||
181
- operation === "tx.openPressing" ||
182
- operation === "tx.openListing" ||
183
- operation === "tx.authorizeRecordShop" ||
184
- operation === "tx.revokeRecordShop" ||
185
- operation === "tx.setListingPrice" ||
186
- operation === "tx.setListingState") {
187
- this.#recordSales();
188
- }
189
- if (operation === "ids.vault" || operation === "ids.vaultAdminCap") {
190
- this.#operations();
191
- }
192
- if (this.#readyState !== "ready") {
193
- throw new MisoClientNotReadyError({ operation });
194
- }
195
- }
196
- /**
197
- * Runs the exact-ledger readiness gate, then provides `SuiClient` from this
198
- * client's `ClientWithCoreApi`, so a read method's program has `R = never`.
199
- */
200
- #run(effect) {
201
- return this.ready().pipe(Effect.flatMap(() => effect), Effect.provide(this.#layer));
202
- }
203
- /** Party identity and profile APIs, backed by the network SDK. */
204
- get party() {
205
- if (!this.#party) {
206
- throw new Error("misoPlatform: Party APIs require the complete platform deployment. Use miso({ deployment }).");
207
- }
208
- this.#requireReady("party APIs");
209
- return this.#party;
210
- }
211
- #recordSales() {
212
- return requireRecordSalesDeployment(this.#config.recordSales ?? {
213
- status: "unavailable",
214
- reason: "this client was configured without Record and Record Shop package IDs",
215
- });
216
- }
217
- #operations() {
218
- return requireOperationsDeployment(this.#config.operations);
219
- }
220
- #availableOperations() {
221
- return this.#config.operations?.status === "available"
222
- ? requireOperationsDeployment(this.#config.operations)
223
- : undefined;
224
- }
225
- get recordPackageId() {
226
- return this.#recordSales().recordPackageId;
227
- }
228
- get recordShopPackageId() {
229
- return this.#recordSales().recordShopPackageId;
230
- }
231
- #misoPackageId() {
232
- const { misoPackageId } = this.#config;
233
- if (!misoPackageId) {
234
- throw new Error("misoPlatform: `misoPackageId` is required for the publish builders " +
235
- "(publishComposition, publishRecording, publishCompositionAndRecording, publishRelease) — pass it to misoPlatform({ misoPackageId }).");
236
- }
237
- return misoPackageId;
238
- }
239
- #minatoPackageId() {
240
- const { minatoPackageId } = this.#config;
241
- if (!minatoPackageId) {
242
- throw new Error("misoPlatform: `minatoPackageId` is required for the publish builders that disperse shares " +
243
- "(publishComposition, publishRecording, publishCompositionAndRecording) — pass it to misoPlatform({ minatoPackageId }).");
244
- }
245
- return minatoPackageId;
246
- }
247
- #releaseRegistryId() {
248
- const { releaseRegistryId: id } = this.#config;
249
- if (!id) {
250
- throw new Error("misoPlatform: `releaseRegistryId` is required to build a release.");
251
- }
252
- return id;
253
- }
254
- #requiredConfig(field, operation) {
255
- const value = this.#config[field];
256
- if (typeof value !== "string" || value.length === 0) {
257
- throw new Error(`misoPlatform: \`${String(field)}\` is required for ${operation}.`);
258
- }
259
- return value;
260
- }
261
- // ── Reads ─────────────────────────────────────────────────────────────────
262
- /** The run itself, or `null` if this release has never opened one. */
263
- getPressing(pressingId) {
264
- return this.#run(getPressing(pressingId, this.recordPackageId));
265
- }
266
- /** One currency's offer, or `null` if the run does not sell in it. */
267
- getListing(listingId) {
268
- return this.#run(getListing(listingId, this.recordShopPackageId));
269
- }
270
- /** One concrete purchased Record, including immutable purchase provenance. */
271
- getRecord(recordId) {
272
- return this.#run(getRecord(recordId, this.recordPackageId));
273
- }
274
- /** Run + one currency's offer in a single round trip, by address math. */
275
- getSale(p) {
276
- return this.#run(getSale({
277
- ...p,
278
- recordPackageId: this.recordPackageId,
279
- recordShopPackageId: this.recordShopPackageId,
280
- }));
281
- }
282
- // ── Address math ──────────────────────────────────────────────────────────
283
- ids = requireReadyOnFunctions({
284
- pressing: (releaseId, edition) => derivePressingId(releaseId, edition, this.recordPackageId),
285
- pressingAdminCap: (pressingId) => derivePressingAdminCapId(pressingId, this.recordPackageId),
286
- record: (pressingId, number) => deriveRecordId(pressingId, number, this.recordPackageId),
287
- listing: (pressingId, currencyType) => deriveListingId(pressingId, currencyType, this.recordShopPackageId),
288
- sale: (releaseId, edition, currencyType) => deriveSaleIds(releaseId, edition, currencyType, this.recordPackageId, this.recordShopPackageId),
289
- vault: (capId, capType) => vaultActions.deriveVaultId({
290
- vaultRegistryId: this.#operations().vault.registryId,
291
- capId,
292
- capType,
293
- vaultPackageId: this.#operations().vault.packageId,
294
- }),
295
- vaultAdminCap: (vaultId) => vaultActions.deriveVaultAdminCapId(vaultId, this.#operations().vault.packageId),
296
- genre: (canonicalName) => deriveGenreAddress(this.#requiredConfig("genreRegistryId", "genre id derivation"), this.#requiredConfig("genrePackageId", "genre id derivation"), canonicalName),
297
- }, (operation) => this.#requireReady(operation), "ids");
298
- // ── Transaction builders ──────────────────────────────────────────────────
299
- /** Client-bound builders require a successful `await client.miso.ready()`.
300
- * Standalone exports remain pure for explicitly managed offline workflows. */
301
- tx = requireReadyOnFunctions({
302
- purchaseRecord: (p) => purchaseRecord({
303
- ...p,
304
- recordPackageId: this.recordPackageId,
305
- recordShopPackageId: this.recordShopPackageId,
306
- }),
307
- openPressing: (p) => openPressing({
308
- ...p,
309
- recordPackageId: this.recordPackageId,
310
- recordShopPackageId: this.recordShopPackageId,
311
- }),
312
- openListing: (p) => openListing({ ...p, recordShopPackageId: this.recordShopPackageId }),
313
- authorizeRecordShop: (p) => authorizeRecordShop({
314
- ...p,
315
- recordPackageId: this.recordPackageId,
316
- recordShopPackageId: this.recordShopPackageId,
317
- }),
318
- revokeRecordShop: (p) => revokeRecordShop({
319
- ...p,
320
- recordPackageId: this.recordPackageId,
321
- recordShopPackageId: this.recordShopPackageId,
322
- }),
323
- setListingPrice: (p) => setListingPrice({ ...p, recordShopPackageId: this.recordShopPackageId }),
324
- setListingState: (p) => setListingState({ ...p, recordShopPackageId: this.recordShopPackageId }),
325
- // Publishing (protocol works + minato share economics) — package-id-free
326
- // builders pass through unchanged; the rest bind this client's
327
- // `misoPackageId`/`minatoPackageId`, throwing at call time if either is
328
- // missing (kept optional on the client so a sell-only client, e.g. a
329
- // storefront that never mints new works, doesn't need to carry them).
330
- publishShareCurrency,
331
- initializeShareCurrency,
332
- publishComposition: (p) => publishComposition({
333
- ...p,
334
- misoPackageId: this.#misoPackageId(),
335
- minatoPackageId: this.#minatoPackageId(),
336
- }),
337
- publishRecording: (p) => publishRecording({
338
- ...p,
339
- misoPackageId: this.#misoPackageId(),
340
- minatoPackageId: this.#minatoPackageId(),
341
- }),
342
- publishCompositionAndRecording: (p) => publishCompositionAndRecording({
343
- ...p,
344
- misoPackageId: this.#misoPackageId(),
345
- minatoPackageId: this.#minatoPackageId(),
346
- }),
347
- publishRelease: (p) => {
348
- return publishRelease({
349
- ...p,
350
- misoPackageId: this.#misoPackageId(),
351
- releaseRegistryId: this.#releaseRegistryId(),
352
- });
353
- },
354
- publishReleaseGraph: (p) => {
355
- return publishReleaseGraph({
356
- ...p,
357
- misoPackageId: this.#misoPackageId(),
358
- minatoPackageId: this.#minatoPackageId(),
359
- });
360
- },
361
- setReleaseKind: (p) => setReleaseKind({
362
- ...p,
363
- releaseKindPackageId: this.#requiredConfig("releaseKindPackageId", "setReleaseKind"),
364
- }),
365
- setReleaseDescription: (p) => setReleaseDescription({
366
- ...p,
367
- releaseDescriptionPackageId: this.#requiredConfig("releaseDescriptionPackageId", "setReleaseDescription"),
368
- }),
369
- setReleaseGenres: (p) => setReleaseGenres({
370
- ...p,
371
- releaseGenrePackageId: this.#requiredConfig("releaseGenrePackageId", "setReleaseGenres"),
372
- }),
373
- clearReleaseGenres: (p) => clearReleaseGenres({
374
- ...p,
375
- releaseGenrePackageId: this.#requiredConfig("releaseGenrePackageId", "clearReleaseGenres"),
376
- }),
377
- setReleaseDspLinks: (p) => setReleaseDspLinks({
378
- ...p,
379
- releaseDspLinkPackageId: this.#requiredConfig("releaseDspLinkPackageId", "setReleaseDspLinks"),
380
- }),
381
- addReleaseCredit: (p) => addReleaseCredit({
382
- ...p,
383
- releaseCreditsPackageId: this.#requiredConfig("releaseCreditsPackageId", "addReleaseCredit"),
384
- misoCreditPackageId: this.#requiredConfig("misoCreditPackageId", "addReleaseCredit"),
385
- }),
386
- setReleaseCover: (p) => setReleaseCover({
387
- ...p,
388
- coverArtPackageId: this.#requiredConfig("coverArtPackageId", "setReleaseCover"),
389
- releaseCoverArtPackageId: this.#requiredConfig("releaseCoverArtPackageId", "setReleaseCover"),
390
- oriPackageId: this.#requiredConfig("oriPackageId", "setReleaseCover"),
391
- }),
392
- setReleaseTrackCover: (p) => setReleaseTrackCover({
393
- ...p,
394
- coverArtPackageId: this.#requiredConfig("coverArtPackageId", "setReleaseTrackCover"),
395
- releaseCoverArtPackageId: this.#requiredConfig("releaseCoverArtPackageId", "setReleaseTrackCover"),
396
- oriPackageId: this.#requiredConfig("oriPackageId", "setReleaseTrackCover"),
397
- }),
398
- setRecordingStreamingTranscode: (p) => setRecordingStreamingTranscode({
399
- ...p,
400
- recordingStreamingTranscodePackageId: this.#requiredConfig("recordingStreamingTranscodePackageId", "setRecordingStreamingTranscode"),
401
- oriPackageId: this.#requiredConfig("oriPackageId", "setRecordingStreamingTranscode"),
402
- }),
403
- unsetRecordingStreamingTranscode: (p) => unsetRecordingStreamingTranscode({
404
- ...p,
405
- recordingStreamingTranscodePackageId: this.#requiredConfig("recordingStreamingTranscodePackageId", "unsetRecordingStreamingTranscode"),
406
- }),
407
- setRecordingGenres: (p) => setRecordingGenres({
408
- ...p,
409
- recordingGenrePackageId: this.#requiredConfig("recordingGenrePackageId", "setRecordingGenres"),
410
- }),
411
- clearRecordingGenres: (p) => clearRecordingGenres({
412
- ...p,
413
- recordingGenrePackageId: this.#requiredConfig("recordingGenrePackageId", "clearRecordingGenres"),
414
- }),
415
- }, (operation) => this.#requireReady(operation), "tx");
416
- /**
417
- * Vault-aware builders and parsers. These take explicit object ids because a
418
- * VaultAdminCap is owner-held while the Vault is shared; package ids can come
419
- * from the deployment config or be supplied for private deployments.
420
- */
421
- get vault() {
422
- if (!this.#availableOperations())
423
- return undefined;
424
- this.#requireReady("vault builders");
425
- return vaultActions;
426
- }
427
- // ── Share currency provisioning (executes; Signer pattern) ─────────────────
428
- /** Publishes + initializes a fresh share currency (two txs). */
429
- createShareCurrency(signer, params) {
430
- return this.#run(share.createShareCurrency(signer, params));
431
- }
432
- /** Execute a composed platform PTB only after exact-ledger validation. */
433
- executeViaExecutor(executor, ...thunks) {
434
- return this.ready().pipe(Effect.flatMap(() => executePlatformViaExecutor(executor, ...thunks)));
435
- }
436
- // ── Generated layer ───────────────────────────────────────────────────────
437
- /** Generated Move-call bindings, for commands this facade doesn't wrap. */
438
- get call() {
439
- const sales = this.#config.recordSales?.status === "available"
440
- ? this.#config.recordSales
441
- : undefined;
442
- const operations = this.#availableOperations();
443
- return requireReadyOnModuleFunctions({
444
- record: sales
445
- ? bindModulePackage(recordContract, sales.recordPackageId, [
446
- "destroy",
447
- "releaseId",
448
- "pressingId",
449
- "edition",
450
- "number",
451
- "purchaseCurrency",
452
- "purchasePrice",
453
- "purchasedBy",
454
- "purchasedTimestampMs",
455
- "deriveAddress",
456
- ])
457
- : undefined,
458
- listing: sales
459
- ? bindModulePackage(listingContract, sales.recordShopPackageId, [
460
- "fixed",
461
- "floor",
462
- "enabled",
463
- "disabled",
464
- "setState",
465
- "setPrice",
466
- "purchase",
467
- "deriveAddress",
468
- "releaseId",
469
- "pressingId",
470
- "pricing",
471
- "price",
472
- "state",
473
- "isEnabled",
474
- "isDisabled",
475
- "isFixed",
476
- "isFloor",
477
- ])
478
- : undefined,
479
- pressing: sales
480
- ? bindModulePackage(pressingContract, sales.recordPackageId, [
481
- "authorizeDistributor",
482
- "revokeDistributor",
483
- "deriveAddress",
484
- "deriveAdminCapAddress",
485
- "releaseId",
486
- "edition",
487
- "supply",
488
- "maxSupply",
489
- "distributors",
490
- "isDistributorAuthorized",
491
- "pressingId",
492
- ])
493
- : undefined,
494
- genre: this.#config.genrePackageId
495
- ? bindModulePackage(genreContract, this.#config.genrePackageId, [
496
- "deriveAddress",
497
- ])
498
- : undefined,
499
- releaseDescription: this.#config.releaseDescriptionPackageId
500
- ? bindModulePackage(releaseDescriptionContract, this.#config.releaseDescriptionPackageId, ["setDescription", "clearDescription", "hasDescription"])
501
- : undefined,
502
- releaseDspLink: this.#config.releaseDspLinkPackageId
503
- ? bindModulePackage(releaseDspLinkContract, this.#config.releaseDspLinkPackageId, [
504
- "platform",
505
- "platformSpotify",
506
- "platformAppleMusic",
507
- "platformAmazonMusic",
508
- "platformBandcamp",
509
- "platformDeezer",
510
- "platformSoundcloud",
511
- "platformTidal",
512
- "platformYoutubeMusic",
513
- "newSpotify",
514
- "newAppleMusicAlbum",
515
- "newAppleMusicTrack",
516
- "newAmazonMusicAlbum",
517
- "newAmazonMusicTrack",
518
- "newBandcamp",
519
- "newDeezer",
520
- "newSoundcloud",
521
- "newTidal",
522
- "newYoutubeMusic",
523
- "setReleaseLink",
524
- "clearReleaseLink",
525
- "setTrackLink",
526
- "clearTrackLink",
527
- "clearTrackLinks",
528
- "hasReleaseLink",
529
- ])
530
- : undefined,
531
- releaseGenre: this.#config.releaseGenrePackageId
532
- ? bindModulePackage(releaseGenreContract, this.#config.releaseGenrePackageId, ["addGenre", "removeGenre", "clearGenres"])
533
- : undefined,
534
- releaseKind: this.#config.releaseKindPackageId
535
- ? bindModulePackage(releaseKindContract, this.#config.releaseKindPackageId, ["setKind", "unsetKind", "hasKind"])
536
- : undefined,
537
- releaseRevenueDistributor: operations
538
- ? bindModulePackage(releaseRevenueDistributorContract, operations.actions.releaseRevenueDistributor, [
539
- "redeemAndDistribute",
540
- "redeemAllAndDistribute",
541
- "receiveAndDistribute",
542
- ])
543
- : undefined,
544
- releaseRevenueDistributorPlugin: operations
545
- ? bindModulePackage(releaseRevenueDistributorPluginContract, operations.plugins.releaseRevenueDistributor, [
546
- "install",
547
- "uninstall",
548
- "redeemAllAndDistribute",
549
- "receiveAndDistribute",
550
- "isInstalled",
551
- ])
552
- : undefined,
553
- vault: operations
554
- ? bindModulePackage(vaultContract, operations.vault.packageId, [
555
- "share",
556
- "withdrawCap",
557
- "restoreCap",
558
- "derivedAddress",
559
- "capId",
560
- "isActive",
561
- "authorizedPlugins",
562
- "isPluginAuthorized",
563
- ])
564
- : undefined,
565
- compositionRoyaltyPool: operations
566
- ? bindModulePackage(compositionRoyaltyPoolContract, operations.actions.compositionRoyaltyPool, ["newPool", "receiveAndDeposit", "redeemAndDeposit", "poolAddress"])
567
- : undefined,
568
- compositionRoyaltyPoolPlugin: operations
569
- ? bindModulePackage(compositionRoyaltyPoolPluginContract, operations.plugins.compositionRoyaltyPool, [
570
- "install",
571
- "uninstall",
572
- "receiveAndDeposit",
573
- "redeemAndDeposit",
574
- "isInstalled",
575
- ])
576
- : undefined,
577
- recordingRoyaltyPool: operations
578
- ? bindModulePackage(recordingRoyaltyPoolContract, operations.actions.recordingRoyaltyPool, ["newPool", "receiveAndDeposit", "redeemAndDeposit", "poolAddress"])
579
- : undefined,
580
- recordingRoyaltyPoolPlugin: operations
581
- ? bindModulePackage(recordingRoyaltyPoolPluginContract, operations.plugins.recordingRoyaltyPool, [
582
- "install",
583
- "uninstall",
584
- "receiveAndDeposit",
585
- "redeemAndDeposit",
586
- "isInstalled",
587
- ])
588
- : undefined,
589
- partyWallet: operations
590
- ? bindModulePackage(partyWalletContract, operations.actions.partyWallet, ["receive", "receiveBalance", "redeemBalance", "inboxAddress"])
591
- : undefined,
592
- compositionRoutedStake: operations
593
- ? bindModulePackage(compositionRoutedStakeContract, operations.actions.compositionRoutedStake, ["createStake", "register", "unregister", "unstake", "restake", "stakeAddress"])
594
- : undefined,
595
- routedStake: this.#config.routedStakePackageId
596
- ? bindModulePackage(routedStakeContract, this.#config.routedStakePackageId, [
597
- "share",
598
- "register",
599
- "unregister",
600
- "sweep",
601
- "unstake",
602
- "restake",
603
- "derivedAddress",
604
- ])
605
- : undefined,
606
- royaltyPool: this.#config.royaltyPoolPackageId
607
- ? bindModulePackage(royaltyPoolContract, this.#config.royaltyPoolPackageId, [
608
- "share",
609
- "deposit",
610
- "sweepAndDeposit",
611
- "receiveAndDeposit",
612
- "registerStake",
613
- "unregisterStake",
614
- "claimRewards",
615
- "pendingRewards",
616
- "stakedShares",
617
- "cumulativeRewardPerShare",
618
- "cumulativeDeposits",
619
- "derivedAddress",
620
- "assertDerivedFrom",
621
- ])
622
- : undefined,
623
- recordingAdvisory: this.#config.recordingAdvisoryPackageId
624
- ? bindModulePackage(recordingAdvisoryContract, this.#config.recordingAdvisoryPackageId, [
625
- "explicit",
626
- "notExplicit",
627
- "cleaned",
628
- "setRating",
629
- "unsetRating",
630
- "hasRating",
631
- "isExplicit",
632
- "isNotExplicit",
633
- "isCleaned",
634
- ])
635
- : undefined,
636
- recordingLanguage: this.#config.recordingLanguagePackageId
637
- ? bindModulePackage(recordingLanguageContract, this.#config.recordingLanguagePackageId, [
638
- "setLanguages",
639
- "setInstrumental",
640
- "unsetLanguages",
641
- "hasLanguages",
642
- "isInstrumental",
643
- ])
644
- : undefined,
645
- recordingMasterReference: this.#config.recordingMasterReferencePackageId
646
- ? bindModulePackage(recordingMasterReferenceContract, this.#config.recordingMasterReferencePackageId, [
647
- "setMasterReference",
648
- "unsetMasterReference",
649
- "hasMasterReference",
650
- ])
651
- : undefined,
652
- recordingStreamingTranscode: this.#config.recordingStreamingTranscodePackageId
653
- ? bindModulePackage(recordingStreamingTranscodeContract, this.#config.recordingStreamingTranscodePackageId, [
654
- "setStreamingTranscode",
655
- "unsetStreamingTranscode",
656
- "hasStreamingTranscode",
657
- ])
658
- : undefined,
659
- recordingGenre: this.#config.recordingGenrePackageId
660
- ? bindModulePackage(recordingGenreContract, this.#config.recordingGenrePackageId, ["addGenre", "removeGenre", "clearGenres"])
661
- : undefined,
662
- coverArt: this.#config.coverArtPackageId
663
- ? bindModulePackage(coverArtContract, this.#config.coverArtPackageId, [])
664
- : undefined,
665
- releaseCoverArt: this.#config.releaseCoverArtPackageId
666
- ? bindModulePackage(releaseCoverArtContract, this.#config.releaseCoverArtPackageId, [
667
- "setCover",
668
- "unsetCover",
669
- "setTrackCover",
670
- "unsetTrackCover",
671
- "hasCoverArt",
672
- ])
673
- : undefined,
674
- releaseCredits: this.#config.releaseCreditsPackageId
675
- ? bindModulePackage(releaseCreditsContract, this.#config.releaseCreditsPackageId, ["addCredit", "removeCredit", "hasCredits"])
676
- : undefined,
677
- }, (operation) => this.#requireReady(operation), "call");
678
- }
679
- /** Generated BCS definitions, for parsing objects or events yourself. */
680
- bcs = {
681
- Record: recordContract.Record,
682
- Pressing: pressingContract.Pressing,
683
- PressingAdminCap: pressingContract.PressingAdminCap,
684
- Listing: listingContract.Listing,
685
- Pricing: listingContract.Pricing,
686
- ListingState: listingContract.State,
687
- RecordCreatedEvent: recordContract.RecordCreatedEvent,
688
- RecordDestroyedEvent: recordContract.RecordDestroyedEvent,
689
- PressingCreatedEvent: pressingContract.PressingCreatedEvent,
690
- DistributorAuthorizedEvent: pressingContract.DistributorAuthorizedEvent,
691
- DistributorRevokedEvent: pressingContract.DistributorRevokedEvent,
692
- RecordPurchasedEvent: pressingContract.RecordPurchasedEvent,
693
- ListingCreatedEvent: listingContract.ListingCreatedEvent,
694
- ListingPriceChangedEvent: listingContract.ListingPriceChangedEvent,
695
- ListingStateChangedEvent: listingContract.ListingStateChangedEvent,
696
- RecordSoldEvent: listingContract.RecordSoldEvent,
697
- VaultAdminCap: vaultContract.VaultAdminCap,
698
- VaultRegistry: vaultContract.VaultRegistry,
699
- VaultKey: vaultContract.VaultKey,
700
- VaultAdminCapKey: vaultContract.VaultAdminCapKey,
701
- VaultCreatedEvent: vaultContract.VaultCreatedEvent,
702
- VaultCapabilityWithdrawnEvent: vaultContract.VaultCapabilityWithdrawnEvent,
703
- VaultCapabilityRestoredEvent: vaultContract.VaultCapabilityRestoredEvent,
704
- PartyObjectReceivedEvent: partyWalletContract.ObjectReceivedEvent,
705
- PartyCoinsReceivedEvent: partyWalletContract.CoinsReceivedEvent,
706
- PartyFundsRedeemedEvent: partyWalletContract.FundsRedeemedEvent,
707
- ReleaseTrackRevenueDistributedEvent: releaseRevenueDistributorContract.ReleaseTrackRevenueDistributedEvent,
708
- ReleaseRevenueDistributedEvent: releaseRevenueDistributorContract.ReleaseRevenueDistributedEvent,
709
- };
710
- }
711
- /** The full Miso client exposed by `@misofm/platform`. */
712
- export { MisoPlatformClient as MisoClient };
713
- /**
714
- * Registers the complete Miso facade at `client.miso`.
11
+ * The registration a Promise consumer passes to `client.$extend(...)`.
715
12
  *
716
- * Platform operations live directly on `client.miso`; the lower-level
717
- * permissionless protocol SDK is available at `client.miso.protocol`.
718
- */
719
- export function miso(options = {}) {
720
- const name = (options.name ?? "miso");
721
- return {
722
- name,
723
- register: (client) => {
724
- const deployment = immutableSnapshot(options.deployment ?? getMisoPlatformDeployment(client.network));
725
- if (deployment.network !== client.network) {
726
- throw new MisoNetworkMismatchError({ clientNetwork: client.network, deploymentNetwork: deployment.network });
727
- }
728
- const protocol = protocolMiso({
729
- deployment: deployment.protocol,
730
- graphqlClient: options.graphqlClient,
731
- }).register(client);
732
- return new MisoPlatformClient(client, {
733
- recordSales: deployment.recordSales,
734
- misoPackageId: deployment.protocol.musicos,
735
- minatoPackageId: deployment.packages.minato,
736
- releaseRegistryId: deployment.objects.releaseRegistry,
737
- releaseKindPackageId: deployment.packages.releaseKind,
738
- releaseDescriptionPackageId: deployment.packages.releaseDescription,
739
- releaseGenrePackageId: deployment.packages.releaseGenre,
740
- releaseDspLinkPackageId: deployment.packages.releaseDspLink,
741
- recordingAdvisoryPackageId: deployment.packages.recordingAdvisory,
742
- recordingLanguagePackageId: deployment.packages.recordingLanguage,
743
- recordingGenrePackageId: deployment.packages.recordingGenre,
744
- recordingMasterReferencePackageId: deployment.packages.recordingMasterReference,
745
- recordingStreamingTranscodePackageId: deployment.packages.recordingStreamingTranscode,
746
- operations: deployment.operations,
747
- royaltyPoolPackageId: deployment.packages.royaltyPool,
748
- routedStakePackageId: deployment.packages.routedStake,
749
- releaseCreditsPackageId: deployment.packages.releaseCredits,
750
- misoCreditPackageId: deployment.packages.credit,
751
- coverArtPackageId: deployment.packages.coverArt,
752
- releaseCoverArtPackageId: deployment.packages.releaseCoverArt,
753
- genrePackageId: deployment.packages.genre,
754
- genreRegistryId: deployment.objects.genreRegistry,
755
- oriPackageId: deployment.packages.ori,
756
- }, protocol, deployment);
757
- },
758
- };
759
- }
760
- /**
761
- * @deprecated Prefer zero-config `miso()`, which registers the complete facade
762
- * at `client.miso` and exposes the protocol layer at `client.miso.protocol`.
13
+ * ```ts
14
+ * const client = new SuiGrpcClient({ network: "testnet" }).$extend(miso());
15
+ * const pressing = await client.miso.getPressing(pressingId);
16
+ * const recipe = client.miso.tx.purchaseRecord({ releaseId, edition, currencyType, paymentAmount, expectedPricing, recipient });
17
+ * await client.miso.dispose();
18
+ * ```
19
+ *
20
+ * `warm` is given because `tx`/`ids`/`call`/`bcs`/`vault`/`deployment` are
21
+ * synchronous members a consumer may read the moment it registers, and
22
+ * `Miso.layer` touches no network at build for a known chain id
23
+ * (`docs/extensions.md` §7, "Synchronous members, `$ready` and `warm`").
24
+ * `options.chainId` is forwarded to both `warm` (so `register` can build
25
+ * synchronously without reading the chain) and `sui` (so the same id is
26
+ * asserted against the node) — without it on a `devnet`, `localnet`, or
27
+ * custom network, `warm` throws for any network outside the built-in
28
+ * `mainnet`/`testnet` table.
29
+ *
30
+ * `ready` stays on the service, deprecated: `await client.miso.ready()`
31
+ * keeps compiling and working as a `$ready()`-style warm-up for a consumer
32
+ * migrating off the predecessor's own `ready()` idiom (`docs/CONVERSION.md`).
763
33
  */
764
- export function misoPlatform(config) {
765
- return {
766
- name: "misoPlatform",
767
- register: (client) => {
768
- const configSnapshot = immutableSnapshot(config);
769
- if (configSnapshot.network && configSnapshot.network !== client.network) {
770
- throw new MisoNetworkMismatchError({ clientNetwork: client.network, deploymentNetwork: configSnapshot.network });
771
- }
772
- const protocol = configSnapshot.misoPackageId
773
- ? protocolMiso({
774
- deployment: { packageId: configSnapshot.misoPackageId },
775
- }).register(client)
776
- : undefined;
777
- return new MisoPlatformClient(client, configSnapshot, protocol);
778
- },
779
- };
780
- }
34
+ export const miso = (options = {}) => {
35
+ // `options.chainId` falls back to a custom deployment's own
36
+ // `chainIdentifier` (B5/B6, misofm/sdks#35 verification): a caller who
37
+ // names a custom network's deployment, with its own `chainIdentifier`, does
38
+ // not also have to repeat that id via `chainId` for `warm` to build
39
+ // synchronously `docs/extensions.md` §7's "thread the chain id through
40
+ // your registration options" applies equally to an id the deployment
41
+ // already carries.
42
+ const chainId = options.chainId ?? options.deployment?.chainIdentifier;
43
+ return SuiExtension.fromService(Miso, {
44
+ name: (options.name ?? "miso"),
45
+ layer: Layer.unwrap(Effect.gen(function* () {
46
+ const sui = yield* Sui;
47
+ if (options.deployment)
48
+ return Miso.layer(options.deployment);
49
+ // `getMisoPlatformDeployment` throws a plain `Error` for a network
50
+ // with no bundled manifest; `Effect.try` turns that into a typed
51
+ // `MisoPlatformDeploymentInvalidError` instead of an unhandled defect
52
+ // out of `Layer.unwrap` (B5, misofm/sdks#35 verification) — the same
53
+ // mapping `Miso.layerConfig` already applies to the same function.
54
+ const deployment = yield* Effect.try({
55
+ try: () => getMisoPlatformDeployment(sui.network),
56
+ catch: (cause) => new MisoPlatformDeploymentInvalidError({ message: cause instanceof Error ? cause.message : String(cause) }),
57
+ });
58
+ return Miso.layer(deployment);
59
+ })).pipe(Layer.provide(options.graphqlClient ? SuiGraphQL.layer(options.graphqlClient) : SuiGraphQL.layerUnavailable)),
60
+ ...(chainId === undefined ? {} : { sui: { chainId } }),
61
+ warm: { chainId },
62
+ });
63
+ };
781
64
  //# sourceMappingURL=client.js.map