@misofm/platform 0.27.0 → 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 (425) 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 +24 -9
  197. package/dist/errors.d.ts.map +1 -1
  198. package/dist/errors.js +43 -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 +25 -3
  264. package/dist/read/config.d.ts.map +1 -1
  265. package/dist/read/config.js +42 -25
  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 +1 -1
  272. package/dist/read/index.d.ts.map +1 -1
  273. package/dist/read/index.js +8 -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 +6 -5
  280. package/dist/read/royalties.d.ts.map +1 -1
  281. package/dist/read/royalties.js +16 -9
  282. package/dist/read/royalties.js.map +1 -1
  283. package/dist/read/wallet.d.ts +23 -12
  284. package/dist/read/wallet.d.ts.map +1 -1
  285. package/dist/read/wallet.js +158 -177
  286. package/dist/read/wallet.js.map +1 -1
  287. package/dist/read/works.d.ts +6 -6
  288. package/dist/read/works.d.ts.map +1 -1
  289. package/dist/read/works.js +40 -26
  290. package/dist/read/works.js.map +1 -1
  291. package/dist/recording-extensions.d.ts +15 -16
  292. package/dist/recording-extensions.d.ts.map +1 -1
  293. package/dist/recording-extensions.js +12 -8
  294. package/dist/recording-extensions.js.map +1 -1
  295. package/dist/release-extensions.d.ts +5 -6
  296. package/dist/release-extensions.d.ts.map +1 -1
  297. package/dist/release-extensions.js +3 -2
  298. package/dist/release-extensions.js.map +1 -1
  299. package/dist/release-graph.d.ts +2 -2
  300. package/dist/release-graph.d.ts.map +1 -1
  301. package/dist/release-graph.js.map +1 -1
  302. package/dist/royalty.d.ts +4 -4
  303. package/dist/royalty.d.ts.map +1 -1
  304. package/dist/royalty.js +16 -7
  305. package/dist/royalty.js.map +1 -1
  306. package/dist/share.d.ts +58 -24
  307. package/dist/share.d.ts.map +1 -1
  308. package/dist/share.js +167 -92
  309. package/dist/share.js.map +1 -1
  310. package/dist/transactions.d.ts +15 -6
  311. package/dist/transactions.d.ts.map +1 -1
  312. package/dist/transactions.js +1 -0
  313. package/dist/transactions.js.map +1 -1
  314. package/dist/vault.d.ts +13 -3
  315. package/dist/vault.d.ts.map +1 -1
  316. package/dist/vault.js +22 -16
  317. package/dist/vault.js.map +1 -1
  318. package/package.json +9 -8
  319. package/src/Miso.ts +951 -0
  320. package/src/auth.ts +16 -3
  321. package/src/catalog.ts +58 -25
  322. package/src/client.ts +98 -1359
  323. package/src/contracts/composition_credits/composition_credits.ts +20 -4
  324. package/src/contracts/composition_routed_stake/composition_routed_stake.ts +67 -1
  325. package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +53 -4
  326. package/src/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts +64 -1
  327. package/src/contracts/genre/genre.ts +8 -1
  328. package/src/contracts/miso_pay/pay.ts +356 -0
  329. package/src/contracts/party_cta/party_cta.ts +27 -5
  330. package/src/contracts/party_genre/party_genre.ts +14 -3
  331. package/src/contracts/party_media/party_media.ts +20 -4
  332. package/src/contracts/party_platform_link/party_platform_link.ts +15 -7
  333. package/src/contracts/party_profile/party_profile.ts +33 -8
  334. package/src/contracts/party_roles/party_roles.ts +19 -4
  335. package/src/contracts/party_tags/party_tags.ts +16 -4
  336. package/src/contracts/party_wallet/party_wallet.ts +2 -1
  337. package/src/contracts/platform_link/platform_link.ts +322 -0
  338. package/src/contracts/record/pressing.ts +50 -4
  339. package/src/contracts/record/record.ts +15 -1
  340. package/src/contracts/record_shop/listing.ts +76 -13
  341. package/src/contracts/recording_advisory/recording_advisory.ts +15 -8
  342. package/src/contracts/recording_credits/recording_credits.ts +63 -12
  343. package/src/contracts/recording_engine_session/recording_engine_session.ts +19 -4
  344. package/src/contracts/recording_genre/recording_genre.ts +53 -9
  345. package/src/contracts/recording_language/recording_language.ts +18 -5
  346. package/src/contracts/recording_master_reference/recording_master_reference.ts +18 -5
  347. package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +56 -4
  348. package/src/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts +67 -1
  349. package/src/contracts/recording_streaming_transcode/recording_streaming_transcode.ts +11 -4
  350. package/src/contracts/release_cover_art/release_cover_art.ts +126 -10
  351. package/src/contracts/release_credits/release_credits.ts +18 -4
  352. package/src/contracts/release_description/release_description.ts +9 -4
  353. package/src/contracts/release_dsp_link/release_dsp_link.ts +74 -19
  354. package/src/contracts/release_genre/release_genre.ts +52 -11
  355. package/src/contracts/release_kind/release_kind.ts +19 -4
  356. package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +15 -0
  357. package/src/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts +38 -1
  358. package/src/contracts/routed_stake/routed_stake.ts +79 -7
  359. package/src/contracts/royalty_pool/pool.ts +140 -38
  360. package/src/contracts/royalty_pool/stake.ts +5 -2
  361. package/src/contracts/share/share.ts +97 -0
  362. package/src/contracts/vault/vault.ts +55 -4
  363. package/src/contracts.ts +18 -0
  364. package/src/cover.ts +14 -15
  365. package/src/credits.ts +27 -22
  366. package/src/deployments.ts +3 -4
  367. package/src/errors.ts +64 -34
  368. package/src/events.ts +260 -39
  369. package/src/genre.ts +15 -14
  370. package/src/index.ts +19 -10
  371. package/src/party/client.ts +217 -208
  372. package/src/party/extensions/ctas.ts +3 -3
  373. package/src/party/extensions/genres.ts +4 -4
  374. package/src/party/extensions/links.ts +7 -7
  375. package/src/party/extensions/media.ts +3 -3
  376. package/src/party/extensions/profile.ts +3 -3
  377. package/src/party/extensions/roles.ts +5 -5
  378. package/src/party/extensions/tags.ts +4 -4
  379. package/src/party/index.ts +0 -1
  380. package/src/party/queries.ts +90 -87
  381. package/src/pressing.ts +132 -89
  382. package/src/publication.ts +33 -32
  383. package/src/queries.ts +3 -3
  384. package/src/read/artist.ts +36 -17
  385. package/src/read/catalog.ts +68 -36
  386. package/src/read/client.ts +55 -30
  387. package/src/read/config.ts +55 -30
  388. package/src/read/genres.ts +22 -18
  389. package/src/read/index.ts +8 -6
  390. package/src/read/receipts.ts +130 -67
  391. package/src/read/royalties.ts +22 -10
  392. package/src/read/wallet.ts +226 -216
  393. package/src/read/works.ts +51 -44
  394. package/src/recording-extensions.ts +27 -24
  395. package/src/release-extensions.ts +7 -7
  396. package/src/release-graph.ts +2 -1
  397. package/src/royalty.ts +19 -25
  398. package/src/share.ts +197 -128
  399. package/src/transactions.ts +15 -8
  400. package/src/vault.ts +24 -31
  401. package/dist/contracts/record_shop/deps/std/type_name.d.ts.map +0 -1
  402. package/dist/contracts/record_shop/deps/std/type_name.js.map +0 -1
  403. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +0 -6
  404. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +0 -1
  405. package/dist/contracts/recording_language/deps/language_code/language_code.js +0 -8
  406. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +0 -1
  407. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts +0 -24
  408. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts.map +0 -1
  409. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js +0 -24
  410. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js.map +0 -1
  411. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts +0 -16
  412. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts.map +0 -1
  413. package/dist/contracts/recording_master_reference/deps/ori/data.js +0 -12
  414. package/dist/contracts/recording_master_reference/deps/ori/data.js.map +0 -1
  415. package/dist/execute.d.ts +0 -32
  416. package/dist/execute.d.ts.map +0 -1
  417. package/dist/execute.js +0 -36
  418. package/dist/execute.js.map +0 -1
  419. package/src/contracts/recording_language/deps/language_code/language_code.ts +0 -8
  420. package/src/contracts/recording_master_reference/deps/ori/confidentiality.ts +0 -24
  421. package/src/contracts/recording_master_reference/deps/ori/data.ts +0 -12
  422. package/src/execute.ts +0 -56
  423. /package/dist/contracts/{record_shop → miso_pay}/deps/std/type_name.d.ts +0 -0
  424. /package/dist/contracts/{record_shop → miso_pay}/deps/std/type_name.js +0 -0
  425. /package/src/contracts/{record_shop → miso_pay}/deps/std/type_name.ts +0 -0
package/src/read/works.ts CHANGED
@@ -1,21 +1,23 @@
1
1
  // Copyright (c) Miso Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { Effect } from "effect";
4
+ import { Effect, Result } from "effect";
5
5
  import { normalizeSuiAddress } from "@mysten/sui/utils";
6
6
  import {
7
7
  contracts,
8
8
  extractTypeParams2,
9
- getCompositionsByIds,
10
9
  getWorkAddressesByShareTypes,
10
+ Musicos,
11
11
  Composition,
12
12
  Recording,
13
13
  Release,
14
+ type MusicosDeploymentInvalid,
15
+ type MusicosService,
14
16
  type TrackState,
15
17
  type WorkAddressesByShareType,
16
18
  type WorkShareTypes,
17
19
  } from "@misofm/musicos";
18
- import { decodeBcs, SuiClient, SuiGraphQL, SuiRpcError, type BcsDecodeError } from "@misofm/effect";
20
+ import { ObjectId, Sui, SuiGraphQL, SuiSchema, type DecodeError, type GraphQLUnavailable, type TransportError } from "@unconfirmed/sui-effect";
19
21
 
20
22
  // `getWorkAddressesByShareTypes` (GraphQL type discovery) is owned by
21
23
  // `@misofm/musicos` now — re-exported here so existing platform imports keep
@@ -80,19 +82,33 @@ function mapReleaseObject(id: string, d: Parsed) {
80
82
  }
81
83
 
82
84
  /** Decode a Release object's raw BCS content into the public `Release` type. */
83
- export function parseReleaseObject(id: string, content: Uint8Array): Effect.Effect<Release, BcsDecodeError> {
84
- return decodeBcs(
85
- { parse: (bytes: Uint8Array) => mapReleaseObject(id, contracts.release.Release.parse(bytes) as Parsed) },
86
- Release,
87
- content,
88
- { type: "Release", objectId: id },
85
+ export function parseReleaseObject(id: string, content: Uint8Array): Effect.Effect<Release, DecodeError> {
86
+ return SuiSchema.decode(SuiSchema.bcs(contracts.release.Release), content, { objectId: ObjectId.make(id) }).pipe(
87
+ Effect.map((raw) => mapReleaseObject(id, raw as Parsed)),
89
88
  );
90
89
  }
91
90
 
92
- /** Fetch and parse heterogeneous works through one Core bulk request. */
91
+ /**
92
+ * Builds `Musicos.layer({ deployment: { packageId } })`, provides it, and
93
+ * hands back the effect it wraps — see `catalog.ts`'s `withMusicos` for the
94
+ * same idiom (kept file-local rather than shared, since each of these
95
+ * standalone functions is a transitional non-facade consumer in its own
96
+ * right; see `docs/CONVERSION-STATUS.md`).
97
+ */
98
+ function withMusicos<A, E>(
99
+ packageId: string,
100
+ effect: (musicos: MusicosService) => Effect.Effect<A, E, Sui>,
101
+ ): Effect.Effect<A, E | MusicosDeploymentInvalid, Sui> {
102
+ return Effect.gen(function* () {
103
+ const musicos = yield* Musicos;
104
+ return yield* effect(musicos);
105
+ }).pipe(Effect.provide(Musicos.layer({ deployment: { packageId } })));
106
+ }
107
+
108
+ /** Fetch and parse heterogeneous works through one chunked `sui.getObjects`. */
93
109
  export const getWorksByIds = Effect.fn("getWorksByIds")(function* (
94
110
  ids: WorkIds,
95
- ): Effect.fn.Return<WorksById, SuiRpcError | BcsDecodeError, SuiClient> {
111
+ ): Effect.fn.Return<WorksById, DecodeError | TransportError, Sui> {
96
112
  const kinds = new Map<string, keyof WorksById>();
97
113
  for (const [kind, objectIds] of Object.entries(ids) as Array<[keyof WorksById, readonly string[]]>) {
98
114
  for (const objectId of objectIds) {
@@ -107,30 +123,21 @@ export const getWorksByIds = Effect.fn("getWorksByIds")(function* (
107
123
  const out: WorksById = { compositions: {}, recordings: {}, releases: {} };
108
124
  if (kinds.size === 0) return out;
109
125
 
110
- const client = yield* SuiClient;
111
- const { objects } = yield* Effect.tryPromise({
112
- try: (signal) => client.core.getObjects({ objectIds: [...kinds.keys()], include: { content: true }, signal }),
113
- catch: (cause) => new SuiRpcError({ operation: "getObjects", cause }),
114
- });
115
- for (const object of objects) {
116
- if (object instanceof Error || !object.content) continue;
117
- const kind = kinds.get(normalizeSuiAddress(object.objectId));
118
- const objectId = object.objectId;
126
+ const sui = yield* Sui;
127
+ const requestedIds = [...kinds.keys()];
128
+ const objects = yield* sui.getObjects(requestedIds.map((id) => ObjectId.make(id)));
129
+ for (const [index, result] of objects.entries()) {
130
+ if (!Result.isSuccess(result)) continue;
131
+ const object = result.success;
132
+ const kind = kinds.get(requestedIds[index]!);
133
+ const objectId = object.id;
119
134
  const content = object.content;
120
135
  if (kind === "compositions") {
121
- out.compositions[objectId] = yield* decodeBcs(
122
- { parse: (bytes: Uint8Array) => mapComposition(objectId, contracts.composition.Composition.parse(bytes) as Parsed) },
123
- Composition,
124
- content,
125
- { type: "Composition", objectId },
126
- );
136
+ const raw = yield* SuiSchema.decode(SuiSchema.bcs(contracts.composition.Composition), content, { objectId });
137
+ out.compositions[objectId] = mapComposition(objectId, raw as Parsed) as unknown as Composition;
127
138
  } else if (kind === "recordings") {
128
- out.recordings[objectId] = yield* decodeBcs(
129
- { parse: (bytes: Uint8Array) => mapRecording(objectId, contracts.recording.Recording.parse(bytes) as Parsed) },
130
- Recording,
131
- content,
132
- { type: "Recording", objectId },
133
- );
139
+ const raw = yield* SuiSchema.decode(SuiSchema.bcs(contracts.recording.Recording), content, { objectId });
140
+ out.recordings[objectId] = mapRecording(objectId, raw as Parsed) as unknown as Recording;
134
141
  } else if (kind === "releases") {
135
142
  out.releases[objectId] = yield* parseReleaseObject(objectId, content);
136
143
  }
@@ -142,22 +149,20 @@ export const getWorksByIds = Effect.fn("getWorksByIds")(function* (
142
149
  export const getRecordingTitles = Effect.fn("getRecordingTitles")(function* (
143
150
  recordingIds: readonly string[],
144
151
  misoPackageId: string,
145
- ): Effect.fn.Return<Record<string, string>, SuiRpcError | BcsDecodeError, SuiClient | SuiGraphQL> {
152
+ ): Effect.fn.Return<Record<string, string>, MusicosDeploymentInvalid | GraphQLUnavailable | TransportError, Sui | SuiGraphQL> {
146
153
  const ids = [...new Set(recordingIds)];
147
154
  if (ids.length === 0) return {};
148
155
 
149
- const client = yield* SuiClient;
150
- const { objects } = yield* Effect.tryPromise({
151
- try: (signal) => client.core.getObjects({ objectIds: ids, include: {}, signal }),
152
- catch: (cause) => new SuiRpcError({ operation: "getObjects", cause }),
153
- });
156
+ const sui = yield* Sui;
157
+ const objects = yield* sui.getObjects(ids.map((id) => ObjectId.make(id)));
154
158
  const titles: Record<string, string> = {};
155
159
  const compositionShareByRecording: Record<string, string> = {};
156
160
 
157
- for (const object of objects) {
158
- if (object instanceof Error) continue;
161
+ for (const result of objects) {
162
+ if (!Result.isSuccess(result)) continue;
163
+ const object = result.success;
159
164
  const [, compositionShareType] = extractTypeParams2(object.type);
160
- compositionShareByRecording[object.objectId] = compositionShareType;
165
+ compositionShareByRecording[object.id] = compositionShareType;
161
166
  }
162
167
 
163
168
  const compositionShareTypes = Object.values(compositionShareByRecording);
@@ -166,12 +171,14 @@ export const getRecordingTitles = Effect.fn("getRecordingTitles")(function* (
166
171
  { compositions: compositionShareTypes, recordings: [] },
167
172
  misoPackageId,
168
173
  );
169
- const compositions = yield* getCompositionsByIds(
170
- Object.values(addresses.compositions).filter((id): id is string => !!id),
174
+ const compositionIds = Object.values(addresses.compositions).filter((id): id is string => !!id);
175
+ const results = yield* withMusicos(misoPackageId, (musicos) => musicos.getCompositionsByIds(compositionIds.map((id) => ObjectId.make(id))));
176
+ const compositionsById = new Map(
177
+ results.flatMap((result, index) => (Result.isSuccess(result) ? [[compositionIds[index]!, result.success] as const] : [])),
171
178
  );
172
179
  for (const [recordingId, shareType] of Object.entries(compositionShareByRecording)) {
173
180
  const compositionId = addresses.compositions[shareType];
174
- const title = compositionId ? compositions[compositionId]?.title : undefined;
181
+ const title = compositionId ? compositionsById.get(compositionId)?.title : undefined;
175
182
  if (title) titles[recordingId] = title;
176
183
  }
177
184
  return titles;
@@ -6,13 +6,14 @@
6
6
  import { bcs } from "@mysten/sui/bcs";
7
7
  import type { Transaction, TransactionArgument, TransactionObjectArgument } from "@mysten/sui/transactions";
8
8
  import { deriveDynamicFieldID, fromHex, toHex } from "@mysten/sui/utils";
9
- import { Effect, Option } from "effect";
10
- import { getObjectsContent, getOptionalObjectContent, type SuiClient, type SuiRpcError } from "@misofm/effect";
11
- import type { TxThunk } from "./transactions.ts";
9
+ import { Effect, Option, Result } from "effect";
10
+ import { ObjectId, Sui, type DecodeError, type ObjectUnavailable, type TransportError, type Recipe } from "@unconfirmed/sui-effect";
12
11
  import { invokeWithAdminCap, type AdminCapAuthority, type ObjectInput } from "./vault.ts";
13
12
  import * as advisory from "./contracts/recording_advisory/recording_advisory.ts";
14
13
  import * as language from "./contracts/recording_language/recording_language.ts";
15
- import * as walrusData from "./contracts/recording_master_reference/deps/ori/data.ts";
14
+ // The generator prunes duplicate dependency subtrees and retains ori::data
15
+ // under cover_art. Both generated modules describe the same WalrusBlob ABI.
16
+ import * as walrusData from "./contracts/cover_art/deps/ori/data.ts";
16
17
  import * as masterReference from "./contracts/recording_master_reference/recording_master_reference.ts";
17
18
  import * as engineSession from "./contracts/recording_engine_session/recording_engine_session.ts";
18
19
  import * as streamingTranscode from "./contracts/recording_streaming_transcode/recording_streaming_transcode.ts";
@@ -35,7 +36,7 @@ export interface SetRecordingAdvisoryParams extends RecordingExtensionTarget {
35
36
  readonly rating: Rating;
36
37
  }
37
38
 
38
- export function setRecordingAdvisory(p: SetRecordingAdvisoryParams): TxThunk {
39
+ export function setRecordingAdvisory(p: SetRecordingAdvisoryParams): Recipe {
39
40
  return (tx) => {
40
41
  const rating = tx.add(
41
42
  p.rating === "Explicit" ? advisory.explicit({ package: p.recordingAdvisoryPackageId })
@@ -57,7 +58,7 @@ export interface SetRecordingLanguagesParams extends RecordingExtensionTarget {
57
58
  readonly languages: TransactionArgument;
58
59
  }
59
60
 
60
- export function setRecordingLanguages(p: SetRecordingLanguagesParams): TxThunk {
61
+ export function setRecordingLanguages(p: SetRecordingLanguagesParams): Recipe {
61
62
  return (tx) => {
62
63
  invokeWithAdminCap(tx, p.authority, {
63
64
  target: `${p.recordingLanguagePackageId}::recording_language::set_languages`,
@@ -68,7 +69,7 @@ export function setRecordingLanguages(p: SetRecordingLanguagesParams): TxThunk {
68
69
  };
69
70
  }
70
71
 
71
- export function setRecordingInstrumental(p: Omit<SetRecordingLanguagesParams, "languages">): TxThunk {
72
+ export function setRecordingInstrumental(p: Omit<SetRecordingLanguagesParams, "languages">): Recipe {
72
73
  return (tx) => {
73
74
  invokeWithAdminCap(tx, p.authority, {
74
75
  target: `${p.recordingLanguagePackageId}::recording_language::set_instrumental`,
@@ -87,7 +88,7 @@ interface RecordingWalrusReferenceParams extends RecordingExtensionTarget {
87
88
  export interface SetRecordingMasterReferenceParams extends RecordingWalrusReferenceParams {
88
89
  readonly recordingMasterReferencePackageId: string;
89
90
  }
90
- export function setRecordingMasterReference(p: SetRecordingMasterReferenceParams): TxThunk {
91
+ export function setRecordingMasterReference(p: SetRecordingMasterReferenceParams): Recipe {
91
92
  return (tx) => {
92
93
  invokeWithAdminCap(tx, p.authority, {
93
94
  target: `${p.recordingMasterReferencePackageId}::recording_master_reference::set_master_reference`,
@@ -109,7 +110,7 @@ export interface SetRecordingStreamingTranscodeParams extends RecordingExtension
109
110
  /** Sets or replaces the complete streaming-transcode Quilt attached to a Recording. */
110
111
  export function setRecordingStreamingTranscode(
111
112
  p: SetRecordingStreamingTranscodeParams,
112
- ): TxThunk {
113
+ ): Recipe {
113
114
  return (tx) => {
114
115
  const quilt = tx.moveCall({
115
116
  target: `${p.oriPackageId}::data::new_quilt`,
@@ -174,7 +175,7 @@ function compareBytes(a: Uint8Array, b: Uint8Array): number {
174
175
  * checked for duplicates here, mirroring `recording_engine_session::new`, so a
175
176
  * bad input fails before signing rather than on chain.
176
177
  */
177
- export function setRecordingEngineSession(p: SetRecordingEngineSessionParams): TxThunk {
178
+ export function setRecordingEngineSession(p: SetRecordingEngineSessionParams): Recipe {
178
179
  const stems = p.stems
179
180
  .map((stem) => ({ digest: stemDigestBytes(stem.digest), blobId: stem.blobId }))
180
181
  .sort((a, b) => compareBytes(a.digest, b.digest));
@@ -216,7 +217,7 @@ export type UnsetRecordingEngineSessionParams = Omit<
216
217
  >;
217
218
 
218
219
  /** Removes the Recording's Miso Engine session reference, if present. */
219
- export function unsetRecordingEngineSession(p: UnsetRecordingEngineSessionParams): TxThunk {
220
+ export function unsetRecordingEngineSession(p: UnsetRecordingEngineSessionParams): Recipe {
220
221
  return (tx) => {
221
222
  invokeWithAdminCap(tx, p.authority, {
222
223
  target: `${p.recordingEngineSessionPackageId}::recording_engine_session::unset_engine_session`,
@@ -230,7 +231,7 @@ export function unsetRecordingEngineSession(p: UnsetRecordingEngineSessionParams
230
231
  /** Removes the Recording's streaming-transcode reference, if present. */
231
232
  export function unsetRecordingStreamingTranscode(
232
233
  p: UnsetRecordingStreamingTranscodeParams,
233
- ): TxThunk {
234
+ ): Recipe {
234
235
  return (tx) => {
235
236
  invokeWithAdminCap(tx, p.authority, {
236
237
  target: `${p.recordingStreamingTranscodePackageId}::recording_streaming_transcode::unset_streaming_transcode`,
@@ -274,7 +275,7 @@ export function recordingStreamingTranscodeFieldId(
274
275
  export const getRecordingStreamingTranscode = Effect.fn("getRecordingStreamingTranscode")(function* (
275
276
  recordingId: string,
276
277
  recordingStreamingTranscodePackageId: string,
277
- ): Effect.fn.Return<string | null, SuiRpcError, SuiClient> {
278
+ ): Effect.fn.Return<string | null, TransportError, Sui> {
278
279
  const found = yield* getRecordingStreamingTranscodesByIds([recordingId], recordingStreamingTranscodePackageId);
279
280
  return found[recordingId] ?? null;
280
281
  });
@@ -286,7 +287,7 @@ export const getRecordingStreamingTranscode = Effect.fn("getRecordingStreamingTr
286
287
  export function getRecordingStreamingTranscodesByIds(
287
288
  recordingIdsInput: readonly string[],
288
289
  recordingStreamingTranscodePackageId: string,
289
- ): Effect.Effect<Partial<Record<string, string>>, SuiRpcError, SuiClient> {
290
+ ): Effect.Effect<Partial<Record<string, string>>, TransportError, Sui> {
290
291
  return readSoftFields(
291
292
  recordingIdsInput,
292
293
  (recordingId) => recordingStreamingTranscodeFieldId(recordingId, recordingStreamingTranscodePackageId),
@@ -303,17 +304,18 @@ const readSoftFields = Effect.fn("readSoftFields")(function* <T>(
303
304
  recordingIdsInput: readonly string[],
304
305
  fieldIdOf: (recordingId: string) => string,
305
306
  parse: (content: Uint8Array) => T,
306
- ): Effect.fn.Return<Partial<Record<string, T>>, SuiRpcError, SuiClient> {
307
+ ): Effect.fn.Return<Partial<Record<string, T>>, TransportError, Sui> {
307
308
  const recordingIds = [...new Set(recordingIdsInput)];
308
309
  if (recordingIds.length === 0) return {};
309
310
  const fieldIds = recordingIds.map(fieldIdOf);
310
- const contentById = yield* getObjectsContent(fieldIds);
311
+ const sui = yield* Sui;
312
+ const results = yield* sui.getObjects(fieldIds.map((id) => ObjectId.make(id)));
311
313
  const out: Partial<Record<string, T>> = {};
312
314
  recordingIds.forEach((recordingId, index) => {
313
- const found = contentById.get(fieldIds[index]!);
314
- if (!found) return;
315
+ const found = results[index]!;
316
+ if (!Result.isSuccess(found)) return;
315
317
  try {
316
- out[recordingId] = parse(found.content);
318
+ out[recordingId] = parse(found.success.content);
317
319
  } catch {
318
320
  // Extension metadata is soft: retain valid tracks when one field is stale.
319
321
  }
@@ -371,9 +373,10 @@ export function recordingEngineSessionFieldId(
371
373
  export const getRecordingEngineSession = Effect.fn("getRecordingEngineSession")(function* (
372
374
  recordingId: string,
373
375
  recordingEngineSessionPackageId: string,
374
- ): Effect.fn.Return<RecordingEngineSessionView | null, SuiRpcError, SuiClient> {
376
+ ): Effect.fn.Return<RecordingEngineSessionView | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
375
377
  const fieldId = recordingEngineSessionFieldId(recordingId, recordingEngineSessionPackageId);
376
- const found = yield* getOptionalObjectContent(fieldId);
378
+ const sui = yield* Sui;
379
+ const found = yield* sui.getObjectOption(ObjectId.make(fieldId));
377
380
  if (Option.isNone(found)) return null;
378
381
  return parseRecordingEngineSessionContent(found.value.content);
379
382
  });
@@ -385,7 +388,7 @@ export const getRecordingEngineSession = Effect.fn("getRecordingEngineSession")(
385
388
  export function getRecordingEngineSessionsByIds(
386
389
  recordingIdsInput: readonly string[],
387
390
  recordingEngineSessionPackageId: string,
388
- ): Effect.Effect<Partial<Record<string, RecordingEngineSessionView>>, SuiRpcError, SuiClient> {
391
+ ): Effect.Effect<Partial<Record<string, RecordingEngineSessionView>>, TransportError, Sui> {
389
392
  return readSoftFields(
390
393
  recordingIdsInput,
391
394
  (recordingId) => recordingEngineSessionFieldId(recordingId, recordingEngineSessionPackageId),
@@ -433,7 +436,7 @@ export function recordingMasterReferenceFieldId(
433
436
  export const getRecordingMasterReference = Effect.fn("getRecordingMasterReference")(function* (
434
437
  recordingId: string,
435
438
  recordingMasterReferencePackageId: string,
436
- ): Effect.fn.Return<string | null, SuiRpcError, SuiClient> {
439
+ ): Effect.fn.Return<string | null, TransportError, Sui> {
437
440
  const found = yield* getRecordingMasterReferencesByIds([recordingId], recordingMasterReferencePackageId);
438
441
  return found[recordingId] ?? null;
439
442
  });
@@ -447,7 +450,7 @@ export const getRecordingMasterReference = Effect.fn("getRecordingMasterReferenc
447
450
  export function getRecordingMasterReferencesByIds(
448
451
  recordingIdsInput: readonly string[],
449
452
  recordingMasterReferencePackageId: string,
450
- ): Effect.Effect<Partial<Record<string, string>>, SuiRpcError, SuiClient> {
453
+ ): Effect.Effect<Partial<Record<string, string>>, TransportError, Sui> {
451
454
  return readSoftFields(
452
455
  recordingIdsInput,
453
456
  (recordingId) => recordingMasterReferenceFieldId(recordingId, recordingMasterReferencePackageId),
@@ -13,8 +13,7 @@ import type {
13
13
  TransactionObjectArgument,
14
14
  } from "@mysten/sui/transactions";
15
15
  import { Effect, Option } from "effect";
16
- import { getOptionalObjectContent, type SuiClient, type SuiRpcError } from "@misofm/effect";
17
- import type { TxThunk } from "./transactions.ts";
16
+ import { ObjectId, Sui, type DecodeError, type ObjectUnavailable, type TransportError, type Recipe } from "@unconfirmed/sui-effect";
18
17
  import * as releaseDescription from "./contracts/release_description/release_description.ts";
19
18
  import * as releaseDspLink from "./contracts/release_dsp_link/release_dsp_link.ts";
20
19
  import * as releaseKind from "./contracts/release_kind/release_kind.ts";
@@ -43,7 +42,7 @@ export type SetReleaseKindParams = ReleaseExtensionTarget & {
43
42
  };
44
43
 
45
44
  /** Attach the release's self-declared kind (for example "EP" or "Mixtape"). */
46
- export function setReleaseKind(p: SetReleaseKindParams): TxThunk {
45
+ export function setReleaseKind(p: SetReleaseKindParams): Recipe {
47
46
  const bytes = new TextEncoder().encode(p.kind).length;
48
47
  if (bytes === 0) throw new Error("setReleaseKind: kind must not be empty");
49
48
  if (bytes > 32) {
@@ -90,8 +89,9 @@ export function parseReleaseKindContent(content: Uint8Array): string {
90
89
  export const getReleaseKind = Effect.fn("getReleaseKind")(function* (
91
90
  releaseId: string,
92
91
  releaseKindPackageId: string,
93
- ): Effect.fn.Return<string | null, SuiRpcError, SuiClient> {
94
- const found = yield* getOptionalObjectContent(releaseKindFieldId(releaseId, releaseKindPackageId));
92
+ ): Effect.fn.Return<string | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
93
+ const sui = yield* Sui;
94
+ const found = yield* sui.getObjectOption(ObjectId.make(releaseKindFieldId(releaseId, releaseKindPackageId)));
95
95
  return Option.isNone(found) ? null : parseReleaseKindContent(found.value.content);
96
96
  });
97
97
 
@@ -101,7 +101,7 @@ export type SetReleaseDescriptionParams = ReleaseExtensionTarget & {
101
101
  };
102
102
 
103
103
  /** Attach the release's editorial description. */
104
- export function setReleaseDescription(p: SetReleaseDescriptionParams): TxThunk {
104
+ export function setReleaseDescription(p: SetReleaseDescriptionParams): Recipe {
105
105
  const bytes = new TextEncoder().encode(p.description).length;
106
106
  if (bytes === 0) {
107
107
  throw new Error("setReleaseDescription: description must not be empty");
@@ -213,7 +213,7 @@ export type SetReleaseDspLinksParams = ReleaseExtensionTarget & {
213
213
  };
214
214
 
215
215
  /** Attach release-level and per-track DSP links. */
216
- export function setReleaseDspLinks(p: SetReleaseDspLinksParams): TxThunk {
216
+ export function setReleaseDspLinks(p: SetReleaseDspLinksParams): Recipe {
217
217
  return (tx) => {
218
218
  for (const link of p.releaseLinks ?? []) {
219
219
  const value = buildDspLink(tx, p.releaseDspLinkPackageId, link);
@@ -25,6 +25,7 @@
25
25
  // is intentionally not used here.
26
26
 
27
27
  import { Transaction, type TransactionObjectArgument } from "@mysten/sui/transactions";
28
+ import type { Recipe } from "@unconfirmed/sui-effect";
28
29
  import { contracts } from "@misofm/musicos";
29
30
  import { custodyOf, disperseShares, finalizeRelease, recordingAuthorityOf, requiredCommandResult, type AdminCustodyInput, type RecordingAuthorityInput, type ShareRecipient } from "./transactions.ts";
30
31
  import { disposeNewAdminCap, invokeWithAdminCap } from "./vault.ts";
@@ -108,7 +109,7 @@ interface Parts {
108
109
  }
109
110
 
110
111
  /** Builds the entire graph in a single transaction (see file header for ordering). */
111
- export function publishReleaseGraph(params: PublishReleaseGraphParams): (tx: Transaction) => void {
112
+ export function publishReleaseGraph(params: PublishReleaseGraphParams): Recipe {
112
113
  const { misoPackageId: pkg, minatoPackageId } = params;
113
114
  return (tx) => {
114
115
  // ── 1) Create every composition, then every recording (borrow-before-share) ──
package/src/royalty.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  import { Transaction, type TransactionArgument, type TransactionObjectArgument } from "@mysten/sui/transactions";
11
11
  import { deriveObjectID, normalizeStructTag } from "@mysten/sui/utils";
12
12
  import { Effect, Schema } from "effect";
13
- import { decodeBcs, getOptionalObjectContent, type BcsDecodeError, type SuiClient, type SuiRpcError } from "@misofm/effect";
13
+ import { ObjectId, Sui, SuiSchema, type DecodeError, type ObjectUnavailable, type TransportError } from "@unconfirmed/sui-effect";
14
14
 
15
15
  import { RoyaltyPool as RoyaltyPoolBcs } from "./contracts/royalty_pool/pool.ts";
16
16
  import { Stake as RoyaltyStakeBcs } from "./contracts/royalty_pool/stake.ts";
@@ -108,43 +108,37 @@ function mapRoutedStake(
108
108
  /** One royalty pool by object ID, or `null` when no such object exists. */
109
109
  export const getRoyaltyPoolById = Effect.fn("getRoyaltyPoolById")(function* (
110
110
  poolId: string,
111
- ): Effect.fn.Return<RoyaltyPool | null, BcsDecodeError | SuiRpcError, SuiClient> {
112
- const found = yield* getOptionalObjectContent(poolId);
111
+ ): Effect.fn.Return<RoyaltyPool | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
112
+ const sui = yield* Sui;
113
+ const id = ObjectId.make(poolId);
114
+ const found = yield* sui.getObjectOption(id);
113
115
  if (found._tag === "None") return null;
114
- return yield* decodeBcs(
115
- { parse: (bytes) => mapRoyaltyPool(poolId, RoyaltyPoolBcs.parse(bytes)) },
116
- RoyaltyPool,
117
- found.value.content,
118
- { type: "RoyaltyPool", objectId: poolId },
119
- );
116
+ const parsed = yield* SuiSchema.decode(SuiSchema.bcs(RoyaltyPoolBcs), found.value.content, { objectId: id, actualType: found.value.type });
117
+ return new RoyaltyPool(mapRoyaltyPool(poolId, parsed));
120
118
  });
121
119
 
122
120
  /** One owned `Stake<Share>` by object ID, or `null` when no such object exists. */
123
121
  export const getRoyaltyStakeById = Effect.fn("getRoyaltyStakeById")(function* (
124
122
  stakeId: string,
125
- ): Effect.fn.Return<RoyaltyStake | null, BcsDecodeError | SuiRpcError, SuiClient> {
126
- const found = yield* getOptionalObjectContent(stakeId);
123
+ ): Effect.fn.Return<RoyaltyStake | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
124
+ const sui = yield* Sui;
125
+ const id = ObjectId.make(stakeId);
126
+ const found = yield* sui.getObjectOption(id);
127
127
  if (found._tag === "None") return null;
128
- return yield* decodeBcs(
129
- { parse: (bytes) => mapRoyaltyStake(stakeId, RoyaltyStakeBcs.parse(bytes)) },
130
- RoyaltyStake,
131
- found.value.content,
132
- { type: "RoyaltyStake", objectId: stakeId },
133
- );
128
+ const parsed = yield* SuiSchema.decode(SuiSchema.bcs(RoyaltyStakeBcs), found.value.content, { objectId: id, actualType: found.value.type });
129
+ return new RoyaltyStake(mapRoyaltyStake(stakeId, parsed));
134
130
  });
135
131
 
136
132
  /** One shared routed stake by object ID, or `null` when no such object exists. */
137
133
  export const getRoutedStakeById = Effect.fn("getRoutedStakeById")(function* (
138
134
  routedStakeId: string,
139
- ): Effect.fn.Return<RoutedStake | null, BcsDecodeError | SuiRpcError, SuiClient> {
140
- const found = yield* getOptionalObjectContent(routedStakeId);
135
+ ): Effect.fn.Return<RoutedStake | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
136
+ const sui = yield* Sui;
137
+ const id = ObjectId.make(routedStakeId);
138
+ const found = yield* sui.getObjectOption(id);
141
139
  if (found._tag === "None") return null;
142
- return yield* decodeBcs(
143
- { parse: (bytes) => mapRoutedStake(routedStakeId, RoutedStakeBcs.parse(bytes)) },
144
- RoutedStake,
145
- found.value.content,
146
- { type: "RoutedStake", objectId: routedStakeId },
147
- );
140
+ const parsed = yield* SuiSchema.decode(SuiSchema.bcs(RoutedStakeBcs), found.value.content, { objectId: id, actualType: found.value.type });
141
+ return new RoutedStake(mapRoutedStake(routedStakeId, parsed));
148
142
  });
149
143
 
150
144
  /** Deterministically derive the royalty-pool ID for a parent and type pair. */