@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
@@ -0,0 +1,280 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // Party EXTENSIONS bound to one `PartyExtensionsDeployment`, wrapping a
5
+ // `PartyosClient` for the Party core. Consumers reach this through
6
+ // `client.miso.party`. Every read returns `Effect<A, E>` (`R = never`) — the
7
+ // `SuiClient` service is provided once by `PartyosClient`/`MisoPlatformClient`
8
+ // and threaded through here, never re-provided per method.
9
+
10
+ import { Effect } from "effect";
11
+ import type { Option } from "effect";
12
+ import type { ClientWithCoreApi } from "@mysten/sui/client";
13
+ import { SuiClient, type BcsDecodeError, type ObjectNotFoundError, type ObjectTypeMismatchError, type SuiRpcError } from "@misofm/effect";
14
+ import type { Party, PartyosClient } from "@misofm/partyos";
15
+ import type { PartyExtensionsDeployment } from "../deployments.ts";
16
+ import * as queries from "./queries.ts";
17
+ import * as profileExt from "./extensions/profile.ts";
18
+ import * as mediaExt from "./extensions/media.ts";
19
+ import * as rolesExt from "./extensions/roles.ts";
20
+ import * as tagsExt from "./extensions/tags.ts";
21
+ import * as genresExt from "./extensions/genres.ts";
22
+ import * as ctasExt from "./extensions/ctas.ts";
23
+ import * as linksExt from "./extensions/links.ts";
24
+ import type { Cta, Media, PlatformKey, PlatformLink, Profile } from "./types.ts";
25
+ import * as profileMod from "../contracts/party_profile/party_profile.ts";
26
+ import * as mediaMod from "../contracts/party_media/party_media.ts";
27
+ import * as rolesMod from "../contracts/party_roles/party_roles.ts";
28
+ import * as tagsMod from "../contracts/party_tags/party_tags.ts";
29
+ import * as ctaMod from "../contracts/party_cta/party_cta.ts";
30
+ import * as genreMod from "../contracts/party_genre/party_genre.ts";
31
+ import * as platformLinkMod from "../contracts/party_platform_link/party_platform_link.ts";
32
+ import * as socialMod from "../contracts/party_social/party_social.ts";
33
+ import * as musicMod from "../contracts/party_music/party_music.ts";
34
+ import * as proLinkMod from "../contracts/party_pro_link/party_pro_link.ts";
35
+
36
+ type BoundMoveFunction<F> = F extends (options: infer Options) => infer Result
37
+ ? Options extends { package?: unknown }
38
+ ? (options: Omit<Options, "package">) => Result
39
+ : F
40
+ : F;
41
+ type BoundModule<M extends object, Removed extends PropertyKey> = {
42
+ [Key in Exclude<keyof M, Removed>]: BoundMoveFunction<M[Key]>;
43
+ };
44
+
45
+ /** Defaults generated calls to one package and removes reference-returning calls. */
46
+ function bindModulePackage<M extends object, K extends readonly (keyof M)[]>(
47
+ mod: M,
48
+ pkg: string,
49
+ unavailable: K = [] as unknown as K,
50
+ ): BoundModule<M, K[number]> {
51
+ const out: Record<string, unknown> = {};
52
+ for (const [key, value] of Object.entries({ ...mod })) {
53
+ if ((unavailable as readonly string[]).includes(key)) continue;
54
+ out[key] =
55
+ typeof value === "function"
56
+ ? (options: { package?: string }) => (value as (o: unknown) => unknown)({ package: pkg, ...options })
57
+ : value;
58
+ }
59
+ return out as BoundModule<M, K[number]>;
60
+ }
61
+
62
+ /**
63
+ * Package-bound Party client exposed at `client.miso.party`. Wraps a
64
+ * `PartyosClient` for the Party core (identity, admin caps, group membership)
65
+ * and adds the first-party extensions (profile, media, roles, tags, genres,
66
+ * CTAs, platform links) this package owns.
67
+ */
68
+ export class PartyPlatformClient {
69
+ #core: PartyosClient;
70
+ #layer: ReturnType<typeof SuiClient.layer>;
71
+ #profilePkg: string;
72
+ #countryCodePkg: string;
73
+ #languageCodePkg: string;
74
+ #mediaPkg: string;
75
+ #rolesPkg: string;
76
+ #tagsPkg: string;
77
+ #partyGenrePkg: string;
78
+ #ctaPkg: string;
79
+ #platformLinkPkg: string;
80
+ #socialPkg: string;
81
+ #musicPkg: string;
82
+ #proLinkPkg: string;
83
+
84
+ constructor(client: ClientWithCoreApi, core: PartyosClient, extensions: PartyExtensionsDeployment) {
85
+ this.#core = core;
86
+ this.#layer = SuiClient.layer(client);
87
+ this.#profilePkg = extensions.partyProfile;
88
+ this.#countryCodePkg = extensions.countryCode;
89
+ this.#languageCodePkg = extensions.languageCode;
90
+ this.#mediaPkg = extensions.partyMedia;
91
+ this.#rolesPkg = extensions.partyRoles;
92
+ this.#tagsPkg = extensions.partyTags;
93
+ this.#partyGenrePkg = extensions.partyGenre;
94
+ this.#ctaPkg = extensions.partyCta;
95
+ this.#platformLinkPkg = extensions.partyPlatformLink;
96
+ this.#socialPkg = extensions.partySocial;
97
+ this.#musicPkg = extensions.partyMusic;
98
+ this.#proLinkPkg = extensions.partyProLink;
99
+ }
100
+
101
+ /** The wrapped Party-core client (identity, admin caps, group membership). */
102
+ get core(): PartyosClient {
103
+ return this.#core;
104
+ }
105
+
106
+ /** Provides the bound `SuiClient` layer, dropping `R` to `never`. */
107
+ #provide<A, E>(effect: Effect.Effect<A, E, SuiClient>): Effect.Effect<A, E> {
108
+ return effect.pipe(Effect.provide(this.#layer));
109
+ }
110
+
111
+ // === Core (delegated to `PartyosClient`) ===
112
+
113
+ getPartyById(partyId: string): Effect.Effect<Party, ObjectNotFoundError | ObjectTypeMismatchError | BcsDecodeError | SuiRpcError> {
114
+ return this.#core.getPartyById(partyId);
115
+ }
116
+ getPartiesByIds(
117
+ partyIds: readonly string[],
118
+ ): Effect.Effect<Partial<Record<string, Party>>, ObjectTypeMismatchError | BcsDecodeError | SuiRpcError> {
119
+ return this.#core.getPartiesByIds(partyIds);
120
+ }
121
+ derivePartyAdminCapId(partyId: string): string {
122
+ return this.#core.derivePartyAdminCapId(partyId);
123
+ }
124
+ /** Group ids a party belongs to (member-side membership records). */
125
+ getMemberships(partyId: string): Effect.Effect<string[], SuiRpcError> {
126
+ return this.#core.getMemberships(partyId);
127
+ }
128
+ /** Member ids invited to a group but not yet accepted. */
129
+ getPendingInvites(groupId: string): Effect.Effect<string[], SuiRpcError> {
130
+ return this.#core.getPendingInvites(groupId);
131
+ }
132
+ /** Group ids that have invited this party but are awaiting its response. */
133
+ getPendingMemberships(partyId: string): Effect.Effect<string[], SuiRpcError> {
134
+ return this.#core.getPendingMemberships(partyId);
135
+ }
136
+ /** Whether a party is a member of a group. */
137
+ isMember(memberId: string, groupId: string): Effect.Effect<boolean, SuiRpcError> {
138
+ return this.#core.isMember(memberId, groupId);
139
+ }
140
+
141
+ // === Extension queries ===
142
+
143
+ getProfile(partyId: string): Effect.Effect<Option.Option<Profile>, BcsDecodeError | SuiRpcError> {
144
+ return this.#provide(queries.getProfile(partyId, this.#profilePkg));
145
+ }
146
+ getMedia(partyId: string): Effect.Effect<Option.Option<Media>, BcsDecodeError | SuiRpcError> {
147
+ return this.#provide(queries.getMedia(partyId, this.#mediaPkg));
148
+ }
149
+ /** The party's artist-type roles (display names). */
150
+ getRoles(partyId: string): Effect.Effect<string[], SuiRpcError> {
151
+ return this.#provide(queries.getRoles(partyId, this.#rolesPkg));
152
+ }
153
+ /** The party's free-form tags. */
154
+ getTags(partyId: string): Effect.Effect<string[], SuiRpcError> {
155
+ return this.#provide(queries.getTags(partyId, this.#tagsPkg));
156
+ }
157
+ /** The party's genre object ids. */
158
+ getGenres(partyId: string): Effect.Effect<string[], SuiRpcError> {
159
+ return this.#provide(queries.getGenres(partyId, this.#partyGenrePkg));
160
+ }
161
+ /** The party's ordered CTA list (position is priority). */
162
+ getCtas(partyId: string): Effect.Effect<Cta[], SuiRpcError> {
163
+ return this.#provide(queries.getCtas(partyId, this.#ctaPkg));
164
+ }
165
+ /** All external-platform links attached to the party (social, music, professional). */
166
+ getLinks(partyId: string): Effect.Effect<PlatformLink[], SuiRpcError> {
167
+ return this.#provide(queries.getLinks(partyId));
168
+ }
169
+
170
+ // === Transaction builders (thunks; package ids bound from the client) ===
171
+
172
+ get tx() {
173
+ const profilePkg = this.#profilePkg;
174
+ const cc = this.#countryCodePkg;
175
+ const lc = this.#languageCodePkg;
176
+ const mediaPkg = this.#mediaPkg;
177
+ const rolesPkg = this.#rolesPkg;
178
+ const tagsPkg = this.#tagsPkg;
179
+ const ctaPkg = this.#ctaPkg;
180
+ const partyGenrePkg = this.#partyGenrePkg;
181
+ const linkIds: linksExt.LinkPackageIds = {
182
+ partyPlatformLinkPackageId: this.#platformLinkPkg,
183
+ partySocialPackageId: this.#socialPkg,
184
+ partyMusicPackageId: this.#musicPkg,
185
+ partyProLinkPackageId: this.#proLinkPkg,
186
+ };
187
+ return {
188
+ // Party core builders — delegated straight from `PartyosClient`.
189
+ ...this.#core.tx,
190
+ setProfile: (
191
+ p: Omit<profileExt.SetProfileParams, "partyProfilePackageId" | "countryCodePackageId" | "languageCodePackageId">,
192
+ ) =>
193
+ profileExt.setProfile({
194
+ ...p,
195
+ partyProfilePackageId: profilePkg,
196
+ countryCodePackageId: cc,
197
+ languageCodePackageId: lc,
198
+ }),
199
+ clearProfile: (p: Omit<profileExt.ClearProfileParams, "partyProfilePackageId">) =>
200
+ profileExt.clearProfile({ ...p, partyProfilePackageId: profilePkg }),
201
+ setMedia: (p: Omit<mediaExt.SetMediaParams, "partyMediaPackageId">) =>
202
+ mediaExt.setMedia({ ...p, partyMediaPackageId: mediaPkg }),
203
+ clearMedia: (p: Omit<mediaExt.ClearMediaParams, "partyMediaPackageId">) =>
204
+ mediaExt.clearMedia({ ...p, partyMediaPackageId: mediaPkg }),
205
+ // Roles
206
+ addRole: (p: Omit<rolesExt.AddRoleParams, "partyRolesPackageId">) =>
207
+ rolesExt.addRole({ ...p, partyRolesPackageId: rolesPkg }),
208
+ removeRole: (p: Omit<rolesExt.RemoveRoleParams, "partyRolesPackageId">) =>
209
+ rolesExt.removeRole({ ...p, partyRolesPackageId: rolesPkg }),
210
+ clearRoles: (p: Omit<rolesExt.ClearRolesParams, "partyRolesPackageId">) =>
211
+ rolesExt.clearRoles({ ...p, partyRolesPackageId: rolesPkg }),
212
+ // Tags
213
+ addTag: (p: Omit<tagsExt.AddTagParams, "partyTagsPackageId">) =>
214
+ tagsExt.addTag({ ...p, partyTagsPackageId: tagsPkg }),
215
+ removeTag: (p: Omit<tagsExt.RemoveTagParams, "partyTagsPackageId">) =>
216
+ tagsExt.removeTag({ ...p, partyTagsPackageId: tagsPkg }),
217
+ clearTags: (p: Omit<tagsExt.ClearTagsParams, "partyTagsPackageId">) =>
218
+ tagsExt.clearTags({ ...p, partyTagsPackageId: tagsPkg }),
219
+ // Genres
220
+ addGenre: (p: Omit<genresExt.AddGenreParams, "partyGenrePackageId">) =>
221
+ genresExt.addGenre({ ...p, partyGenrePackageId: partyGenrePkg }),
222
+ removeGenre: (p: Omit<genresExt.RemoveGenreParams, "partyGenrePackageId">) =>
223
+ genresExt.removeGenre({ ...p, partyGenrePackageId: partyGenrePkg }),
224
+ clearGenres: (p: Omit<genresExt.ClearGenresParams, "partyGenrePackageId">) =>
225
+ genresExt.clearGenres({ ...p, partyGenrePackageId: partyGenrePkg }),
226
+ // CTAs
227
+ setCtas: (p: Omit<ctasExt.SetCtasParams, "partyCtaPackageId">) =>
228
+ ctasExt.setCtas({ ...p, partyCtaPackageId: ctaPkg }),
229
+ clearCtas: (p: Omit<ctasExt.ClearCtasParams, "partyCtaPackageId">) =>
230
+ ctasExt.clearCtas({ ...p, partyCtaPackageId: ctaPkg }),
231
+ // Platform links — generic (any platform) plus per-platform `set…`/`clear…`.
232
+ setLink: (platform: PlatformKey, p: linksExt.BoundSetLinkParams) =>
233
+ linksExt.setLink(platform, { ...p, ...linkIds }),
234
+ clearLink: (platform: PlatformKey, p: linksExt.BoundClearLinkParams) =>
235
+ linksExt.clearLink(platform, { ...p, ...linkIds }),
236
+ ...linksExt.linkTxBuilders(linkIds),
237
+ };
238
+ }
239
+
240
+ // === Generated type-safe Move calls (for tx.add) ===
241
+
242
+ get call() {
243
+ return {
244
+ party: this.#core.call.party,
245
+ profile: bindModulePackage(profileMod, this.#profilePkg, ["profile"] as const),
246
+ media: bindModulePackage(mediaMod, this.#mediaPkg),
247
+ roles: bindModulePackage(rolesMod, this.#rolesPkg),
248
+ tags: bindModulePackage(tagsMod, this.#tagsPkg),
249
+ cta: bindModulePackage(ctaMod, this.#ctaPkg),
250
+ genre: bindModulePackage(genreMod, this.#partyGenrePkg),
251
+ platformLink: bindModulePackage(platformLinkMod, this.#platformLinkPkg),
252
+ social: bindModulePackage(socialMod, this.#socialPkg),
253
+ music: bindModulePackage(musicMod, this.#musicPkg),
254
+ proLink: bindModulePackage(proLinkMod, this.#proLinkPkg),
255
+ };
256
+ }
257
+
258
+ // === Generated BCS structs (for parsing object/event content) ===
259
+
260
+ get bcs() {
261
+ return {
262
+ ...this.#core.bcs,
263
+ Profile: profileMod.Profile,
264
+ ProfileSetEvent: profileMod.ProfileSetEvent,
265
+ Media: mediaMod.Media,
266
+ MediaSetEvent: mediaMod.MediaSetEvent,
267
+ ArtistRole: rolesMod.ArtistRole,
268
+ RoleAddedEvent: rolesMod.RoleAddedEvent,
269
+ TagAddedEvent: tagsMod.TagAddedEvent,
270
+ Cta: ctaMod.Cta,
271
+ CtasSetEvent: ctaMod.CtasSetEvent,
272
+ GenreAddedEvent: genreMod.GenreAddedEvent,
273
+ LinkSetEvent: platformLinkMod.LinkSetEvent,
274
+ LinkClearedEvent: platformLinkMod.LinkClearedEvent,
275
+ };
276
+ }
277
+ }
278
+
279
+ /** @deprecated Use `PartyPlatformClient`. Retained for callers migrating from the pre-split class. */
280
+ export { PartyPlatformClient as PartyProtocolClient };
@@ -0,0 +1,46 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // The `party_cta` extension: a party's ordered call-to-action list (Tickets,
5
+ // Merch, Newsletter, …). Each CTA is a `{ label, url }`; the whole list is written
6
+ // at once (position is priority). The builder constructs each `Cta` via `new_cta`
7
+ // and passes the vector to `set_ctas`.
8
+
9
+ import * as ctaMod from "../../contracts/party_cta/party_cta.ts";
10
+ import type { TxThunk } from "@misofm/partyos";
11
+ import type { Cta } from "../types.ts";
12
+
13
+ export interface SetCtasParams {
14
+ partyId: string;
15
+ capId: string;
16
+ /** The ordered CTA list — position is priority. */
17
+ ctas: Cta[];
18
+ partyCtaPackageId: string;
19
+ }
20
+
21
+ /** Sets (or replaces) the party's ordered CTA list. */
22
+ export function setCtas(params: SetCtasParams): TxThunk {
23
+ return (tx) => {
24
+ const ctaType = `${params.partyCtaPackageId}::party_cta::Cta`;
25
+ const ctas = tx.makeMoveVec({
26
+ type: ctaType,
27
+ elements: params.ctas.map((c) =>
28
+ tx.add(ctaMod.newCta({ package: params.partyCtaPackageId, arguments: [c.label, c.url] })),
29
+ ),
30
+ });
31
+ tx.add(ctaMod.setCtas({ package: params.partyCtaPackageId, arguments: [params.partyId, params.capId, ctas] }));
32
+ };
33
+ }
34
+
35
+ export interface ClearCtasParams {
36
+ partyId: string;
37
+ capId: string;
38
+ partyCtaPackageId: string;
39
+ }
40
+
41
+ /** Removes the party's CTA list. No-op on-chain if none is set. */
42
+ export function clearCtas(params: ClearCtasParams): TxThunk {
43
+ return (tx) => {
44
+ tx.add(ctaMod.clearCtas({ package: params.partyCtaPackageId, arguments: [params.partyId, params.capId] }));
45
+ };
46
+ }
@@ -0,0 +1,62 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // The `party_genre` extension: a set of `genre::Genre` object ids tagged on a
5
+ // party. `add_genre` takes a `&Genre` vocabulary object (proving the id is a real
6
+ // entry), so the builder passes `tx.object(genreId)`; removal is by id.
7
+
8
+ import * as genreMod from "../../contracts/party_genre/party_genre.ts";
9
+ import type { TxThunk } from "@misofm/partyos";
10
+
11
+ export interface AddGenreParams {
12
+ partyId: string;
13
+ capId: string;
14
+ /** The `genre::Genre` vocabulary object id to tag. */
15
+ genreId: string;
16
+ partyGenrePackageId: string;
17
+ }
18
+
19
+ /** Tags a genre on the party. Aborts on-chain if already present or the max is reached. */
20
+ export function addGenre(params: AddGenreParams): TxThunk {
21
+ return (tx) => {
22
+ tx.add(
23
+ genreMod.addGenre({
24
+ package: params.partyGenrePackageId,
25
+ arguments: [params.partyId, params.capId, tx.object(params.genreId)],
26
+ }),
27
+ );
28
+ };
29
+ }
30
+
31
+ export interface RemoveGenreParams {
32
+ partyId: string;
33
+ capId: string;
34
+ /** The genre id to untag. */
35
+ genreId: string;
36
+ partyGenrePackageId: string;
37
+ }
38
+
39
+ /** Untags a genre from the party. Aborts on-chain if not present. */
40
+ export function removeGenre(params: RemoveGenreParams): TxThunk {
41
+ return (tx) => {
42
+ tx.add(
43
+ genreMod.removeGenre({
44
+ package: params.partyGenrePackageId,
45
+ arguments: [params.partyId, params.capId, params.genreId],
46
+ }),
47
+ );
48
+ };
49
+ }
50
+
51
+ export interface ClearGenresParams {
52
+ partyId: string;
53
+ capId: string;
54
+ partyGenrePackageId: string;
55
+ }
56
+
57
+ /** Removes the party's entire genre set. No-op on-chain if none is set. */
58
+ export function clearGenres(params: ClearGenresParams): TxThunk {
59
+ return (tx) => {
60
+ tx.add(genreMod.clearGenres({ package: params.partyGenrePackageId, arguments: [params.partyId, params.capId] }));
61
+ };
62
+ }
@@ -0,0 +1,186 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // The platform-link facade: attaches one independent `PlatformLink<Data>` per
5
+ // platform to a party via `party_platform_link`. The payload `Data` types live in
6
+ // their own packages (`party_social`, `party_music`, `party_pro_link`); this file
7
+ // drives all ~27 platforms from a single table (`PLATFORMS`) rather than 27×
8
+ // copy-paste. Each setter builds the link via the platform's constructor move-call
9
+ // (returning a `PlatformLink<…Data>`), then calls `set_link` with the matching
10
+ // `Data` type argument; clearers call `clear_link` with the same type argument.
11
+ // Only the native identifier is stored on-chain; the public URL is rebuilt from it.
12
+
13
+ import * as platformLinkMod from "../../contracts/party_platform_link/party_platform_link.ts";
14
+ import type { TxThunk } from "@misofm/partyos";
15
+ import { PlatformLink } from "../types.ts";
16
+ import type { PlatformKey } from "../types.ts";
17
+
18
+ /** Which payload package a platform's `Data` type + constructor live in. */
19
+ type PayloadPkgKind = "social" | "music" | "pro";
20
+
21
+ /** Everything needed to build, store, and rebuild one platform's link. */
22
+ export interface PlatformSpec {
23
+ key: PlatformKey;
24
+ /** Payload package the `Data` type + constructor live in. */
25
+ pkgKind: PayloadPkgKind;
26
+ /** Move module holding the constructor + `Data` type. */
27
+ module: "party_social" | "party_music" | "party_pro_link";
28
+ /** Constructor function (snake_case) — takes a single `String`, returns `PlatformLink<Data>`. */
29
+ ctor: string;
30
+ /** The `Data` type name (e.g. `InstagramData`). */
31
+ dataType: string;
32
+ /** Rebuilds the public URL from the stored native identifier. */
33
+ url: (value: string) => string;
34
+ }
35
+
36
+ /**
37
+ * Every platform this SDK can link, keyed by `PlatformKey`. The single source of
38
+ * truth: setters, clearers, and the read-side URL/type mapping all derive from it.
39
+ */
40
+ export const PLATFORMS: Record<PlatformKey, PlatformSpec> = {
41
+ // === Social (party_social) ===
42
+ x: { key: "x", pkgKind: "social", module: "party_social", ctor: "x", dataType: "XData", url: (v) => `https://x.com/${v}` },
43
+ instagram: { key: "instagram", pkgKind: "social", module: "party_social", ctor: "instagram", dataType: "InstagramData", url: (v) => `https://instagram.com/${v}` },
44
+ threads: { key: "threads", pkgKind: "social", module: "party_social", ctor: "threads", dataType: "ThreadsData", url: (v) => `https://www.threads.net/@${v}` },
45
+ tiktok: { key: "tiktok", pkgKind: "social", module: "party_social", ctor: "tiktok", dataType: "TikTokData", url: (v) => `https://www.tiktok.com/@${v}` },
46
+ youtube: { key: "youtube", pkgKind: "social", module: "party_social", ctor: "youtube", dataType: "YouTubeData", url: (v) => `https://youtube.com/@${v}` },
47
+ discord: { key: "discord", pkgKind: "social", module: "party_social", ctor: "discord", dataType: "DiscordData", url: (v) => `https://discord.gg/${v}` },
48
+ telegram: { key: "telegram", pkgKind: "social", module: "party_social", ctor: "telegram", dataType: "TelegramData", url: (v) => `https://t.me/${v}` },
49
+ reddit: { key: "reddit", pkgKind: "social", module: "party_social", ctor: "reddit", dataType: "RedditData", url: (v) => `https://reddit.com/user/${v}` },
50
+ twitch: { key: "twitch", pkgKind: "social", module: "party_social", ctor: "twitch", dataType: "TwitchData", url: (v) => `https://twitch.tv/${v}` },
51
+ facebook: { key: "facebook", pkgKind: "social", module: "party_social", ctor: "facebook", dataType: "FacebookData", url: (v) => `https://facebook.com/${v}` },
52
+ // === Music (party_music) ===
53
+ spotify: { key: "spotify", pkgKind: "music", module: "party_music", ctor: "spotify", dataType: "SpotifyData", url: (v) => `https://open.spotify.com/artist/${v}` },
54
+ bandcamp: { key: "bandcamp", pkgKind: "music", module: "party_music", ctor: "bandcamp", dataType: "BandcampData", url: (v) => `https://${v}.bandcamp.com` },
55
+ soundcloud: { key: "soundcloud", pkgKind: "music", module: "party_music", ctor: "soundcloud", dataType: "SoundCloudData", url: (v) => `https://soundcloud.com/${v}` },
56
+ appleMusic: { key: "appleMusic", pkgKind: "music", module: "party_music", ctor: "apple_music", dataType: "AppleMusicData", url: (v) => `https://music.apple.com/artist/${v}` },
57
+ deezer: { key: "deezer", pkgKind: "music", module: "party_music", ctor: "deezer", dataType: "DeezerData", url: (v) => `https://www.deezer.com/artist/${v}` },
58
+ tidal: { key: "tidal", pkgKind: "music", module: "party_music", ctor: "tidal", dataType: "TidalData", url: (v) => `https://tidal.com/artist/${v}` },
59
+ amazonMusic: { key: "amazonMusic", pkgKind: "music", module: "party_music", ctor: "amazon_music", dataType: "AmazonMusicData", url: (v) => `https://music.amazon.com/artists/${v}` },
60
+ audiomack: { key: "audiomack", pkgKind: "music", module: "party_music", ctor: "audiomack", dataType: "AudiomackData", url: (v) => `https://audiomack.com/${v}` },
61
+ // === Professional / industry (party_pro_link). URL-based payloads store a full URL. ===
62
+ website: { key: "website", pkgKind: "pro", module: "party_pro_link", ctor: "website", dataType: "WebsiteData", url: (v) => v },
63
+ bookingPage: { key: "bookingPage", pkgKind: "pro", module: "party_pro_link", ctor: "booking_page", dataType: "BookingPageData", url: (v) => v },
64
+ managementPage: { key: "managementPage", pkgKind: "pro", module: "party_pro_link", ctor: "management_page", dataType: "ManagementPageData", url: (v) => v },
65
+ publisherPage: { key: "publisherPage", pkgKind: "pro", module: "party_pro_link", ctor: "publisher_page", dataType: "PublisherPageData", url: (v) => v },
66
+ labelPage: { key: "labelPage", pkgKind: "pro", module: "party_pro_link", ctor: "label_page", dataType: "LabelPageData", url: (v) => v },
67
+ epk: { key: "epk", pkgKind: "pro", module: "party_pro_link", ctor: "epk", dataType: "EpkData", url: (v) => v },
68
+ patreon: { key: "patreon", pkgKind: "pro", module: "party_pro_link", ctor: "patreon", dataType: "PatreonData", url: (v) => `https://patreon.com/${v}` },
69
+ substack: { key: "substack", pkgKind: "pro", module: "party_pro_link", ctor: "substack", dataType: "SubstackData", url: (v) => `https://${v}.substack.com` },
70
+ kofi: { key: "kofi", pkgKind: "pro", module: "party_pro_link", ctor: "kofi", dataType: "KofiData", url: (v) => `https://ko-fi.com/${v}` },
71
+ };
72
+
73
+ /** All platform keys, in table order. */
74
+ export const PLATFORM_KEYS = Object.keys(PLATFORMS) as PlatformKey[];
75
+
76
+ /** The package ids the platform-link facade binds (the facade + the three payload packages). */
77
+ export interface LinkPackageIds {
78
+ partyPlatformLinkPackageId: string;
79
+ partySocialPackageId: string;
80
+ partyMusicPackageId: string;
81
+ partyProLinkPackageId: string;
82
+ }
83
+
84
+ function payloadPackageId(spec: PlatformSpec, ids: LinkPackageIds): string {
85
+ switch (spec.pkgKind) {
86
+ case "social":
87
+ return ids.partySocialPackageId;
88
+ case "music":
89
+ return ids.partyMusicPackageId;
90
+ case "pro":
91
+ return ids.partyProLinkPackageId;
92
+ }
93
+ }
94
+
95
+ /** The fully-qualified Move `Data` type for a platform (e.g. `0x…::party_social::InstagramData`). */
96
+ function dataTypeArg(spec: PlatformSpec, ids: LinkPackageIds): string {
97
+ return `${payloadPackageId(spec, ids)}::${spec.module}::${spec.dataType}`;
98
+ }
99
+
100
+ export interface SetLinkParams extends LinkPackageIds {
101
+ partyId: string;
102
+ capId: string;
103
+ /** The platform-native identifier to store (handle / id / subdomain / full URL). */
104
+ value: string;
105
+ }
106
+
107
+ /** Sets (or replaces) a platform's link on the party. */
108
+ export function setLink(platform: PlatformKey, params: SetLinkParams): TxThunk {
109
+ return (tx) => {
110
+ const spec = PLATFORMS[platform];
111
+ const pkg = payloadPackageId(spec, params);
112
+ const link = tx.moveCall({
113
+ target: `${pkg}::${spec.module}::${spec.ctor}`,
114
+ arguments: [tx.pure.string(params.value)],
115
+ });
116
+ tx.add(
117
+ platformLinkMod.setLink({
118
+ package: params.partyPlatformLinkPackageId,
119
+ typeArguments: [dataTypeArg(spec, params)],
120
+ arguments: [params.partyId, params.capId, link],
121
+ }),
122
+ );
123
+ };
124
+ }
125
+
126
+ export interface ClearLinkParams extends LinkPackageIds {
127
+ partyId: string;
128
+ capId: string;
129
+ }
130
+
131
+ /** Clears a platform's link from the party. No-op on-chain if unset. */
132
+ export function clearLink(platform: PlatformKey, params: ClearLinkParams): TxThunk {
133
+ return (tx) => {
134
+ const spec = PLATFORMS[platform];
135
+ tx.add(
136
+ platformLinkMod.clearLink({
137
+ package: params.partyPlatformLinkPackageId,
138
+ typeArguments: [dataTypeArg(spec, params)],
139
+ arguments: [params.partyId, params.capId],
140
+ }),
141
+ );
142
+ };
143
+ }
144
+
145
+ // === Read helpers ===
146
+
147
+ // The Move `Data` type suffix (`<module>::<dataType>`) → platform key. The package
148
+ // id prefix varies, so match on the last two `::` segments (unique across the table).
149
+ const BY_MOVE_TYPE: Record<string, PlatformKey> = Object.fromEntries(
150
+ PLATFORM_KEYS.map((k) => [`${PLATFORMS[k].module}::${PLATFORMS[k].dataType}`, k]),
151
+ ) as Record<string, PlatformKey>;
152
+
153
+ /**
154
+ * The platform for a fully-qualified `Data` type argument, or null if unknown.
155
+ * @param dataType e.g. `0x…::party_social::InstagramData`.
156
+ */
157
+ export function platformForDataType(dataType: string): PlatformKey | null {
158
+ const suffix = dataType.split("::").slice(-2).join("::");
159
+ return BY_MOVE_TYPE[suffix] ?? null;
160
+ }
161
+
162
+ /** Builds a public `PlatformLink` from a platform key and its stored native identifier. */
163
+ export function buildLink(platform: PlatformKey, value: string): PlatformLink {
164
+ return new PlatformLink({ platform, value, url: PLATFORMS[platform].url(value) });
165
+ }
166
+
167
+ // === Bound builders (the client binds package ids, then exposes per-platform methods) ===
168
+
169
+ export type BoundSetLinkParams = Omit<SetLinkParams, keyof LinkPackageIds>;
170
+ export type BoundClearLinkParams = Omit<ClearLinkParams, keyof LinkPackageIds>;
171
+
172
+ /** Per-platform `setX` / `clearX` builders, keyed off the table so all ~27 are covered. */
173
+ export type LinkTxBuilders =
174
+ & { [K in PlatformKey as `set${Capitalize<K>}`]: (p: BoundSetLinkParams) => TxThunk }
175
+ & { [K in PlatformKey as `clear${Capitalize<K>}`]: (p: BoundClearLinkParams) => TxThunk };
176
+
177
+ /** Builds the per-platform link tx builders with `ids` pre-bound. */
178
+ export function linkTxBuilders(ids: LinkPackageIds): LinkTxBuilders {
179
+ const out: Record<string, unknown> = {};
180
+ for (const key of PLATFORM_KEYS) {
181
+ const cap = key.charAt(0).toUpperCase() + key.slice(1);
182
+ out[`set${cap}`] = (p: BoundSetLinkParams): TxThunk => setLink(key, { ...p, ...ids });
183
+ out[`clear${cap}`] = (p: BoundClearLinkParams): TxThunk => clearLink(key, { ...p, ...ids });
184
+ }
185
+ return out as LinkTxBuilders;
186
+ }
@@ -0,0 +1,72 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // The `party_media` extension: a party's imagery, stored on-chain as a single
5
+ // Walrus *quilt* id. Individual images are quilt patches addressed by identifier
6
+ // ("avatar", "header", …) — those roles are a client convention, derived here
7
+ // off-chain, never stored on-chain. The write builder takes the quilt's base64url
8
+ // blob id (what `walrus store-quilt` prints) and converts it to the on-chain
9
+ // u256; the read helpers build aggregator URLs per identifier.
10
+
11
+ import { b64UrlToU256 } from "../internal.ts";
12
+ import * as mediaMod from "../../contracts/party_media/party_media.ts";
13
+ import type { TxThunk } from "@misofm/partyos";
14
+ import type { Media } from "../types.ts";
15
+
16
+ /**
17
+ * Quilt patch identifiers party media uses, in role order. Uploaders store images
18
+ * under these identifiers; readers fetch by them. This is the whole "meaning" the
19
+ * chain defers to the client.
20
+ */
21
+ export const MEDIA_IDENTIFIERS = { avatar: "avatar", header: "header" } as const;
22
+ export type MediaIdentifier = (typeof MEDIA_IDENTIFIERS)[keyof typeof MEDIA_IDENTIFIERS];
23
+
24
+ export interface SetMediaParams {
25
+ partyId: string;
26
+ capId: string;
27
+ /** Walrus quilt blob id (base64url), e.g. from `walrus store-quilt`. */
28
+ quiltId: string;
29
+ partyMediaPackageId: string;
30
+ }
31
+
32
+ /** Sets (or replaces) the party's media quilt. */
33
+ export function setMedia(params: SetMediaParams): TxThunk {
34
+ return (tx) => {
35
+ tx.add(
36
+ mediaMod.setMedia({
37
+ package: params.partyMediaPackageId,
38
+ arguments: [params.partyId, params.capId, BigInt(b64UrlToU256(params.quiltId))],
39
+ }),
40
+ );
41
+ };
42
+ }
43
+
44
+ export interface ClearMediaParams {
45
+ partyId: string;
46
+ capId: string;
47
+ partyMediaPackageId: string;
48
+ }
49
+
50
+ /** Removes the party's media entirely. No-op on-chain if none is set. */
51
+ export function clearMedia(params: ClearMediaParams): TxThunk {
52
+ return (tx) => {
53
+ tx.add(mediaMod.clearMedia({ package: params.partyMediaPackageId, arguments: [params.partyId, params.capId] }));
54
+ };
55
+ }
56
+
57
+ /** Aggregator URL for one image in a party's quilt, addressed by identifier. */
58
+ export function mediaImageUrl(aggregatorUrl: string, quiltId: string, identifier: string): string {
59
+ return `${aggregatorUrl.replace(/\/$/, "")}/v1/blobs/by-quilt-id/${quiltId}/${identifier}`;
60
+ }
61
+
62
+ /** The avatar + header image URLs for a party's media, or null if unset. */
63
+ export function mediaUrls(
64
+ aggregatorUrl: string,
65
+ media: Media | null,
66
+ ): { avatar: string; header: string } | null {
67
+ if (!media) return null;
68
+ return {
69
+ avatar: mediaImageUrl(aggregatorUrl, media.quiltId, MEDIA_IDENTIFIERS.avatar),
70
+ header: mediaImageUrl(aggregatorUrl, media.quiltId, MEDIA_IDENTIFIERS.header),
71
+ };
72
+ }