@misofm/platform 0.24.0 → 0.26.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 (635) hide show
  1. package/README.md +262 -95
  2. package/dist/auth.d.ts +8 -13
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +78 -59
  5. package/dist/auth.js.map +1 -1
  6. package/dist/catalog.d.ts +6 -6
  7. package/dist/catalog.d.ts.map +1 -1
  8. package/dist/catalog.js +33 -21
  9. package/dist/catalog.js.map +1 -1
  10. package/dist/client.d.ts +124 -127
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +112 -114
  13. package/dist/client.js.map +1 -1
  14. package/dist/contracts/composition_credits/composition_credits.d.ts +181 -0
  15. package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -0
  16. package/dist/contracts/composition_credits/composition_credits.js +109 -0
  17. package/dist/contracts/composition_credits/composition_credits.js.map +1 -0
  18. package/dist/contracts/composition_credits/composition_party_role.d.ts +119 -0
  19. package/dist/contracts/composition_credits/composition_party_role.d.ts.map +1 -0
  20. package/dist/contracts/composition_credits/composition_party_role.js +139 -0
  21. package/dist/contracts/composition_credits/composition_party_role.js.map +1 -0
  22. package/dist/contracts/composition_credits/deps/credit/credit.d.ts +24 -0
  23. package/dist/contracts/composition_credits/deps/credit/credit.d.ts.map +1 -0
  24. package/dist/contracts/composition_credits/deps/credit/credit.js +23 -0
  25. package/dist/contracts/composition_credits/deps/credit/credit.js.map +1 -0
  26. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts +37 -0
  27. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts.map +1 -0
  28. package/dist/contracts/composition_credits/deps/sui/vec_map.js +28 -0
  29. package/dist/contracts/composition_credits/deps/sui/vec_map.js.map +1 -0
  30. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +143 -0
  31. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts.map +1 -0
  32. package/dist/contracts/composition_routed_stake/composition_routed_stake.js +125 -0
  33. package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -0
  34. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +93 -0
  35. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -0
  36. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +86 -0
  37. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -0
  38. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts +90 -0
  39. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts.map +1 -0
  40. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js +85 -0
  41. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js.map +1 -0
  42. package/dist/contracts/composition_royalty_pool_plugin/witness.d.ts +6 -0
  43. package/dist/contracts/composition_royalty_pool_plugin/witness.d.ts.map +1 -0
  44. package/dist/contracts/composition_royalty_pool_plugin/witness.js +8 -0
  45. package/dist/contracts/composition_royalty_pool_plugin/witness.js.map +1 -0
  46. package/dist/contracts/cover_art/cover_art.d.ts +83 -0
  47. package/dist/contracts/cover_art/cover_art.d.ts.map +1 -0
  48. package/dist/contracts/cover_art/cover_art.js +66 -0
  49. package/dist/contracts/cover_art/cover_art.js.map +1 -0
  50. package/dist/contracts/cover_art/deps/ori/confidentiality.d.ts +24 -0
  51. package/dist/contracts/cover_art/deps/ori/confidentiality.d.ts.map +1 -0
  52. package/dist/contracts/cover_art/deps/ori/confidentiality.js +24 -0
  53. package/dist/contracts/cover_art/deps/ori/confidentiality.js.map +1 -0
  54. package/dist/contracts/cover_art/deps/ori/data.d.ts +16 -0
  55. package/dist/contracts/cover_art/deps/ori/data.d.ts.map +1 -0
  56. package/dist/contracts/cover_art/deps/ori/data.js +12 -0
  57. package/dist/contracts/cover_art/deps/ori/data.js.map +1 -0
  58. package/dist/contracts/genre/genre.d.ts +78 -0
  59. package/dist/contracts/genre/genre.d.ts.map +1 -0
  60. package/dist/contracts/genre/genre.js +87 -0
  61. package/dist/contracts/genre/genre.js.map +1 -0
  62. package/dist/contracts/party_cta/party_cta.d.ts +120 -0
  63. package/dist/contracts/party_cta/party_cta.d.ts.map +1 -0
  64. package/dist/contracts/party_cta/party_cta.js +139 -0
  65. package/dist/contracts/party_cta/party_cta.js.map +1 -0
  66. package/dist/contracts/party_genre/party_genre.d.ts +117 -0
  67. package/dist/contracts/party_genre/party_genre.d.ts.map +1 -0
  68. package/dist/contracts/party_genre/party_genre.js +131 -0
  69. package/dist/contracts/party_genre/party_genre.js.map +1 -0
  70. package/dist/contracts/party_media/party_media.d.ts +86 -0
  71. package/dist/contracts/party_media/party_media.d.ts.map +1 -0
  72. package/dist/contracts/party_media/party_media.js +97 -0
  73. package/dist/contracts/party_media/party_media.js.map +1 -0
  74. package/dist/contracts/party_music/party_music.d.ts +209 -0
  75. package/dist/contracts/party_music/party_music.d.ts.map +1 -0
  76. package/dist/contracts/party_music/party_music.js +259 -0
  77. package/dist/contracts/party_music/party_music.js.map +1 -0
  78. package/dist/contracts/party_platform_link/party_platform_link.d.ts +89 -0
  79. package/dist/contracts/party_platform_link/party_platform_link.d.ts.map +1 -0
  80. package/dist/contracts/party_platform_link/party_platform_link.js +92 -0
  81. package/dist/contracts/party_platform_link/party_platform_link.js.map +1 -0
  82. package/dist/contracts/party_pro_link/party_pro_link.d.ts +233 -0
  83. package/dist/contracts/party_pro_link/party_pro_link.d.ts.map +1 -0
  84. package/dist/contracts/party_pro_link/party_pro_link.js +289 -0
  85. package/dist/contracts/party_pro_link/party_pro_link.js.map +1 -0
  86. package/dist/contracts/party_profile/deps/country_code/country_code.d.ts +15 -0
  87. package/dist/contracts/party_profile/deps/country_code/country_code.d.ts.map +1 -0
  88. package/dist/contracts/party_profile/deps/country_code/country_code.js +17 -0
  89. package/dist/contracts/party_profile/deps/country_code/country_code.js.map +1 -0
  90. package/dist/contracts/party_profile/deps/language_code/language_code.d.ts +6 -0
  91. package/dist/contracts/party_profile/deps/language_code/language_code.d.ts.map +1 -0
  92. package/dist/contracts/party_profile/deps/language_code/language_code.js +8 -0
  93. package/dist/contracts/party_profile/deps/language_code/language_code.js.map +1 -0
  94. package/dist/contracts/party_profile/party_profile.d.ts +133 -0
  95. package/dist/contracts/party_profile/party_profile.d.ts.map +1 -0
  96. package/dist/contracts/party_profile/party_profile.js +153 -0
  97. package/dist/contracts/party_profile/party_profile.js.map +1 -0
  98. package/dist/contracts/party_roles/party_roles.d.ts +201 -0
  99. package/dist/contracts/party_roles/party_roles.d.ts.map +1 -0
  100. package/dist/contracts/party_roles/party_roles.js +237 -0
  101. package/dist/contracts/party_roles/party_roles.js.map +1 -0
  102. package/dist/contracts/party_social/party_social.d.ts +258 -0
  103. package/dist/contracts/party_social/party_social.d.ts.map +1 -0
  104. package/dist/contracts/party_social/party_social.js +320 -0
  105. package/dist/contracts/party_social/party_social.js.map +1 -0
  106. package/dist/contracts/party_tags/party_tags.d.ts +116 -0
  107. package/dist/contracts/party_tags/party_tags.d.ts.map +1 -0
  108. package/dist/contracts/party_tags/party_tags.js +130 -0
  109. package/dist/contracts/party_tags/party_tags.js.map +1 -0
  110. package/dist/contracts/party_wallet/party_wallet.d.ts +112 -0
  111. package/dist/contracts/party_wallet/party_wallet.d.ts.map +1 -0
  112. package/dist/contracts/party_wallet/party_wallet.js +114 -0
  113. package/dist/contracts/party_wallet/party_wallet.js.map +1 -0
  114. package/dist/contracts/record/deps/std/type_name.d.ts +18 -0
  115. package/dist/contracts/record/deps/std/type_name.d.ts.map +1 -0
  116. package/dist/contracts/record/deps/std/type_name.js +20 -0
  117. package/dist/contracts/record/deps/std/type_name.js.map +1 -0
  118. package/dist/contracts/record/deps/sui/vec_set.d.ts +21 -0
  119. package/dist/contracts/record/deps/sui/vec_set.d.ts.map +1 -0
  120. package/dist/contracts/record/deps/sui/vec_set.js +20 -0
  121. package/dist/contracts/record/deps/sui/vec_set.js.map +1 -0
  122. package/dist/contracts/record/pressing.d.ts +327 -0
  123. package/dist/contracts/record/pressing.d.ts.map +1 -0
  124. package/dist/contracts/record/pressing.js +345 -0
  125. package/dist/contracts/record/pressing.js.map +1 -0
  126. package/dist/contracts/record/record.d.ts +190 -0
  127. package/dist/contracts/record/record.d.ts.map +1 -0
  128. package/dist/contracts/record/record.js +226 -0
  129. package/dist/contracts/record/record.js.map +1 -0
  130. package/dist/contracts/record_shop/deps/std/type_name.d.ts +18 -0
  131. package/dist/contracts/record_shop/deps/std/type_name.d.ts.map +1 -0
  132. package/dist/contracts/record_shop/deps/std/type_name.js +20 -0
  133. package/dist/contracts/record_shop/deps/std/type_name.js.map +1 -0
  134. package/dist/contracts/record_shop/listing.d.ts +387 -0
  135. package/dist/contracts/record_shop/listing.d.ts.map +1 -0
  136. package/dist/contracts/record_shop/listing.js +380 -0
  137. package/dist/contracts/record_shop/listing.js.map +1 -0
  138. package/dist/contracts/record_shop/witness.d.ts +7 -0
  139. package/dist/contracts/record_shop/witness.d.ts.map +1 -0
  140. package/dist/contracts/record_shop/witness.js +9 -0
  141. package/dist/contracts/record_shop/witness.js.map +1 -0
  142. package/dist/contracts/recording_advisory/recording_advisory.d.ts +194 -0
  143. package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -0
  144. package/dist/contracts/recording_advisory/recording_advisory.js +204 -0
  145. package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -0
  146. package/dist/contracts/recording_credits/deps/credit/credit.d.ts +24 -0
  147. package/dist/contracts/recording_credits/deps/credit/credit.d.ts.map +1 -0
  148. package/dist/contracts/recording_credits/deps/credit/credit.js +23 -0
  149. package/dist/contracts/recording_credits/deps/credit/credit.js.map +1 -0
  150. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts +37 -0
  151. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -0
  152. package/dist/contracts/recording_credits/deps/sui/vec_map.js +28 -0
  153. package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -0
  154. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts +21 -0
  155. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -0
  156. package/dist/contracts/recording_credits/deps/sui/vec_set.js +20 -0
  157. package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -0
  158. package/dist/contracts/recording_credits/recording_credits.d.ts +2313 -0
  159. package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -0
  160. package/dist/contracts/recording_credits/recording_credits.js +270 -0
  161. package/dist/contracts/recording_credits/recording_credits.js.map +1 -0
  162. package/dist/contracts/recording_credits/recording_party_role.d.ts +1174 -0
  163. package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -0
  164. package/dist/contracts/recording_credits/recording_party_role.js +692 -0
  165. package/dist/contracts/recording_credits/recording_party_role.js.map +1 -0
  166. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.d.ts +24 -0
  167. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.d.ts.map +1 -0
  168. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.js +24 -0
  169. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.js.map +1 -0
  170. package/dist/contracts/recording_engine_session/deps/ori/data.d.ts +16 -0
  171. package/dist/contracts/recording_engine_session/deps/ori/data.d.ts.map +1 -0
  172. package/dist/contracts/recording_engine_session/deps/ori/data.js +12 -0
  173. package/dist/contracts/recording_engine_session/deps/ori/data.js.map +1 -0
  174. package/dist/contracts/recording_engine_session/recording_engine_session.d.ts +296 -0
  175. package/dist/contracts/recording_engine_session/recording_engine_session.d.ts.map +1 -0
  176. package/dist/contracts/recording_engine_session/recording_engine_session.js +216 -0
  177. package/dist/contracts/recording_engine_session/recording_engine_session.js.map +1 -0
  178. package/dist/contracts/recording_genre/recording_genre.d.ts +173 -0
  179. package/dist/contracts/recording_genre/recording_genre.d.ts.map +1 -0
  180. package/dist/contracts/recording_genre/recording_genre.js +170 -0
  181. package/dist/contracts/recording_genre/recording_genre.js.map +1 -0
  182. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +6 -0
  183. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +1 -0
  184. package/dist/contracts/recording_language/deps/language_code/language_code.js +8 -0
  185. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +1 -0
  186. package/dist/contracts/recording_language/recording_language.d.ts +152 -0
  187. package/dist/contracts/recording_language/recording_language.d.ts.map +1 -0
  188. package/dist/contracts/recording_language/recording_language.js +149 -0
  189. package/dist/contracts/recording_language/recording_language.js.map +1 -0
  190. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts +24 -0
  191. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts.map +1 -0
  192. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js +24 -0
  193. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js.map +1 -0
  194. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts +16 -0
  195. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts.map +1 -0
  196. package/dist/contracts/recording_master_reference/deps/ori/data.js +12 -0
  197. package/dist/contracts/recording_master_reference/deps/ori/data.js.map +1 -0
  198. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +129 -0
  199. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -0
  200. package/dist/contracts/recording_master_reference/recording_master_reference.js +119 -0
  201. package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -0
  202. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +96 -0
  203. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -0
  204. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +85 -0
  205. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -0
  206. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts +92 -0
  207. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts.map +1 -0
  208. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js +85 -0
  209. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js.map +1 -0
  210. package/dist/contracts/recording_royalty_pool_plugin/witness.d.ts +6 -0
  211. package/dist/contracts/recording_royalty_pool_plugin/witness.d.ts.map +1 -0
  212. package/dist/contracts/recording_royalty_pool_plugin/witness.js +8 -0
  213. package/dist/contracts/recording_royalty_pool_plugin/witness.js.map +1 -0
  214. package/dist/contracts/recording_streaming_transcode/deps/ori/data.d.ts +8 -0
  215. package/dist/contracts/recording_streaming_transcode/deps/ori/data.d.ts.map +1 -0
  216. package/dist/contracts/recording_streaming_transcode/deps/ori/data.js +10 -0
  217. package/dist/contracts/recording_streaming_transcode/deps/ori/data.js.map +1 -0
  218. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts +124 -0
  219. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts.map +1 -0
  220. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js +124 -0
  221. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js.map +1 -0
  222. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.d.ts +24 -0
  223. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.d.ts.map +1 -0
  224. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.js +24 -0
  225. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.js.map +1 -0
  226. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.d.ts +16 -0
  227. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.d.ts.map +1 -0
  228. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.js +12 -0
  229. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.js.map +1 -0
  230. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +47 -0
  231. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -0
  232. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +22 -0
  233. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -0
  234. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts +33 -0
  235. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -0
  236. package/dist/contracts/release_cover_art/deps/per_track/per_track.js +32 -0
  237. package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -0
  238. package/dist/contracts/release_cover_art/release_cover_art.d.ts +300 -0
  239. package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -0
  240. package/dist/contracts/release_cover_art/release_cover_art.js +168 -0
  241. package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -0
  242. package/dist/contracts/release_credits/deps/credit/credit.d.ts +24 -0
  243. package/dist/contracts/release_credits/deps/credit/credit.d.ts.map +1 -0
  244. package/dist/contracts/release_credits/deps/credit/credit.js +23 -0
  245. package/dist/contracts/release_credits/deps/credit/credit.js.map +1 -0
  246. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts +37 -0
  247. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -0
  248. package/dist/contracts/release_credits/deps/sui/vec_map.js +28 -0
  249. package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -0
  250. package/dist/contracts/release_credits/release_credits.d.ts +142 -0
  251. package/dist/contracts/release_credits/release_credits.d.ts.map +1 -0
  252. package/dist/contracts/release_credits/release_credits.js +108 -0
  253. package/dist/contracts/release_credits/release_credits.js.map +1 -0
  254. package/dist/contracts/release_credits/release_party_role.d.ts +58 -0
  255. package/dist/contracts/release_credits/release_party_role.d.ts.map +1 -0
  256. package/dist/contracts/release_credits/release_party_role.js +66 -0
  257. package/dist/contracts/release_credits/release_party_role.js.map +1 -0
  258. package/dist/contracts/release_description/release_description.d.ts +112 -0
  259. package/dist/contracts/release_description/release_description.d.ts.map +1 -0
  260. package/dist/contracts/release_description/release_description.js +123 -0
  261. package/dist/contracts/release_description/release_description.js.map +1 -0
  262. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +643 -0
  263. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -0
  264. package/dist/contracts/release_dsp_link/release_dsp_link.js +555 -0
  265. package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -0
  266. package/dist/contracts/release_genre/release_genre.d.ts +145 -0
  267. package/dist/contracts/release_genre/release_genre.d.ts.map +1 -0
  268. package/dist/contracts/release_genre/release_genre.js +154 -0
  269. package/dist/contracts/release_genre/release_genre.js.map +1 -0
  270. package/dist/contracts/release_kind/release_kind.d.ts +98 -0
  271. package/dist/contracts/release_kind/release_kind.d.ts.map +1 -0
  272. package/dist/contracts/release_kind/release_kind.js +109 -0
  273. package/dist/contracts/release_kind/release_kind.js.map +1 -0
  274. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts +91 -0
  275. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts.map +1 -0
  276. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js +92 -0
  277. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -0
  278. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts +73 -0
  279. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts.map +1 -0
  280. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js +80 -0
  281. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js.map +1 -0
  282. package/dist/contracts/release_revenue_distributor_plugin/witness.d.ts +6 -0
  283. package/dist/contracts/release_revenue_distributor_plugin/witness.d.ts.map +1 -0
  284. package/dist/contracts/release_revenue_distributor_plugin/witness.js +8 -0
  285. package/dist/contracts/release_revenue_distributor_plugin/witness.js.map +1 -0
  286. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +67 -0
  287. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts.map +1 -0
  288. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js +50 -0
  289. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js.map +1 -0
  290. package/dist/contracts/routed_stake/deps/std/type_name.d.ts +18 -0
  291. package/dist/contracts/routed_stake/deps/std/type_name.d.ts.map +1 -0
  292. package/dist/contracts/routed_stake/deps/std/type_name.js +20 -0
  293. package/dist/contracts/routed_stake/deps/std/type_name.js.map +1 -0
  294. package/dist/contracts/routed_stake/deps/sui/balance.d.ts +13 -0
  295. package/dist/contracts/routed_stake/deps/sui/balance.d.ts.map +1 -0
  296. package/dist/contracts/routed_stake/deps/sui/balance.js +15 -0
  297. package/dist/contracts/routed_stake/deps/sui/balance.js.map +1 -0
  298. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts +37 -0
  299. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts.map +1 -0
  300. package/dist/contracts/routed_stake/deps/sui/vec_map.js +28 -0
  301. package/dist/contracts/routed_stake/deps/sui/vec_map.js.map +1 -0
  302. package/dist/contracts/routed_stake/routed_stake.d.ts +347 -0
  303. package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -0
  304. package/dist/contracts/routed_stake/routed_stake.js +302 -0
  305. package/dist/contracts/routed_stake/routed_stake.js.map +1 -0
  306. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +18 -0
  307. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -0
  308. package/dist/contracts/royalty_pool/deps/std/type_name.js +20 -0
  309. package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -0
  310. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +13 -0
  311. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -0
  312. package/dist/contracts/royalty_pool/deps/sui/balance.js +15 -0
  313. package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -0
  314. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts +37 -0
  315. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -0
  316. package/dist/contracts/royalty_pool/deps/sui/vec_map.js +28 -0
  317. package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -0
  318. package/dist/contracts/royalty_pool/pool.d.ts +414 -0
  319. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -0
  320. package/dist/contracts/royalty_pool/pool.js +409 -0
  321. package/dist/contracts/royalty_pool/pool.js.map +1 -0
  322. package/dist/contracts/royalty_pool/stake.d.ts +202 -0
  323. package/dist/contracts/royalty_pool/stake.d.ts.map +1 -0
  324. package/dist/contracts/royalty_pool/stake.js +196 -0
  325. package/dist/contracts/royalty_pool/stake.js.map +1 -0
  326. package/dist/contracts/utils/index.d.ts +104 -0
  327. package/dist/contracts/utils/index.d.ts.map +1 -0
  328. package/dist/contracts/utils/index.js +272 -0
  329. package/dist/contracts/utils/index.js.map +1 -0
  330. package/dist/contracts/vault/deps/sui/bag.d.ts +35 -0
  331. package/dist/contracts/vault/deps/sui/bag.d.ts.map +1 -0
  332. package/dist/contracts/vault/deps/sui/bag.js +37 -0
  333. package/dist/contracts/vault/deps/sui/bag.js.map +1 -0
  334. package/dist/contracts/vault/deps/sui/borrow.d.ts +20 -0
  335. package/dist/contracts/vault/deps/sui/borrow.d.ts.map +1 -0
  336. package/dist/contracts/vault/deps/sui/borrow.js +21 -0
  337. package/dist/contracts/vault/deps/sui/borrow.js.map +1 -0
  338. package/dist/contracts/vault/vault.d.ts +316 -0
  339. package/dist/contracts/vault/vault.d.ts.map +1 -0
  340. package/dist/contracts/vault/vault.js +308 -0
  341. package/dist/contracts/vault/vault.js.map +1 -0
  342. package/dist/contracts.d.ts +57 -33
  343. package/dist/contracts.d.ts.map +1 -1
  344. package/dist/contracts.js +63 -41
  345. package/dist/contracts.js.map +1 -1
  346. package/dist/cover.d.ts +4 -3
  347. package/dist/cover.d.ts.map +1 -1
  348. package/dist/cover.js +30 -19
  349. package/dist/cover.js.map +1 -1
  350. package/dist/credits.d.ts +12 -10
  351. package/dist/credits.d.ts.map +1 -1
  352. package/dist/credits.js +66 -39
  353. package/dist/credits.js.map +1 -1
  354. package/dist/deployments.d.ts +122 -74
  355. package/dist/deployments.d.ts.map +1 -1
  356. package/dist/deployments.js +239 -58
  357. package/dist/deployments.js.map +1 -1
  358. package/dist/errors.d.ts +91 -0
  359. package/dist/errors.d.ts.map +1 -0
  360. package/dist/errors.js +111 -0
  361. package/dist/errors.js.map +1 -0
  362. package/dist/events.d.ts +1045 -0
  363. package/dist/events.d.ts.map +1 -0
  364. package/dist/events.js +116 -0
  365. package/dist/events.js.map +1 -0
  366. package/dist/execute.d.ts +5 -3
  367. package/dist/execute.d.ts.map +1 -1
  368. package/dist/execute.js +11 -6
  369. package/dist/execute.js.map +1 -1
  370. package/dist/genre.d.ts +108 -0
  371. package/dist/genre.d.ts.map +1 -0
  372. package/dist/genre.js +289 -0
  373. package/dist/genre.js.map +1 -0
  374. package/dist/index.d.ts +4 -0
  375. package/dist/index.d.ts.map +1 -1
  376. package/dist/index.js +9 -1
  377. package/dist/index.js.map +1 -1
  378. package/dist/internal.js +2 -2
  379. package/dist/internal.js.map +1 -1
  380. package/dist/packages.d.ts +4185 -0
  381. package/dist/packages.d.ts.map +1 -0
  382. package/dist/packages.js +190 -0
  383. package/dist/packages.js.map +1 -0
  384. package/dist/party/client.d.ts +327 -0
  385. package/dist/party/client.d.ts.map +1 -0
  386. package/dist/party/client.js +225 -0
  387. package/dist/party/client.js.map +1 -0
  388. package/dist/party/extensions/ctas.d.ts +19 -0
  389. package/dist/party/extensions/ctas.d.ts.map +1 -0
  390. package/dist/party/extensions/ctas.js +25 -0
  391. package/dist/party/extensions/ctas.js.map +1 -0
  392. package/dist/party/extensions/genres.d.ts +27 -0
  393. package/dist/party/extensions/genres.d.ts.map +1 -0
  394. package/dist/party/extensions/genres.js +31 -0
  395. package/dist/party/extensions/genres.js.map +1 -0
  396. package/dist/party/extensions/links.d.ts +66 -0
  397. package/dist/party/extensions/links.d.ts.map +1 -0
  398. package/dist/party/extensions/links.js +118 -0
  399. package/dist/party/extensions/links.js.map +1 -0
  400. package/dist/party/extensions/media.d.ts +36 -0
  401. package/dist/party/extensions/media.d.ts.map +1 -0
  402. package/dist/party/extensions/media.js +45 -0
  403. package/dist/party/extensions/media.js.map +1 -0
  404. package/dist/party/extensions/profile.d.ts +24 -0
  405. package/dist/party/extensions/profile.d.ts.map +1 -0
  406. package/dist/party/extensions/profile.js +48 -0
  407. package/dist/party/extensions/profile.js.map +1 -0
  408. package/dist/party/extensions/roles.d.ts +37 -0
  409. package/dist/party/extensions/roles.d.ts.map +1 -0
  410. package/dist/party/extensions/roles.js +46 -0
  411. package/dist/party/extensions/roles.js.map +1 -0
  412. package/dist/party/extensions/tags.d.ts +25 -0
  413. package/dist/party/extensions/tags.d.ts.map +1 -0
  414. package/dist/party/extensions/tags.js +25 -0
  415. package/dist/party/extensions/tags.js.map +1 -0
  416. package/dist/party/index.d.ts +12 -0
  417. package/dist/party/index.d.ts.map +1 -0
  418. package/dist/party/index.js +18 -0
  419. package/dist/party/index.js.map +1 -0
  420. package/dist/party/internal.d.ts +14 -0
  421. package/dist/party/internal.d.ts.map +1 -0
  422. package/dist/party/internal.js +89 -0
  423. package/dist/party/internal.js.map +1 -0
  424. package/dist/party/queries.d.ts +18 -0
  425. package/dist/party/queries.d.ts.map +1 -0
  426. package/dist/party/queries.js +124 -0
  427. package/dist/party/queries.js.map +1 -0
  428. package/dist/party/types.d.ts +54 -0
  429. package/dist/party/types.d.ts.map +1 -0
  430. package/dist/party/types.js +85 -0
  431. package/dist/party/types.js.map +1 -0
  432. package/dist/pressing.d.ts +55 -35
  433. package/dist/pressing.d.ts.map +1 -1
  434. package/dist/pressing.js +102 -79
  435. package/dist/pressing.js.map +1 -1
  436. package/dist/publication.d.ts +4 -8
  437. package/dist/publication.d.ts.map +1 -1
  438. package/dist/publication.js +53 -40
  439. package/dist/publication.js.map +1 -1
  440. package/dist/queries.d.ts +1 -1
  441. package/dist/queries.d.ts.map +1 -1
  442. package/dist/queries.js +5 -4
  443. package/dist/queries.js.map +1 -1
  444. package/dist/read/artist.d.ts +6 -4
  445. package/dist/read/artist.d.ts.map +1 -1
  446. package/dist/read/artist.js +29 -27
  447. package/dist/read/artist.js.map +1 -1
  448. package/dist/read/catalog.d.ts +21 -18
  449. package/dist/read/catalog.d.ts.map +1 -1
  450. package/dist/read/catalog.js +120 -141
  451. package/dist/read/catalog.js.map +1 -1
  452. package/dist/read/client.d.ts +15 -11
  453. package/dist/read/client.d.ts.map +1 -1
  454. package/dist/read/client.js +5 -1
  455. package/dist/read/client.js.map +1 -1
  456. package/dist/read/config.d.ts +7 -2
  457. package/dist/read/config.d.ts.map +1 -1
  458. package/dist/read/config.js +2 -0
  459. package/dist/read/config.js.map +1 -1
  460. package/dist/read/genres.d.ts +5 -3
  461. package/dist/read/genres.d.ts.map +1 -1
  462. package/dist/read/genres.js +18 -15
  463. package/dist/read/genres.js.map +1 -1
  464. package/dist/read/index.d.ts.map +1 -1
  465. package/dist/read/index.js +8 -2
  466. package/dist/read/index.js.map +1 -1
  467. package/dist/read/receipts.d.ts +15 -6
  468. package/dist/read/receipts.d.ts.map +1 -1
  469. package/dist/read/receipts.js +76 -63
  470. package/dist/read/receipts.js.map +1 -1
  471. package/dist/read/types.d.ts +1 -1
  472. package/dist/read/types.d.ts.map +1 -1
  473. package/dist/read/wallet.d.ts +12 -10
  474. package/dist/read/wallet.d.ts.map +1 -1
  475. package/dist/read/wallet.js +122 -136
  476. package/dist/read/wallet.js.map +1 -1
  477. package/dist/read/works.d.ts +9 -16
  478. package/dist/read/works.d.ts.map +1 -1
  479. package/dist/read/works.js +48 -117
  480. package/dist/read/works.js.map +1 -1
  481. package/dist/recording-extensions.d.ts +8 -7
  482. package/dist/recording-extensions.d.ts.map +1 -1
  483. package/dist/recording-extensions.js +36 -69
  484. package/dist/recording-extensions.js.map +1 -1
  485. package/dist/release-extensions.d.ts +3 -20
  486. package/dist/release-extensions.d.ts.map +1 -1
  487. package/dist/release-extensions.js +13 -59
  488. package/dist/release-extensions.js.map +1 -1
  489. package/dist/release-graph.js +2 -2
  490. package/dist/release-graph.js.map +1 -1
  491. package/dist/royalty.d.ts +87 -0
  492. package/dist/royalty.d.ts.map +1 -0
  493. package/dist/royalty.js +160 -0
  494. package/dist/royalty.js.map +1 -0
  495. package/dist/share.d.ts +7 -6
  496. package/dist/share.d.ts.map +1 -1
  497. package/dist/share.js +38 -31
  498. package/dist/share.js.map +1 -1
  499. package/dist/transactions.d.ts +2 -2
  500. package/dist/transactions.d.ts.map +1 -1
  501. package/dist/transactions.js +6 -6
  502. package/dist/transactions.js.map +1 -1
  503. package/dist/vault.d.ts +20 -8
  504. package/dist/vault.d.ts.map +1 -1
  505. package/dist/vault.js +37 -21
  506. package/dist/vault.js.map +1 -1
  507. package/package.json +31 -10
  508. package/src/auth.ts +89 -70
  509. package/src/catalog.ts +35 -51
  510. package/src/client.ts +220 -141
  511. package/src/contracts/composition_credits/composition_credits.ts +170 -0
  512. package/src/contracts/composition_credits/composition_party_role.ts +190 -0
  513. package/src/contracts/composition_credits/deps/credit/credit.ts +28 -0
  514. package/src/contracts/composition_credits/deps/sui/vec_map.ts +34 -0
  515. package/src/contracts/composition_routed_stake/composition_routed_stake.ts +239 -0
  516. package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +154 -0
  517. package/src/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts +165 -0
  518. package/src/contracts/composition_royalty_pool_plugin/witness.ts +8 -0
  519. package/src/contracts/cover_art/cover_art.ts +98 -0
  520. package/src/contracts/cover_art/deps/ori/confidentiality.ts +24 -0
  521. package/src/contracts/cover_art/deps/ori/data.ts +12 -0
  522. package/src/contracts/genre/genre.ts +121 -0
  523. package/src/contracts/party_cta/party_cta.ts +213 -0
  524. package/src/contracts/party_genre/party_genre.ts +200 -0
  525. package/src/contracts/party_media/party_media.ts +142 -0
  526. package/src/contracts/party_music/party_music.ts +406 -0
  527. package/src/contracts/party_platform_link/party_platform_link.ts +149 -0
  528. package/src/contracts/party_pro_link/party_pro_link.ts +454 -0
  529. package/src/contracts/party_profile/deps/country_code/country_code.ts +20 -0
  530. package/src/contracts/party_profile/deps/language_code/language_code.ts +8 -0
  531. package/src/contracts/party_profile/party_profile.ts +240 -0
  532. package/src/contracts/party_roles/party_roles.ts +364 -0
  533. package/src/contracts/party_social/party_social.ts +503 -0
  534. package/src/contracts/party_tags/party_tags.ts +199 -0
  535. package/src/contracts/party_wallet/party_wallet.ts +174 -0
  536. package/src/contracts/record/deps/std/type_name.ts +23 -0
  537. package/src/contracts/record/deps/sui/vec_set.ts +22 -0
  538. package/src/contracts/record/pressing.ts +523 -0
  539. package/src/contracts/record/record.ts +339 -0
  540. package/src/contracts/record_shop/deps/std/type_name.ts +23 -0
  541. package/src/contracts/record_shop/listing.ts +603 -0
  542. package/src/contracts/record_shop/witness.ts +12 -0
  543. package/src/contracts/recording_advisory/recording_advisory.ts +316 -0
  544. package/src/contracts/recording_credits/deps/credit/credit.ts +28 -0
  545. package/src/contracts/recording_credits/deps/sui/vec_map.ts +34 -0
  546. package/src/contracts/recording_credits/deps/sui/vec_set.ts +22 -0
  547. package/src/contracts/recording_credits/recording_credits.ts +459 -0
  548. package/src/contracts/recording_credits/recording_party_role.ts +1042 -0
  549. package/src/contracts/recording_engine_session/deps/ori/confidentiality.ts +24 -0
  550. package/src/contracts/recording_engine_session/deps/ori/data.ts +12 -0
  551. package/src/contracts/recording_engine_session/recording_engine_session.ts +335 -0
  552. package/src/contracts/recording_genre/recording_genre.ts +235 -0
  553. package/src/contracts/recording_language/deps/language_code/language_code.ts +8 -0
  554. package/src/contracts/recording_language/recording_language.ts +238 -0
  555. package/src/contracts/recording_master_reference/deps/ori/confidentiality.ts +24 -0
  556. package/src/contracts/recording_master_reference/deps/ori/data.ts +12 -0
  557. package/src/contracts/recording_master_reference/recording_master_reference.ts +180 -0
  558. package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +157 -0
  559. package/src/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts +167 -0
  560. package/src/contracts/recording_royalty_pool_plugin/witness.ts +8 -0
  561. package/src/contracts/recording_streaming_transcode/deps/ori/data.ts +10 -0
  562. package/src/contracts/recording_streaming_transcode/recording_streaming_transcode.ts +203 -0
  563. package/src/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.ts +24 -0
  564. package/src/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.ts +12 -0
  565. package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +25 -0
  566. package/src/contracts/release_cover_art/deps/per_track/per_track.ts +37 -0
  567. package/src/contracts/release_cover_art/release_cover_art.ts +252 -0
  568. package/src/contracts/release_credits/deps/credit/credit.ts +28 -0
  569. package/src/contracts/release_credits/deps/sui/vec_map.ts +34 -0
  570. package/src/contracts/release_credits/release_credits.ts +157 -0
  571. package/src/contracts/release_credits/release_party_role.ts +87 -0
  572. package/src/contracts/release_description/release_description.ts +168 -0
  573. package/src/contracts/release_dsp_link/release_dsp_link.ts +813 -0
  574. package/src/contracts/release_genre/release_genre.ts +203 -0
  575. package/src/contracts/release_kind/release_kind.ts +154 -0
  576. package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +141 -0
  577. package/src/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts +143 -0
  578. package/src/contracts/release_revenue_distributor_plugin/witness.ts +8 -0
  579. package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +53 -0
  580. package/src/contracts/routed_stake/deps/std/type_name.ts +23 -0
  581. package/src/contracts/routed_stake/deps/sui/balance.ts +18 -0
  582. package/src/contracts/routed_stake/deps/sui/vec_map.ts +34 -0
  583. package/src/contracts/routed_stake/routed_stake.ts +487 -0
  584. package/src/contracts/royalty_pool/deps/std/type_name.ts +23 -0
  585. package/src/contracts/royalty_pool/deps/sui/balance.ts +18 -0
  586. package/src/contracts/royalty_pool/deps/sui/vec_map.ts +34 -0
  587. package/src/contracts/royalty_pool/pool.ts +634 -0
  588. package/src/contracts/royalty_pool/stake.ts +305 -0
  589. package/src/contracts/utils/index.ts +428 -0
  590. package/src/contracts/vault/deps/sui/bag.ts +40 -0
  591. package/src/contracts/vault/deps/sui/borrow.ts +26 -0
  592. package/src/contracts/vault/vault.ts +509 -0
  593. package/src/contracts.ts +86 -39
  594. package/src/cover.ts +19 -28
  595. package/src/credits.ts +49 -81
  596. package/src/deployments.ts +321 -73
  597. package/src/errors.ts +156 -0
  598. package/src/events.ts +121 -0
  599. package/src/execute.ts +13 -9
  600. package/src/genre.ts +384 -0
  601. package/src/index.ts +10 -1
  602. package/src/internal.ts +2 -2
  603. package/src/packages.ts +243 -0
  604. package/src/party/client.ts +280 -0
  605. package/src/party/extensions/ctas.ts +46 -0
  606. package/src/party/extensions/genres.ts +62 -0
  607. package/src/party/extensions/links.ts +186 -0
  608. package/src/party/extensions/media.ts +72 -0
  609. package/src/party/extensions/profile.ts +81 -0
  610. package/src/party/extensions/roles.ts +94 -0
  611. package/src/party/extensions/tags.ts +54 -0
  612. package/src/party/index.ts +40 -0
  613. package/src/party/internal.ts +102 -0
  614. package/src/party/queries.ts +175 -0
  615. package/src/party/types.ts +88 -0
  616. package/src/pressing.ts +163 -166
  617. package/src/publication.ts +58 -45
  618. package/src/queries.ts +5 -5
  619. package/src/read/artist.ts +47 -42
  620. package/src/read/catalog.ts +201 -224
  621. package/src/read/client.ts +20 -13
  622. package/src/read/config.ts +9 -2
  623. package/src/read/genres.ts +24 -16
  624. package/src/read/index.ts +8 -2
  625. package/src/read/receipts.ts +131 -70
  626. package/src/read/types.ts +1 -1
  627. package/src/read/wallet.ts +199 -166
  628. package/src/read/works.ts +76 -195
  629. package/src/recording-extensions.ts +44 -98
  630. package/src/release-extensions.ts +11 -87
  631. package/src/release-graph.ts +2 -2
  632. package/src/royalty.ts +264 -0
  633. package/src/share.ts +45 -30
  634. package/src/transactions.ts +6 -6
  635. package/src/vault.ts +53 -30
@@ -11,18 +11,30 @@
11
11
  // than be reimplemented by every browser, Worker, server, or native client.
12
12
 
13
13
  import { normalizeStructTag, normalizeSuiAddress, parseStructTag } from "@mysten/sui/utils";
14
+ import { Effect, Option } from "effect";
14
15
  import {
15
16
  contracts as networkContracts,
16
17
  getCompositionByShareType,
17
18
  getOwnedReleaseAdminCaps,
18
19
  getRecordingByShareType,
19
20
  getReleaseById,
20
- isNotFound,
21
- } from "@misofm/protocol";
22
- import type { MisoClient } from "./client.ts";
21
+ } from "@misofm/musicos";
22
+ import { party as partyContracts } from "@misofm/partyos/contracts";
23
+ import { derivePartyAdminCapId, getPartiesByIds, getPendingMemberships as getPartyPendingMemberships } from "@misofm/partyos";
24
+ import {
25
+ getObjectsContent,
26
+ getOptionalObjectContent,
27
+ SuiClient,
28
+ SuiGraphQL,
29
+ SuiRpcError,
30
+ type BcsDecodeError,
31
+ type ObjectNotFoundError,
32
+ type ObjectTypeMismatchError,
33
+ } from "@misofm/effect";
34
+ import type { MisoConfig } from "./config.ts";
23
35
  import { int, u64 } from "./internal/scalars.ts";
24
- import * as vaultContract from "@misofm/protocol/contracts/vault/vault";
25
- import * as recordContract from "@misofm/protocol/contracts/miso_record/record";
36
+ import * as vaultContract from "../contracts/vault/vault.ts";
37
+ import * as recordContract from "../contracts/record/record.ts";
26
38
  import { deriveRecordId } from "../pressing.ts";
27
39
  import { requireRecordSalesDeployment } from "../deployments.ts";
28
40
  import type {
@@ -155,29 +167,52 @@ function isCanonicalRecordType(
155
167
  return true;
156
168
  }
157
169
 
170
+ /** Page shape this file needs from `client.core.listOwnedObjects` — content is optional per-call, not per-object. */
171
+ interface OwnedObjectsPage {
172
+ objects: Array<{ objectId: string; type: string; content?: Uint8Array }>;
173
+ hasNextPage: boolean;
174
+ cursor: string | null;
175
+ }
176
+
177
+ /** One page of `client.core.listOwnedObjects`, requesting `content` when `withContent` is set. */
178
+ const listOwnedObjectsPage = Effect.fn("listOwnedObjectsPage")(function* (
179
+ owner: string,
180
+ type: string,
181
+ cursor: string | null,
182
+ withContent: boolean,
183
+ ): Effect.fn.Return<OwnedObjectsPage, SuiRpcError, SuiClient> {
184
+ const client = yield* SuiClient;
185
+ return yield* Effect.tryPromise({
186
+ try: (signal) =>
187
+ (client.core.listOwnedObjects as (args: unknown) => Promise<OwnedObjectsPage>)({
188
+ owner,
189
+ type,
190
+ cursor,
191
+ limit: 50,
192
+ ...(withContent ? { include: { content: true } } : {}),
193
+ signal,
194
+ }),
195
+ catch: (cause) => new SuiRpcError({ operation: "listOwnedObjects", cause }),
196
+ });
197
+ });
198
+
158
199
  /**
159
200
  * The records `owner` holds. Ownership is DIRECT — a record is an address-owned
160
- * `<miso_record>::record::Record` with no pressing/license/receipt intermediary.
201
+ * `<record>::record::Record` with no pressing/license/receipt intermediary.
161
202
  * The server-side type filter and exact local check deliberately exclude records
162
203
  * from any retired package namespace.
163
204
  */
164
- export async function getOwnedRecords(client: MisoClient, owner: string): Promise<OwnedRecord[]> {
205
+ export const getOwnedRecords = Effect.fn("getOwnedRecords")(function* (
206
+ owner: string,
207
+ config: MisoConfig,
208
+ ): Effect.fn.Return<OwnedRecord[], SuiRpcError, SuiClient> {
165
209
  const out: OwnedRecord[] = [];
166
210
  let cursor: string | null = null;
167
- const sales = requireRecordSalesDeployment(client.config.recordSales);
211
+ const sales = requireRecordSalesDeployment(config.recordSales);
168
212
  const recordType = `${sales.recordPackageId}::record::Record`;
169
213
 
170
214
  for (let page = 0; page < MAX_PAGES; page++) {
171
- // Annotated: `cursor` is both an input and assigned from the result, which
172
- // TypeScript reads as a circular initializer without an explicit type.
173
- const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
174
- await client.protocol.core.listOwnedObjects({
175
- owner,
176
- type: recordType,
177
- cursor,
178
- limit: 50,
179
- include: { content: true },
180
- });
215
+ const res = (yield* listOwnedObjectsPage(owner, recordType, cursor, true)) as OwnedObjectsPage;
181
216
  for (const obj of res.objects) {
182
217
  if (!isCanonicalRecordType(obj.type, sales.recordPackageId)) {
183
218
  continue;
@@ -209,7 +244,7 @@ export async function getOwnedRecords(client: MisoClient, owner: string): Promis
209
244
  if (!cursor) break;
210
245
  }
211
246
  return out;
212
- }
247
+ });
213
248
 
214
249
  // ── Parties ──────────────────────────────────────────────────────────────────
215
250
 
@@ -219,21 +254,19 @@ export async function getOwnedRecords(client: MisoClient, owner: string): Promis
219
254
  * cap type plus a name resolve. Caps are transferable, which is why this is
220
255
  * authoritative in a way that remembering created parties client-side is not.
221
256
  */
222
- export async function getOwnedParties(client: MisoClient, owner: string): Promise<OwnedParty[]> {
223
- const capType = `${client.config.deployment.misoParty}::party::PartyAdminCap`;
257
+ export const getOwnedParties = Effect.fn("getOwnedParties")(function* (
258
+ owner: string,
259
+ config: MisoConfig,
260
+ ): Effect.fn.Return<OwnedParty[], SuiRpcError | ObjectTypeMismatchError | BcsDecodeError, SuiClient> {
261
+ const capType = `${config.partyos.partyos}::party::PartyAdminCap`;
224
262
 
225
263
  // One page of 50 caps is plenty for launch-scale artists; paginate if labels
226
264
  // ever start hitting the cap.
227
- const { objects } = await client.protocol.core.listOwnedObjects({
228
- owner,
229
- type: capType,
230
- limit: 50,
231
- include: { content: true },
232
- });
265
+ const { objects } = yield* listOwnedObjectsPage(owner, capType, null, true);
233
266
 
234
267
  const caps = objects.flatMap((obj) => {
235
268
  try {
236
- const cap = networkContracts.party.PartyAdminCap.parse(obj.content);
269
+ const cap = partyContracts.PartyAdminCap.parse(obj.content!);
237
270
  return [{ capId: obj.objectId, partyId: cap.party_id }];
238
271
  } catch {
239
272
  return [];
@@ -241,12 +274,15 @@ export async function getOwnedParties(client: MisoClient, owner: string): Promis
241
274
  });
242
275
  if (caps.length === 0) return [];
243
276
 
244
- const parties = await client.sui.miso.party.getPartiesByIds(caps.map((c) => c.partyId));
277
+ const parties = yield* getPartiesByIds(
278
+ caps.map((c) => c.partyId),
279
+ config.partyos.partyos,
280
+ );
245
281
  return caps.flatMap(({ capId, partyId }) => {
246
282
  const p = parties[partyId];
247
283
  return p ? [{ partyId, capId, name: p.name, kind: p.kind }] : [];
248
284
  });
249
- }
285
+ });
250
286
 
251
287
  /**
252
288
  * Pending group invitations for every individual party the wallet administers.
@@ -256,24 +292,24 @@ export async function getOwnedParties(client: MisoClient, owner: string): Promis
256
292
  * names are resolved in one batch so the API can render an inbox without extra
257
293
  * browser reads.
258
294
  */
259
- export async function getPendingMemberships(
260
- client: MisoClient,
295
+ export const getPendingMemberships = Effect.fn("getPendingMemberships")(function* (
261
296
  owner: string,
262
- ): Promise<PendingMembership[]> {
263
- const controlled = await getOwnedParties(client, owner);
297
+ config: MisoConfig,
298
+ ): Effect.fn.Return<PendingMembership[], SuiRpcError | ObjectTypeMismatchError | BcsDecodeError, SuiClient> {
299
+ const controlled = yield* getOwnedParties(owner, config);
264
300
  const individuals = controlled.filter((party) => party.kind === "individual");
265
301
  if (individuals.length === 0) return [];
266
302
 
267
- const invitations = await Promise.all(
268
- individuals.map(async (member) => ({
269
- member,
270
- groupIds: await client.sui.miso.party.getPendingMemberships(member.partyId),
271
- })),
303
+ const invitations = yield* Effect.forEach(
304
+ individuals,
305
+ (member) =>
306
+ getPartyPendingMemberships(member.partyId).pipe(Effect.map((groupIds) => ({ member, groupIds }))),
307
+ { concurrency: "unbounded" },
272
308
  );
273
309
  const groupIds = [...new Set(invitations.flatMap(({ groupIds }) => groupIds))];
274
310
  if (groupIds.length === 0) return [];
275
311
 
276
- const groups = await client.sui.miso.party.getPartiesByIds(groupIds);
312
+ const groups = yield* getPartiesByIds(groupIds, config.partyos.partyos);
277
313
  return invitations.flatMap(({ member, groupIds }) =>
278
314
  groupIds.flatMap((groupId): PendingMembership[] => {
279
315
  const group = groups[groupId];
@@ -282,7 +318,7 @@ export async function getPendingMemberships(
282
318
  : [];
283
319
  }),
284
320
  );
285
- }
321
+ });
286
322
 
287
323
  // ── Works (studio catalog) ───────────────────────────────────────────────────
288
324
 
@@ -292,12 +328,14 @@ export async function getPendingMemberships(
292
328
  * type `T` is parsed back out of each instance's type tag, because the cap does
293
329
  * not store the work's id — only its share type.
294
330
  */
295
- async function ownedGenericCaps(client: MisoClient, owner: string, capType: string) {
331
+ const ownedGenericCaps = Effect.fn("ownedGenericCaps")(function* (
332
+ owner: string,
333
+ capType: string,
334
+ ): Effect.fn.Return<{ id: string; shareType: string }[], SuiRpcError, SuiClient> {
296
335
  const caps: { id: string; shareType: string }[] = [];
297
336
  let cursor: string | null = null;
298
337
  for (let page = 0; page < MAX_PAGES; page++) {
299
- const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
300
- await client.protocol.core.listOwnedObjects({ owner, type: capType, cursor, limit: 50 });
338
+ const res = (yield* listOwnedObjectsPage(owner, capType, cursor, false)) as OwnedObjectsPage;
301
339
  for (const obj of res.objects) {
302
340
  const match = /<(.+)>$/.exec(obj.type);
303
341
  if (match?.[1]) caps.push({ id: obj.objectId, shareType: match[1] });
@@ -307,33 +345,33 @@ async function ownedGenericCaps(client: MisoClient, owner: string, capType: stri
307
345
  if (!cursor) break;
308
346
  }
309
347
  return caps;
310
- }
348
+ });
311
349
 
312
350
  /**
313
351
  * Discover owner-held VaultAdminCaps whose wrapped capability administers a
314
352
  * catalog work. PressingAdminCap is deliberately ignored: Catalog is a work
315
353
  * surface (composition / recording / release), not a sale-management surface.
316
354
  */
317
- async function ownedVaultedWorkCaps(client: MisoClient, owner: string) {
355
+ const ownedVaultedWorkCaps = Effect.fn("ownedVaultedWorkCaps")(function* (
356
+ owner: string,
357
+ config: MisoConfig,
358
+ ): Effect.fn.Return<
359
+ { compositions: VaultedGenericCap[]; recordings: VaultedGenericCap[]; releases: VaultedReleaseCap[] },
360
+ SuiRpcError,
361
+ SuiClient
362
+ > {
318
363
  const out: {
319
364
  compositions: VaultedGenericCap[];
320
365
  recordings: VaultedGenericCap[];
321
366
  releases: VaultedReleaseCap[];
322
367
  } = { compositions: [], recordings: [], releases: [] };
323
- const vaultPackageId = client.config.protocol.vault;
324
- const misoPackageId = client.config.deployment.miso;
368
+ const vaultPackageId = config.protocol.vault;
369
+ const misoPackageId = config.deployment.musicos;
325
370
  const capType = `${vaultPackageId}::vault::VaultAdminCap`;
326
371
  let cursor: string | null = null;
327
372
 
328
373
  for (let page = 0; page < MAX_PAGES; page++) {
329
- const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
330
- await client.protocol.core.listOwnedObjects({
331
- owner,
332
- type: capType,
333
- cursor,
334
- limit: 50,
335
- include: { content: true },
336
- });
374
+ const res = (yield* listOwnedObjectsPage(owner, capType, cursor, true)) as OwnedObjectsPage;
337
375
  for (const object of res.objects) {
338
376
  if (!object.content) continue;
339
377
  const work = classifyVaultedWorkAdminCapType(
@@ -361,32 +399,24 @@ async function ownedVaultedWorkCaps(client: MisoClient, owner: string) {
361
399
  if (!cursor) break;
362
400
  }
363
401
  return out;
364
- }
402
+ });
365
403
 
366
404
  /** Read the ReleaseAdminCap wrapped by each shared release vault. */
367
- async function resolveVaultedReleaseCaps(
368
- client: MisoClient,
405
+ const resolveVaultedReleaseCaps = Effect.fn("resolveVaultedReleaseCaps")(function* (
369
406
  caps: readonly VaultedReleaseCap[],
370
- ): Promise<{ id: string; releaseId: string }[]> {
407
+ config: MisoConfig,
408
+ ): Effect.fn.Return<{ id: string; releaseId: string }[], SuiRpcError, SuiClient> {
371
409
  if (caps.length === 0) return [];
372
- const releaseCapType = `${client.config.deployment.miso}::release::ReleaseAdminCap`;
373
- const vaultType = normalizeStructTag(
374
- `${client.config.protocol.vault}::vault::Vault<${releaseCapType}>`,
375
- );
376
- const { objects } = await client.protocol.core.getObjects({
377
- objectIds: caps.map((cap) => cap.vaultId),
378
- include: { content: true },
379
- });
410
+ const releaseCapType = `${config.deployment.musicos}::release::ReleaseAdminCap`;
411
+ const vaultType = normalizeStructTag(`${config.protocol.vault}::vault::Vault<${releaseCapType}>`);
412
+ const contentById = yield* getObjectsContent(caps.map((cap) => cap.vaultId));
380
413
  const releasesByVault = new Map<string, string>();
381
- for (const object of objects) {
382
- if (object instanceof Error || !object.content) continue;
414
+ for (const [objectId, object] of contentById) {
383
415
  try {
384
416
  if (normalizeStructTag(object.type) !== vaultType) continue;
385
- const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(
386
- object.content,
387
- );
417
+ const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(object.content);
388
418
  const releaseId = vault.cap?.value?.release_id;
389
- if (releaseId) releasesByVault.set(object.objectId, releaseId);
419
+ if (releaseId) releasesByVault.set(objectId, releaseId);
390
420
  } catch {
391
421
  // Batch catalog discovery is best-effort per authority, matching the
392
422
  // existing direct-cap path's treatment of unreadable work objects.
@@ -396,7 +426,7 @@ async function resolveVaultedReleaseCaps(
396
426
  const releaseId = releasesByVault.get(cap.vaultId);
397
427
  return releaseId ? [{ id: cap.id, releaseId }] : [];
398
428
  });
399
- }
429
+ });
400
430
 
401
431
  /**
402
432
  * Every work the wallet administers, keyed by its ADMIN CAP id (the studio
@@ -408,33 +438,33 @@ async function resolveVaultedReleaseCaps(
408
438
  * the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
409
439
  * `release_id` directly.
410
440
  */
411
- export async function getOwnedWorks(client: MisoClient, owner: string): Promise<OwnedWork[]> {
412
- const miso = client.config.deployment.miso;
413
-
414
- const [directCompCaps, directRecCaps, directRelCaps, vaulted] = await Promise.all([
415
- ownedGenericCaps(client, owner, `${miso}::composition::CompositionAdminCap`),
416
- ownedGenericCaps(client, owner, `${miso}::recording::RecordingAdminCap`),
417
- getOwnedReleaseAdminCaps(client.protocol, owner, miso),
418
- ownedVaultedWorkCaps(client, owner),
441
+ export const getOwnedWorks = Effect.fn("getOwnedWorks")(function* (
442
+ owner: string,
443
+ config: MisoConfig,
444
+ ): Effect.fn.Return<OwnedWork[], SuiRpcError | BcsDecodeError, SuiClient | SuiGraphQL> {
445
+ const miso = config.deployment.musicos;
446
+
447
+ const [directCompCaps, directRecCaps, directRelCaps, vaulted] = yield* Effect.all([
448
+ ownedGenericCaps(owner, `${miso}::composition::CompositionAdminCap`),
449
+ ownedGenericCaps(owner, `${miso}::recording::RecordingAdminCap`),
450
+ getOwnedReleaseAdminCaps(owner, miso),
451
+ ownedVaultedWorkCaps(owner, config),
419
452
  ]);
420
- const vaultedRelCaps = await resolveVaultedReleaseCaps(client, vaulted.releases);
453
+ const vaultedRelCaps = yield* resolveVaultedReleaseCaps(vaulted.releases, config);
421
454
  const compCaps = [...directCompCaps, ...vaulted.compositions];
422
455
  const recCaps = [...directRecCaps, ...vaulted.recordings];
423
456
  const relCaps = [...directRelCaps, ...vaultedRelCaps];
424
457
 
425
- const addresses = await getWorkAddressesByShareTypes(
426
- client.graphql,
458
+ const addresses = yield* getWorkAddressesByShareTypes(
427
459
  { compositions: compCaps.map((c) => c.shareType), recordings: recCaps.map((c) => c.shareType) },
428
460
  miso,
429
461
  );
430
- const works = await getWorksByIds(client.protocol, {
462
+ const works = yield* getWorksByIds({
431
463
  compositions: Object.values(addresses.compositions).filter((id): id is string => id !== undefined),
432
464
  recordings: Object.values(addresses.recordings).filter((id): id is string => id !== undefined),
433
465
  releases: relCaps.map((c) => c.releaseId),
434
466
  });
435
- const recordingTitles = await getRecordingTitles(
436
- client.protocol,
437
- client.graphql,
467
+ const recordingTitles = yield* getRecordingTitles(
438
468
  Object.values(addresses.recordings).filter((id): id is string => id !== undefined),
439
469
  miso,
440
470
  );
@@ -464,32 +494,23 @@ export async function getOwnedWorks(client: MisoClient, owner: string): Promise<
464
494
  });
465
495
 
466
496
  return [...comps, ...recs, ...rels];
467
- }
497
+ });
468
498
 
469
499
  /** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
470
- export async function getWorkByCap(client: MisoClient, capId: string): Promise<WorkDetail | null> {
471
- const miso = client.config.deployment.miso;
500
+ export const getWorkByCap = Effect.fn("getWorkByCap")(function* (
501
+ capId: string,
502
+ config: MisoConfig,
503
+ ): Effect.fn.Return<WorkDetail | null, ObjectNotFoundError | SuiRpcError | BcsDecodeError, SuiClient | SuiGraphQL> {
504
+ const miso = config.deployment.musicos;
472
505
 
473
- let type: string;
474
- let json: Record<string, unknown> | null;
475
- let content: Uint8Array | undefined;
476
- try {
477
- const { object } = await client.protocol.core.getObject({
478
- objectId: capId,
479
- include: { json: true, content: true },
480
- });
481
- type = object.type;
482
- json = (object.json ?? null) as Record<string, unknown> | null;
483
- content = object.content;
484
- } catch (e) {
485
- if (isNotFound(e)) return null;
486
- throw e;
487
- }
506
+ const found = yield* getOptionalObjectContent(capId);
507
+ if (Option.isNone(found)) return null;
508
+ const { content, type } = found.value;
488
509
 
489
510
  const direct = classifyWorkAdminCapType(type, miso);
490
511
  if (direct?.kind === "composition") {
491
512
  const { shareType } = direct;
492
- const c = await getCompositionByShareType(client.protocol, client.graphql, shareType, miso);
513
+ const c = yield* getCompositionByShareType(shareType, miso);
493
514
  return {
494
515
  capId,
495
516
  kind: "composition",
@@ -503,8 +524,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
503
524
 
504
525
  if (direct?.kind === "recording") {
505
526
  const { shareType } = direct;
506
- const r = await getRecordingByShareType(client.protocol, client.graphql, shareType, miso);
507
- const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
527
+ const r = yield* getRecordingByShareType(shareType, miso);
528
+ const titles = yield* getRecordingTitles([r.id], miso);
508
529
  return {
509
530
  capId,
510
531
  kind: "recording",
@@ -516,9 +537,9 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
516
537
  }
517
538
 
518
539
  if (direct?.kind === "release") {
519
- const releaseId = typeof json?.release_id === "string" ? json.release_id : null;
520
- if (!releaseId) throw new Error(`Release cap ${capId} carries no release id`);
521
- const r = await getReleaseById(client.protocol, releaseId);
540
+ // `ReleaseAdminCap`'s BCS carries `release_id` directly no `json` include needed.
541
+ const { release_id: releaseId } = networkContracts.release.ReleaseAdminCap.parse(content);
542
+ const r = yield* getReleaseById(releaseId);
522
543
  return {
523
544
  capId,
524
545
  kind: "release",
@@ -530,12 +551,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
530
551
  };
531
552
  }
532
553
 
533
- const vaulted = classifyVaultedWorkAdminCapType(
534
- type,
535
- client.config.protocol.vault,
536
- miso,
537
- );
538
- if (!vaulted || !content) {
554
+ const vaulted = classifyVaultedWorkAdminCapType(type, config.protocol.vault, miso);
555
+ if (!vaulted) {
539
556
  // A real object, but not a supported work authority — "no such work",
540
557
  // not a transport failure. PressingAdminCap intentionally lands here.
541
558
  return null;
@@ -543,12 +560,7 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
543
560
  const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(content);
544
561
 
545
562
  if (vaulted.kind === "composition") {
546
- const c = await getCompositionByShareType(
547
- client.protocol,
548
- client.graphql,
549
- vaulted.shareType,
550
- miso,
551
- );
563
+ const c = yield* getCompositionByShareType(vaulted.shareType, miso);
552
564
  return {
553
565
  capId,
554
566
  kind: "composition",
@@ -561,13 +573,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
561
573
  }
562
574
 
563
575
  if (vaulted.kind === "recording") {
564
- const r = await getRecordingByShareType(
565
- client.protocol,
566
- client.graphql,
567
- vaulted.shareType,
568
- miso,
569
- );
570
- const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
576
+ const r = yield* getRecordingByShareType(vaulted.shareType, miso);
577
+ const titles = yield* getRecordingTitles([r.id], miso);
571
578
  return {
572
579
  capId,
573
580
  kind: "recording",
@@ -578,9 +585,9 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
578
585
  };
579
586
  }
580
587
 
581
- const [releaseCap] = await resolveVaultedReleaseCaps(client, [{ id: capId, vaultId }]);
588
+ const [releaseCap] = yield* resolveVaultedReleaseCaps([{ id: capId, vaultId }], config);
582
589
  if (!releaseCap) throw new Error(`Release vault ${vaultId} carries no release admin cap`);
583
- const r = await getReleaseById(client.protocol, releaseCap.releaseId);
590
+ const r = yield* getReleaseById(releaseCap.releaseId);
584
591
  return {
585
592
  capId,
586
593
  kind: "release",
@@ -590,15 +597,17 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
590
597
  discCount: r.tracks.length > 0 ? 1 : 0,
591
598
  trackCount: r.tracks.length,
592
599
  };
593
- }
600
+ });
594
601
 
595
602
  // ── Balance ──────────────────────────────────────────────────────────────────
596
603
 
597
- const decimalsByClient = new WeakMap<MisoClient, Map<string, Promise<number>>>();
604
+ const decimalsByClient = new WeakMap<object, Map<string, Promise<number>>>();
598
605
 
599
- /** Resolve once per client/type. Failed lookups are evicted so a transient
600
- * fullnode error cannot poison a long-lived API worker. */
601
- async function coinDecimals(client: MisoClient, coinType: string): Promise<number> {
606
+ /**
607
+ * Resolve once per (transport client, coin type). Failed lookups are evicted so
608
+ * a transient fullnode error cannot poison a long-lived API worker.
609
+ */
610
+ function coinDecimalsPromise(client: object & { core: { getCoinMetadata: (args: { coinType: string }) => Promise<{ coinMetadata: { decimals?: number } | null }> } }, coinType: string): Promise<number> {
602
611
  let cache = decimalsByClient.get(client);
603
612
  if (!cache) {
604
613
  cache = new Map();
@@ -608,7 +617,7 @@ async function coinDecimals(client: MisoClient, coinType: string): Promise<numbe
608
617
  const cached = cache.get(key);
609
618
  if (cached) return cached;
610
619
 
611
- const pending = client.protocol.core.getCoinMetadata({ coinType: key }).then(({ coinMetadata }) => {
620
+ const pending = client.core.getCoinMetadata({ coinType: key }).then(({ coinMetadata }) => {
612
621
  const decimals = coinMetadata?.decimals;
613
622
  if (!Number.isSafeInteger(decimals) || decimals! < 0 || decimals! > 18) {
614
623
  throw new Error(`Coin metadata for ${key} has no supported decimal precision`);
@@ -616,12 +625,10 @@ async function coinDecimals(client: MisoClient, coinType: string): Promise<numbe
616
625
  return decimals!;
617
626
  });
618
627
  cache.set(key, pending);
619
- try {
620
- return await pending;
621
- } catch (error) {
622
- if (cache.get(key) === pending) cache.delete(key);
623
- throw error;
624
- }
628
+ pending.catch(() => {
629
+ if (cache!.get(key) === pending) cache!.delete(key);
630
+ });
631
+ return pending;
625
632
  }
626
633
 
627
634
  /**
@@ -629,11 +636,22 @@ async function coinDecimals(client: MisoClient, coinType: string): Promise<numbe
629
636
  * classes: callers using a `FundsWithdrawal` must never mistake coin-object
630
637
  * value for immediately withdrawable address balance.
631
638
  */
632
- export async function getBalance(client: MisoClient, address: string, coinType?: string): Promise<Balance> {
633
- const type = coinType ?? client.config.money.usdCoinType;
634
- const [res, decimals] = await Promise.all([
635
- client.protocol.core.getBalance({ owner: address, coinType: type }),
636
- coinDecimals(client, type),
639
+ export const getBalance = Effect.fn("getBalance")(function* (
640
+ address: string,
641
+ config: MisoConfig,
642
+ coinType?: string,
643
+ ): Effect.fn.Return<Balance, SuiRpcError, SuiClient> {
644
+ const client = yield* SuiClient;
645
+ const type = coinType ?? config.money.usdCoinType;
646
+ const [res, decimals] = yield* Effect.all([
647
+ Effect.tryPromise({
648
+ try: (signal) => client.core.getBalance({ owner: address, coinType: type, signal }),
649
+ catch: (cause) => new SuiRpcError({ operation: "getBalance", cause }),
650
+ }),
651
+ Effect.tryPromise({
652
+ try: () => coinDecimalsPromise(client, type),
653
+ catch: (cause) => new SuiRpcError({ operation: "getCoinMetadata", cause }),
654
+ }),
637
655
  ]);
638
656
  return {
639
657
  address: normalizeSuiAddress(address),
@@ -643,7 +661,7 @@ export async function getBalance(client: MisoClient, address: string, coinType?:
643
661
  addressBalance: u64(res.balance.addressBalance),
644
662
  decimals,
645
663
  };
646
- }
664
+ });
647
665
 
648
666
  // ── Ownership ────────────────────────────────────────────────────────────────
649
667
 
@@ -663,14 +681,22 @@ function isAddressOwner(owner: unknown, address: string): boolean {
663
681
  * A failed read means "can't confirm", which resolves to `false` — the editor
664
682
  * stays hidden rather than being offered and then rejected on submit.
665
683
  */
666
- export async function ownsParty(client: MisoClient, address: string, partyId: string): Promise<Ownership> {
667
- const capId = client.sui.miso.party.derivePartyAdminCapId(partyId);
668
- const isOwner = await client.protocol.core
669
- .getObject({ objectId: capId })
670
- .then(({ object }) => isAddressOwner(object?.owner, address))
671
- .catch(() => false);
684
+ export const ownsParty = Effect.fn("ownsParty")(function* (
685
+ address: string,
686
+ partyId: string,
687
+ config: MisoConfig,
688
+ ): Effect.fn.Return<Ownership, never, SuiClient> {
689
+ const capId = derivePartyAdminCapId(partyId, config.partyos.partyos);
690
+ const client = yield* SuiClient;
691
+ const isOwner = yield* Effect.tryPromise({
692
+ try: (signal) => client.core.getObject({ objectId: capId, signal }),
693
+ catch: (cause) => cause,
694
+ }).pipe(
695
+ Effect.map(({ object }) => isAddressOwner(object?.owner, address)),
696
+ Effect.catch(() => Effect.succeed(false)),
697
+ );
672
698
  return { address: normalizeSuiAddress(address), objectId: partyId, isOwner, capId };
673
- }
699
+ });
674
700
 
675
701
  /**
676
702
  * Whether `address` owns a record. Records are address-owned objects, so this is
@@ -678,10 +704,17 @@ export async function ownsParty(client: MisoClient, address: string, partyId: st
678
704
  * whether the Snapshots tab appears, and a non-owner has no snapshot content to
679
705
  * fetch regardless.
680
706
  */
681
- export async function ownsRecord(client: MisoClient, address: string, recordId: string): Promise<Ownership> {
682
- const isOwner = await client.protocol.core
683
- .getObject({ objectId: recordId })
684
- .then(({ object }) => isAddressOwner(object?.owner, address))
685
- .catch(() => false);
707
+ export const ownsRecord = Effect.fn("ownsRecord")(function* (
708
+ address: string,
709
+ recordId: string,
710
+ ): Effect.fn.Return<Ownership, never, SuiClient> {
711
+ const client = yield* SuiClient;
712
+ const isOwner = yield* Effect.tryPromise({
713
+ try: (signal) => client.core.getObject({ objectId: recordId, signal }),
714
+ catch: (cause) => cause,
715
+ }).pipe(
716
+ Effect.map(({ object }) => isAddressOwner(object?.owner, address)),
717
+ Effect.catch(() => Effect.succeed(false)),
718
+ );
686
719
  return { address: normalizeSuiAddress(address), objectId: recordId, isOwner };
687
- }
720
+ });