@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
package/src/genre.ts ADDED
@@ -0,0 +1,384 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /**
5
+ * Genre classification for both `Release` and `Recording`.
6
+ *
7
+ * On-chain, `release_genre` and `recording_genre` store the identical shape: a
8
+ * bare `vector<ID>` of `genre::Genre` object ids under a dynamic field keyed by
9
+ * an empty `ExtensionKey()`, index 0 the primary, capped at `MAX_GENRES` (6), and
10
+ * non-empty by construction — removing the last entry drops the field, so "the
11
+ * field exists" and "there is a primary" are the same fact. Every id in the list
12
+ * came from `add_genre(self, cap, genre: &Genre)`, which only accepts a real
13
+ * object minted by the shared `genre` vocabulary registry; `remove_genre` takes
14
+ * a bare `ID` since proving membership is not needed to drop a reference.
15
+ *
16
+ * This module spans both `Release` and `Recording` rather than living beside
17
+ * one target object (contrast `release-extensions.ts` / `recording-extensions.ts`,
18
+ * which are split by target). Genre is not a per-target-object axis: the two
19
+ * packages are separately deployed, separately versioned siblings with the same
20
+ * vocabulary and the same shape, and `recording-extensions.ts` must not import
21
+ * genre helpers out of `release-extensions.ts` (or vice versa) just because one
22
+ * happened to be written first.
23
+ *
24
+ * `setReleaseGenres` / `setRecordingGenres` below express the complete desired
25
+ * list: they emit `clear_genres` first, then exactly one `add_genre` per id in
26
+ * array order. `clear_genres` is a no-op when nothing is attached, so this is
27
+ * safe to run against a fresh object, and it is equally safe to re-run against
28
+ * one that already carries genres — the leading `clear_genres` wipes prior
29
+ * state before the adds replay, so the transaction is idempotent and can be
30
+ * composed more than once in the same PTB. Editing clients that want to
31
+ * mutate an existing assignment without a full replace should use the
32
+ * exported single-mutation primitives (`addReleaseGenre`, `removeReleaseGenre`
33
+ * and their `recording` counterparts), or `clearReleaseGenres` /
34
+ * `clearRecordingGenres` to drop the list outright.
35
+ *
36
+ * `getReleaseGenres` / `getRecordingGenres` below return `[]` when the
37
+ * dynamic field is absent, which now exactly mirrors the on-chain `genres()`
38
+ * view — both Move modules removed their standalone emptiness/first-entry
39
+ * accessors, so emptiness is `genres().length === 0` and the primary is
40
+ * `genres()[0]`, computed client-side the same way Move computes them.
41
+ */
42
+
43
+ import { bcs } from "@mysten/sui/bcs";
44
+ import { deriveDynamicFieldID, deriveObjectID, normalizeSuiObjectId } from "@mysten/sui/utils";
45
+ import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
46
+ import { Effect, Schema } from "effect";
47
+ import { getOptionalObjectContent, type SuiClient, type SuiRpcError } from "@misofm/effect";
48
+ import type { TxThunk } from "./transactions.ts";
49
+ import { directAdminCap, invokeWithAdminCap, type AdminCapAuthority, type ObjectInput } from "./vault.ts";
50
+ import { PlatformDeployment } from "./deployments.ts";
51
+ import type { ReleaseExtensionTarget } from "./release-extensions.ts";
52
+ import type { RecordingExtensionTarget } from "./recording-extensions.ts";
53
+ import * as genre from "./contracts/genre/genre.ts";
54
+ import * as releaseGenre from "./contracts/release_genre/release_genre.ts";
55
+ import * as recordingGenre from "./contracts/recording_genre/recording_genre.ts";
56
+
57
+ // ── Vocabulary helpers ───────────────────────────────────────────────────────
58
+
59
+ const GENRE_NAME_RE = /^[A-Z]+(?:_[A-Z]+)*$/;
60
+
61
+ /** Validate the canonical on-chain genre vocabulary spelling. */
62
+ export function assertCanonicalGenreName(name: string): void {
63
+ const bytes = new TextEncoder().encode(name).length;
64
+ if (bytes === 0 || bytes > 64 || !GENRE_NAME_RE.test(name)) {
65
+ throw new Error(
66
+ `Genre name must be 1-64 bytes of uppercase A-Z and underscores; got ${JSON.stringify(name)}`,
67
+ );
68
+ }
69
+ }
70
+
71
+ /** Derive the immutable Genre object address for a canonical vocabulary name.
72
+ * `genrePackageId` must be the genre package's defining (original publish)
73
+ * address — the on-chain derivation hashes type names with defining IDs. */
74
+ export function deriveGenreAddress(
75
+ genreRegistryId: string,
76
+ genrePackageId: string,
77
+ canonicalName: string,
78
+ ): string {
79
+ assertCanonicalGenreName(canonicalName);
80
+ return deriveObjectID(
81
+ genreRegistryId,
82
+ `${genrePackageId}::genre::GenreKey`,
83
+ genre.GenreKey.serialize([canonicalName]).toBytes(),
84
+ );
85
+ }
86
+
87
+ /**
88
+ * A vocabulary entry from the shared `genre` registry, identified by its
89
+ * canonical name (e.g. `"HIP_HOP"`). Constructing one needs the deployment's
90
+ * genre registry object id and genre package id — see {@link Genre.derive}.
91
+ */
92
+ export class Genre extends Schema.Class<Genre>("@misofm/platform/Genre")({
93
+ id: Schema.String,
94
+ name: Schema.String,
95
+ }) {
96
+ /**
97
+ * Derives a `Genre`'s immutable object address from the platform
98
+ * deployment's genre registry + package id. This is a pure derivation (no
99
+ * chain read) but is the pilot for a value object whose construction
100
+ * genuinely needs deployment context, so it reaches that context through
101
+ * the `PlatformDeployment` service rather than an explicit parameter.
102
+ */
103
+ static readonly derive = Effect.fn("Genre.derive")(function* (
104
+ canonicalName: string,
105
+ ): Effect.fn.Return<Genre, never, PlatformDeployment> {
106
+ const deployment = yield* PlatformDeployment;
107
+ const id = deriveGenreAddress(deployment.objects.genreRegistry, deployment.packages.genre, canonicalName);
108
+ return new Genre({ id, name: canonicalName });
109
+ });
110
+ }
111
+
112
+ // ── Shared validation ────────────────────────────────────────────────────────
113
+
114
+ /** The maximum number of genres `release_genre` / `recording_genre` will accept. */
115
+ export const MAX_GENRES = 6;
116
+
117
+ /**
118
+ * Fail closed before signing rather than let a bad list abort on-chain as
119
+ * `EDuplicateGenre` (40) or `EMaxGenres` (41). Mirrors how `setReleaseKind`
120
+ * validates its input up front and returns a thunk only once it is well-formed.
121
+ */
122
+ function validateGenreIds(op: string, genreIds: readonly string[]): string[] {
123
+ if (genreIds.length === 0) {
124
+ throw new Error(`${op}: genreIds must not be empty`);
125
+ }
126
+ if (genreIds.length > MAX_GENRES) {
127
+ throw new Error(`${op}: at most ${MAX_GENRES} genres (got ${genreIds.length})`);
128
+ }
129
+ const seen = new Set<string>();
130
+ for (const id of genreIds) {
131
+ const normalized = normalizeSuiObjectId(id);
132
+ if (seen.has(normalized)) {
133
+ throw new Error(`${op}: duplicate genre id ${id}`);
134
+ }
135
+ seen.add(normalized);
136
+ }
137
+ return [...genreIds];
138
+ }
139
+
140
+ // ── Release setters ──────────────────────────────────────────────────────────
141
+
142
+ function releaseAuthorityOf(p: ReleaseExtensionTarget): AdminCapAuthority {
143
+ if (p.authority !== undefined) return p.authority;
144
+ if (p.releaseAdminCapId !== undefined) return directAdminCap(p.releaseAdminCapId);
145
+ throw new Error("release authority is required");
146
+ }
147
+
148
+ function object(tx: Transaction, value: ObjectInput): TransactionObjectArgument {
149
+ return typeof value === "string" ? tx.object(value) : value;
150
+ }
151
+
152
+ export type SetReleaseGenresParams = ReleaseExtensionTarget & {
153
+ /** Ordered `genre::Genre` object ids; index 0 becomes the primary. 1-6 entries, no duplicates. */
154
+ genreIds: readonly string[];
155
+ releaseGenrePackageId: string;
156
+ };
157
+
158
+ /**
159
+ * Attach the complete, ordered list of genres to a Release. Emits
160
+ * `release_genre::clear_genres` first, then exactly one
161
+ * `release_genre::add_genre` per id in array order. `clear_genres` is a no-op
162
+ * when nothing is attached, so this is safe to run against a fresh release
163
+ * and safe to re-run against one that already has genres assigned.
164
+ */
165
+ export function setReleaseGenres(p: SetReleaseGenresParams): TxThunk {
166
+ const genreIds = validateGenreIds("setReleaseGenres", p.genreIds);
167
+ return (tx) => {
168
+ const authority = releaseAuthorityOf(p);
169
+ invokeWithAdminCap(tx, authority, {
170
+ target: `${p.releaseGenrePackageId}::release_genre::clear_genres`,
171
+ arguments: [object(tx, p.releaseId)],
172
+ adminCapIndex: 1,
173
+ });
174
+ for (const genreId of genreIds) {
175
+ invokeWithAdminCap(tx, authority, {
176
+ target: `${p.releaseGenrePackageId}::release_genre::add_genre`,
177
+ arguments: [object(tx, p.releaseId), tx.object(genreId)],
178
+ adminCapIndex: 1,
179
+ });
180
+ }
181
+ };
182
+ }
183
+
184
+ export type ClearReleaseGenresParams = ReleaseExtensionTarget & {
185
+ releaseGenrePackageId: string;
186
+ };
187
+
188
+ /** Remove a Release's entire genre list. A no-op on-chain if nothing is attached. */
189
+ export function clearReleaseGenres(p: ClearReleaseGenresParams): TxThunk {
190
+ return (tx) => {
191
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
192
+ target: `${p.releaseGenrePackageId}::release_genre::clear_genres`,
193
+ arguments: [object(tx, p.releaseId)],
194
+ adminCapIndex: 1,
195
+ });
196
+ };
197
+ }
198
+
199
+ export type ReleaseGenreMutationParams = ReleaseExtensionTarget & {
200
+ genreId: string;
201
+ releaseGenrePackageId: string;
202
+ };
203
+
204
+ /** Append one genre to a Release's list. */
205
+ export function addReleaseGenre(p: ReleaseGenreMutationParams): TxThunk {
206
+ return (tx) => {
207
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
208
+ target: `${p.releaseGenrePackageId}::release_genre::add_genre`,
209
+ arguments: [object(tx, p.releaseId), tx.object(p.genreId)],
210
+ adminCapIndex: 1,
211
+ });
212
+ };
213
+ }
214
+
215
+ /** Remove one genre from a Release by id. */
216
+ export function removeReleaseGenre(p: ReleaseGenreMutationParams): TxThunk {
217
+ return (tx) => {
218
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
219
+ target: `${p.releaseGenrePackageId}::release_genre::remove_genre`,
220
+ arguments: [object(tx, p.releaseId), tx.pure.id(p.genreId)],
221
+ adminCapIndex: 1,
222
+ });
223
+ };
224
+ }
225
+
226
+ // ── Recording setters ────────────────────────────────────────────────────────
227
+
228
+ export interface SetRecordingGenresParams extends RecordingExtensionTarget {
229
+ readonly recordingGenrePackageId: string;
230
+ /** Ordered `genre::Genre` object ids; index 0 becomes the primary. 1-6 entries, no duplicates. */
231
+ readonly genreIds: readonly string[];
232
+ }
233
+
234
+ /**
235
+ * Attach the complete, ordered list of genres to a Recording. Emits
236
+ * `recording_genre::clear_genres` first, then exactly one
237
+ * `recording_genre::add_genre` per id in array order. `clear_genres` is a
238
+ * no-op when nothing is attached, so this is safe to run against a fresh
239
+ * recording and safe to re-run against one that already has genres assigned.
240
+ */
241
+ export function setRecordingGenres(p: SetRecordingGenresParams): TxThunk {
242
+ const genreIds = validateGenreIds("setRecordingGenres", p.genreIds);
243
+ return (tx) => {
244
+ invokeWithAdminCap(tx, p.authority, {
245
+ target: `${p.recordingGenrePackageId}::recording_genre::clear_genres`,
246
+ typeArguments: [p.recordingShareType, p.compositionShareType],
247
+ arguments: [object(tx, p.recordingId)],
248
+ adminCapIndex: 1,
249
+ });
250
+ for (const genreId of genreIds) {
251
+ invokeWithAdminCap(tx, p.authority, {
252
+ target: `${p.recordingGenrePackageId}::recording_genre::add_genre`,
253
+ typeArguments: [p.recordingShareType, p.compositionShareType],
254
+ arguments: [object(tx, p.recordingId), tx.object(genreId)],
255
+ adminCapIndex: 1,
256
+ });
257
+ }
258
+ };
259
+ }
260
+
261
+ export interface ClearRecordingGenresParams extends RecordingExtensionTarget {
262
+ readonly recordingGenrePackageId: string;
263
+ }
264
+
265
+ /** Remove a Recording's entire genre list. A no-op on-chain if nothing is attached. */
266
+ export function clearRecordingGenres(p: ClearRecordingGenresParams): TxThunk {
267
+ return (tx) => {
268
+ invokeWithAdminCap(tx, p.authority, {
269
+ target: `${p.recordingGenrePackageId}::recording_genre::clear_genres`,
270
+ typeArguments: [p.recordingShareType, p.compositionShareType],
271
+ arguments: [object(tx, p.recordingId)],
272
+ adminCapIndex: 1,
273
+ });
274
+ };
275
+ }
276
+
277
+ export interface RecordingGenreMutationParams extends RecordingExtensionTarget {
278
+ readonly recordingGenrePackageId: string;
279
+ readonly genreId: string;
280
+ }
281
+
282
+ /** Append one genre to a Recording's list. */
283
+ export function addRecordingGenre(p: RecordingGenreMutationParams): TxThunk {
284
+ return (tx) => {
285
+ invokeWithAdminCap(tx, p.authority, {
286
+ target: `${p.recordingGenrePackageId}::recording_genre::add_genre`,
287
+ typeArguments: [p.recordingShareType, p.compositionShareType],
288
+ arguments: [object(tx, p.recordingId), tx.object(p.genreId)],
289
+ adminCapIndex: 1,
290
+ });
291
+ };
292
+ }
293
+
294
+ /** Remove one genre from a Recording by id. */
295
+ export function removeRecordingGenre(p: RecordingGenreMutationParams): TxThunk {
296
+ return (tx) => {
297
+ invokeWithAdminCap(tx, p.authority, {
298
+ target: `${p.recordingGenrePackageId}::recording_genre::remove_genre`,
299
+ typeArguments: [p.recordingShareType, p.compositionShareType],
300
+ arguments: [object(tx, p.recordingId), tx.pure.id(p.genreId)],
301
+ adminCapIndex: 1,
302
+ });
303
+ };
304
+ }
305
+
306
+ // ── Reads ────────────────────────────────────────────────────────────────────
307
+
308
+ // Both packages store the same shape: a dynamic field on the target's UID under
309
+ // an empty `ExtensionKey()` (Move's implicit `dummy_field: bool` → one `false`
310
+ // byte), value `vector<ID>`, ordered with the primary first.
311
+ const ReleaseGenresField = bcs.struct("Field", {
312
+ id: bcs.Address,
313
+ name: releaseGenre.ExtensionKey,
314
+ value: bcs.vector(bcs.Address),
315
+ });
316
+ const RELEASE_GENRES_KEY_BYTES = releaseGenre.ExtensionKey.serialize([false]).toBytes();
317
+
318
+ const RecordingGenresField = bcs.struct("Field", {
319
+ id: bcs.Address,
320
+ name: recordingGenre.ExtensionKey,
321
+ value: bcs.vector(bcs.Address),
322
+ });
323
+ const RECORDING_GENRES_KEY_BYTES = recordingGenre.ExtensionKey.serialize([false]).toBytes();
324
+
325
+ /** Parse a `release_genre` dynamic field's content into its ordered genre ids. */
326
+ export function parseReleaseGenresContent(content: Uint8Array): string[] {
327
+ return ReleaseGenresField.parse(content).value;
328
+ }
329
+
330
+ /** Parse a `recording_genre` dynamic field's content into its ordered genre ids. */
331
+ export function parseRecordingGenresContent(content: Uint8Array): string[] {
332
+ return RecordingGenresField.parse(content).value;
333
+ }
334
+
335
+ /** Deterministic dynamic-field id for a Release's genre list. */
336
+ export function releaseGenresFieldId(
337
+ releaseId: string,
338
+ releaseGenrePackageId: string,
339
+ ): string {
340
+ return deriveDynamicFieldID(
341
+ releaseId,
342
+ `${releaseGenrePackageId}::release_genre::ExtensionKey`,
343
+ RELEASE_GENRES_KEY_BYTES,
344
+ );
345
+ }
346
+
347
+ /** Deterministic dynamic-field id for a Recording's genre list. */
348
+ export function recordingGenresFieldId(
349
+ recordingId: string,
350
+ recordingGenrePackageId: string,
351
+ ): string {
352
+ return deriveDynamicFieldID(
353
+ recordingId,
354
+ `${recordingGenrePackageId}::recording_genre::ExtensionKey`,
355
+ RECORDING_GENRES_KEY_BYTES,
356
+ );
357
+ }
358
+
359
+ /**
360
+ * Read a Release's genre ids in order (primary first), or `[]` when no genres
361
+ * are attached. The primary is `list[0]`; there is no separate primary reader
362
+ * because the Move `genres` view already returns `[]` for the absent case.
363
+ */
364
+ export const getReleaseGenres = Effect.fn("getReleaseGenres")(function* (
365
+ releaseId: string,
366
+ releaseGenrePackageId: string,
367
+ ): Effect.fn.Return<string[], SuiRpcError, SuiClient> {
368
+ const found = yield* getOptionalObjectContent(releaseGenresFieldId(releaseId, releaseGenrePackageId));
369
+ return found._tag === "None" ? [] : parseReleaseGenresContent(found.value.content);
370
+ });
371
+
372
+ /**
373
+ * Read a Recording's genre ids in order (primary first), or `[]` when no
374
+ * genres are attached. The primary is `list[0]`; there is no separate primary
375
+ * reader because the Move `genres` view already returns `[]` for the absent
376
+ * case.
377
+ */
378
+ export const getRecordingGenres = Effect.fn("getRecordingGenres")(function* (
379
+ recordingId: string,
380
+ recordingGenrePackageId: string,
381
+ ): Effect.fn.Return<string[], SuiRpcError, SuiClient> {
382
+ const found = yield* getOptionalObjectContent(recordingGenresFieldId(recordingId, recordingGenrePackageId));
383
+ return found._tag === "None" ? [] : parseRecordingGenresContent(found.value.content);
384
+ });
package/src/index.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  // Miso's own product sits on top of the permissionless protocol, and the two
7
7
  // ship as separate packages because they have different promises:
8
8
  //
9
- // @misofm/protocol PROTOCOL — Composition, Recording, Release. The open layer
9
+ // @misofm/musicos PROTOCOL — Composition, Recording, Release. The open layer
10
10
  // anyone can build on, and nobody needs Miso's permission to use.
11
11
  // @misofm/platform PLATFORM — Pressing, Listing, Record, and the first-party
12
12
  // EXTENSIONS. How MISO sells copies of a release, and the
@@ -53,6 +53,14 @@ export * from "./walrus-ids.ts";
53
53
  export * from "./streaming.ts";
54
54
  export * from "./walrus.ts";
55
55
 
56
+ // Re-homed from the pre-split protocol package: extension/primitive package
57
+ // bindings, event decoders, and the generic royalty-pool / routed-stake
58
+ // queries and PTB builders (see the boundary rule above — these are all
59
+ // things Miso offers on top of the object model, not the model itself).
60
+ export * from "./packages.ts";
61
+ export { platformEventParsers } from "./events.ts";
62
+ export * from "./royalty.ts";
63
+
56
64
  // High-level, JSON-safe platform projections used directly by clients and by
57
65
  // the thin HTTP read service. Namespaced because these composed view types are
58
66
  // intentionally distinct from the lower-level contract views above.
@@ -63,6 +71,7 @@ export * as read from "./read/index.ts";
63
71
  export * from "./credits.ts";
64
72
  export * from "./cover.ts";
65
73
  export * from "./release-extensions.ts";
74
+ export * from "./genre.ts";
66
75
  export * from "./recording-extensions.ts";
67
76
  export * from "./vault.ts";
68
77
 
package/src/internal.ts CHANGED
@@ -9,8 +9,8 @@ import type { Transaction, TransactionArgument } from "@mysten/sui/transactions"
9
9
  // call needs an `Option` argument built inline. Consumed by `./cover` and
10
10
  // `./credits`.
11
11
  //
12
- // These came over from `@misonetwork/sdk`'s own private `internal.ts` when the
13
- // extension surface moved here. They were NOT promoted to that package's public
12
+ // These came over from the object-model package's own private `internal.ts`
13
+ // when the extension surface moved here. They were NOT promoted to that package's public
14
14
  // API to make them reachable: they are two literal Move function targets from the
15
15
  // standard library, so re-deriving them costs nothing, whereas exporting them
16
16
  // would widen the protocol SDK's public surface — and therefore its compatibility
@@ -0,0 +1,243 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /**
5
+ * Package-bound generated APIs for the platform layer: extensions, generic
6
+ * royalty/routed-stake primitives, and Party. The object-model core (composition,
7
+ * recording, release, track) has its own `MisoPackageBindings` in
8
+ * `@misofm/musicos/packages` — this class covers everything else.
9
+ *
10
+ * `@mysten/codegen` intentionally emits `@local-pkg/*` source labels. This
11
+ * adapter replaces those labels with the exact addresses from a complete
12
+ * platform deployment manifest, so applications never have to hand-write a
13
+ * Move target.
14
+ */
15
+
16
+ import { bindModulePackage } from "@misofm/musicos/packages";
17
+ // The Party core's generated bindings live in `@misofm/partyos` now (this
18
+ // package's own generated `partyos` tree is gone). Binding `call.party.core`/
19
+ // `bcs.party.core` from partyos's curated barrel — rather than dropping them —
20
+ // keeps this package's single `MisoPlatformPackageBindings` facade covering
21
+ // every package a platform deployment addresses, core included, which is what
22
+ // `packages.test.ts` exercises.
23
+ import { party as partyCoreContracts } from "@misofm/partyos/contracts";
24
+ import {
25
+ normalizeMisoPlatformDeployment,
26
+ type MisoPlatformDeployment,
27
+ } from "./deployments.ts";
28
+
29
+ import * as compositionCredits from "./contracts/composition_credits/composition_credits.ts";
30
+ import * as compositionPartyRole from "./contracts/composition_credits/composition_party_role.ts";
31
+ import * as recordingAdvisory from "./contracts/recording_advisory/recording_advisory.ts";
32
+ import * as recordingCredits from "./contracts/recording_credits/recording_credits.ts";
33
+ import * as recordingPartyRole from "./contracts/recording_credits/recording_party_role.ts";
34
+ import * as recordingLanguage from "./contracts/recording_language/recording_language.ts";
35
+ import * as recordingMasterReference from "./contracts/recording_master_reference/recording_master_reference.ts";
36
+ import * as releaseCoverArt from "./contracts/release_cover_art/release_cover_art.ts";
37
+ import * as releaseCredits from "./contracts/release_credits/release_credits.ts";
38
+ import * as releasePartyRole from "./contracts/release_credits/release_party_role.ts";
39
+ import * as releaseDescription from "./contracts/release_description/release_description.ts";
40
+ import * as releaseDspLink from "./contracts/release_dsp_link/release_dsp_link.ts";
41
+ import * as releaseGenre from "./contracts/release_genre/release_genre.ts";
42
+ import * as releaseKind from "./contracts/release_kind/release_kind.ts";
43
+
44
+ import * as royaltyPool from "./contracts/royalty_pool/pool.ts";
45
+ import * as royaltyStake from "./contracts/royalty_pool/stake.ts";
46
+ import * as routedStake from "./contracts/routed_stake/routed_stake.ts";
47
+
48
+ import * as partyCta from "./contracts/party_cta/party_cta.ts";
49
+ import * as partyGenre from "./contracts/party_genre/party_genre.ts";
50
+ import * as partyMedia from "./contracts/party_media/party_media.ts";
51
+ import * as partyMusic from "./contracts/party_music/party_music.ts";
52
+ import * as partyPlatformLink from "./contracts/party_platform_link/party_platform_link.ts";
53
+ import * as partyProLink from "./contracts/party_pro_link/party_pro_link.ts";
54
+ import * as partyProfile from "./contracts/party_profile/party_profile.ts";
55
+ import * as partyRoles from "./contracts/party_roles/party_roles.ts";
56
+ import * as partySocial from "./contracts/party_social/party_social.ts";
57
+ import * as partyTags from "./contracts/party_tags/party_tags.ts";
58
+
59
+ /** Generated modules mix BCS constants with transaction-builder functions. */
60
+ type CodecModule<M extends object> = {
61
+ [Key in keyof M as M[Key] extends (...args: never[]) => unknown ? never : Key]: M[Key];
62
+ };
63
+
64
+ /** BCS-only projection: never leak Move-call builders into the `bcs` namespace. */
65
+ function codecsOnly<M extends object>(mod: M): CodecModule<M> {
66
+ return Object.fromEntries(
67
+ Object.entries(mod).filter(([, value]) => typeof value !== "function"),
68
+ ) as CodecModule<M>;
69
+ }
70
+
71
+ /**
72
+ * Public Move functions that return references. A PTB can borrow internally,
73
+ * but a Move-call command result cannot carry a reference to a later command.
74
+ * Keep them out of `call`; use object/dynamic-field BCS queries instead.
75
+ */
76
+ export const REF_RETURNING_CALLS = {
77
+ compositionCredits: ["credits"],
78
+ recordingCredits: ["credits", "primaryArtistIds", "featuredArtistIds"],
79
+ recordingMasterReference: ["masterReference"],
80
+ releaseCoverArt: ["cover"],
81
+ releaseCredits: ["credits"],
82
+ releaseDescription: ["description"],
83
+ // `new` is emitted as `_new`; its `&mut UID` parent credential cannot be
84
+ // constructed by a caller-side PTB, so only authority-package code may use it.
85
+ royaltyPool: ["balance", "_new"],
86
+ royaltyStake: ["balance", "getRegistration"],
87
+ // These lifecycle functions require a parent `&mut UID`, which cannot be a
88
+ // caller-provided PTB input. Only `share`, `sweep`, scalar reads and derives
89
+ // remain usable at this layer.
90
+ routedStake: ["stake", "_new", "register", "unregister", "unstake", "restake"],
91
+ partyProfile: ["profile"],
92
+ } as const;
93
+
94
+ /**
95
+ * All platform generated functions and BCS codecs bound to one full, verified
96
+ * deployment. The `call` namespaces construct only caller-owned PTB commands.
97
+ * They neither set gas nor sign/execute. Query dynamic fields directly rather
98
+ * than using a Move function whose return type is a reference: PTB command
99
+ * outputs cannot carry references.
100
+ */
101
+ export class MisoPlatformPackageBindings {
102
+ readonly deployment: MisoPlatformDeployment;
103
+
104
+ constructor(deployment: MisoPlatformDeployment) {
105
+ this.deployment = normalizeMisoPlatformDeployment(deployment);
106
+ }
107
+
108
+ get call() {
109
+ const p = this.deployment.packages;
110
+ const party_ = this.deployment.party;
111
+ const partyosPkg = this.deployment.partyos.partyos;
112
+ return {
113
+ extensions: {
114
+ compositionCredits: {
115
+ compositionCredits: bindModulePackage(
116
+ compositionCredits,
117
+ p.compositionCredits,
118
+ REF_RETURNING_CALLS.compositionCredits,
119
+ ),
120
+ compositionPartyRole: bindModulePackage(
121
+ compositionPartyRole,
122
+ p.compositionCredits,
123
+ ),
124
+ },
125
+ recordingAdvisory: bindModulePackage(recordingAdvisory, p.recordingAdvisory),
126
+ recordingCredits: {
127
+ recordingCredits: bindModulePackage(
128
+ recordingCredits,
129
+ p.recordingCredits,
130
+ REF_RETURNING_CALLS.recordingCredits,
131
+ ),
132
+ recordingPartyRole: bindModulePackage(
133
+ recordingPartyRole,
134
+ p.recordingCredits,
135
+ ),
136
+ },
137
+ recordingLanguage: bindModulePackage(recordingLanguage, p.recordingLanguage),
138
+ recordingMasterReference: bindModulePackage(
139
+ recordingMasterReference,
140
+ p.recordingMasterReference,
141
+ REF_RETURNING_CALLS.recordingMasterReference,
142
+ ),
143
+ releaseCoverArt: bindModulePackage(
144
+ releaseCoverArt,
145
+ p.releaseCoverArt,
146
+ REF_RETURNING_CALLS.releaseCoverArt,
147
+ ),
148
+ releaseCredits: {
149
+ releaseCredits: bindModulePackage(
150
+ releaseCredits,
151
+ p.releaseCredits,
152
+ REF_RETURNING_CALLS.releaseCredits,
153
+ ),
154
+ releasePartyRole: bindModulePackage(releasePartyRole, p.releaseCredits),
155
+ },
156
+ releaseDescription: bindModulePackage(
157
+ releaseDescription,
158
+ p.releaseDescription,
159
+ REF_RETURNING_CALLS.releaseDescription,
160
+ ),
161
+ releaseDspLink: bindModulePackage(releaseDspLink, p.releaseDspLink),
162
+ releaseGenre: bindModulePackage(releaseGenre, p.releaseGenre),
163
+ releaseKind: bindModulePackage(releaseKind, p.releaseKind),
164
+ },
165
+ primitives: {
166
+ royaltyPool: {
167
+ pool: bindModulePackage(royaltyPool, p.royaltyPool, REF_RETURNING_CALLS.royaltyPool),
168
+ stake: bindModulePackage(royaltyStake, p.royaltyPool, REF_RETURNING_CALLS.royaltyStake),
169
+ },
170
+ routedStake: bindModulePackage(routedStake, p.routedStake, REF_RETURNING_CALLS.routedStake),
171
+ },
172
+ party: {
173
+ // Party core: `@misofm/partyos`'s curated `contracts.party` barrel is
174
+ // already stripped of reference-returning calls (its own
175
+ // PARTY_REF_RETURNING_CALLS, the same set as REF_RETURNING_CALLS.party
176
+ // below), so no `unavailable` list is passed here.
177
+ core: bindModulePackage(partyCoreContracts, partyosPkg),
178
+ cta: bindModulePackage(partyCta, party_.partyCta),
179
+ genre: bindModulePackage(partyGenre, party_.partyGenre),
180
+ media: bindModulePackage(partyMedia, party_.partyMedia),
181
+ music: bindModulePackage(partyMusic, party_.partyMusic),
182
+ platformLink: bindModulePackage(partyPlatformLink, party_.partyPlatformLink),
183
+ proLink: bindModulePackage(partyProLink, party_.partyProLink),
184
+ profile: bindModulePackage(partyProfile, party_.partyProfile, REF_RETURNING_CALLS.partyProfile),
185
+ roles: bindModulePackage(partyRoles, party_.partyRoles),
186
+ social: bindModulePackage(partySocial, party_.partySocial),
187
+ tags: bindModulePackage(partyTags, party_.partyTags),
188
+ },
189
+ };
190
+ }
191
+
192
+ /** Generated BCS codecs, grouped with the same ownership boundary as `call`. */
193
+ get bcs() {
194
+ return {
195
+ extensions: {
196
+ compositionCredits: {
197
+ compositionCredits: codecsOnly(compositionCredits),
198
+ compositionPartyRole: codecsOnly(compositionPartyRole),
199
+ },
200
+ recordingAdvisory: codecsOnly(recordingAdvisory),
201
+ recordingCredits: {
202
+ recordingCredits: codecsOnly(recordingCredits),
203
+ recordingPartyRole: codecsOnly(recordingPartyRole),
204
+ },
205
+ recordingLanguage: codecsOnly(recordingLanguage),
206
+ recordingMasterReference: codecsOnly(recordingMasterReference),
207
+ releaseCoverArt: codecsOnly(releaseCoverArt),
208
+ releaseCredits: {
209
+ releaseCredits: codecsOnly(releaseCredits),
210
+ releasePartyRole: codecsOnly(releasePartyRole),
211
+ },
212
+ releaseDescription: codecsOnly(releaseDescription),
213
+ releaseDspLink: codecsOnly(releaseDspLink),
214
+ releaseGenre: codecsOnly(releaseGenre),
215
+ releaseKind: codecsOnly(releaseKind),
216
+ },
217
+ primitives: {
218
+ royaltyPool: { pool: codecsOnly(royaltyPool), stake: codecsOnly(royaltyStake) },
219
+ routedStake: codecsOnly(routedStake),
220
+ },
221
+ party: {
222
+ core: codecsOnly(partyCoreContracts),
223
+ cta: codecsOnly(partyCta),
224
+ genre: codecsOnly(partyGenre),
225
+ media: codecsOnly(partyMedia),
226
+ music: codecsOnly(partyMusic),
227
+ platformLink: codecsOnly(partyPlatformLink),
228
+ proLink: codecsOnly(partyProLink),
229
+ profile: codecsOnly(partyProfile),
230
+ roles: codecsOnly(partyRoles),
231
+ social: codecsOnly(partySocial),
232
+ tags: codecsOnly(partyTags),
233
+ },
234
+ };
235
+ }
236
+ }
237
+
238
+ /** Construct complete platform package bindings from an explicit verified manifest. */
239
+ export function misoPlatformPackages(
240
+ deployment: MisoPlatformDeployment,
241
+ ): MisoPlatformPackageBindings {
242
+ return new MisoPlatformPackageBindings(deployment);
243
+ }