@misonetwork/sdk 0.7.0 → 0.9.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 (418) hide show
  1. package/README.md +210 -136
  2. package/dist/client.d.ts +1211 -8
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +56 -19
  5. package/dist/client.js.map +1 -1
  6. package/dist/contracts/composition_credits/composition_credits.d.ts +181 -0
  7. package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -0
  8. package/dist/contracts/composition_credits/composition_credits.js +109 -0
  9. package/dist/contracts/composition_credits/composition_credits.js.map +1 -0
  10. package/dist/contracts/composition_credits/composition_party_role.d.ts +119 -0
  11. package/dist/contracts/composition_credits/composition_party_role.d.ts.map +1 -0
  12. package/dist/contracts/composition_credits/composition_party_role.js +139 -0
  13. package/dist/contracts/composition_credits/composition_party_role.js.map +1 -0
  14. package/dist/contracts/composition_credits/deps/miso_credit/credit.d.ts +24 -0
  15. package/dist/contracts/composition_credits/deps/miso_credit/credit.d.ts.map +1 -0
  16. package/dist/contracts/composition_credits/deps/miso_credit/credit.js +23 -0
  17. package/dist/contracts/composition_credits/deps/miso_credit/credit.js.map +1 -0
  18. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts +37 -0
  19. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts.map +1 -0
  20. package/dist/contracts/composition_credits/deps/sui/vec_map.js +28 -0
  21. package/dist/contracts/composition_credits/deps/sui/vec_map.js.map +1 -0
  22. package/dist/contracts/miso/composition.d.ts +1 -15
  23. package/dist/contracts/miso/composition.d.ts.map +1 -1
  24. package/dist/contracts/miso/composition.js +2 -17
  25. package/dist/contracts/miso/composition.js.map +1 -1
  26. package/dist/contracts/miso/deps/bps/bps.d.ts +1 -1
  27. package/dist/contracts/miso/deps/bps/bps.js +1 -1
  28. package/dist/contracts/miso/recording.d.ts +1 -16
  29. package/dist/contracts/miso/recording.d.ts.map +1 -1
  30. package/dist/contracts/miso/recording.js +1 -16
  31. package/dist/contracts/miso/recording.js.map +1 -1
  32. package/dist/contracts/miso/release.d.ts +61 -48
  33. package/dist/contracts/miso/release.d.ts.map +1 -1
  34. package/dist/contracts/miso/release.js +59 -46
  35. package/dist/contracts/miso/release.js.map +1 -1
  36. package/dist/contracts/miso/track.d.ts +2 -2
  37. package/dist/contracts/miso/track.js +2 -2
  38. package/dist/contracts/miso_party/deps/sui/vec_set.d.ts +21 -0
  39. package/dist/contracts/miso_party/deps/sui/vec_set.d.ts.map +1 -0
  40. package/dist/contracts/miso_party/deps/sui/vec_set.js +20 -0
  41. package/dist/contracts/miso_party/deps/sui/vec_set.js.map +1 -0
  42. package/dist/contracts/miso_party/party.d.ts +481 -0
  43. package/dist/contracts/miso_party/party.d.ts.map +1 -0
  44. package/dist/contracts/miso_party/party.js +527 -0
  45. package/dist/contracts/miso_party/party.js.map +1 -0
  46. package/dist/contracts/party_cta/party_cta.d.ts +120 -0
  47. package/dist/contracts/party_cta/party_cta.d.ts.map +1 -0
  48. package/dist/contracts/party_cta/party_cta.js +139 -0
  49. package/dist/contracts/party_cta/party_cta.js.map +1 -0
  50. package/dist/contracts/party_genre/party_genre.d.ts +117 -0
  51. package/dist/contracts/party_genre/party_genre.d.ts.map +1 -0
  52. package/dist/contracts/party_genre/party_genre.js +131 -0
  53. package/dist/contracts/party_genre/party_genre.js.map +1 -0
  54. package/dist/contracts/party_media/party_media.d.ts +86 -0
  55. package/dist/contracts/party_media/party_media.d.ts.map +1 -0
  56. package/dist/contracts/party_media/party_media.js +97 -0
  57. package/dist/contracts/party_media/party_media.js.map +1 -0
  58. package/dist/contracts/party_music/party_music.d.ts +209 -0
  59. package/dist/contracts/party_music/party_music.d.ts.map +1 -0
  60. package/dist/contracts/party_music/party_music.js +259 -0
  61. package/dist/contracts/party_music/party_music.js.map +1 -0
  62. package/dist/contracts/party_platform_link/party_platform_link.d.ts +89 -0
  63. package/dist/contracts/party_platform_link/party_platform_link.d.ts.map +1 -0
  64. package/dist/contracts/party_platform_link/party_platform_link.js +92 -0
  65. package/dist/contracts/party_platform_link/party_platform_link.js.map +1 -0
  66. package/dist/contracts/party_pro_link/party_pro_link.d.ts +233 -0
  67. package/dist/contracts/party_pro_link/party_pro_link.d.ts.map +1 -0
  68. package/dist/contracts/party_pro_link/party_pro_link.js +289 -0
  69. package/dist/contracts/party_pro_link/party_pro_link.js.map +1 -0
  70. package/dist/contracts/party_profile/deps/country_code/country_code.d.ts +15 -0
  71. package/dist/contracts/party_profile/deps/country_code/country_code.d.ts.map +1 -0
  72. package/dist/contracts/party_profile/deps/country_code/country_code.js +17 -0
  73. package/dist/contracts/party_profile/deps/country_code/country_code.js.map +1 -0
  74. package/dist/contracts/party_profile/deps/language_code/language_code.d.ts +6 -0
  75. package/dist/contracts/party_profile/deps/language_code/language_code.d.ts.map +1 -0
  76. package/dist/contracts/party_profile/deps/language_code/language_code.js +8 -0
  77. package/dist/contracts/party_profile/deps/language_code/language_code.js.map +1 -0
  78. package/dist/contracts/party_profile/party_profile.d.ts +133 -0
  79. package/dist/contracts/party_profile/party_profile.d.ts.map +1 -0
  80. package/dist/contracts/party_profile/party_profile.js +153 -0
  81. package/dist/contracts/party_profile/party_profile.js.map +1 -0
  82. package/dist/contracts/party_roles/party_roles.d.ts +201 -0
  83. package/dist/contracts/party_roles/party_roles.d.ts.map +1 -0
  84. package/dist/contracts/party_roles/party_roles.js +237 -0
  85. package/dist/contracts/party_roles/party_roles.js.map +1 -0
  86. package/dist/contracts/party_social/party_social.d.ts +258 -0
  87. package/dist/contracts/party_social/party_social.d.ts.map +1 -0
  88. package/dist/contracts/party_social/party_social.js +320 -0
  89. package/dist/contracts/party_social/party_social.js.map +1 -0
  90. package/dist/contracts/party_tags/party_tags.d.ts +116 -0
  91. package/dist/contracts/party_tags/party_tags.d.ts.map +1 -0
  92. package/dist/contracts/party_tags/party_tags.js +130 -0
  93. package/dist/contracts/party_tags/party_tags.js.map +1 -0
  94. package/dist/contracts/recording_advisory/recording_advisory.d.ts +194 -0
  95. package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -0
  96. package/dist/contracts/recording_advisory/recording_advisory.js +204 -0
  97. package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -0
  98. package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts +24 -0
  99. package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts.map +1 -0
  100. package/dist/contracts/recording_credits/deps/miso_credit/credit.js +23 -0
  101. package/dist/contracts/recording_credits/deps/miso_credit/credit.js.map +1 -0
  102. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts +37 -0
  103. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -0
  104. package/dist/contracts/recording_credits/deps/sui/vec_map.js +28 -0
  105. package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -0
  106. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts +21 -0
  107. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -0
  108. package/dist/contracts/recording_credits/deps/sui/vec_set.js +20 -0
  109. package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -0
  110. package/dist/contracts/recording_credits/recording_credits.d.ts +2313 -0
  111. package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -0
  112. package/dist/contracts/recording_credits/recording_credits.js +270 -0
  113. package/dist/contracts/recording_credits/recording_credits.js.map +1 -0
  114. package/dist/contracts/recording_credits/recording_party_role.d.ts +1174 -0
  115. package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -0
  116. package/dist/contracts/recording_credits/recording_party_role.js +692 -0
  117. package/dist/contracts/recording_credits/recording_party_role.js.map +1 -0
  118. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +6 -0
  119. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +1 -0
  120. package/dist/contracts/recording_language/deps/language_code/language_code.js +8 -0
  121. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +1 -0
  122. package/dist/contracts/recording_language/recording_language.d.ts +152 -0
  123. package/dist/contracts/recording_language/recording_language.d.ts.map +1 -0
  124. package/dist/contracts/recording_language/recording_language.js +149 -0
  125. package/dist/contracts/recording_language/recording_language.js.map +1 -0
  126. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts +52 -0
  127. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts.map +1 -0
  128. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js +37 -0
  129. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js.map +1 -0
  130. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +131 -0
  131. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -0
  132. package/dist/contracts/recording_master_reference/recording_master_reference.js +121 -0
  133. package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -0
  134. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts +52 -0
  135. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts.map +1 -0
  136. package/dist/contracts/recording_preview/deps/ori/walrus_data.js +37 -0
  137. package/dist/contracts/recording_preview/deps/ori/walrus_data.js.map +1 -0
  138. package/dist/contracts/recording_preview/recording_preview.d.ts +104 -0
  139. package/dist/contracts/recording_preview/recording_preview.d.ts.map +1 -0
  140. package/dist/contracts/recording_preview/recording_preview.js +94 -0
  141. package/dist/contracts/recording_preview/recording_preview.js.map +1 -0
  142. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts +52 -0
  143. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts.map +1 -0
  144. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js +37 -0
  145. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js.map +1 -0
  146. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +46 -0
  147. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -0
  148. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +21 -0
  149. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -0
  150. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts +33 -0
  151. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -0
  152. package/dist/contracts/release_cover_art/deps/per_track/per_track.js +32 -0
  153. package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -0
  154. package/dist/contracts/release_cover_art/release_cover_art.d.ts +300 -0
  155. package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -0
  156. package/dist/contracts/release_cover_art/release_cover_art.js +168 -0
  157. package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -0
  158. package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts +24 -0
  159. package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts.map +1 -0
  160. package/dist/contracts/release_credits/deps/miso_credit/credit.js +23 -0
  161. package/dist/contracts/release_credits/deps/miso_credit/credit.js.map +1 -0
  162. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts +37 -0
  163. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -0
  164. package/dist/contracts/release_credits/deps/sui/vec_map.js +28 -0
  165. package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -0
  166. package/dist/contracts/release_credits/release_credits.d.ts +142 -0
  167. package/dist/contracts/release_credits/release_credits.d.ts.map +1 -0
  168. package/dist/contracts/release_credits/release_credits.js +108 -0
  169. package/dist/contracts/release_credits/release_credits.js.map +1 -0
  170. package/dist/contracts/release_credits/release_party_role.d.ts +58 -0
  171. package/dist/contracts/release_credits/release_party_role.d.ts.map +1 -0
  172. package/dist/contracts/release_credits/release_party_role.js +66 -0
  173. package/dist/contracts/release_credits/release_party_role.js.map +1 -0
  174. package/dist/contracts/release_description/release_description.d.ts +112 -0
  175. package/dist/contracts/release_description/release_description.d.ts.map +1 -0
  176. package/dist/contracts/release_description/release_description.js +123 -0
  177. package/dist/contracts/release_description/release_description.js.map +1 -0
  178. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +644 -0
  179. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -0
  180. package/dist/contracts/release_dsp_link/release_dsp_link.js +556 -0
  181. package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -0
  182. package/dist/contracts/release_genre/deps/per_track/per_track.d.ts +33 -0
  183. package/dist/contracts/release_genre/deps/per_track/per_track.d.ts.map +1 -0
  184. package/dist/contracts/release_genre/deps/per_track/per_track.js +32 -0
  185. package/dist/contracts/release_genre/deps/per_track/per_track.js.map +1 -0
  186. package/dist/contracts/release_genre/release_genre.d.ts +193 -0
  187. package/dist/contracts/release_genre/release_genre.d.ts.map +1 -0
  188. package/dist/contracts/release_genre/release_genre.js +207 -0
  189. package/dist/contracts/release_genre/release_genre.js.map +1 -0
  190. package/dist/contracts/release_kind/release_kind.d.ts +98 -0
  191. package/dist/contracts/release_kind/release_kind.d.ts.map +1 -0
  192. package/dist/contracts/release_kind/release_kind.js +109 -0
  193. package/dist/contracts/release_kind/release_kind.js.map +1 -0
  194. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +54 -0
  195. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts.map +1 -0
  196. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js +37 -0
  197. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js.map +1 -0
  198. package/dist/contracts/routed_stake/deps/std/type_name.d.ts +18 -0
  199. package/dist/contracts/routed_stake/deps/std/type_name.d.ts.map +1 -0
  200. package/dist/contracts/routed_stake/deps/std/type_name.js +20 -0
  201. package/dist/contracts/routed_stake/deps/std/type_name.js.map +1 -0
  202. package/dist/contracts/routed_stake/deps/sui/balance.d.ts +13 -0
  203. package/dist/contracts/routed_stake/deps/sui/balance.d.ts.map +1 -0
  204. package/dist/contracts/routed_stake/deps/sui/balance.js +15 -0
  205. package/dist/contracts/routed_stake/deps/sui/balance.js.map +1 -0
  206. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts +37 -0
  207. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts.map +1 -0
  208. package/dist/contracts/routed_stake/deps/sui/vec_map.js +28 -0
  209. package/dist/contracts/routed_stake/deps/sui/vec_map.js.map +1 -0
  210. package/dist/contracts/routed_stake/routed_stake.d.ts +342 -0
  211. package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -0
  212. package/dist/contracts/routed_stake/routed_stake.js +297 -0
  213. package/dist/contracts/routed_stake/routed_stake.js.map +1 -0
  214. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +18 -0
  215. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -0
  216. package/dist/contracts/royalty_pool/deps/std/type_name.js +20 -0
  217. package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -0
  218. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +13 -0
  219. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -0
  220. package/dist/contracts/royalty_pool/deps/sui/balance.js +15 -0
  221. package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -0
  222. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts +37 -0
  223. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -0
  224. package/dist/contracts/royalty_pool/deps/sui/vec_map.js +28 -0
  225. package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -0
  226. package/dist/contracts/royalty_pool/pool.d.ts +380 -0
  227. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -0
  228. package/dist/contracts/royalty_pool/pool.js +373 -0
  229. package/dist/contracts/royalty_pool/pool.js.map +1 -0
  230. package/dist/contracts/royalty_pool/stake.d.ts +189 -0
  231. package/dist/contracts/royalty_pool/stake.d.ts.map +1 -0
  232. package/dist/contracts/royalty_pool/stake.js +183 -0
  233. package/dist/contracts/royalty_pool/stake.js.map +1 -0
  234. package/dist/contracts.d.ts +48 -3
  235. package/dist/contracts.d.ts.map +1 -1
  236. package/dist/contracts.js +54 -8
  237. package/dist/contracts.js.map +1 -1
  238. package/dist/deployments.d.ts +46 -12
  239. package/dist/deployments.d.ts.map +1 -1
  240. package/dist/deployments.js +132 -11
  241. package/dist/deployments.js.map +1 -1
  242. package/dist/events.d.ts +1067 -0
  243. package/dist/events.d.ts.map +1 -0
  244. package/dist/events.js +120 -0
  245. package/dist/events.js.map +1 -0
  246. package/dist/execute.d.ts.map +1 -1
  247. package/dist/execute.js +0 -4
  248. package/dist/execute.js.map +1 -1
  249. package/dist/index.d.ts +5 -0
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +7 -3
  252. package/dist/index.js.map +1 -1
  253. package/dist/internal.d.ts.map +1 -1
  254. package/dist/internal.js.map +1 -1
  255. package/dist/numeric.d.ts +5 -0
  256. package/dist/numeric.d.ts.map +1 -0
  257. package/dist/numeric.js +21 -0
  258. package/dist/numeric.js.map +1 -0
  259. package/dist/packages.d.ts +194 -0
  260. package/dist/packages.d.ts.map +1 -0
  261. package/dist/packages.js +214 -0
  262. package/dist/packages.js.map +1 -0
  263. package/dist/parsers.d.ts +5 -1
  264. package/dist/parsers.d.ts.map +1 -1
  265. package/dist/parsers.js +18 -2
  266. package/dist/parsers.js.map +1 -1
  267. package/dist/party/client.d.ts +233 -0
  268. package/dist/party/client.d.ts.map +1 -0
  269. package/dist/party/client.js +222 -0
  270. package/dist/party/client.js.map +1 -0
  271. package/dist/party/extensions/ctas.d.ts +19 -0
  272. package/dist/party/extensions/ctas.d.ts.map +1 -0
  273. package/dist/party/extensions/ctas.js +25 -0
  274. package/dist/party/extensions/ctas.js.map +1 -0
  275. package/dist/party/extensions/genres.d.ts +27 -0
  276. package/dist/party/extensions/genres.d.ts.map +1 -0
  277. package/dist/party/extensions/genres.js +31 -0
  278. package/dist/party/extensions/genres.js.map +1 -0
  279. package/dist/party/extensions/links.d.ts +65 -0
  280. package/dist/party/extensions/links.d.ts.map +1 -0
  281. package/dist/party/extensions/links.js +117 -0
  282. package/dist/party/extensions/links.js.map +1 -0
  283. package/dist/party/extensions/media.d.ts +36 -0
  284. package/dist/party/extensions/media.d.ts.map +1 -0
  285. package/dist/party/extensions/media.js +45 -0
  286. package/dist/party/extensions/media.js.map +1 -0
  287. package/dist/party/extensions/profile.d.ts +24 -0
  288. package/dist/party/extensions/profile.d.ts.map +1 -0
  289. package/dist/party/extensions/profile.js +48 -0
  290. package/dist/party/extensions/profile.js.map +1 -0
  291. package/dist/party/extensions/roles.d.ts +37 -0
  292. package/dist/party/extensions/roles.d.ts.map +1 -0
  293. package/dist/party/extensions/roles.js +46 -0
  294. package/dist/party/extensions/roles.js.map +1 -0
  295. package/dist/party/extensions/tags.d.ts +25 -0
  296. package/dist/party/extensions/tags.d.ts.map +1 -0
  297. package/dist/party/extensions/tags.js +25 -0
  298. package/dist/party/extensions/tags.js.map +1 -0
  299. package/dist/party/index.d.ts +12 -0
  300. package/dist/party/index.d.ts.map +1 -0
  301. package/dist/party/index.js +14 -0
  302. package/dist/party/index.js.map +1 -0
  303. package/dist/party/internal.d.ts +15 -0
  304. package/dist/party/internal.d.ts.map +1 -0
  305. package/dist/party/internal.js +103 -0
  306. package/dist/party/internal.js.map +1 -0
  307. package/dist/party/queries.d.ts +38 -0
  308. package/dist/party/queries.d.ts.map +1 -0
  309. package/dist/party/queries.js +232 -0
  310. package/dist/party/queries.js.map +1 -0
  311. package/dist/party/transactions.d.ts +74 -0
  312. package/dist/party/transactions.d.ts.map +1 -0
  313. package/dist/party/transactions.js +85 -0
  314. package/dist/party/transactions.js.map +1 -0
  315. package/dist/party/types.d.ts +54 -0
  316. package/dist/party/types.d.ts.map +1 -0
  317. package/dist/party/types.js +4 -0
  318. package/dist/party/types.js.map +1 -0
  319. package/dist/queries.d.ts +92 -0
  320. package/dist/queries.d.ts.map +1 -1
  321. package/dist/queries.js +132 -23
  322. package/dist/queries.js.map +1 -1
  323. package/dist/transactions.d.ts +96 -3
  324. package/dist/transactions.d.ts.map +1 -1
  325. package/dist/transactions.js +123 -11
  326. package/dist/transactions.js.map +1 -1
  327. package/dist/types.d.ts +18 -0
  328. package/dist/types.d.ts.map +1 -1
  329. package/dist/view.d.ts +6 -5
  330. package/dist/view.d.ts.map +1 -1
  331. package/dist/view.js +8 -2
  332. package/dist/view.js.map +1 -1
  333. package/package.json +18 -4
  334. package/src/client.ts +73 -23
  335. package/src/contracts/composition_credits/composition_credits.ts +169 -0
  336. package/src/contracts/composition_credits/composition_party_role.ts +189 -0
  337. package/src/contracts/composition_credits/deps/miso_credit/credit.ts +27 -0
  338. package/src/contracts/composition_credits/deps/sui/vec_map.ts +33 -0
  339. package/src/contracts/miso/composition.ts +8 -35
  340. package/src/contracts/miso/deps/bps/bps.ts +3 -3
  341. package/src/contracts/miso/recording.ts +10 -38
  342. package/src/contracts/miso/release.ts +99 -86
  343. package/src/contracts/miso/track.ts +5 -5
  344. package/src/contracts/miso_party/deps/sui/vec_set.ts +21 -0
  345. package/src/contracts/miso_party/party.ts +797 -0
  346. package/src/contracts/party_cta/party_cta.ts +212 -0
  347. package/src/contracts/party_genre/party_genre.ts +199 -0
  348. package/src/contracts/party_media/party_media.ts +141 -0
  349. package/src/contracts/party_music/party_music.ts +405 -0
  350. package/src/contracts/party_platform_link/party_platform_link.ts +148 -0
  351. package/src/contracts/party_pro_link/party_pro_link.ts +453 -0
  352. package/src/contracts/party_profile/deps/country_code/country_code.ts +19 -0
  353. package/src/contracts/party_profile/deps/language_code/language_code.ts +7 -0
  354. package/src/contracts/party_profile/party_profile.ts +239 -0
  355. package/src/contracts/party_roles/party_roles.ts +363 -0
  356. package/src/contracts/party_social/party_social.ts +502 -0
  357. package/src/contracts/party_tags/party_tags.ts +198 -0
  358. package/src/contracts/recording_advisory/recording_advisory.ts +315 -0
  359. package/src/contracts/recording_credits/deps/miso_credit/credit.ts +27 -0
  360. package/src/contracts/recording_credits/deps/sui/vec_map.ts +33 -0
  361. package/src/contracts/recording_credits/deps/sui/vec_set.ts +21 -0
  362. package/src/contracts/recording_credits/recording_credits.ts +458 -0
  363. package/src/contracts/recording_credits/recording_party_role.ts +1041 -0
  364. package/src/contracts/recording_language/deps/language_code/language_code.ts +7 -0
  365. package/src/contracts/recording_language/recording_language.ts +237 -0
  366. package/src/contracts/recording_master_reference/deps/ori/walrus_data.ts +36 -0
  367. package/src/contracts/recording_master_reference/recording_master_reference.ts +181 -0
  368. package/src/contracts/recording_preview/deps/ori/walrus_data.ts +36 -0
  369. package/src/contracts/recording_preview/recording_preview.ts +154 -0
  370. package/src/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.ts +36 -0
  371. package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +23 -0
  372. package/src/contracts/release_cover_art/deps/per_track/per_track.ts +36 -0
  373. package/src/contracts/release_cover_art/release_cover_art.ts +251 -0
  374. package/src/contracts/release_credits/deps/miso_credit/credit.ts +27 -0
  375. package/src/contracts/release_credits/deps/sui/vec_map.ts +33 -0
  376. package/src/contracts/release_credits/release_credits.ts +156 -0
  377. package/src/contracts/release_credits/release_party_role.ts +87 -0
  378. package/src/contracts/release_description/release_description.ts +167 -0
  379. package/src/contracts/release_dsp_link/release_dsp_link.ts +813 -0
  380. package/src/contracts/release_genre/deps/per_track/per_track.ts +36 -0
  381. package/src/contracts/release_genre/release_genre.ts +314 -0
  382. package/src/contracts/release_kind/release_kind.ts +153 -0
  383. package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +39 -0
  384. package/src/contracts/routed_stake/deps/std/type_name.ts +22 -0
  385. package/src/contracts/routed_stake/deps/sui/balance.ts +17 -0
  386. package/src/contracts/routed_stake/deps/sui/vec_map.ts +33 -0
  387. package/src/contracts/routed_stake/routed_stake.ts +481 -0
  388. package/src/contracts/royalty_pool/deps/std/type_name.ts +22 -0
  389. package/src/contracts/royalty_pool/deps/sui/balance.ts +17 -0
  390. package/src/contracts/royalty_pool/deps/sui/vec_map.ts +33 -0
  391. package/src/contracts/royalty_pool/pool.ts +586 -0
  392. package/src/contracts/royalty_pool/stake.ts +291 -0
  393. package/src/contracts.ts +72 -6
  394. package/src/deployments.ts +175 -22
  395. package/src/events.ts +125 -0
  396. package/src/execute.ts +0 -4
  397. package/src/index.ts +8 -3
  398. package/src/internal.ts +0 -4
  399. package/src/numeric.ts +25 -0
  400. package/src/packages.ts +283 -0
  401. package/src/parsers.ts +32 -2
  402. package/src/party/client.ts +283 -0
  403. package/src/party/extensions/ctas.ts +46 -0
  404. package/src/party/extensions/genres.ts +62 -0
  405. package/src/party/extensions/links.ts +185 -0
  406. package/src/party/extensions/media.ts +72 -0
  407. package/src/party/extensions/profile.ts +81 -0
  408. package/src/party/extensions/roles.ts +94 -0
  409. package/src/party/extensions/tags.ts +54 -0
  410. package/src/party/index.ts +14 -0
  411. package/src/party/internal.ts +119 -0
  412. package/src/party/queries.ts +303 -0
  413. package/src/party/transactions.ts +167 -0
  414. package/src/party/types.ts +95 -0
  415. package/src/queries.ts +227 -25
  416. package/src/transactions.ts +254 -12
  417. package/src/types.ts +20 -0
  418. package/src/view.ts +12 -6
@@ -0,0 +1,283 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // Party queries and transaction builders bound to the same complete deployment
5
+ // as `MisoProtocolClient`. Consumers reach this through `client.miso.party`.
6
+
7
+ import type { ClientWithCoreApi } from "@mysten/sui/client";
8
+ import type { MisoDeployment } from "../deployments.ts";
9
+ import type { TxThunk } from "./transactions.ts";
10
+ import * as queries from "./queries.ts";
11
+ import * as transactions from "./transactions.ts";
12
+ import * as profileExt from "./extensions/profile.ts";
13
+ import * as mediaExt from "./extensions/media.ts";
14
+ import * as rolesExt from "./extensions/roles.ts";
15
+ import * as tagsExt from "./extensions/tags.ts";
16
+ import * as genresExt from "./extensions/genres.ts";
17
+ import * as ctasExt from "./extensions/ctas.ts";
18
+ import * as linksExt from "./extensions/links.ts";
19
+ import type { Cta, Media, Party, PlatformKey, PlatformLink, Profile } from "./types.ts";
20
+ import * as partyMod from "../contracts/miso_party/party.ts";
21
+ import * as profileMod from "../contracts/party_profile/party_profile.ts";
22
+ import * as mediaMod from "../contracts/party_media/party_media.ts";
23
+ import * as rolesMod from "../contracts/party_roles/party_roles.ts";
24
+ import * as tagsMod from "../contracts/party_tags/party_tags.ts";
25
+ import * as ctaMod from "../contracts/party_cta/party_cta.ts";
26
+ import * as genreMod from "../contracts/party_genre/party_genre.ts";
27
+ import * as platformLinkMod from "../contracts/party_platform_link/party_platform_link.ts";
28
+ import * as socialMod from "../contracts/party_social/party_social.ts";
29
+ import * as musicMod from "../contracts/party_music/party_music.ts";
30
+ import * as proLinkMod from "../contracts/party_pro_link/party_pro_link.ts";
31
+
32
+ type BoundMoveFunction<F> = F extends (options: infer Options) => infer Result
33
+ ? Options extends { package?: unknown }
34
+ ? (options: Omit<Options, "package">) => Result
35
+ : F
36
+ : F;
37
+ type BoundModule<M extends object, Removed extends PropertyKey> = {
38
+ [Key in Exclude<keyof M, Removed>]: BoundMoveFunction<M[Key]>;
39
+ };
40
+
41
+ /** Defaults generated calls to one package and removes reference-returning calls. */
42
+ function bindModulePackage<M extends object, K extends readonly (keyof M)[]>(
43
+ mod: M,
44
+ pkg: string,
45
+ unavailable: K = [] as unknown as K,
46
+ ): BoundModule<M, K[number]> {
47
+ const out: Record<string, unknown> = {};
48
+ for (const [key, value] of Object.entries({ ...mod })) {
49
+ if ((unavailable as readonly string[]).includes(key)) continue;
50
+ out[key] =
51
+ typeof value === "function"
52
+ ? (options: { package?: string }) => (value as (o: unknown) => unknown)({ package: pkg, ...options })
53
+ : value;
54
+ }
55
+ return out as BoundModule<M, K[number]>;
56
+ }
57
+
58
+ /** Package-bound Party client exposed at `client.miso.party`. */
59
+ export class PartyProtocolClient {
60
+ #client: ClientWithCoreApi;
61
+ #pkg: string;
62
+ #profilePkg: string;
63
+ #countryCodePkg: string;
64
+ #languageCodePkg: string;
65
+ #mediaPkg: string;
66
+ #rolesPkg: string;
67
+ #tagsPkg: string;
68
+ #partyGenrePkg: string;
69
+ #ctaPkg: string;
70
+ #platformLinkPkg: string;
71
+ #socialPkg: string;
72
+ #musicPkg: string;
73
+ #proLinkPkg: string;
74
+ #genrePkg: string;
75
+
76
+ constructor(client: ClientWithCoreApi, o: MisoDeployment) {
77
+ this.#client = client;
78
+ this.#pkg = o.misoParty;
79
+ this.#profilePkg = o.partyProfile;
80
+ this.#countryCodePkg = o.countryCode;
81
+ this.#languageCodePkg = o.languageCode;
82
+ this.#mediaPkg = o.partyMedia;
83
+ this.#rolesPkg = o.partyRoles;
84
+ this.#tagsPkg = o.partyTags;
85
+ this.#partyGenrePkg = o.partyGenre;
86
+ this.#ctaPkg = o.partyCta;
87
+ this.#platformLinkPkg = o.partyPlatformLink;
88
+ this.#socialPkg = o.partySocial;
89
+ this.#musicPkg = o.partyMusic;
90
+ this.#proLinkPkg = o.partyProLink;
91
+ this.#genrePkg = o.genre;
92
+ }
93
+
94
+ /**
95
+ * The `genre` vocabulary package id. Callers resolve `Genre` objects from it to
96
+ * pass to `tx.addGenre` (which takes a genre object id, not this package).
97
+ */
98
+ get genrePackageId(): string {
99
+ return this.#genrePkg;
100
+ }
101
+
102
+ // === Queries ===
103
+
104
+ async getPartyById(partyId: string): Promise<Party> {
105
+ return queries.getPartyById(this.#client, partyId);
106
+ }
107
+ async getPartiesByIds(
108
+ partyIds: readonly string[],
109
+ ): Promise<Partial<Record<string, Party>>> {
110
+ return queries.getPartiesByIds(this.#client, partyIds);
111
+ }
112
+ derivePartyAdminCapId(partyId: string): string {
113
+ return queries.derivePartyAdminCapId(partyId, this.#pkg);
114
+ }
115
+ async getProfile(partyId: string): Promise<Profile | null> {
116
+ return queries.getProfile(this.#client, partyId, this.#profilePkg);
117
+ }
118
+ async getMedia(partyId: string): Promise<Media | null> {
119
+ return queries.getMedia(this.#client, partyId, this.#mediaPkg);
120
+ }
121
+ /** The party's artist-type roles (display names). */
122
+ async getRoles(partyId: string): Promise<string[]> {
123
+ return queries.getRoles(this.#client, partyId, this.#rolesPkg);
124
+ }
125
+ /** The party's free-form tags. */
126
+ async getTags(partyId: string): Promise<string[]> {
127
+ return queries.getTags(this.#client, partyId, this.#tagsPkg);
128
+ }
129
+ /** The party's genre object ids. */
130
+ async getGenres(partyId: string): Promise<string[]> {
131
+ return queries.getGenres(this.#client, partyId, this.#partyGenrePkg);
132
+ }
133
+ /** The party's ordered CTA list (position is priority). */
134
+ async getCtas(partyId: string): Promise<Cta[]> {
135
+ return queries.getCtas(this.#client, partyId, this.#ctaPkg);
136
+ }
137
+ /** All external-platform links attached to the party (social, music, professional). */
138
+ async getLinks(partyId: string): Promise<PlatformLink[]> {
139
+ return queries.getLinks(this.#client, partyId);
140
+ }
141
+ /** Group ids a party belongs to (member-side membership records). */
142
+ async getMemberships(partyId: string): Promise<string[]> {
143
+ return queries.getMemberships(this.#client, partyId);
144
+ }
145
+ /** Member ids invited to a group but not yet accepted. */
146
+ async getPendingInvites(groupId: string): Promise<string[]> {
147
+ return queries.getPendingInvites(this.#client, groupId);
148
+ }
149
+ /** Group ids that have invited this party but are awaiting its response. */
150
+ async getPendingMemberships(partyId: string): Promise<string[]> {
151
+ return queries.getPendingMemberships(this.#client, partyId);
152
+ }
153
+ /** Whether a party is a member of a group. */
154
+ async isMember(memberId: string, groupId: string): Promise<boolean> {
155
+ return queries.isMember(this.#client, memberId, groupId, this.#pkg);
156
+ }
157
+
158
+ // === Transaction builders (thunks; package ids bound from the client) ===
159
+
160
+ get tx() {
161
+ const pkg = this.#pkg;
162
+ const profilePkg = this.#profilePkg;
163
+ const cc = this.#countryCodePkg;
164
+ const lc = this.#languageCodePkg;
165
+ const mediaPkg = this.#mediaPkg;
166
+ const rolesPkg = this.#rolesPkg;
167
+ const tagsPkg = this.#tagsPkg;
168
+ const ctaPkg = this.#ctaPkg;
169
+ const partyGenrePkg = this.#partyGenrePkg;
170
+ const linkIds: linksExt.LinkPackageIds = {
171
+ partyPlatformLinkPackageId: this.#platformLinkPkg,
172
+ partySocialPackageId: this.#socialPkg,
173
+ partyMusicPackageId: this.#musicPkg,
174
+ partyProLinkPackageId: this.#proLinkPkg,
175
+ };
176
+ return {
177
+ createIndividualParty: (p: Omit<transactions.CreatePartyParams, "partyPackageId">): TxThunk =>
178
+ transactions.createIndividualParty({ ...p, partyPackageId: pkg }),
179
+ createGroupParty: (p: Omit<transactions.CreatePartyParams, "partyPackageId">): TxThunk =>
180
+ transactions.createGroupParty({ ...p, partyPackageId: pkg }),
181
+ setName: (p: Omit<transactions.SetNameParams, "partyPackageId">): TxThunk =>
182
+ transactions.setName({ ...p, partyPackageId: pkg }),
183
+ inviteParty: (p: Omit<transactions.InvitePartyParams, "partyPackageId">): TxThunk =>
184
+ transactions.inviteParty({ ...p, partyPackageId: pkg }),
185
+ acceptInvite: (p: Omit<transactions.AcceptInviteParams, "partyPackageId">): TxThunk =>
186
+ transactions.acceptInvite({ ...p, partyPackageId: pkg }),
187
+ declineInvite: (p: Omit<transactions.DeclineInviteParams, "partyPackageId">): TxThunk =>
188
+ transactions.declineInvite({ ...p, partyPackageId: pkg }),
189
+ revokeInvite: (p: Omit<transactions.RevokeInviteParams, "partyPackageId">): TxThunk =>
190
+ transactions.revokeInvite({ ...p, partyPackageId: pkg }),
191
+ leaveGroup: (p: Omit<transactions.LeaveGroupParams, "partyPackageId">): TxThunk =>
192
+ transactions.leaveGroup({ ...p, partyPackageId: pkg }),
193
+ removeMember: (p: Omit<transactions.RemoveMemberParams, "partyPackageId">): TxThunk =>
194
+ transactions.removeMember({ ...p, partyPackageId: pkg }),
195
+ setProfile: (
196
+ p: Omit<profileExt.SetProfileParams, "partyProfilePackageId" | "countryCodePackageId" | "languageCodePackageId">,
197
+ ): TxThunk =>
198
+ profileExt.setProfile({
199
+ ...p,
200
+ partyProfilePackageId: profilePkg,
201
+ countryCodePackageId: cc,
202
+ languageCodePackageId: lc,
203
+ }),
204
+ clearProfile: (p: Omit<profileExt.ClearProfileParams, "partyProfilePackageId">): TxThunk =>
205
+ profileExt.clearProfile({ ...p, partyProfilePackageId: profilePkg }),
206
+ setMedia: (p: Omit<mediaExt.SetMediaParams, "partyMediaPackageId">): TxThunk =>
207
+ mediaExt.setMedia({ ...p, partyMediaPackageId: mediaPkg }),
208
+ clearMedia: (p: Omit<mediaExt.ClearMediaParams, "partyMediaPackageId">): TxThunk =>
209
+ mediaExt.clearMedia({ ...p, partyMediaPackageId: mediaPkg }),
210
+ // Roles
211
+ addRole: (p: Omit<rolesExt.AddRoleParams, "partyRolesPackageId">): TxThunk =>
212
+ rolesExt.addRole({ ...p, partyRolesPackageId: rolesPkg }),
213
+ removeRole: (p: Omit<rolesExt.RemoveRoleParams, "partyRolesPackageId">): TxThunk =>
214
+ rolesExt.removeRole({ ...p, partyRolesPackageId: rolesPkg }),
215
+ clearRoles: (p: Omit<rolesExt.ClearRolesParams, "partyRolesPackageId">): TxThunk =>
216
+ rolesExt.clearRoles({ ...p, partyRolesPackageId: rolesPkg }),
217
+ // Tags
218
+ addTag: (p: Omit<tagsExt.AddTagParams, "partyTagsPackageId">): TxThunk =>
219
+ tagsExt.addTag({ ...p, partyTagsPackageId: tagsPkg }),
220
+ removeTag: (p: Omit<tagsExt.RemoveTagParams, "partyTagsPackageId">): TxThunk =>
221
+ tagsExt.removeTag({ ...p, partyTagsPackageId: tagsPkg }),
222
+ clearTags: (p: Omit<tagsExt.ClearTagsParams, "partyTagsPackageId">): TxThunk =>
223
+ tagsExt.clearTags({ ...p, partyTagsPackageId: tagsPkg }),
224
+ // Genres
225
+ addGenre: (p: Omit<genresExt.AddGenreParams, "partyGenrePackageId">): TxThunk =>
226
+ genresExt.addGenre({ ...p, partyGenrePackageId: partyGenrePkg }),
227
+ removeGenre: (p: Omit<genresExt.RemoveGenreParams, "partyGenrePackageId">): TxThunk =>
228
+ genresExt.removeGenre({ ...p, partyGenrePackageId: partyGenrePkg }),
229
+ clearGenres: (p: Omit<genresExt.ClearGenresParams, "partyGenrePackageId">): TxThunk =>
230
+ genresExt.clearGenres({ ...p, partyGenrePackageId: partyGenrePkg }),
231
+ // CTAs
232
+ setCtas: (p: Omit<ctasExt.SetCtasParams, "partyCtaPackageId">): TxThunk =>
233
+ ctasExt.setCtas({ ...p, partyCtaPackageId: ctaPkg }),
234
+ clearCtas: (p: Omit<ctasExt.ClearCtasParams, "partyCtaPackageId">): TxThunk =>
235
+ ctasExt.clearCtas({ ...p, partyCtaPackageId: ctaPkg }),
236
+ // Platform links — generic (any platform) plus per-platform `set…`/`clear…`.
237
+ setLink: (platform: PlatformKey, p: linksExt.BoundSetLinkParams): TxThunk =>
238
+ linksExt.setLink(platform, { ...p, ...linkIds }),
239
+ clearLink: (platform: PlatformKey, p: linksExt.BoundClearLinkParams): TxThunk =>
240
+ linksExt.clearLink(platform, { ...p, ...linkIds }),
241
+ ...linksExt.linkTxBuilders(linkIds),
242
+ };
243
+ }
244
+
245
+ // === Generated type-safe Move calls (for tx.add) ===
246
+
247
+ get call() {
248
+ return {
249
+ party: bindModulePackage(partyMod, this.#pkg, ["groupMembers", "uid", "uidMut"] as const),
250
+ profile: bindModulePackage(profileMod, this.#profilePkg, ["profile"] as const),
251
+ media: bindModulePackage(mediaMod, this.#mediaPkg),
252
+ roles: bindModulePackage(rolesMod, this.#rolesPkg),
253
+ tags: bindModulePackage(tagsMod, this.#tagsPkg),
254
+ cta: bindModulePackage(ctaMod, this.#ctaPkg),
255
+ genre: bindModulePackage(genreMod, this.#partyGenrePkg),
256
+ platformLink: bindModulePackage(platformLinkMod, this.#platformLinkPkg),
257
+ social: bindModulePackage(socialMod, this.#socialPkg),
258
+ music: bindModulePackage(musicMod, this.#musicPkg),
259
+ proLink: bindModulePackage(proLinkMod, this.#proLinkPkg),
260
+ };
261
+ }
262
+
263
+ // === Generated BCS structs (for parsing object/event content) ===
264
+
265
+ get bcs() {
266
+ return {
267
+ Party: partyMod.Party,
268
+ PartyAdminCap: partyMod.PartyAdminCap,
269
+ Profile: profileMod.Profile,
270
+ ProfileSetEvent: profileMod.ProfileSetEvent,
271
+ Media: mediaMod.Media,
272
+ MediaSetEvent: mediaMod.MediaSetEvent,
273
+ ArtistRole: rolesMod.ArtistRole,
274
+ RoleAddedEvent: rolesMod.RoleAddedEvent,
275
+ TagAddedEvent: tagsMod.TagAddedEvent,
276
+ Cta: ctaMod.Cta,
277
+ CtasSetEvent: ctaMod.CtasSetEvent,
278
+ GenreAddedEvent: genreMod.GenreAddedEvent,
279
+ LinkSetEvent: platformLinkMod.LinkSetEvent,
280
+ LinkClearedEvent: platformLinkMod.LinkClearedEvent,
281
+ };
282
+ }
283
+ }
@@ -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 "../transactions.ts";
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 "../transactions.ts";
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,185 @@
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 "../transactions.ts";
15
+ import type { PlatformKey, PlatformLink } from "../types.ts";
16
+
17
+ /** Which payload package a platform's `Data` type + constructor live in. */
18
+ type PayloadPkgKind = "social" | "music" | "pro";
19
+
20
+ /** Everything needed to build, store, and rebuild one platform's link. */
21
+ export interface PlatformSpec {
22
+ key: PlatformKey;
23
+ /** Payload package the `Data` type + constructor live in. */
24
+ pkgKind: PayloadPkgKind;
25
+ /** Move module holding the constructor + `Data` type. */
26
+ module: "party_social" | "party_music" | "party_pro_link";
27
+ /** Constructor function (snake_case) — takes a single `String`, returns `PlatformLink<Data>`. */
28
+ ctor: string;
29
+ /** The `Data` type name (e.g. `InstagramData`). */
30
+ dataType: string;
31
+ /** Rebuilds the public URL from the stored native identifier. */
32
+ url: (value: string) => string;
33
+ }
34
+
35
+ /**
36
+ * Every platform this SDK can link, keyed by `PlatformKey`. The single source of
37
+ * truth: setters, clearers, and the read-side URL/type mapping all derive from it.
38
+ */
39
+ export const PLATFORMS: Record<PlatformKey, PlatformSpec> = {
40
+ // === Social (party_social) ===
41
+ x: { key: "x", pkgKind: "social", module: "party_social", ctor: "x", dataType: "XData", url: (v) => `https://x.com/${v}` },
42
+ instagram: { key: "instagram", pkgKind: "social", module: "party_social", ctor: "instagram", dataType: "InstagramData", url: (v) => `https://instagram.com/${v}` },
43
+ threads: { key: "threads", pkgKind: "social", module: "party_social", ctor: "threads", dataType: "ThreadsData", url: (v) => `https://www.threads.net/@${v}` },
44
+ tiktok: { key: "tiktok", pkgKind: "social", module: "party_social", ctor: "tiktok", dataType: "TikTokData", url: (v) => `https://www.tiktok.com/@${v}` },
45
+ youtube: { key: "youtube", pkgKind: "social", module: "party_social", ctor: "youtube", dataType: "YouTubeData", url: (v) => `https://youtube.com/@${v}` },
46
+ discord: { key: "discord", pkgKind: "social", module: "party_social", ctor: "discord", dataType: "DiscordData", url: (v) => `https://discord.gg/${v}` },
47
+ telegram: { key: "telegram", pkgKind: "social", module: "party_social", ctor: "telegram", dataType: "TelegramData", url: (v) => `https://t.me/${v}` },
48
+ reddit: { key: "reddit", pkgKind: "social", module: "party_social", ctor: "reddit", dataType: "RedditData", url: (v) => `https://reddit.com/user/${v}` },
49
+ twitch: { key: "twitch", pkgKind: "social", module: "party_social", ctor: "twitch", dataType: "TwitchData", url: (v) => `https://twitch.tv/${v}` },
50
+ facebook: { key: "facebook", pkgKind: "social", module: "party_social", ctor: "facebook", dataType: "FacebookData", url: (v) => `https://facebook.com/${v}` },
51
+ // === Music (party_music) ===
52
+ spotify: { key: "spotify", pkgKind: "music", module: "party_music", ctor: "spotify", dataType: "SpotifyData", url: (v) => `https://open.spotify.com/artist/${v}` },
53
+ bandcamp: { key: "bandcamp", pkgKind: "music", module: "party_music", ctor: "bandcamp", dataType: "BandcampData", url: (v) => `https://${v}.bandcamp.com` },
54
+ soundcloud: { key: "soundcloud", pkgKind: "music", module: "party_music", ctor: "soundcloud", dataType: "SoundCloudData", url: (v) => `https://soundcloud.com/${v}` },
55
+ appleMusic: { key: "appleMusic", pkgKind: "music", module: "party_music", ctor: "apple_music", dataType: "AppleMusicData", url: (v) => `https://music.apple.com/artist/${v}` },
56
+ deezer: { key: "deezer", pkgKind: "music", module: "party_music", ctor: "deezer", dataType: "DeezerData", url: (v) => `https://www.deezer.com/artist/${v}` },
57
+ tidal: { key: "tidal", pkgKind: "music", module: "party_music", ctor: "tidal", dataType: "TidalData", url: (v) => `https://tidal.com/artist/${v}` },
58
+ amazonMusic: { key: "amazonMusic", pkgKind: "music", module: "party_music", ctor: "amazon_music", dataType: "AmazonMusicData", url: (v) => `https://music.amazon.com/artists/${v}` },
59
+ audiomack: { key: "audiomack", pkgKind: "music", module: "party_music", ctor: "audiomack", dataType: "AudiomackData", url: (v) => `https://audiomack.com/${v}` },
60
+ // === Professional / industry (party_pro_link). URL-based payloads store a full URL. ===
61
+ website: { key: "website", pkgKind: "pro", module: "party_pro_link", ctor: "website", dataType: "WebsiteData", url: (v) => v },
62
+ bookingPage: { key: "bookingPage", pkgKind: "pro", module: "party_pro_link", ctor: "booking_page", dataType: "BookingPageData", url: (v) => v },
63
+ managementPage: { key: "managementPage", pkgKind: "pro", module: "party_pro_link", ctor: "management_page", dataType: "ManagementPageData", url: (v) => v },
64
+ publisherPage: { key: "publisherPage", pkgKind: "pro", module: "party_pro_link", ctor: "publisher_page", dataType: "PublisherPageData", url: (v) => v },
65
+ labelPage: { key: "labelPage", pkgKind: "pro", module: "party_pro_link", ctor: "label_page", dataType: "LabelPageData", url: (v) => v },
66
+ epk: { key: "epk", pkgKind: "pro", module: "party_pro_link", ctor: "epk", dataType: "EpkData", url: (v) => v },
67
+ patreon: { key: "patreon", pkgKind: "pro", module: "party_pro_link", ctor: "patreon", dataType: "PatreonData", url: (v) => `https://patreon.com/${v}` },
68
+ substack: { key: "substack", pkgKind: "pro", module: "party_pro_link", ctor: "substack", dataType: "SubstackData", url: (v) => `https://${v}.substack.com` },
69
+ kofi: { key: "kofi", pkgKind: "pro", module: "party_pro_link", ctor: "kofi", dataType: "KofiData", url: (v) => `https://ko-fi.com/${v}` },
70
+ };
71
+
72
+ /** All platform keys, in table order. */
73
+ export const PLATFORM_KEYS = Object.keys(PLATFORMS) as PlatformKey[];
74
+
75
+ /** The package ids the platform-link facade binds (the facade + the three payload packages). */
76
+ export interface LinkPackageIds {
77
+ partyPlatformLinkPackageId: string;
78
+ partySocialPackageId: string;
79
+ partyMusicPackageId: string;
80
+ partyProLinkPackageId: string;
81
+ }
82
+
83
+ function payloadPackageId(spec: PlatformSpec, ids: LinkPackageIds): string {
84
+ switch (spec.pkgKind) {
85
+ case "social":
86
+ return ids.partySocialPackageId;
87
+ case "music":
88
+ return ids.partyMusicPackageId;
89
+ case "pro":
90
+ return ids.partyProLinkPackageId;
91
+ }
92
+ }
93
+
94
+ /** The fully-qualified Move `Data` type for a platform (e.g. `0x…::party_social::InstagramData`). */
95
+ function dataTypeArg(spec: PlatformSpec, ids: LinkPackageIds): string {
96
+ return `${payloadPackageId(spec, ids)}::${spec.module}::${spec.dataType}`;
97
+ }
98
+
99
+ export interface SetLinkParams extends LinkPackageIds {
100
+ partyId: string;
101
+ capId: string;
102
+ /** The platform-native identifier to store (handle / id / subdomain / full URL). */
103
+ value: string;
104
+ }
105
+
106
+ /** Sets (or replaces) a platform's link on the party. */
107
+ export function setLink(platform: PlatformKey, params: SetLinkParams): TxThunk {
108
+ return (tx) => {
109
+ const spec = PLATFORMS[platform];
110
+ const pkg = payloadPackageId(spec, params);
111
+ const link = tx.moveCall({
112
+ target: `${pkg}::${spec.module}::${spec.ctor}`,
113
+ arguments: [tx.pure.string(params.value)],
114
+ });
115
+ tx.add(
116
+ platformLinkMod.setLink({
117
+ package: params.partyPlatformLinkPackageId,
118
+ typeArguments: [dataTypeArg(spec, params)],
119
+ arguments: [params.partyId, params.capId, link],
120
+ }),
121
+ );
122
+ };
123
+ }
124
+
125
+ export interface ClearLinkParams extends LinkPackageIds {
126
+ partyId: string;
127
+ capId: string;
128
+ }
129
+
130
+ /** Clears a platform's link from the party. No-op on-chain if unset. */
131
+ export function clearLink(platform: PlatformKey, params: ClearLinkParams): TxThunk {
132
+ return (tx) => {
133
+ const spec = PLATFORMS[platform];
134
+ tx.add(
135
+ platformLinkMod.clearLink({
136
+ package: params.partyPlatformLinkPackageId,
137
+ typeArguments: [dataTypeArg(spec, params)],
138
+ arguments: [params.partyId, params.capId],
139
+ }),
140
+ );
141
+ };
142
+ }
143
+
144
+ // === Read helpers ===
145
+
146
+ // The Move `Data` type suffix (`<module>::<dataType>`) → platform key. The package
147
+ // id prefix varies, so match on the last two `::` segments (unique across the table).
148
+ const BY_MOVE_TYPE: Record<string, PlatformKey> = Object.fromEntries(
149
+ PLATFORM_KEYS.map((k) => [`${PLATFORMS[k].module}::${PLATFORMS[k].dataType}`, k]),
150
+ ) as Record<string, PlatformKey>;
151
+
152
+ /**
153
+ * The platform for a fully-qualified `Data` type argument, or null if unknown.
154
+ * @param dataType e.g. `0x…::party_social::InstagramData`.
155
+ */
156
+ export function platformForDataType(dataType: string): PlatformKey | null {
157
+ const suffix = dataType.split("::").slice(-2).join("::");
158
+ return BY_MOVE_TYPE[suffix] ?? null;
159
+ }
160
+
161
+ /** Builds a public `PlatformLink` from a platform key and its stored native identifier. */
162
+ export function buildLink(platform: PlatformKey, value: string): PlatformLink {
163
+ return { platform, value, url: PLATFORMS[platform].url(value) };
164
+ }
165
+
166
+ // === Bound builders (the client binds package ids, then exposes per-platform methods) ===
167
+
168
+ export type BoundSetLinkParams = Omit<SetLinkParams, keyof LinkPackageIds>;
169
+ export type BoundClearLinkParams = Omit<ClearLinkParams, keyof LinkPackageIds>;
170
+
171
+ /** Per-platform `setX` / `clearX` builders, keyed off the table so all ~27 are covered. */
172
+ export type LinkTxBuilders =
173
+ & { [K in PlatformKey as `set${Capitalize<K>}`]: (p: BoundSetLinkParams) => TxThunk }
174
+ & { [K in PlatformKey as `clear${Capitalize<K>}`]: (p: BoundClearLinkParams) => TxThunk };
175
+
176
+ /** Builds the per-platform link tx builders with `ids` pre-bound. */
177
+ export function linkTxBuilders(ids: LinkPackageIds): LinkTxBuilders {
178
+ const out: Record<string, unknown> = {};
179
+ for (const key of PLATFORM_KEYS) {
180
+ const cap = key.charAt(0).toUpperCase() + key.slice(1);
181
+ out[`set${cap}`] = (p: BoundSetLinkParams): TxThunk => setLink(key, { ...p, ...ids });
182
+ out[`clear${cap}`] = (p: BoundClearLinkParams): TxThunk => clearLink(key, { ...p, ...ids });
183
+ }
184
+ return out as LinkTxBuilders;
185
+ }
@@ -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 "../transactions.ts";
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
+ }