@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
@@ -7,7 +7,7 @@
7
7
  // `ArtistRole` value via its constructor move-call, then add/remove it.
8
8
 
9
9
  import * as rolesMod from "../../contracts/party_roles/party_roles.ts";
10
- import type { TxThunk } from "@misofm/partyos";
10
+ import type { Recipe } from "@unconfirmed/sui-effect";
11
11
 
12
12
  /** The canonical role variants (a fixed, typo-free set the frontend can render). */
13
13
  export type CanonicalRole =
@@ -39,7 +39,7 @@ const CANONICAL_CTORS = {
39
39
  } as const;
40
40
 
41
41
  /** Builds the `ArtistRole` value for a role via its constructor move-call. */
42
- function buildRole(tx: Parameters<TxThunk>[0], role: Role, pkg: string) {
42
+ function buildRole(tx: Parameters<Recipe>[0], role: Role, pkg: string) {
43
43
  if (role.kind === "custom") {
44
44
  return tx.add(rolesMod.custom({ package: pkg, arguments: [role.name] }));
45
45
  }
@@ -54,7 +54,7 @@ export interface AddRoleParams {
54
54
  }
55
55
 
56
56
  /** Adds a role to the party. Aborts on-chain if already held or the max is reached. */
57
- export function addRole(params: AddRoleParams): TxThunk {
57
+ export function addRole(params: AddRoleParams): Recipe {
58
58
  return (tx) => {
59
59
  const role = buildRole(tx, params.role, params.partyRolesPackageId);
60
60
  tx.add(
@@ -71,7 +71,7 @@ export interface RemoveRoleParams {
71
71
  }
72
72
 
73
73
  /** Removes a role from the party. Aborts on-chain if not held. */
74
- export function removeRole(params: RemoveRoleParams): TxThunk {
74
+ export function removeRole(params: RemoveRoleParams): Recipe {
75
75
  return (tx) => {
76
76
  const role = buildRole(tx, params.role, params.partyRolesPackageId);
77
77
  tx.add(
@@ -87,7 +87,7 @@ export interface ClearRolesParams {
87
87
  }
88
88
 
89
89
  /** Removes the party's entire role set. No-op on-chain if none is set. */
90
- export function clearRoles(params: ClearRolesParams): TxThunk {
90
+ export function clearRoles(params: ClearRolesParams): Recipe {
91
91
  return (tx) => {
92
92
  tx.add(rolesMod.clearRoles({ package: params.partyRolesPackageId, arguments: [params.partyId, params.capId] }));
93
93
  };
@@ -6,7 +6,7 @@
6
6
  // concern.
7
7
 
8
8
  import * as tagsMod from "../../contracts/party_tags/party_tags.ts";
9
- import type { TxThunk } from "@misofm/partyos";
9
+ import type { Recipe } from "@unconfirmed/sui-effect";
10
10
 
11
11
  export interface AddTagParams {
12
12
  partyId: string;
@@ -16,7 +16,7 @@ export interface AddTagParams {
16
16
  }
17
17
 
18
18
  /** Adds a tag to the party. Aborts on-chain if empty, too long, duplicate, or the max is reached. */
19
- export function addTag(params: AddTagParams): TxThunk {
19
+ export function addTag(params: AddTagParams): Recipe {
20
20
  return (tx) => {
21
21
  tx.add(
22
22
  tagsMod.addTag({ package: params.partyTagsPackageId, arguments: [params.partyId, params.capId, params.tag] }),
@@ -32,7 +32,7 @@ export interface RemoveTagParams {
32
32
  }
33
33
 
34
34
  /** Removes a tag from the party. Aborts on-chain if not present. */
35
- export function removeTag(params: RemoveTagParams): TxThunk {
35
+ export function removeTag(params: RemoveTagParams): Recipe {
36
36
  return (tx) => {
37
37
  tx.add(
38
38
  tagsMod.removeTag({ package: params.partyTagsPackageId, arguments: [params.partyId, params.capId, params.tag] }),
@@ -47,7 +47,7 @@ export interface ClearTagsParams {
47
47
  }
48
48
 
49
49
  /** Removes the party's entire tag set. No-op on-chain if none is set. */
50
- export function clearTags(params: ClearTagsParams): TxThunk {
50
+ export function clearTags(params: ClearTagsParams): Recipe {
51
51
  return (tx) => {
52
52
  tx.add(tagsMod.clearTags({ package: params.partyTagsPackageId, arguments: [params.partyId, params.capId] }));
53
53
  };
@@ -28,7 +28,6 @@ export {
28
28
  removeMember,
29
29
  type Party,
30
30
  type PartyKind,
31
- type TxThunk,
32
31
  type CreatePartyParams,
33
32
  type SetNameParams,
34
33
  type InvitePartyParams,
@@ -1,23 +1,24 @@
1
1
  // Copyright (c) Miso Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- // Typed reads for the Party EXTENSIONS: fetch an on-chain dynamic field via the
5
- // Core API, BCS-parse it through the generated struct, and map to the public
6
- // camelCase types. Party core reads (`getPartyById`, group membership, …) live
7
- // in `@misofm/partyos` — this file only covers profile/media/roles/tags/genres/
8
- // ctas/links.
4
+ // Typed reads for the Party EXTENSIONS: fetch an on-chain dynamic field via
5
+ // `Sui`, BCS-parse its value through the generated struct, and map to the
6
+ // public camelCase types. Party core reads (`getPartyById`, group
7
+ // membership, …) live in `@misofm/partyos` — this file only covers
8
+ // profile/media/roles/tags/genres/ctas/links.
9
+ //
10
+ // Each field lives under an empty positional key (Move's implicit
11
+ // `dummy_field: bool` → one zero byte); `sui.getDynamicFieldOption(parent,
12
+ // { type, bcs })` reads the field's VALUE bytes directly, so — unlike the
13
+ // predecessor `@misofm/effect`-era version of this file — there is no
14
+ // separate `Field<K, V>` wrapper struct to decode per extension: one less
15
+ // generated-struct dependency per read, and the wrapper `bcs.struct("Field",
16
+ // ...)` definitions are gone entirely.
9
17
 
10
18
  import { Effect, Option, Stream } from "effect";
11
- import { deriveDynamicFieldID } from "@mysten/sui/utils";
12
19
  import { bcs } from "@mysten/sui/bcs";
13
- import {
14
- decodeBcs,
15
- getOptionalObjectContent,
16
- listDynamicFields,
17
- SuiClient,
18
- type BcsDecodeError,
19
- type SuiRpcError,
20
- } from "@misofm/effect";
20
+ import { normalizeStructTag } from "@mysten/sui/utils";
21
+ import { ObjectId, Sui, SuiSchema, type DecodeError, type TransportError } from "@unconfirmed/sui-effect";
21
22
  import { Profile as ProfileBcs, ProfileKey as ProfileKeyBcs } from "../contracts/party_profile/party_profile.ts";
22
23
  import { Media as MediaBcs, MediaKey as MediaKeyBcs } from "../contracts/party_media/party_media.ts";
23
24
  import { ArtistRole as ArtistRoleBcs, RolesKey as RolesKeyBcs } from "../contracts/party_roles/party_roles.ts";
@@ -28,119 +29,114 @@ import { mapCtas, mapGenres, mapMedia, mapProfile, mapRoles, mapTags } from "./i
28
29
  import { buildLink, platformForDataType } from "./extensions/links.ts";
29
30
  import { Cta, Media, PlatformLink, Profile } from "./types.ts";
30
31
 
31
- // The profile is a dynamic field on the party UID under an empty `ProfileKey()`
32
- // (Move's implicit `dummy_field: bool` → one zero byte).
33
- const ProfileField = bcs.struct("Field", { id: bcs.Address, name: ProfileKeyBcs, value: ProfileBcs });
34
32
  const PROFILE_KEY_BYTES = ProfileKeyBcs.serialize([false]).toBytes();
35
33
 
36
34
  /** Fetches a party's profile; `Option.none()` if none is set. */
37
35
  export const getProfile = Effect.fn("getProfile")(function* (
38
36
  partyId: string,
39
37
  partyProfilePackageId: string,
40
- ): Effect.fn.Return<Option.Option<Profile>, BcsDecodeError | SuiRpcError, SuiClient> {
41
- const fieldId = deriveDynamicFieldID(
42
- partyId,
43
- `${partyProfilePackageId}::party_profile::ProfileKey`,
44
- PROFILE_KEY_BYTES,
45
- );
46
- const contentOpt = yield* getOptionalObjectContent(fieldId);
47
- if (Option.isNone(contentOpt)) return Option.none();
48
- const profile = yield* decodeBcs(
49
- { parse: (bytes: Uint8Array) => mapProfile(partyId, ProfileField.parse(bytes).value) },
50
- Profile,
51
- contentOpt.value.content,
52
- { type: "Profile", objectId: fieldId },
53
- );
54
- return Option.some(profile);
38
+ ): Effect.fn.Return<Option.Option<Profile>, DecodeError | TransportError, Sui> {
39
+ const sui = yield* Sui;
40
+ const keyTag = normalizeStructTag(`${partyProfilePackageId}::party_profile::ProfileKey`);
41
+ const field = yield* sui.getDynamicFieldOption(ObjectId.make(partyId), { type: keyTag, bcs: PROFILE_KEY_BYTES });
42
+ if (Option.isNone(field)) return Option.none();
43
+ const valueTag = normalizeStructTag(`${partyProfilePackageId}::party_profile::Profile`);
44
+ const raw = yield* SuiSchema.decode(SuiSchema.bcs(ProfileBcs, valueTag), field.value.value.bcs, {
45
+ objectId: field.value.fieldId,
46
+ actualType: field.value.value.type,
47
+ });
48
+ return Option.some(mapProfile(partyId, raw));
55
49
  });
56
50
 
57
- // Media is a dynamic field on the party UID under an empty `MediaKey()` (same
58
- // implicit `dummy_field: bool` → one zero byte as the profile key).
59
- const MediaField = bcs.struct("Field", { id: bcs.Address, name: MediaKeyBcs, value: MediaBcs });
60
51
  const MEDIA_KEY_BYTES = MediaKeyBcs.serialize([false]).toBytes();
61
52
 
62
53
  /** Fetches a party's media (avatar + header); `Option.none()` if none is set. */
63
54
  export const getMedia = Effect.fn("getMedia")(function* (
64
55
  partyId: string,
65
56
  partyMediaPackageId: string,
66
- ): Effect.fn.Return<Option.Option<Media>, BcsDecodeError | SuiRpcError, SuiClient> {
67
- const fieldId = deriveDynamicFieldID(
68
- partyId,
69
- `${partyMediaPackageId}::party_media::MediaKey`,
70
- MEDIA_KEY_BYTES,
71
- );
72
- const contentOpt = yield* getOptionalObjectContent(fieldId);
73
- if (Option.isNone(contentOpt)) return Option.none();
74
- const media = yield* decodeBcs(
75
- { parse: (bytes: Uint8Array) => mapMedia(partyId, MediaField.parse(bytes).value) },
76
- Media,
77
- contentOpt.value.content,
78
- { type: "Media", objectId: fieldId },
79
- );
80
- return Option.some(media);
57
+ ): Effect.fn.Return<Option.Option<Media>, DecodeError | TransportError, Sui> {
58
+ const sui = yield* Sui;
59
+ const keyTag = normalizeStructTag(`${partyMediaPackageId}::party_media::MediaKey`);
60
+ const field = yield* sui.getDynamicFieldOption(ObjectId.make(partyId), { type: keyTag, bcs: MEDIA_KEY_BYTES });
61
+ if (Option.isNone(field)) return Option.none();
62
+ const valueTag = normalizeStructTag(`${partyMediaPackageId}::party_media::Media`);
63
+ const raw = yield* SuiSchema.decode(SuiSchema.bcs(MediaBcs, valueTag), field.value.value.bcs, {
64
+ objectId: field.value.fieldId,
65
+ actualType: field.value.value.type,
66
+ });
67
+ return Option.some(mapMedia(partyId, raw));
81
68
  });
82
69
 
83
70
  // === Collection extension reads (roles / tags / genres / ctas) ===
84
71
  //
85
- // Each is a single dynamic field on the party UID under an empty positional key
86
- // (Move's implicit `dummy_field: bool` → one zero byte, same as the profile key).
87
- // Absence keeps the pre-migration policy: an empty collection, not a failure.
72
+ // Each is a single dynamic field on the party UID under an empty positional
73
+ // key (same implicit `dummy_field: bool` → one zero byte as the profile
74
+ // key). Absence keeps the pre-migration policy: an empty collection, not a
75
+ // failure.
88
76
 
89
77
  const ROLES_KEY_BYTES = RolesKeyBcs.serialize([false]).toBytes();
90
- const RolesField = bcs.struct("Field", { id: bcs.Address, name: RolesKeyBcs, value: bcs.vector(ArtistRoleBcs) });
78
+ const RolesValue = bcs.vector(ArtistRoleBcs);
91
79
 
92
80
  /** The party's artist-type roles (display names), or `[]` if none are set. */
93
81
  export const getRoles = Effect.fn("getRoles")(function* (
94
82
  partyId: string,
95
83
  partyRolesPackageId: string,
96
- ): Effect.fn.Return<string[], SuiRpcError, SuiClient> {
97
- const fieldId = deriveDynamicFieldID(partyId, `${partyRolesPackageId}::party_roles::RolesKey`, ROLES_KEY_BYTES);
98
- const contentOpt = yield* getOptionalObjectContent(fieldId);
99
- if (Option.isNone(contentOpt)) return [];
100
- return mapRoles(RolesField.parse(contentOpt.value.content).value);
84
+ ): Effect.fn.Return<string[], DecodeError | TransportError, Sui> {
85
+ const sui = yield* Sui;
86
+ const keyTag = normalizeStructTag(`${partyRolesPackageId}::party_roles::RolesKey`);
87
+ const field = yield* sui.getDynamicFieldOption(ObjectId.make(partyId), { type: keyTag, bcs: ROLES_KEY_BYTES });
88
+ if (Option.isNone(field)) return [];
89
+ const roles = yield* SuiSchema.decode(SuiSchema.bcs(RolesValue), field.value.value.bcs, { objectId: field.value.fieldId });
90
+ return mapRoles(roles);
101
91
  });
102
92
 
103
93
  const TAGS_KEY_BYTES = TagsKeyBcs.serialize([false]).toBytes();
104
- const TagsField = bcs.struct("Field", { id: bcs.Address, name: TagsKeyBcs, value: bcs.vector(bcs.string()) });
94
+ const TagsValue = bcs.vector(bcs.string());
105
95
 
106
96
  /** The party's free-form tags, or `[]` if none are set. */
107
97
  export const getTags = Effect.fn("getTags")(function* (
108
98
  partyId: string,
109
99
  partyTagsPackageId: string,
110
- ): Effect.fn.Return<string[], SuiRpcError, SuiClient> {
111
- const fieldId = deriveDynamicFieldID(partyId, `${partyTagsPackageId}::party_tags::TagsKey`, TAGS_KEY_BYTES);
112
- const contentOpt = yield* getOptionalObjectContent(fieldId);
113
- if (Option.isNone(contentOpt)) return [];
114
- return mapTags(TagsField.parse(contentOpt.value.content).value);
100
+ ): Effect.fn.Return<string[], DecodeError | TransportError, Sui> {
101
+ const sui = yield* Sui;
102
+ const keyTag = normalizeStructTag(`${partyTagsPackageId}::party_tags::TagsKey`);
103
+ const field = yield* sui.getDynamicFieldOption(ObjectId.make(partyId), { type: keyTag, bcs: TAGS_KEY_BYTES });
104
+ if (Option.isNone(field)) return [];
105
+ const tags = yield* SuiSchema.decode(SuiSchema.bcs(TagsValue), field.value.value.bcs, { objectId: field.value.fieldId });
106
+ return mapTags(tags);
115
107
  });
116
108
 
117
109
  const GENRES_KEY_BYTES = GenresKeyBcs.serialize([false]).toBytes();
118
- const GenresField = bcs.struct("Field", { id: bcs.Address, name: GenresKeyBcs, value: bcs.vector(bcs.Address) });
110
+ const GenresValue = bcs.vector(bcs.Address);
119
111
 
120
112
  /** The party's genre object ids, or `[]` if none are set. */
121
113
  export const getGenres = Effect.fn("getGenres")(function* (
122
114
  partyId: string,
123
115
  partyGenrePackageId: string,
124
- ): Effect.fn.Return<string[], SuiRpcError, SuiClient> {
125
- const fieldId = deriveDynamicFieldID(partyId, `${partyGenrePackageId}::party_genre::GenresKey`, GENRES_KEY_BYTES);
126
- const contentOpt = yield* getOptionalObjectContent(fieldId);
127
- if (Option.isNone(contentOpt)) return [];
128
- return mapGenres(GenresField.parse(contentOpt.value.content).value);
116
+ ): Effect.fn.Return<string[], DecodeError | TransportError, Sui> {
117
+ const sui = yield* Sui;
118
+ const keyTag = normalizeStructTag(`${partyGenrePackageId}::party_genre::GenresKey`);
119
+ const field = yield* sui.getDynamicFieldOption(ObjectId.make(partyId), { type: keyTag, bcs: GENRES_KEY_BYTES });
120
+ if (Option.isNone(field)) return [];
121
+ const genres = yield* SuiSchema.decode(SuiSchema.bcs(GenresValue), field.value.value.bcs, { objectId: field.value.fieldId });
122
+ return mapGenres(genres);
129
123
  });
130
124
 
131
125
  const CTAS_KEY_BYTES = CtasKeyBcs.serialize([false]).toBytes();
132
126
  // The CTA field's value is a bare `vector<Cta>` (not a wrapper struct).
133
- const CtasField = bcs.struct("Field", { id: bcs.Address, name: CtasKeyBcs, value: bcs.vector(CtaBcs) });
127
+ const CtasValue = bcs.vector(CtaBcs);
134
128
 
135
129
  /** The party's ordered CTA list (position is priority), or `[]` if none is set. */
136
130
  export const getCtas = Effect.fn("getCtas")(function* (
137
131
  partyId: string,
138
132
  partyCtaPackageId: string,
139
- ): Effect.fn.Return<Cta[], SuiRpcError, SuiClient> {
140
- const fieldId = deriveDynamicFieldID(partyId, `${partyCtaPackageId}::party_cta::CtasKey`, CTAS_KEY_BYTES);
141
- const contentOpt = yield* getOptionalObjectContent(fieldId);
142
- if (Option.isNone(contentOpt)) return [];
143
- return mapCtas(CtasField.parse(contentOpt.value.content).value).map((c) => new Cta(c));
133
+ ): Effect.fn.Return<Cta[], DecodeError | TransportError, Sui> {
134
+ const sui = yield* Sui;
135
+ const keyTag = normalizeStructTag(`${partyCtaPackageId}::party_cta::CtasKey`);
136
+ const field = yield* sui.getDynamicFieldOption(ObjectId.make(partyId), { type: keyTag, bcs: CTAS_KEY_BYTES });
137
+ if (Option.isNone(field)) return [];
138
+ const ctas = yield* SuiSchema.decode(SuiSchema.bcs(CtasValue), field.value.value.bcs, { objectId: field.value.fieldId });
139
+ return mapCtas(ctas).map((c) => new Cta(c));
144
140
  });
145
141
 
146
142
  // === Platform-link reads ===
@@ -150,26 +146,33 @@ export const getCtas = Effect.fn("getCtas")(function* (
150
146
  // enumerate the party's dynamic fields and pick out the platform-link ones,
151
147
  // identifying the platform from the `Data` type argument. Every payload `Data`
152
148
  // type is a single-`String` newtype, so `PlatformLink<Data>` serializes exactly
153
- // as one BCS string — parse the field value as such.
154
- const PlatformLinkField = bcs.struct("Field", { id: bcs.Address, name: bcs.bool(), value: bcs.string() });
149
+ // as one BCS string — decode the field's value as such.
150
+ const PlatformLinkValue = bcs.string();
155
151
  const PLATFORM_LINK_KEY_RE = /::platform_link::PlatformLinkKey<(.+)>$/;
156
152
 
157
153
  /** All external-platform links attached to a party (social, music, professional). */
158
154
  export const getLinks = Effect.fn("getLinks")(function* (
159
155
  partyId: string,
160
- ): Effect.fn.Return<PlatformLink[], SuiRpcError, SuiClient> {
161
- const fields = Array.from(yield* Stream.runCollect(listDynamicFields(partyId)));
156
+ ): Effect.fn.Return<PlatformLink[], DecodeError | TransportError, Sui> {
157
+ const sui = yield* Sui;
158
+ const id = ObjectId.make(partyId);
159
+ // The regex match below drops every entry that is not this platform's own
160
+ // `PlatformLinkKey<Data>` — including a foreign extension's dynamic fields
161
+ // on the same party UID — before a byte is read.
162
+ const entries = yield* Stream.runCollect(sui.streamDynamicFields(id));
162
163
  const links: PlatformLink[] = [];
163
- for (const f of fields) {
164
- if (typeof f.name?.type !== "string") continue;
165
- const match = f.name.type.match(PLATFORM_LINK_KEY_RE);
164
+ for (const entry of entries) {
165
+ const match = entry.name.type.match(PLATFORM_LINK_KEY_RE);
166
166
  const dataType = match?.[1];
167
167
  if (!dataType) continue;
168
168
  const platform = platformForDataType(dataType);
169
169
  if (!platform) continue;
170
- const contentOpt = yield* getOptionalObjectContent(f.fieldId);
171
- if (Option.isNone(contentOpt)) continue;
172
- links.push(buildLink(platform, PlatformLinkField.parse(contentOpt.value.content).value));
170
+ const field = yield* sui.getDynamicFieldOption(id, entry.name);
171
+ if (Option.isNone(field)) continue;
172
+ const value = yield* SuiSchema.decode(SuiSchema.bcs(PlatformLinkValue), field.value.value.bcs, {
173
+ objectId: field.value.fieldId,
174
+ });
175
+ links.push(buildLink(platform, value));
173
176
  }
174
177
  return links;
175
178
  });