@misofm/platform 0.24.0 → 0.25.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 (603) hide show
  1. package/README.md +125 -57
  2. package/dist/catalog.d.ts +1 -1
  3. package/dist/catalog.d.ts.map +1 -1
  4. package/dist/catalog.js +1 -1
  5. package/dist/catalog.js.map +1 -1
  6. package/dist/client.d.ts +107 -97
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +59 -39
  9. package/dist/client.js.map +1 -1
  10. package/dist/contracts/composition_credits/composition_credits.d.ts +181 -0
  11. package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -0
  12. package/dist/contracts/composition_credits/composition_credits.js +109 -0
  13. package/dist/contracts/composition_credits/composition_credits.js.map +1 -0
  14. package/dist/contracts/composition_credits/composition_party_role.d.ts +119 -0
  15. package/dist/contracts/composition_credits/composition_party_role.d.ts.map +1 -0
  16. package/dist/contracts/composition_credits/composition_party_role.js +139 -0
  17. package/dist/contracts/composition_credits/composition_party_role.js.map +1 -0
  18. package/dist/contracts/composition_credits/deps/credit/credit.d.ts +24 -0
  19. package/dist/contracts/composition_credits/deps/credit/credit.d.ts.map +1 -0
  20. package/dist/contracts/composition_credits/deps/credit/credit.js +23 -0
  21. package/dist/contracts/composition_credits/deps/credit/credit.js.map +1 -0
  22. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts +37 -0
  23. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts.map +1 -0
  24. package/dist/contracts/composition_credits/deps/sui/vec_map.js +28 -0
  25. package/dist/contracts/composition_credits/deps/sui/vec_map.js.map +1 -0
  26. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +143 -0
  27. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts.map +1 -0
  28. package/dist/contracts/composition_routed_stake/composition_routed_stake.js +125 -0
  29. package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -0
  30. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +93 -0
  31. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -0
  32. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +86 -0
  33. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -0
  34. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts +90 -0
  35. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts.map +1 -0
  36. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js +85 -0
  37. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js.map +1 -0
  38. package/dist/contracts/composition_royalty_pool_plugin/witness.d.ts +6 -0
  39. package/dist/contracts/composition_royalty_pool_plugin/witness.d.ts.map +1 -0
  40. package/dist/contracts/composition_royalty_pool_plugin/witness.js +8 -0
  41. package/dist/contracts/composition_royalty_pool_plugin/witness.js.map +1 -0
  42. package/dist/contracts/cover_art/cover_art.d.ts +83 -0
  43. package/dist/contracts/cover_art/cover_art.d.ts.map +1 -0
  44. package/dist/contracts/cover_art/cover_art.js +66 -0
  45. package/dist/contracts/cover_art/cover_art.js.map +1 -0
  46. package/dist/contracts/cover_art/deps/ori/confidentiality.d.ts +24 -0
  47. package/dist/contracts/cover_art/deps/ori/confidentiality.d.ts.map +1 -0
  48. package/dist/contracts/cover_art/deps/ori/confidentiality.js +24 -0
  49. package/dist/contracts/cover_art/deps/ori/confidentiality.js.map +1 -0
  50. package/dist/contracts/cover_art/deps/ori/data.d.ts +16 -0
  51. package/dist/contracts/cover_art/deps/ori/data.d.ts.map +1 -0
  52. package/dist/contracts/cover_art/deps/ori/data.js +12 -0
  53. package/dist/contracts/cover_art/deps/ori/data.js.map +1 -0
  54. package/dist/contracts/genre/genre.d.ts +78 -0
  55. package/dist/contracts/genre/genre.d.ts.map +1 -0
  56. package/dist/contracts/genre/genre.js +87 -0
  57. package/dist/contracts/genre/genre.js.map +1 -0
  58. package/dist/contracts/party_cta/party_cta.d.ts +120 -0
  59. package/dist/contracts/party_cta/party_cta.d.ts.map +1 -0
  60. package/dist/contracts/party_cta/party_cta.js +139 -0
  61. package/dist/contracts/party_cta/party_cta.js.map +1 -0
  62. package/dist/contracts/party_genre/party_genre.d.ts +117 -0
  63. package/dist/contracts/party_genre/party_genre.d.ts.map +1 -0
  64. package/dist/contracts/party_genre/party_genre.js +131 -0
  65. package/dist/contracts/party_genre/party_genre.js.map +1 -0
  66. package/dist/contracts/party_media/party_media.d.ts +86 -0
  67. package/dist/contracts/party_media/party_media.d.ts.map +1 -0
  68. package/dist/contracts/party_media/party_media.js +97 -0
  69. package/dist/contracts/party_media/party_media.js.map +1 -0
  70. package/dist/contracts/party_music/party_music.d.ts +209 -0
  71. package/dist/contracts/party_music/party_music.d.ts.map +1 -0
  72. package/dist/contracts/party_music/party_music.js +259 -0
  73. package/dist/contracts/party_music/party_music.js.map +1 -0
  74. package/dist/contracts/party_platform_link/party_platform_link.d.ts +89 -0
  75. package/dist/contracts/party_platform_link/party_platform_link.d.ts.map +1 -0
  76. package/dist/contracts/party_platform_link/party_platform_link.js +92 -0
  77. package/dist/contracts/party_platform_link/party_platform_link.js.map +1 -0
  78. package/dist/contracts/party_pro_link/party_pro_link.d.ts +233 -0
  79. package/dist/contracts/party_pro_link/party_pro_link.d.ts.map +1 -0
  80. package/dist/contracts/party_pro_link/party_pro_link.js +289 -0
  81. package/dist/contracts/party_pro_link/party_pro_link.js.map +1 -0
  82. package/dist/contracts/party_profile/deps/country_code/country_code.d.ts +15 -0
  83. package/dist/contracts/party_profile/deps/country_code/country_code.d.ts.map +1 -0
  84. package/dist/contracts/party_profile/deps/country_code/country_code.js +17 -0
  85. package/dist/contracts/party_profile/deps/country_code/country_code.js.map +1 -0
  86. package/dist/contracts/party_profile/deps/language_code/language_code.d.ts +6 -0
  87. package/dist/contracts/party_profile/deps/language_code/language_code.d.ts.map +1 -0
  88. package/dist/contracts/party_profile/deps/language_code/language_code.js +8 -0
  89. package/dist/contracts/party_profile/deps/language_code/language_code.js.map +1 -0
  90. package/dist/contracts/party_profile/party_profile.d.ts +133 -0
  91. package/dist/contracts/party_profile/party_profile.d.ts.map +1 -0
  92. package/dist/contracts/party_profile/party_profile.js +153 -0
  93. package/dist/contracts/party_profile/party_profile.js.map +1 -0
  94. package/dist/contracts/party_roles/party_roles.d.ts +201 -0
  95. package/dist/contracts/party_roles/party_roles.d.ts.map +1 -0
  96. package/dist/contracts/party_roles/party_roles.js +237 -0
  97. package/dist/contracts/party_roles/party_roles.js.map +1 -0
  98. package/dist/contracts/party_social/party_social.d.ts +258 -0
  99. package/dist/contracts/party_social/party_social.d.ts.map +1 -0
  100. package/dist/contracts/party_social/party_social.js +320 -0
  101. package/dist/contracts/party_social/party_social.js.map +1 -0
  102. package/dist/contracts/party_tags/party_tags.d.ts +116 -0
  103. package/dist/contracts/party_tags/party_tags.d.ts.map +1 -0
  104. package/dist/contracts/party_tags/party_tags.js +130 -0
  105. package/dist/contracts/party_tags/party_tags.js.map +1 -0
  106. package/dist/contracts/party_wallet/party_wallet.d.ts +112 -0
  107. package/dist/contracts/party_wallet/party_wallet.d.ts.map +1 -0
  108. package/dist/contracts/party_wallet/party_wallet.js +114 -0
  109. package/dist/contracts/party_wallet/party_wallet.js.map +1 -0
  110. package/dist/contracts/record/deps/std/type_name.d.ts +18 -0
  111. package/dist/contracts/record/deps/std/type_name.d.ts.map +1 -0
  112. package/dist/contracts/record/deps/std/type_name.js +20 -0
  113. package/dist/contracts/record/deps/std/type_name.js.map +1 -0
  114. package/dist/contracts/record/deps/sui/vec_set.d.ts +21 -0
  115. package/dist/contracts/record/deps/sui/vec_set.d.ts.map +1 -0
  116. package/dist/contracts/record/deps/sui/vec_set.js +20 -0
  117. package/dist/contracts/record/deps/sui/vec_set.js.map +1 -0
  118. package/dist/contracts/record/pressing.d.ts +327 -0
  119. package/dist/contracts/record/pressing.d.ts.map +1 -0
  120. package/dist/contracts/record/pressing.js +345 -0
  121. package/dist/contracts/record/pressing.js.map +1 -0
  122. package/dist/contracts/record/record.d.ts +190 -0
  123. package/dist/contracts/record/record.d.ts.map +1 -0
  124. package/dist/contracts/record/record.js +226 -0
  125. package/dist/contracts/record/record.js.map +1 -0
  126. package/dist/contracts/record_shop/deps/std/type_name.d.ts +18 -0
  127. package/dist/contracts/record_shop/deps/std/type_name.d.ts.map +1 -0
  128. package/dist/contracts/record_shop/deps/std/type_name.js +20 -0
  129. package/dist/contracts/record_shop/deps/std/type_name.js.map +1 -0
  130. package/dist/contracts/record_shop/listing.d.ts +387 -0
  131. package/dist/contracts/record_shop/listing.d.ts.map +1 -0
  132. package/dist/contracts/record_shop/listing.js +380 -0
  133. package/dist/contracts/record_shop/listing.js.map +1 -0
  134. package/dist/contracts/record_shop/witness.d.ts +7 -0
  135. package/dist/contracts/record_shop/witness.d.ts.map +1 -0
  136. package/dist/contracts/record_shop/witness.js +9 -0
  137. package/dist/contracts/record_shop/witness.js.map +1 -0
  138. package/dist/contracts/recording_advisory/recording_advisory.d.ts +194 -0
  139. package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -0
  140. package/dist/contracts/recording_advisory/recording_advisory.js +204 -0
  141. package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -0
  142. package/dist/contracts/recording_credits/deps/credit/credit.d.ts +24 -0
  143. package/dist/contracts/recording_credits/deps/credit/credit.d.ts.map +1 -0
  144. package/dist/contracts/recording_credits/deps/credit/credit.js +23 -0
  145. package/dist/contracts/recording_credits/deps/credit/credit.js.map +1 -0
  146. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts +37 -0
  147. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -0
  148. package/dist/contracts/recording_credits/deps/sui/vec_map.js +28 -0
  149. package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -0
  150. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts +21 -0
  151. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -0
  152. package/dist/contracts/recording_credits/deps/sui/vec_set.js +20 -0
  153. package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -0
  154. package/dist/contracts/recording_credits/recording_credits.d.ts +2313 -0
  155. package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -0
  156. package/dist/contracts/recording_credits/recording_credits.js +270 -0
  157. package/dist/contracts/recording_credits/recording_credits.js.map +1 -0
  158. package/dist/contracts/recording_credits/recording_party_role.d.ts +1174 -0
  159. package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -0
  160. package/dist/contracts/recording_credits/recording_party_role.js +692 -0
  161. package/dist/contracts/recording_credits/recording_party_role.js.map +1 -0
  162. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.d.ts +24 -0
  163. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.d.ts.map +1 -0
  164. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.js +24 -0
  165. package/dist/contracts/recording_engine_session/deps/ori/confidentiality.js.map +1 -0
  166. package/dist/contracts/recording_engine_session/deps/ori/data.d.ts +16 -0
  167. package/dist/contracts/recording_engine_session/deps/ori/data.d.ts.map +1 -0
  168. package/dist/contracts/recording_engine_session/deps/ori/data.js +12 -0
  169. package/dist/contracts/recording_engine_session/deps/ori/data.js.map +1 -0
  170. package/dist/contracts/recording_engine_session/recording_engine_session.d.ts +296 -0
  171. package/dist/contracts/recording_engine_session/recording_engine_session.d.ts.map +1 -0
  172. package/dist/contracts/recording_engine_session/recording_engine_session.js +216 -0
  173. package/dist/contracts/recording_engine_session/recording_engine_session.js.map +1 -0
  174. package/dist/contracts/recording_genre/recording_genre.d.ts +173 -0
  175. package/dist/contracts/recording_genre/recording_genre.d.ts.map +1 -0
  176. package/dist/contracts/recording_genre/recording_genre.js +170 -0
  177. package/dist/contracts/recording_genre/recording_genre.js.map +1 -0
  178. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +6 -0
  179. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +1 -0
  180. package/dist/contracts/recording_language/deps/language_code/language_code.js +8 -0
  181. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +1 -0
  182. package/dist/contracts/recording_language/recording_language.d.ts +152 -0
  183. package/dist/contracts/recording_language/recording_language.d.ts.map +1 -0
  184. package/dist/contracts/recording_language/recording_language.js +149 -0
  185. package/dist/contracts/recording_language/recording_language.js.map +1 -0
  186. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts +24 -0
  187. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts.map +1 -0
  188. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js +24 -0
  189. package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js.map +1 -0
  190. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts +16 -0
  191. package/dist/contracts/recording_master_reference/deps/ori/data.d.ts.map +1 -0
  192. package/dist/contracts/recording_master_reference/deps/ori/data.js +12 -0
  193. package/dist/contracts/recording_master_reference/deps/ori/data.js.map +1 -0
  194. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +129 -0
  195. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -0
  196. package/dist/contracts/recording_master_reference/recording_master_reference.js +119 -0
  197. package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -0
  198. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +96 -0
  199. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -0
  200. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +85 -0
  201. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -0
  202. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts +92 -0
  203. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts.map +1 -0
  204. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js +85 -0
  205. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js.map +1 -0
  206. package/dist/contracts/recording_royalty_pool_plugin/witness.d.ts +6 -0
  207. package/dist/contracts/recording_royalty_pool_plugin/witness.d.ts.map +1 -0
  208. package/dist/contracts/recording_royalty_pool_plugin/witness.js +8 -0
  209. package/dist/contracts/recording_royalty_pool_plugin/witness.js.map +1 -0
  210. package/dist/contracts/recording_streaming_transcode/deps/ori/data.d.ts +8 -0
  211. package/dist/contracts/recording_streaming_transcode/deps/ori/data.d.ts.map +1 -0
  212. package/dist/contracts/recording_streaming_transcode/deps/ori/data.js +10 -0
  213. package/dist/contracts/recording_streaming_transcode/deps/ori/data.js.map +1 -0
  214. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts +124 -0
  215. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts.map +1 -0
  216. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js +124 -0
  217. package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js.map +1 -0
  218. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.d.ts +24 -0
  219. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.d.ts.map +1 -0
  220. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.js +24 -0
  221. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.js.map +1 -0
  222. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.d.ts +16 -0
  223. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.d.ts.map +1 -0
  224. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.js +12 -0
  225. package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.js.map +1 -0
  226. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +47 -0
  227. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -0
  228. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +22 -0
  229. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -0
  230. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts +33 -0
  231. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -0
  232. package/dist/contracts/release_cover_art/deps/per_track/per_track.js +32 -0
  233. package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -0
  234. package/dist/contracts/release_cover_art/release_cover_art.d.ts +300 -0
  235. package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -0
  236. package/dist/contracts/release_cover_art/release_cover_art.js +168 -0
  237. package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -0
  238. package/dist/contracts/release_credits/deps/credit/credit.d.ts +24 -0
  239. package/dist/contracts/release_credits/deps/credit/credit.d.ts.map +1 -0
  240. package/dist/contracts/release_credits/deps/credit/credit.js +23 -0
  241. package/dist/contracts/release_credits/deps/credit/credit.js.map +1 -0
  242. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts +37 -0
  243. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -0
  244. package/dist/contracts/release_credits/deps/sui/vec_map.js +28 -0
  245. package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -0
  246. package/dist/contracts/release_credits/release_credits.d.ts +142 -0
  247. package/dist/contracts/release_credits/release_credits.d.ts.map +1 -0
  248. package/dist/contracts/release_credits/release_credits.js +108 -0
  249. package/dist/contracts/release_credits/release_credits.js.map +1 -0
  250. package/dist/contracts/release_credits/release_party_role.d.ts +58 -0
  251. package/dist/contracts/release_credits/release_party_role.d.ts.map +1 -0
  252. package/dist/contracts/release_credits/release_party_role.js +66 -0
  253. package/dist/contracts/release_credits/release_party_role.js.map +1 -0
  254. package/dist/contracts/release_description/release_description.d.ts +112 -0
  255. package/dist/contracts/release_description/release_description.d.ts.map +1 -0
  256. package/dist/contracts/release_description/release_description.js +123 -0
  257. package/dist/contracts/release_description/release_description.js.map +1 -0
  258. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +643 -0
  259. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -0
  260. package/dist/contracts/release_dsp_link/release_dsp_link.js +555 -0
  261. package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -0
  262. package/dist/contracts/release_genre/release_genre.d.ts +145 -0
  263. package/dist/contracts/release_genre/release_genre.d.ts.map +1 -0
  264. package/dist/contracts/release_genre/release_genre.js +154 -0
  265. package/dist/contracts/release_genre/release_genre.js.map +1 -0
  266. package/dist/contracts/release_kind/release_kind.d.ts +98 -0
  267. package/dist/contracts/release_kind/release_kind.d.ts.map +1 -0
  268. package/dist/contracts/release_kind/release_kind.js +109 -0
  269. package/dist/contracts/release_kind/release_kind.js.map +1 -0
  270. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts +91 -0
  271. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts.map +1 -0
  272. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js +92 -0
  273. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -0
  274. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts +73 -0
  275. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts.map +1 -0
  276. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js +80 -0
  277. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js.map +1 -0
  278. package/dist/contracts/release_revenue_distributor_plugin/witness.d.ts +6 -0
  279. package/dist/contracts/release_revenue_distributor_plugin/witness.d.ts.map +1 -0
  280. package/dist/contracts/release_revenue_distributor_plugin/witness.js +8 -0
  281. package/dist/contracts/release_revenue_distributor_plugin/witness.js.map +1 -0
  282. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +67 -0
  283. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts.map +1 -0
  284. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js +50 -0
  285. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js.map +1 -0
  286. package/dist/contracts/routed_stake/deps/std/type_name.d.ts +18 -0
  287. package/dist/contracts/routed_stake/deps/std/type_name.d.ts.map +1 -0
  288. package/dist/contracts/routed_stake/deps/std/type_name.js +20 -0
  289. package/dist/contracts/routed_stake/deps/std/type_name.js.map +1 -0
  290. package/dist/contracts/routed_stake/deps/sui/balance.d.ts +13 -0
  291. package/dist/contracts/routed_stake/deps/sui/balance.d.ts.map +1 -0
  292. package/dist/contracts/routed_stake/deps/sui/balance.js +15 -0
  293. package/dist/contracts/routed_stake/deps/sui/balance.js.map +1 -0
  294. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts +37 -0
  295. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts.map +1 -0
  296. package/dist/contracts/routed_stake/deps/sui/vec_map.js +28 -0
  297. package/dist/contracts/routed_stake/deps/sui/vec_map.js.map +1 -0
  298. package/dist/contracts/routed_stake/routed_stake.d.ts +347 -0
  299. package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -0
  300. package/dist/contracts/routed_stake/routed_stake.js +302 -0
  301. package/dist/contracts/routed_stake/routed_stake.js.map +1 -0
  302. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +18 -0
  303. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -0
  304. package/dist/contracts/royalty_pool/deps/std/type_name.js +20 -0
  305. package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -0
  306. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +13 -0
  307. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -0
  308. package/dist/contracts/royalty_pool/deps/sui/balance.js +15 -0
  309. package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -0
  310. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts +37 -0
  311. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -0
  312. package/dist/contracts/royalty_pool/deps/sui/vec_map.js +28 -0
  313. package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -0
  314. package/dist/contracts/royalty_pool/pool.d.ts +414 -0
  315. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -0
  316. package/dist/contracts/royalty_pool/pool.js +409 -0
  317. package/dist/contracts/royalty_pool/pool.js.map +1 -0
  318. package/dist/contracts/royalty_pool/stake.d.ts +202 -0
  319. package/dist/contracts/royalty_pool/stake.d.ts.map +1 -0
  320. package/dist/contracts/royalty_pool/stake.js +196 -0
  321. package/dist/contracts/royalty_pool/stake.js.map +1 -0
  322. package/dist/contracts/utils/index.d.ts +104 -0
  323. package/dist/contracts/utils/index.d.ts.map +1 -0
  324. package/dist/contracts/utils/index.js +272 -0
  325. package/dist/contracts/utils/index.js.map +1 -0
  326. package/dist/contracts/vault/deps/sui/bag.d.ts +35 -0
  327. package/dist/contracts/vault/deps/sui/bag.d.ts.map +1 -0
  328. package/dist/contracts/vault/deps/sui/bag.js +37 -0
  329. package/dist/contracts/vault/deps/sui/bag.js.map +1 -0
  330. package/dist/contracts/vault/deps/sui/borrow.d.ts +20 -0
  331. package/dist/contracts/vault/deps/sui/borrow.d.ts.map +1 -0
  332. package/dist/contracts/vault/deps/sui/borrow.js +21 -0
  333. package/dist/contracts/vault/deps/sui/borrow.js.map +1 -0
  334. package/dist/contracts/vault/vault.d.ts +316 -0
  335. package/dist/contracts/vault/vault.d.ts.map +1 -0
  336. package/dist/contracts/vault/vault.js +308 -0
  337. package/dist/contracts/vault/vault.js.map +1 -0
  338. package/dist/contracts.d.ts +57 -33
  339. package/dist/contracts.d.ts.map +1 -1
  340. package/dist/contracts.js +63 -41
  341. package/dist/contracts.js.map +1 -1
  342. package/dist/cover.js +2 -2
  343. package/dist/cover.js.map +1 -1
  344. package/dist/credits.js +6 -6
  345. package/dist/credits.js.map +1 -1
  346. package/dist/deployments.d.ts +104 -64
  347. package/dist/deployments.d.ts.map +1 -1
  348. package/dist/deployments.js +170 -36
  349. package/dist/deployments.js.map +1 -1
  350. package/dist/events.d.ts +1045 -0
  351. package/dist/events.d.ts.map +1 -0
  352. package/dist/events.js +116 -0
  353. package/dist/events.js.map +1 -0
  354. package/dist/execute.d.ts +2 -2
  355. package/dist/execute.d.ts.map +1 -1
  356. package/dist/execute.js +2 -2
  357. package/dist/execute.js.map +1 -1
  358. package/dist/genre.d.ts +124 -0
  359. package/dist/genre.d.ts.map +1 -0
  360. package/dist/genre.js +238 -0
  361. package/dist/genre.js.map +1 -0
  362. package/dist/index.d.ts +4 -0
  363. package/dist/index.d.ts.map +1 -1
  364. package/dist/index.js +9 -1
  365. package/dist/index.js.map +1 -1
  366. package/dist/internal.js +2 -2
  367. package/dist/internal.js.map +1 -1
  368. package/dist/packages.d.ts +4185 -0
  369. package/dist/packages.d.ts.map +1 -0
  370. package/dist/packages.js +190 -0
  371. package/dist/packages.js.map +1 -0
  372. package/dist/party/client.d.ts +324 -0
  373. package/dist/party/client.d.ts.map +1 -0
  374. package/dist/party/client.js +214 -0
  375. package/dist/party/client.js.map +1 -0
  376. package/dist/party/extensions/ctas.d.ts +19 -0
  377. package/dist/party/extensions/ctas.d.ts.map +1 -0
  378. package/dist/party/extensions/ctas.js +25 -0
  379. package/dist/party/extensions/ctas.js.map +1 -0
  380. package/dist/party/extensions/genres.d.ts +27 -0
  381. package/dist/party/extensions/genres.d.ts.map +1 -0
  382. package/dist/party/extensions/genres.js +31 -0
  383. package/dist/party/extensions/genres.js.map +1 -0
  384. package/dist/party/extensions/links.d.ts +65 -0
  385. package/dist/party/extensions/links.d.ts.map +1 -0
  386. package/dist/party/extensions/links.js +117 -0
  387. package/dist/party/extensions/links.js.map +1 -0
  388. package/dist/party/extensions/media.d.ts +36 -0
  389. package/dist/party/extensions/media.d.ts.map +1 -0
  390. package/dist/party/extensions/media.js +45 -0
  391. package/dist/party/extensions/media.js.map +1 -0
  392. package/dist/party/extensions/profile.d.ts +24 -0
  393. package/dist/party/extensions/profile.d.ts.map +1 -0
  394. package/dist/party/extensions/profile.js +48 -0
  395. package/dist/party/extensions/profile.js.map +1 -0
  396. package/dist/party/extensions/roles.d.ts +37 -0
  397. package/dist/party/extensions/roles.d.ts.map +1 -0
  398. package/dist/party/extensions/roles.js +46 -0
  399. package/dist/party/extensions/roles.js.map +1 -0
  400. package/dist/party/extensions/tags.d.ts +25 -0
  401. package/dist/party/extensions/tags.d.ts.map +1 -0
  402. package/dist/party/extensions/tags.js +25 -0
  403. package/dist/party/extensions/tags.js.map +1 -0
  404. package/dist/party/index.d.ts +12 -0
  405. package/dist/party/index.d.ts.map +1 -0
  406. package/dist/party/index.js +18 -0
  407. package/dist/party/index.js.map +1 -0
  408. package/dist/party/internal.d.ts +14 -0
  409. package/dist/party/internal.d.ts.map +1 -0
  410. package/dist/party/internal.js +89 -0
  411. package/dist/party/internal.js.map +1 -0
  412. package/dist/party/queries.d.ts +17 -0
  413. package/dist/party/queries.d.ts.map +1 -0
  414. package/dist/party/queries.js +118 -0
  415. package/dist/party/queries.js.map +1 -0
  416. package/dist/party/types.d.ts +43 -0
  417. package/dist/party/types.d.ts.map +1 -0
  418. package/dist/party/types.js +4 -0
  419. package/dist/party/types.js.map +1 -0
  420. package/dist/pressing.js +3 -3
  421. package/dist/pressing.js.map +1 -1
  422. package/dist/publication.d.ts +4 -8
  423. package/dist/publication.d.ts.map +1 -1
  424. package/dist/publication.js +53 -40
  425. package/dist/publication.js.map +1 -1
  426. package/dist/queries.d.ts +1 -1
  427. package/dist/queries.d.ts.map +1 -1
  428. package/dist/queries.js +2 -2
  429. package/dist/queries.js.map +1 -1
  430. package/dist/read/artist.js +3 -3
  431. package/dist/read/artist.js.map +1 -1
  432. package/dist/read/catalog.d.ts +1 -1
  433. package/dist/read/catalog.d.ts.map +1 -1
  434. package/dist/read/catalog.js +3 -3
  435. package/dist/read/catalog.js.map +1 -1
  436. package/dist/read/client.d.ts +6 -3
  437. package/dist/read/client.d.ts.map +1 -1
  438. package/dist/read/client.js +5 -1
  439. package/dist/read/client.js.map +1 -1
  440. package/dist/read/config.d.ts +7 -2
  441. package/dist/read/config.d.ts.map +1 -1
  442. package/dist/read/config.js +2 -0
  443. package/dist/read/config.js.map +1 -1
  444. package/dist/read/index.js +1 -1
  445. package/dist/read/index.js.map +1 -1
  446. package/dist/read/receipts.js +4 -4
  447. package/dist/read/receipts.js.map +1 -1
  448. package/dist/read/types.d.ts +1 -1
  449. package/dist/read/types.d.ts.map +1 -1
  450. package/dist/read/wallet.d.ts +1 -1
  451. package/dist/read/wallet.d.ts.map +1 -1
  452. package/dist/read/wallet.js +15 -14
  453. package/dist/read/wallet.js.map +1 -1
  454. package/dist/read/works.d.ts +1 -1
  455. package/dist/read/works.d.ts.map +1 -1
  456. package/dist/read/works.js +1 -1
  457. package/dist/read/works.js.map +1 -1
  458. package/dist/recording-extensions.js +7 -7
  459. package/dist/recording-extensions.js.map +1 -1
  460. package/dist/release-extensions.d.ts +0 -18
  461. package/dist/release-extensions.d.ts.map +1 -1
  462. package/dist/release-extensions.js +4 -49
  463. package/dist/release-extensions.js.map +1 -1
  464. package/dist/release-graph.js +2 -2
  465. package/dist/release-graph.js.map +1 -1
  466. package/dist/royalty.d.ts +87 -0
  467. package/dist/royalty.d.ts.map +1 -0
  468. package/dist/royalty.js +78 -0
  469. package/dist/royalty.js.map +1 -0
  470. package/dist/share.js +1 -1
  471. package/dist/share.js.map +1 -1
  472. package/dist/transactions.d.ts +2 -2
  473. package/dist/transactions.d.ts.map +1 -1
  474. package/dist/transactions.js +6 -6
  475. package/dist/transactions.js.map +1 -1
  476. package/dist/vault.js +6 -6
  477. package/dist/vault.js.map +1 -1
  478. package/package.json +24 -10
  479. package/src/catalog.ts +2 -2
  480. package/src/client.ts +103 -44
  481. package/src/contracts/composition_credits/composition_credits.ts +170 -0
  482. package/src/contracts/composition_credits/composition_party_role.ts +190 -0
  483. package/src/contracts/composition_credits/deps/credit/credit.ts +28 -0
  484. package/src/contracts/composition_credits/deps/sui/vec_map.ts +34 -0
  485. package/src/contracts/composition_routed_stake/composition_routed_stake.ts +239 -0
  486. package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +154 -0
  487. package/src/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts +165 -0
  488. package/src/contracts/composition_royalty_pool_plugin/witness.ts +8 -0
  489. package/src/contracts/cover_art/cover_art.ts +98 -0
  490. package/src/contracts/cover_art/deps/ori/confidentiality.ts +24 -0
  491. package/src/contracts/cover_art/deps/ori/data.ts +12 -0
  492. package/src/contracts/genre/genre.ts +121 -0
  493. package/src/contracts/party_cta/party_cta.ts +213 -0
  494. package/src/contracts/party_genre/party_genre.ts +200 -0
  495. package/src/contracts/party_media/party_media.ts +142 -0
  496. package/src/contracts/party_music/party_music.ts +406 -0
  497. package/src/contracts/party_platform_link/party_platform_link.ts +149 -0
  498. package/src/contracts/party_pro_link/party_pro_link.ts +454 -0
  499. package/src/contracts/party_profile/deps/country_code/country_code.ts +20 -0
  500. package/src/contracts/party_profile/deps/language_code/language_code.ts +8 -0
  501. package/src/contracts/party_profile/party_profile.ts +240 -0
  502. package/src/contracts/party_roles/party_roles.ts +364 -0
  503. package/src/contracts/party_social/party_social.ts +503 -0
  504. package/src/contracts/party_tags/party_tags.ts +199 -0
  505. package/src/contracts/party_wallet/party_wallet.ts +174 -0
  506. package/src/contracts/record/deps/std/type_name.ts +23 -0
  507. package/src/contracts/record/deps/sui/vec_set.ts +22 -0
  508. package/src/contracts/record/pressing.ts +523 -0
  509. package/src/contracts/record/record.ts +339 -0
  510. package/src/contracts/record_shop/deps/std/type_name.ts +23 -0
  511. package/src/contracts/record_shop/listing.ts +603 -0
  512. package/src/contracts/record_shop/witness.ts +12 -0
  513. package/src/contracts/recording_advisory/recording_advisory.ts +316 -0
  514. package/src/contracts/recording_credits/deps/credit/credit.ts +28 -0
  515. package/src/contracts/recording_credits/deps/sui/vec_map.ts +34 -0
  516. package/src/contracts/recording_credits/deps/sui/vec_set.ts +22 -0
  517. package/src/contracts/recording_credits/recording_credits.ts +459 -0
  518. package/src/contracts/recording_credits/recording_party_role.ts +1042 -0
  519. package/src/contracts/recording_engine_session/deps/ori/confidentiality.ts +24 -0
  520. package/src/contracts/recording_engine_session/deps/ori/data.ts +12 -0
  521. package/src/contracts/recording_engine_session/recording_engine_session.ts +335 -0
  522. package/src/contracts/recording_genre/recording_genre.ts +235 -0
  523. package/src/contracts/recording_language/deps/language_code/language_code.ts +8 -0
  524. package/src/contracts/recording_language/recording_language.ts +238 -0
  525. package/src/contracts/recording_master_reference/deps/ori/confidentiality.ts +24 -0
  526. package/src/contracts/recording_master_reference/deps/ori/data.ts +12 -0
  527. package/src/contracts/recording_master_reference/recording_master_reference.ts +180 -0
  528. package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +157 -0
  529. package/src/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts +167 -0
  530. package/src/contracts/recording_royalty_pool_plugin/witness.ts +8 -0
  531. package/src/contracts/recording_streaming_transcode/deps/ori/data.ts +10 -0
  532. package/src/contracts/recording_streaming_transcode/recording_streaming_transcode.ts +203 -0
  533. package/src/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.ts +24 -0
  534. package/src/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.ts +12 -0
  535. package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +25 -0
  536. package/src/contracts/release_cover_art/deps/per_track/per_track.ts +37 -0
  537. package/src/contracts/release_cover_art/release_cover_art.ts +252 -0
  538. package/src/contracts/release_credits/deps/credit/credit.ts +28 -0
  539. package/src/contracts/release_credits/deps/sui/vec_map.ts +34 -0
  540. package/src/contracts/release_credits/release_credits.ts +157 -0
  541. package/src/contracts/release_credits/release_party_role.ts +87 -0
  542. package/src/contracts/release_description/release_description.ts +168 -0
  543. package/src/contracts/release_dsp_link/release_dsp_link.ts +813 -0
  544. package/src/contracts/release_genre/release_genre.ts +203 -0
  545. package/src/contracts/release_kind/release_kind.ts +154 -0
  546. package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +141 -0
  547. package/src/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts +143 -0
  548. package/src/contracts/release_revenue_distributor_plugin/witness.ts +8 -0
  549. package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +53 -0
  550. package/src/contracts/routed_stake/deps/std/type_name.ts +23 -0
  551. package/src/contracts/routed_stake/deps/sui/balance.ts +18 -0
  552. package/src/contracts/routed_stake/deps/sui/vec_map.ts +34 -0
  553. package/src/contracts/routed_stake/routed_stake.ts +487 -0
  554. package/src/contracts/royalty_pool/deps/std/type_name.ts +23 -0
  555. package/src/contracts/royalty_pool/deps/sui/balance.ts +18 -0
  556. package/src/contracts/royalty_pool/deps/sui/vec_map.ts +34 -0
  557. package/src/contracts/royalty_pool/pool.ts +634 -0
  558. package/src/contracts/royalty_pool/stake.ts +305 -0
  559. package/src/contracts/utils/index.ts +428 -0
  560. package/src/contracts/vault/deps/sui/bag.ts +40 -0
  561. package/src/contracts/vault/deps/sui/borrow.ts +26 -0
  562. package/src/contracts/vault/vault.ts +509 -0
  563. package/src/contracts.ts +86 -39
  564. package/src/cover.ts +2 -2
  565. package/src/credits.ts +6 -6
  566. package/src/deployments.ts +253 -39
  567. package/src/events.ts +121 -0
  568. package/src/execute.ts +3 -3
  569. package/src/genre.ts +369 -0
  570. package/src/index.ts +10 -1
  571. package/src/internal.ts +2 -2
  572. package/src/packages.ts +243 -0
  573. package/src/party/client.ts +268 -0
  574. package/src/party/extensions/ctas.ts +46 -0
  575. package/src/party/extensions/genres.ts +62 -0
  576. package/src/party/extensions/links.ts +185 -0
  577. package/src/party/extensions/media.ts +72 -0
  578. package/src/party/extensions/profile.ts +81 -0
  579. package/src/party/extensions/roles.ts +94 -0
  580. package/src/party/extensions/tags.ts +54 -0
  581. package/src/party/index.ts +40 -0
  582. package/src/party/internal.ts +102 -0
  583. package/src/party/queries.ts +163 -0
  584. package/src/party/types.ts +84 -0
  585. package/src/pressing.ts +5 -5
  586. package/src/publication.ts +58 -45
  587. package/src/queries.ts +2 -2
  588. package/src/read/artist.ts +3 -3
  589. package/src/read/catalog.ts +4 -4
  590. package/src/read/client.ts +9 -3
  591. package/src/read/config.ts +9 -2
  592. package/src/read/index.ts +1 -1
  593. package/src/read/receipts.ts +4 -4
  594. package/src/read/types.ts +1 -1
  595. package/src/read/wallet.ts +15 -14
  596. package/src/read/works.ts +1 -1
  597. package/src/recording-extensions.ts +7 -7
  598. package/src/release-extensions.ts +4 -75
  599. package/src/release-graph.ts +2 -2
  600. package/src/royalty.ts +167 -0
  601. package/src/share.ts +1 -1
  602. package/src/transactions.ts +6 -6
  603. package/src/vault.ts +6 -6
package/src/genre.ts ADDED
@@ -0,0 +1,369 @@
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 type { ClientWithCoreApi } from "@mysten/sui/client";
44
+ import { bcs } from "@mysten/sui/bcs";
45
+ import { deriveDynamicFieldID, deriveObjectID, normalizeSuiObjectId } from "@mysten/sui/utils";
46
+ import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
47
+ import type { TxThunk } from "./transactions.ts";
48
+ import { directAdminCap, invokeWithAdminCap, type AdminCapAuthority, type ObjectInput } from "./vault.ts";
49
+ import type { ReleaseExtensionTarget } from "./release-extensions.ts";
50
+ import type { RecordingExtensionTarget } from "./recording-extensions.ts";
51
+ import * as genre from "./contracts/genre/genre.ts";
52
+ import * as releaseGenre from "./contracts/release_genre/release_genre.ts";
53
+ import * as recordingGenre from "./contracts/recording_genre/recording_genre.ts";
54
+
55
+ // ── Vocabulary helpers ───────────────────────────────────────────────────────
56
+
57
+ const GENRE_NAME_RE = /^[A-Z]+(?:_[A-Z]+)*$/;
58
+
59
+ /** Validate the canonical on-chain genre vocabulary spelling. */
60
+ export function assertCanonicalGenreName(name: string): void {
61
+ const bytes = new TextEncoder().encode(name).length;
62
+ if (bytes === 0 || bytes > 64 || !GENRE_NAME_RE.test(name)) {
63
+ throw new Error(
64
+ `Genre name must be 1-64 bytes of uppercase A-Z and underscores; got ${JSON.stringify(name)}`,
65
+ );
66
+ }
67
+ }
68
+
69
+ /** Derive the immutable Genre object address for a canonical vocabulary name.
70
+ * `genrePackageId` must be the genre package's defining (original publish)
71
+ * address — the on-chain derivation hashes type names with defining IDs. */
72
+ export function deriveGenreAddress(
73
+ genreRegistryId: string,
74
+ genrePackageId: string,
75
+ canonicalName: string,
76
+ ): string {
77
+ assertCanonicalGenreName(canonicalName);
78
+ return deriveObjectID(
79
+ genreRegistryId,
80
+ `${genrePackageId}::genre::GenreKey`,
81
+ genre.GenreKey.serialize([canonicalName]).toBytes(),
82
+ );
83
+ }
84
+
85
+ // ── Shared validation ────────────────────────────────────────────────────────
86
+
87
+ /** The maximum number of genres `release_genre` / `recording_genre` will accept. */
88
+ export const MAX_GENRES = 6;
89
+
90
+ /**
91
+ * Fail closed before signing rather than let a bad list abort on-chain as
92
+ * `EDuplicateGenre` (40) or `EMaxGenres` (41). Mirrors how `setReleaseKind`
93
+ * validates its input up front and returns a thunk only once it is well-formed.
94
+ */
95
+ function validateGenreIds(op: string, genreIds: readonly string[]): string[] {
96
+ if (genreIds.length === 0) {
97
+ throw new Error(`${op}: genreIds must not be empty`);
98
+ }
99
+ if (genreIds.length > MAX_GENRES) {
100
+ throw new Error(`${op}: at most ${MAX_GENRES} genres (got ${genreIds.length})`);
101
+ }
102
+ const seen = new Set<string>();
103
+ for (const id of genreIds) {
104
+ const normalized = normalizeSuiObjectId(id);
105
+ if (seen.has(normalized)) {
106
+ throw new Error(`${op}: duplicate genre id ${id}`);
107
+ }
108
+ seen.add(normalized);
109
+ }
110
+ return [...genreIds];
111
+ }
112
+
113
+ // ── Release setters ──────────────────────────────────────────────────────────
114
+
115
+ function releaseAuthorityOf(p: ReleaseExtensionTarget): AdminCapAuthority {
116
+ if (p.authority !== undefined) return p.authority;
117
+ if (p.releaseAdminCapId !== undefined) return directAdminCap(p.releaseAdminCapId);
118
+ throw new Error("release authority is required");
119
+ }
120
+
121
+ function object(tx: Transaction, value: ObjectInput): TransactionObjectArgument {
122
+ return typeof value === "string" ? tx.object(value) : value;
123
+ }
124
+
125
+ export type SetReleaseGenresParams = ReleaseExtensionTarget & {
126
+ /** Ordered `genre::Genre` object ids; index 0 becomes the primary. 1-6 entries, no duplicates. */
127
+ genreIds: readonly string[];
128
+ releaseGenrePackageId: string;
129
+ };
130
+
131
+ /**
132
+ * Attach the complete, ordered list of genres to a Release. Emits
133
+ * `release_genre::clear_genres` first, then exactly one
134
+ * `release_genre::add_genre` per id in array order. `clear_genres` is a no-op
135
+ * when nothing is attached, so this is safe to run against a fresh release
136
+ * and safe to re-run against one that already has genres assigned.
137
+ */
138
+ export function setReleaseGenres(p: SetReleaseGenresParams): TxThunk {
139
+ const genreIds = validateGenreIds("setReleaseGenres", p.genreIds);
140
+ return (tx) => {
141
+ const authority = releaseAuthorityOf(p);
142
+ invokeWithAdminCap(tx, authority, {
143
+ target: `${p.releaseGenrePackageId}::release_genre::clear_genres`,
144
+ arguments: [object(tx, p.releaseId)],
145
+ adminCapIndex: 1,
146
+ });
147
+ for (const genreId of genreIds) {
148
+ invokeWithAdminCap(tx, authority, {
149
+ target: `${p.releaseGenrePackageId}::release_genre::add_genre`,
150
+ arguments: [object(tx, p.releaseId), tx.object(genreId)],
151
+ adminCapIndex: 1,
152
+ });
153
+ }
154
+ };
155
+ }
156
+
157
+ export type ClearReleaseGenresParams = ReleaseExtensionTarget & {
158
+ releaseGenrePackageId: string;
159
+ };
160
+
161
+ /** Remove a Release's entire genre list. A no-op on-chain if nothing is attached. */
162
+ export function clearReleaseGenres(p: ClearReleaseGenresParams): TxThunk {
163
+ return (tx) => {
164
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
165
+ target: `${p.releaseGenrePackageId}::release_genre::clear_genres`,
166
+ arguments: [object(tx, p.releaseId)],
167
+ adminCapIndex: 1,
168
+ });
169
+ };
170
+ }
171
+
172
+ export type ReleaseGenreMutationParams = ReleaseExtensionTarget & {
173
+ genreId: string;
174
+ releaseGenrePackageId: string;
175
+ };
176
+
177
+ /** Append one genre to a Release's list. */
178
+ export function addReleaseGenre(p: ReleaseGenreMutationParams): TxThunk {
179
+ return (tx) => {
180
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
181
+ target: `${p.releaseGenrePackageId}::release_genre::add_genre`,
182
+ arguments: [object(tx, p.releaseId), tx.object(p.genreId)],
183
+ adminCapIndex: 1,
184
+ });
185
+ };
186
+ }
187
+
188
+ /** Remove one genre from a Release by id. */
189
+ export function removeReleaseGenre(p: ReleaseGenreMutationParams): TxThunk {
190
+ return (tx) => {
191
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
192
+ target: `${p.releaseGenrePackageId}::release_genre::remove_genre`,
193
+ arguments: [object(tx, p.releaseId), tx.pure.id(p.genreId)],
194
+ adminCapIndex: 1,
195
+ });
196
+ };
197
+ }
198
+
199
+ // ── Recording setters ────────────────────────────────────────────────────────
200
+
201
+ export interface SetRecordingGenresParams extends RecordingExtensionTarget {
202
+ readonly recordingGenrePackageId: string;
203
+ /** Ordered `genre::Genre` object ids; index 0 becomes the primary. 1-6 entries, no duplicates. */
204
+ readonly genreIds: readonly string[];
205
+ }
206
+
207
+ /**
208
+ * Attach the complete, ordered list of genres to a Recording. Emits
209
+ * `recording_genre::clear_genres` first, then exactly one
210
+ * `recording_genre::add_genre` per id in array order. `clear_genres` is a
211
+ * no-op when nothing is attached, so this is safe to run against a fresh
212
+ * recording and safe to re-run against one that already has genres assigned.
213
+ */
214
+ export function setRecordingGenres(p: SetRecordingGenresParams): TxThunk {
215
+ const genreIds = validateGenreIds("setRecordingGenres", p.genreIds);
216
+ return (tx) => {
217
+ invokeWithAdminCap(tx, p.authority, {
218
+ target: `${p.recordingGenrePackageId}::recording_genre::clear_genres`,
219
+ typeArguments: [p.recordingShareType, p.compositionShareType],
220
+ arguments: [object(tx, p.recordingId)],
221
+ adminCapIndex: 1,
222
+ });
223
+ for (const genreId of genreIds) {
224
+ invokeWithAdminCap(tx, p.authority, {
225
+ target: `${p.recordingGenrePackageId}::recording_genre::add_genre`,
226
+ typeArguments: [p.recordingShareType, p.compositionShareType],
227
+ arguments: [object(tx, p.recordingId), tx.object(genreId)],
228
+ adminCapIndex: 1,
229
+ });
230
+ }
231
+ };
232
+ }
233
+
234
+ export interface ClearRecordingGenresParams extends RecordingExtensionTarget {
235
+ readonly recordingGenrePackageId: string;
236
+ }
237
+
238
+ /** Remove a Recording's entire genre list. A no-op on-chain if nothing is attached. */
239
+ export function clearRecordingGenres(p: ClearRecordingGenresParams): TxThunk {
240
+ return (tx) => {
241
+ invokeWithAdminCap(tx, p.authority, {
242
+ target: `${p.recordingGenrePackageId}::recording_genre::clear_genres`,
243
+ typeArguments: [p.recordingShareType, p.compositionShareType],
244
+ arguments: [object(tx, p.recordingId)],
245
+ adminCapIndex: 1,
246
+ });
247
+ };
248
+ }
249
+
250
+ export interface RecordingGenreMutationParams extends RecordingExtensionTarget {
251
+ readonly recordingGenrePackageId: string;
252
+ readonly genreId: string;
253
+ }
254
+
255
+ /** Append one genre to a Recording's list. */
256
+ export function addRecordingGenre(p: RecordingGenreMutationParams): TxThunk {
257
+ return (tx) => {
258
+ invokeWithAdminCap(tx, p.authority, {
259
+ target: `${p.recordingGenrePackageId}::recording_genre::add_genre`,
260
+ typeArguments: [p.recordingShareType, p.compositionShareType],
261
+ arguments: [object(tx, p.recordingId), tx.object(p.genreId)],
262
+ adminCapIndex: 1,
263
+ });
264
+ };
265
+ }
266
+
267
+ /** Remove one genre from a Recording by id. */
268
+ export function removeRecordingGenre(p: RecordingGenreMutationParams): TxThunk {
269
+ return (tx) => {
270
+ invokeWithAdminCap(tx, p.authority, {
271
+ target: `${p.recordingGenrePackageId}::recording_genre::remove_genre`,
272
+ typeArguments: [p.recordingShareType, p.compositionShareType],
273
+ arguments: [object(tx, p.recordingId), tx.pure.id(p.genreId)],
274
+ adminCapIndex: 1,
275
+ });
276
+ };
277
+ }
278
+
279
+ // ── Reads ────────────────────────────────────────────────────────────────────
280
+
281
+ // Both packages store the same shape: a dynamic field on the target's UID under
282
+ // an empty `ExtensionKey()` (Move's implicit `dummy_field: bool` → one `false`
283
+ // byte), value `vector<ID>`, ordered with the primary first.
284
+ const ReleaseGenresField = bcs.struct("Field", {
285
+ id: bcs.Address,
286
+ name: releaseGenre.ExtensionKey,
287
+ value: bcs.vector(bcs.Address),
288
+ });
289
+ const RELEASE_GENRES_KEY_BYTES = releaseGenre.ExtensionKey.serialize([false]).toBytes();
290
+
291
+ const RecordingGenresField = bcs.struct("Field", {
292
+ id: bcs.Address,
293
+ name: recordingGenre.ExtensionKey,
294
+ value: bcs.vector(bcs.Address),
295
+ });
296
+ const RECORDING_GENRES_KEY_BYTES = recordingGenre.ExtensionKey.serialize([false]).toBytes();
297
+
298
+ /** Parse a `release_genre` dynamic field's content into its ordered genre ids. */
299
+ export function parseReleaseGenresContent(content: Uint8Array): string[] {
300
+ return ReleaseGenresField.parse(content).value;
301
+ }
302
+
303
+ /** Parse a `recording_genre` dynamic field's content into its ordered genre ids. */
304
+ export function parseRecordingGenresContent(content: Uint8Array): string[] {
305
+ return RecordingGenresField.parse(content).value;
306
+ }
307
+
308
+ /** Deterministic dynamic-field id for a Release's genre list. */
309
+ export function releaseGenresFieldId(
310
+ releaseId: string,
311
+ releaseGenrePackageId: string,
312
+ ): string {
313
+ return deriveDynamicFieldID(
314
+ releaseId,
315
+ `${releaseGenrePackageId}::release_genre::ExtensionKey`,
316
+ RELEASE_GENRES_KEY_BYTES,
317
+ );
318
+ }
319
+
320
+ /** Deterministic dynamic-field id for a Recording's genre list. */
321
+ export function recordingGenresFieldId(
322
+ recordingId: string,
323
+ recordingGenrePackageId: string,
324
+ ): string {
325
+ return deriveDynamicFieldID(
326
+ recordingId,
327
+ `${recordingGenrePackageId}::recording_genre::ExtensionKey`,
328
+ RECORDING_GENRES_KEY_BYTES,
329
+ );
330
+ }
331
+
332
+ /**
333
+ * Read a Release's genre ids in order (primary first), or `[]` when no genres
334
+ * are attached. The primary is `list[0]`; there is no separate primary reader
335
+ * because the Move `genres` view already returns `[]` for the absent case.
336
+ */
337
+ export async function getReleaseGenres(
338
+ client: ClientWithCoreApi,
339
+ releaseId: string,
340
+ releaseGenrePackageId: string,
341
+ ): Promise<string[]> {
342
+ const { objects } = await client.core.getObjects({
343
+ objectIds: [releaseGenresFieldId(releaseId, releaseGenrePackageId)],
344
+ include: { content: true },
345
+ });
346
+ const object = objects[0];
347
+ if (!object || object instanceof Error || !object.content) return [];
348
+ return parseReleaseGenresContent(object.content);
349
+ }
350
+
351
+ /**
352
+ * Read a Recording's genre ids in order (primary first), or `[]` when no
353
+ * genres are attached. The primary is `list[0]`; there is no separate primary
354
+ * reader because the Move `genres` view already returns `[]` for the absent
355
+ * case.
356
+ */
357
+ export async function getRecordingGenres(
358
+ client: ClientWithCoreApi,
359
+ recordingId: string,
360
+ recordingGenrePackageId: string,
361
+ ): Promise<string[]> {
362
+ const { objects } = await client.core.getObjects({
363
+ objectIds: [recordingGenresFieldId(recordingId, recordingGenrePackageId)],
364
+ include: { content: true },
365
+ });
366
+ const object = objects[0];
367
+ if (!object || object instanceof Error || !object.content) return [];
368
+ return parseRecordingGenresContent(object.content);
369
+ }
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
+ }