@misonetwork/sdk 0.6.0 → 0.8.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 (296) hide show
  1. package/README.md +181 -124
  2. package/dist/client.d.ts +1229 -15
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +43 -21
  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 +17 -39
  23. package/dist/contracts/miso/composition.d.ts.map +1 -1
  24. package/dist/contracts/miso/composition.js +18 -39
  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 +44 -19
  29. package/dist/contracts/miso/recording.d.ts.map +1 -1
  30. package/dist/contracts/miso/recording.js +46 -20
  31. package/dist/contracts/miso/recording.js.map +1 -1
  32. package/dist/contracts/miso/release.d.ts +63 -37
  33. package/dist/contracts/miso/release.d.ts.map +1 -1
  34. package/dist/contracts/miso/release.js +65 -38
  35. package/dist/contracts/miso/release.js.map +1 -1
  36. package/dist/contracts/miso/track.d.ts +41 -10
  37. package/dist/contracts/miso/track.d.ts.map +1 -1
  38. package/dist/contracts/miso/track.js +44 -10
  39. package/dist/contracts/miso/track.js.map +1 -1
  40. package/dist/contracts/recording_advisory/recording_advisory.d.ts +194 -0
  41. package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -0
  42. package/dist/contracts/recording_advisory/recording_advisory.js +204 -0
  43. package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -0
  44. package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts +24 -0
  45. package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts.map +1 -0
  46. package/dist/contracts/recording_credits/deps/miso_credit/credit.js +23 -0
  47. package/dist/contracts/recording_credits/deps/miso_credit/credit.js.map +1 -0
  48. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts +37 -0
  49. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -0
  50. package/dist/contracts/recording_credits/deps/sui/vec_map.js +28 -0
  51. package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -0
  52. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts +21 -0
  53. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -0
  54. package/dist/contracts/recording_credits/deps/sui/vec_set.js +20 -0
  55. package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -0
  56. package/dist/contracts/recording_credits/recording_credits.d.ts +2313 -0
  57. package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -0
  58. package/dist/contracts/recording_credits/recording_credits.js +270 -0
  59. package/dist/contracts/recording_credits/recording_credits.js.map +1 -0
  60. package/dist/contracts/recording_credits/recording_party_role.d.ts +1174 -0
  61. package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -0
  62. package/dist/contracts/recording_credits/recording_party_role.js +692 -0
  63. package/dist/contracts/recording_credits/recording_party_role.js.map +1 -0
  64. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +6 -0
  65. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +1 -0
  66. package/dist/contracts/recording_language/deps/language_code/language_code.js +8 -0
  67. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +1 -0
  68. package/dist/contracts/recording_language/recording_language.d.ts +152 -0
  69. package/dist/contracts/recording_language/recording_language.d.ts.map +1 -0
  70. package/dist/contracts/recording_language/recording_language.js +149 -0
  71. package/dist/contracts/recording_language/recording_language.js.map +1 -0
  72. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts +52 -0
  73. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts.map +1 -0
  74. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js +37 -0
  75. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js.map +1 -0
  76. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +131 -0
  77. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -0
  78. package/dist/contracts/recording_master_reference/recording_master_reference.js +121 -0
  79. package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -0
  80. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts +52 -0
  81. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts.map +1 -0
  82. package/dist/contracts/recording_preview/deps/ori/walrus_data.js +37 -0
  83. package/dist/contracts/recording_preview/deps/ori/walrus_data.js.map +1 -0
  84. package/dist/contracts/recording_preview/recording_preview.d.ts +104 -0
  85. package/dist/contracts/recording_preview/recording_preview.d.ts.map +1 -0
  86. package/dist/contracts/recording_preview/recording_preview.js +94 -0
  87. package/dist/contracts/recording_preview/recording_preview.js.map +1 -0
  88. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts +52 -0
  89. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts.map +1 -0
  90. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js +37 -0
  91. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js.map +1 -0
  92. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +46 -0
  93. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -0
  94. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +21 -0
  95. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -0
  96. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts +33 -0
  97. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -0
  98. package/dist/contracts/release_cover_art/deps/per_track/per_track.js +32 -0
  99. package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -0
  100. package/dist/contracts/release_cover_art/release_cover_art.d.ts +300 -0
  101. package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -0
  102. package/dist/contracts/release_cover_art/release_cover_art.js +168 -0
  103. package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -0
  104. package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts +24 -0
  105. package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts.map +1 -0
  106. package/dist/contracts/release_credits/deps/miso_credit/credit.js +23 -0
  107. package/dist/contracts/release_credits/deps/miso_credit/credit.js.map +1 -0
  108. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts +37 -0
  109. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -0
  110. package/dist/contracts/release_credits/deps/sui/vec_map.js +28 -0
  111. package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -0
  112. package/dist/contracts/release_credits/release_credits.d.ts +142 -0
  113. package/dist/contracts/release_credits/release_credits.d.ts.map +1 -0
  114. package/dist/contracts/release_credits/release_credits.js +108 -0
  115. package/dist/contracts/release_credits/release_credits.js.map +1 -0
  116. package/dist/contracts/release_credits/release_party_role.d.ts +58 -0
  117. package/dist/contracts/release_credits/release_party_role.d.ts.map +1 -0
  118. package/dist/contracts/release_credits/release_party_role.js +66 -0
  119. package/dist/contracts/release_credits/release_party_role.js.map +1 -0
  120. package/dist/contracts/release_description/release_description.d.ts +112 -0
  121. package/dist/contracts/release_description/release_description.d.ts.map +1 -0
  122. package/dist/contracts/release_description/release_description.js +123 -0
  123. package/dist/contracts/release_description/release_description.js.map +1 -0
  124. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +644 -0
  125. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -0
  126. package/dist/contracts/release_dsp_link/release_dsp_link.js +556 -0
  127. package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -0
  128. package/dist/contracts/release_genre/deps/per_track/per_track.d.ts +33 -0
  129. package/dist/contracts/release_genre/deps/per_track/per_track.d.ts.map +1 -0
  130. package/dist/contracts/release_genre/deps/per_track/per_track.js +32 -0
  131. package/dist/contracts/release_genre/deps/per_track/per_track.js.map +1 -0
  132. package/dist/contracts/release_genre/release_genre.d.ts +193 -0
  133. package/dist/contracts/release_genre/release_genre.d.ts.map +1 -0
  134. package/dist/contracts/release_genre/release_genre.js +207 -0
  135. package/dist/contracts/release_genre/release_genre.js.map +1 -0
  136. package/dist/contracts/release_kind/release_kind.d.ts +98 -0
  137. package/dist/contracts/release_kind/release_kind.d.ts.map +1 -0
  138. package/dist/contracts/release_kind/release_kind.js +109 -0
  139. package/dist/contracts/release_kind/release_kind.js.map +1 -0
  140. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.d.ts +52 -0
  141. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.d.ts.map +1 -0
  142. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.js +37 -0
  143. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.js.map +1 -0
  144. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.d.ts +91 -0
  145. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.d.ts.map +1 -0
  146. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.js +91 -0
  147. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.js.map +1 -0
  148. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +54 -0
  149. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts.map +1 -0
  150. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js +37 -0
  151. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js.map +1 -0
  152. package/dist/contracts/routed_stake/deps/std/type_name.d.ts +18 -0
  153. package/dist/contracts/routed_stake/deps/std/type_name.d.ts.map +1 -0
  154. package/dist/contracts/routed_stake/deps/std/type_name.js +20 -0
  155. package/dist/contracts/routed_stake/deps/std/type_name.js.map +1 -0
  156. package/dist/contracts/routed_stake/deps/sui/balance.d.ts +13 -0
  157. package/dist/contracts/routed_stake/deps/sui/balance.d.ts.map +1 -0
  158. package/dist/contracts/routed_stake/deps/sui/balance.js +15 -0
  159. package/dist/contracts/routed_stake/deps/sui/balance.js.map +1 -0
  160. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts +37 -0
  161. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts.map +1 -0
  162. package/dist/contracts/routed_stake/deps/sui/vec_map.js +28 -0
  163. package/dist/contracts/routed_stake/deps/sui/vec_map.js.map +1 -0
  164. package/dist/contracts/routed_stake/routed_stake.d.ts +356 -0
  165. package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -0
  166. package/dist/contracts/routed_stake/routed_stake.js +311 -0
  167. package/dist/contracts/routed_stake/routed_stake.js.map +1 -0
  168. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +18 -0
  169. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -0
  170. package/dist/contracts/royalty_pool/deps/std/type_name.js +20 -0
  171. package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -0
  172. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +13 -0
  173. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -0
  174. package/dist/contracts/royalty_pool/deps/sui/balance.js +15 -0
  175. package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -0
  176. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts +37 -0
  177. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -0
  178. package/dist/contracts/royalty_pool/deps/sui/vec_map.js +28 -0
  179. package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -0
  180. package/dist/contracts/royalty_pool/pool.d.ts +394 -0
  181. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -0
  182. package/dist/contracts/royalty_pool/pool.js +387 -0
  183. package/dist/contracts/royalty_pool/pool.js.map +1 -0
  184. package/dist/contracts/royalty_pool/stake.d.ts +202 -0
  185. package/dist/contracts/royalty_pool/stake.d.ts.map +1 -0
  186. package/dist/contracts/royalty_pool/stake.js +197 -0
  187. package/dist/contracts/royalty_pool/stake.js.map +1 -0
  188. package/dist/contracts.d.ts +37 -3
  189. package/dist/contracts.d.ts.map +1 -1
  190. package/dist/contracts.js +42 -8
  191. package/dist/contracts.js.map +1 -1
  192. package/dist/deployments.d.ts +46 -12
  193. package/dist/deployments.d.ts.map +1 -1
  194. package/dist/deployments.js +119 -11
  195. package/dist/deployments.js.map +1 -1
  196. package/dist/events.d.ts +1081 -0
  197. package/dist/events.d.ts.map +1 -0
  198. package/dist/events.js +124 -0
  199. package/dist/events.js.map +1 -0
  200. package/dist/execute.d.ts.map +1 -1
  201. package/dist/execute.js +0 -4
  202. package/dist/execute.js.map +1 -1
  203. package/dist/index.d.ts +3 -0
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +6 -3
  206. package/dist/index.js.map +1 -1
  207. package/dist/internal.d.ts.map +1 -1
  208. package/dist/internal.js +2 -0
  209. package/dist/internal.js.map +1 -1
  210. package/dist/numeric.d.ts +5 -0
  211. package/dist/numeric.d.ts.map +1 -0
  212. package/dist/numeric.js +21 -0
  213. package/dist/numeric.js.map +1 -0
  214. package/dist/packages.d.ts +159 -0
  215. package/dist/packages.d.ts.map +1 -0
  216. package/dist/packages.js +179 -0
  217. package/dist/packages.js.map +1 -0
  218. package/dist/parsers.d.ts +5 -2
  219. package/dist/parsers.d.ts.map +1 -1
  220. package/dist/parsers.js +19 -7
  221. package/dist/parsers.js.map +1 -1
  222. package/dist/queries.d.ts +92 -0
  223. package/dist/queries.d.ts.map +1 -1
  224. package/dist/queries.js +132 -23
  225. package/dist/queries.js.map +1 -1
  226. package/dist/transactions.d.ts +96 -12
  227. package/dist/transactions.d.ts.map +1 -1
  228. package/dist/transactions.js +124 -14
  229. package/dist/transactions.js.map +1 -1
  230. package/dist/types.d.ts +35 -8
  231. package/dist/types.d.ts.map +1 -1
  232. package/dist/view.d.ts +6 -5
  233. package/dist/view.d.ts.map +1 -1
  234. package/dist/view.js +8 -2
  235. package/dist/view.js.map +1 -1
  236. package/package.json +14 -4
  237. package/src/client.ts +57 -25
  238. package/src/contracts/composition_credits/composition_credits.ts +169 -0
  239. package/src/contracts/composition_credits/composition_party_role.ts +189 -0
  240. package/src/contracts/composition_credits/deps/miso_credit/credit.ts +27 -0
  241. package/src/contracts/composition_credits/deps/sui/vec_map.ts +33 -0
  242. package/src/contracts/miso/composition.ts +24 -61
  243. package/src/contracts/miso/deps/bps/bps.ts +3 -3
  244. package/src/contracts/miso/recording.ts +69 -32
  245. package/src/contracts/miso/release.ts +103 -67
  246. package/src/contracts/miso/track.ts +56 -13
  247. package/src/contracts/recording_advisory/recording_advisory.ts +315 -0
  248. package/src/contracts/recording_credits/deps/miso_credit/credit.ts +27 -0
  249. package/src/contracts/recording_credits/deps/sui/vec_map.ts +33 -0
  250. package/src/contracts/recording_credits/deps/sui/vec_set.ts +21 -0
  251. package/src/contracts/recording_credits/recording_credits.ts +458 -0
  252. package/src/contracts/recording_credits/recording_party_role.ts +1041 -0
  253. package/src/contracts/recording_language/deps/language_code/language_code.ts +7 -0
  254. package/src/contracts/recording_language/recording_language.ts +237 -0
  255. package/src/contracts/recording_master_reference/deps/ori/walrus_data.ts +36 -0
  256. package/src/contracts/recording_master_reference/recording_master_reference.ts +181 -0
  257. package/src/contracts/recording_preview/deps/ori/walrus_data.ts +36 -0
  258. package/src/contracts/recording_preview/recording_preview.ts +154 -0
  259. package/src/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.ts +36 -0
  260. package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +23 -0
  261. package/src/contracts/release_cover_art/deps/per_track/per_track.ts +36 -0
  262. package/src/contracts/release_cover_art/release_cover_art.ts +251 -0
  263. package/src/contracts/release_credits/deps/miso_credit/credit.ts +27 -0
  264. package/src/contracts/release_credits/deps/sui/vec_map.ts +33 -0
  265. package/src/contracts/release_credits/release_credits.ts +156 -0
  266. package/src/contracts/release_credits/release_party_role.ts +87 -0
  267. package/src/contracts/release_description/release_description.ts +167 -0
  268. package/src/contracts/release_dsp_link/release_dsp_link.ts +813 -0
  269. package/src/contracts/release_genre/deps/per_track/per_track.ts +36 -0
  270. package/src/contracts/release_genre/release_genre.ts +314 -0
  271. package/src/contracts/release_kind/release_kind.ts +153 -0
  272. package/src/contracts/release_snapshot_bundle/deps/ori/walrus_data.ts +36 -0
  273. package/src/contracts/release_snapshot_bundle/release_snapshot_bundle.ts +124 -0
  274. package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +39 -0
  275. package/src/contracts/routed_stake/deps/std/type_name.ts +22 -0
  276. package/src/contracts/routed_stake/deps/sui/balance.ts +17 -0
  277. package/src/contracts/routed_stake/deps/sui/vec_map.ts +33 -0
  278. package/src/contracts/routed_stake/routed_stake.ts +508 -0
  279. package/src/contracts/royalty_pool/deps/std/type_name.ts +22 -0
  280. package/src/contracts/royalty_pool/deps/sui/balance.ts +17 -0
  281. package/src/contracts/royalty_pool/deps/sui/vec_map.ts +33 -0
  282. package/src/contracts/royalty_pool/pool.ts +613 -0
  283. package/src/contracts/royalty_pool/stake.ts +317 -0
  284. package/src/contracts.ts +59 -6
  285. package/src/deployments.ts +160 -22
  286. package/src/events.ts +129 -0
  287. package/src/execute.ts +0 -4
  288. package/src/index.ts +6 -3
  289. package/src/internal.ts +2 -4
  290. package/src/numeric.ts +25 -0
  291. package/src/packages.ts +251 -0
  292. package/src/parsers.ts +32 -11
  293. package/src/queries.ts +227 -25
  294. package/src/transactions.ts +255 -23
  295. package/src/types.ts +37 -9
  296. package/src/view.ts +12 -6
@@ -0,0 +1,813 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+
6
+ /**
7
+ * Streaming deep links for a Miso release, one Digital Service Provider (DSP) at a
8
+ * time. Attaches `DspLinkData` records to a `miso::release::Release`: an
9
+ * album-level link per DSP, plus an optional per-track link per DSP.
10
+ *
11
+ * `DspLinkData` is a single built-in enum with one variant per DSP, holding that
12
+ * DSP's native identifier(s) — e.g. a Spotify album id, or Apple Music's
13
+ * `(storefront, album_id, track_id)`. URLs are never stored: a client rebuilds the
14
+ * public URL from the variant it reads back, so a DSP reshaping its URLs needs no
15
+ * on-chain change. Storage is keyed by the variant's platform code (a `u8`
16
+ * discriminant matching declaration order, via `platform()`), so each DSP occupies
17
+ * its own independent dynamic field on the release's `UID` — adding or clearing
18
+ * one DSP's link never touches another's.
19
+ *
20
+ * Two levels per DSP: the album-level link is the single `DspLinkData` stored
21
+ * under `ReleaseLinkKey(platform)`; the per-track links are a
22
+ * `PerTrack<Option<DspLinkData>>` stored under `TrackLinksKey(platform)` (one slot
23
+ * per track, aligned to the tracklist by construction). A track whose slot is
24
+ * `none` inherits the album-level link at the frontend.
25
+ *
26
+ * Streaming presence is presentation, not protocol-verifiable state, so it lives
27
+ * on the release (the consumer object), not the recording. All writes are gated by
28
+ * the `ReleaseAdminCap` via `uid_mut`; views are permissionless.
29
+ */
30
+
31
+ import { MoveTuple, MoveEnum, MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.ts';
32
+ import { bcs } from '@mysten/sui/bcs';
33
+ import { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';
34
+ const $moduleName = '@local-pkg/release_dsp_link::release_dsp_link';
35
+ export const ReleaseLinkKey = new MoveTuple({ name: `${$moduleName}::ReleaseLinkKey`, fields: [bcs.u8()] });
36
+ export const TrackLinksKey = new MoveTuple({ name: `${$moduleName}::TrackLinksKey`, fields: [bcs.u8()] });
37
+ /**
38
+ * A link to a release (or one of its tracks) on a single DSP, one variant per
39
+ * platform. Which slot a value is stored in — the album-level slot or a per-track
40
+ * slot — decides whether it addresses the release or one track; most DSPs use the
41
+ * same identifier shape for both, which is why a variant doesn't carry an explicit
42
+ * album/track flag.
43
+ *
44
+ * **Variant order is frozen.** Storage keys off `platform()`, a `u8` discriminant
45
+ * matching declaration order (`Spotify = 0` … `YouTubeMusic = 7`). Sui's
46
+ * compatible-upgrade policy allows appending new enum variants but not reordering
47
+ * or removing existing ones, so a new platform is always appended at the end in a
48
+ * package upgrade — existing BCS variant indices, and therefore existing
49
+ * dynamic-field keys, stay stable.
50
+ */
51
+ export const DspLinkData = new MoveEnum({ name: `${$moduleName}::DspLinkData`, fields: {
52
+ /**
53
+ * Spotify addresses both albums and tracks by a single 22-char base62 id
54
+ * (`open.spotify.com/album/{id}` or `/track/{id}`); album-vs-track is chosen by
55
+ * where the link is stored, so one `id` field serves both.
56
+ */
57
+ Spotify: new MoveStruct({ name: `DspLinkData.Spotify`, fields: {
58
+ id: bcs.string()
59
+ } }),
60
+ /**
61
+ * Apple Music: an album is `music.apple.com/{storefront}/album/{album_id}`; a
62
+ * track within it adds the `?i={track_id}` selector. `storefront` is the
63
+ * two-letter region (e.g. `us`), and because a track link still needs the album
64
+ * id, the album id is always present. The optional `track_id` distinguishes the
65
+ * two forms — clients emit the track URL when it is set, the album URL otherwise.
66
+ * The canonical web URL carries a cosmetic name slug (`/album/{slug}/{album_id}`);
67
+ * only the trailing numeric `album_id` is stored, and Apple resolves the slug-less
68
+ * form.
69
+ */
70
+ AppleMusic: new MoveStruct({ name: `DspLinkData.AppleMusic`, fields: {
71
+ storefront: bcs.string(),
72
+ album_id: bcs.string(),
73
+ track_id: bcs.option(bcs.string())
74
+ } }),
75
+ /**
76
+ * Amazon Music: an album is `music.amazon.com/albums/{album_id}`; a track within
77
+ * it adds the `?trackAsin={track_id}` selector. Ids are ASINs (e.g. `B0064UPU4G`).
78
+ * The optional `track_id` distinguishes the two forms — clients emit the track URL
79
+ * when it is set, the album URL otherwise.
80
+ */
81
+ AmazonMusic: new MoveStruct({ name: `DspLinkData.AmazonMusic`, fields: {
82
+ album_id: bcs.string(),
83
+ track_id: bcs.option(bcs.string())
84
+ } }),
85
+ /**
86
+ * Bandcamp addresses by artist subdomain + slug: an album is
87
+ * `{subdomain}.bandcamp.com/album/{slug}` and a track is
88
+ * `{subdomain}.bandcamp.com/track/{slug}`. Album-vs-track is chosen by where the
89
+ * link is stored, so one `(subdomain, slug)` pair serves both.
90
+ */
91
+ Bandcamp: new MoveStruct({ name: `DspLinkData.Bandcamp`, fields: {
92
+ subdomain: bcs.string(),
93
+ slug: bcs.string()
94
+ } }),
95
+ /**
96
+ * Deezer addresses albums and tracks by a numeric id (`www.deezer.com/album/{id}`
97
+ * / `www.deezer.com/track/{id}`; a `/{locale}/` segment may appear but is
98
+ * optional). Album-vs-track is chosen by where the link is stored, so one `id`
99
+ * field serves both.
100
+ */
101
+ Deezer: new MoveStruct({ name: `DspLinkData.Deezer`, fields: {
102
+ id: bcs.string()
103
+ } }),
104
+ /**
105
+ * SoundCloud is slug-addressed, not numeric: an album/playlist is
106
+ * `soundcloud.com/{user}/sets/{slug}` and a track is
107
+ * `soundcloud.com/{user}/{slug}`. Album-vs-track is chosen by where the link is
108
+ * stored, so one `(user, slug)` pair serves both.
109
+ */
110
+ SoundCloud: new MoveStruct({ name: `DspLinkData.SoundCloud`, fields: {
111
+ user: bcs.string(),
112
+ slug: bcs.string()
113
+ } }),
114
+ /**
115
+ * Tidal addresses albums and tracks by a numeric id (`tidal.com/album/{id}` /
116
+ * `tidal.com/track/{id}`; the older `tidal.com/browse/album/{id}` form also
117
+ * resolves). Album-vs-track is chosen by where the link is stored, so one `id`
118
+ * field serves both.
119
+ */
120
+ Tidal: new MoveStruct({ name: `DspLinkData.Tidal`, fields: {
121
+ id: bcs.string()
122
+ } }),
123
+ /**
124
+ * YouTube Music: an album is a playlist (`music.youtube.com/playlist?list={id}`)
125
+ * and a track is a video (`music.youtube.com/watch?v={id}`). The `id` holds the
126
+ * playlist id at the release level and the video id per track; album-vs-track is
127
+ * chosen by where the link is stored, so one `id` field serves both.
128
+ */
129
+ YouTubeMusic: new MoveStruct({ name: `DspLinkData.YouTubeMusic`, fields: {
130
+ id: bcs.string()
131
+ } })
132
+ } });
133
+ export const ReleaseLinkSetEvent = new MoveStruct({ name: `${$moduleName}::ReleaseLinkSetEvent`, fields: {
134
+ release_id: bcs.Address,
135
+ link: DspLinkData
136
+ } });
137
+ export const ReleaseLinkClearedEvent = new MoveStruct({ name: `${$moduleName}::ReleaseLinkClearedEvent`, fields: {
138
+ release_id: bcs.Address,
139
+ platform: bcs.u8()
140
+ } });
141
+ export const TrackLinkSetEvent = new MoveStruct({ name: `${$moduleName}::TrackLinkSetEvent`, fields: {
142
+ release_id: bcs.Address,
143
+ platform: bcs.u8(),
144
+ track_index: bcs.u64(),
145
+ link: bcs.option(DspLinkData)
146
+ } });
147
+ export const TrackLinksClearedEvent = new MoveStruct({ name: `${$moduleName}::TrackLinksClearedEvent`, fields: {
148
+ release_id: bcs.Address,
149
+ platform: bcs.u8()
150
+ } });
151
+ export interface PlatformArguments {
152
+ self: TransactionArgument;
153
+ }
154
+ export interface PlatformOptions {
155
+ package?: string;
156
+ arguments: PlatformArguments | [
157
+ self: TransactionArgument
158
+ ];
159
+ }
160
+ /**
161
+ * The link's platform code — the `u8` discriminant clients pass to
162
+ * `clear_release_link`, `clear_track_link`, `clear_track_links`, and the view
163
+ * functions below.
164
+ */
165
+ export function platform(options: PlatformOptions) {
166
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
167
+ const argumentsTypes = [
168
+ null
169
+ ] satisfies (string | null)[];
170
+ const parameterNames = ["self"];
171
+ return (tx: Transaction) => tx.moveCall({
172
+ package: packageAddress,
173
+ module: 'release_dsp_link',
174
+ function: 'platform',
175
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
176
+ });
177
+ }
178
+ export interface PlatformSpotifyOptions {
179
+ package?: string;
180
+ arguments?: [
181
+ ];
182
+ }
183
+ /** Platform code for `Spotify`. */
184
+ export function platformSpotify(options: PlatformSpotifyOptions = {}) {
185
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
186
+ return (tx: Transaction) => tx.moveCall({
187
+ package: packageAddress,
188
+ module: 'release_dsp_link',
189
+ function: 'platform_spotify',
190
+ });
191
+ }
192
+ export interface PlatformAppleMusicOptions {
193
+ package?: string;
194
+ arguments?: [
195
+ ];
196
+ }
197
+ /** Platform code for `AppleMusic`. */
198
+ export function platformAppleMusic(options: PlatformAppleMusicOptions = {}) {
199
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
200
+ return (tx: Transaction) => tx.moveCall({
201
+ package: packageAddress,
202
+ module: 'release_dsp_link',
203
+ function: 'platform_apple_music',
204
+ });
205
+ }
206
+ export interface PlatformAmazonMusicOptions {
207
+ package?: string;
208
+ arguments?: [
209
+ ];
210
+ }
211
+ /** Platform code for `AmazonMusic`. */
212
+ export function platformAmazonMusic(options: PlatformAmazonMusicOptions = {}) {
213
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
214
+ return (tx: Transaction) => tx.moveCall({
215
+ package: packageAddress,
216
+ module: 'release_dsp_link',
217
+ function: 'platform_amazon_music',
218
+ });
219
+ }
220
+ export interface PlatformBandcampOptions {
221
+ package?: string;
222
+ arguments?: [
223
+ ];
224
+ }
225
+ /** Platform code for `Bandcamp`. */
226
+ export function platformBandcamp(options: PlatformBandcampOptions = {}) {
227
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
228
+ return (tx: Transaction) => tx.moveCall({
229
+ package: packageAddress,
230
+ module: 'release_dsp_link',
231
+ function: 'platform_bandcamp',
232
+ });
233
+ }
234
+ export interface PlatformDeezerOptions {
235
+ package?: string;
236
+ arguments?: [
237
+ ];
238
+ }
239
+ /** Platform code for `Deezer`. */
240
+ export function platformDeezer(options: PlatformDeezerOptions = {}) {
241
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
242
+ return (tx: Transaction) => tx.moveCall({
243
+ package: packageAddress,
244
+ module: 'release_dsp_link',
245
+ function: 'platform_deezer',
246
+ });
247
+ }
248
+ export interface PlatformSoundcloudOptions {
249
+ package?: string;
250
+ arguments?: [
251
+ ];
252
+ }
253
+ /** Platform code for `SoundCloud`. */
254
+ export function platformSoundcloud(options: PlatformSoundcloudOptions = {}) {
255
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
256
+ return (tx: Transaction) => tx.moveCall({
257
+ package: packageAddress,
258
+ module: 'release_dsp_link',
259
+ function: 'platform_soundcloud',
260
+ });
261
+ }
262
+ export interface PlatformTidalOptions {
263
+ package?: string;
264
+ arguments?: [
265
+ ];
266
+ }
267
+ /** Platform code for `Tidal`. */
268
+ export function platformTidal(options: PlatformTidalOptions = {}) {
269
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
270
+ return (tx: Transaction) => tx.moveCall({
271
+ package: packageAddress,
272
+ module: 'release_dsp_link',
273
+ function: 'platform_tidal',
274
+ });
275
+ }
276
+ export interface PlatformYoutubeMusicOptions {
277
+ package?: string;
278
+ arguments?: [
279
+ ];
280
+ }
281
+ /** Platform code for `YouTubeMusic`. */
282
+ export function platformYoutubeMusic(options: PlatformYoutubeMusicOptions = {}) {
283
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
284
+ return (tx: Transaction) => tx.moveCall({
285
+ package: packageAddress,
286
+ module: 'release_dsp_link',
287
+ function: 'platform_youtube_music',
288
+ });
289
+ }
290
+ export interface NewSpotifyArguments {
291
+ id: RawTransactionArgument<string>;
292
+ }
293
+ export interface NewSpotifyOptions {
294
+ package?: string;
295
+ arguments: NewSpotifyArguments | [
296
+ id: RawTransactionArgument<string>
297
+ ];
298
+ }
299
+ /**
300
+ * Builds a Spotify link from its id. Aborts if `id` is empty or exceeds
301
+ * `MAX_SPOTIFY_ID_LENGTH`.
302
+ */
303
+ export function newSpotify(options: NewSpotifyOptions) {
304
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
305
+ const argumentsTypes = [
306
+ '0x1::string::String'
307
+ ] satisfies (string | null)[];
308
+ const parameterNames = ["id"];
309
+ return (tx: Transaction) => tx.moveCall({
310
+ package: packageAddress,
311
+ module: 'release_dsp_link',
312
+ function: 'new_spotify',
313
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
314
+ });
315
+ }
316
+ export interface NewAppleMusicAlbumArguments {
317
+ storefront: RawTransactionArgument<string>;
318
+ albumId: RawTransactionArgument<string>;
319
+ }
320
+ export interface NewAppleMusicAlbumOptions {
321
+ package?: string;
322
+ arguments: NewAppleMusicAlbumArguments | [
323
+ storefront: RawTransactionArgument<string>,
324
+ albumId: RawTransactionArgument<string>
325
+ ];
326
+ }
327
+ /**
328
+ * Builds an Apple Music album link (no track selector). Aborts if `storefront` or
329
+ * `album_id` is empty or exceeds its maximum length.
330
+ */
331
+ export function newAppleMusicAlbum(options: NewAppleMusicAlbumOptions) {
332
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
333
+ const argumentsTypes = [
334
+ '0x1::string::String',
335
+ '0x1::string::String'
336
+ ] satisfies (string | null)[];
337
+ const parameterNames = ["storefront", "albumId"];
338
+ return (tx: Transaction) => tx.moveCall({
339
+ package: packageAddress,
340
+ module: 'release_dsp_link',
341
+ function: 'new_apple_music_album',
342
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
343
+ });
344
+ }
345
+ export interface NewAppleMusicTrackArguments {
346
+ storefront: RawTransactionArgument<string>;
347
+ albumId: RawTransactionArgument<string>;
348
+ trackId: RawTransactionArgument<string>;
349
+ }
350
+ export interface NewAppleMusicTrackOptions {
351
+ package?: string;
352
+ arguments: NewAppleMusicTrackArguments | [
353
+ storefront: RawTransactionArgument<string>,
354
+ albumId: RawTransactionArgument<string>,
355
+ trackId: RawTransactionArgument<string>
356
+ ];
357
+ }
358
+ /**
359
+ * Builds an Apple Music track link — addresses `track_id` within its `album_id`.
360
+ * Aborts if any identifier is empty or exceeds its maximum length.
361
+ */
362
+ export function newAppleMusicTrack(options: NewAppleMusicTrackOptions) {
363
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
364
+ const argumentsTypes = [
365
+ '0x1::string::String',
366
+ '0x1::string::String',
367
+ '0x1::string::String'
368
+ ] satisfies (string | null)[];
369
+ const parameterNames = ["storefront", "albumId", "trackId"];
370
+ return (tx: Transaction) => tx.moveCall({
371
+ package: packageAddress,
372
+ module: 'release_dsp_link',
373
+ function: 'new_apple_music_track',
374
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
375
+ });
376
+ }
377
+ export interface NewAmazonMusicAlbumArguments {
378
+ albumId: RawTransactionArgument<string>;
379
+ }
380
+ export interface NewAmazonMusicAlbumOptions {
381
+ package?: string;
382
+ arguments: NewAmazonMusicAlbumArguments | [
383
+ albumId: RawTransactionArgument<string>
384
+ ];
385
+ }
386
+ /**
387
+ * Builds an Amazon Music album link (no track selector). Aborts if `album_id` is
388
+ * empty or exceeds `MAX_AMAZON_MUSIC_ALBUM_ID_LENGTH`.
389
+ */
390
+ export function newAmazonMusicAlbum(options: NewAmazonMusicAlbumOptions) {
391
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
392
+ const argumentsTypes = [
393
+ '0x1::string::String'
394
+ ] satisfies (string | null)[];
395
+ const parameterNames = ["albumId"];
396
+ return (tx: Transaction) => tx.moveCall({
397
+ package: packageAddress,
398
+ module: 'release_dsp_link',
399
+ function: 'new_amazon_music_album',
400
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
401
+ });
402
+ }
403
+ export interface NewAmazonMusicTrackArguments {
404
+ albumId: RawTransactionArgument<string>;
405
+ trackId: RawTransactionArgument<string>;
406
+ }
407
+ export interface NewAmazonMusicTrackOptions {
408
+ package?: string;
409
+ arguments: NewAmazonMusicTrackArguments | [
410
+ albumId: RawTransactionArgument<string>,
411
+ trackId: RawTransactionArgument<string>
412
+ ];
413
+ }
414
+ /**
415
+ * Builds an Amazon Music track link — addresses `track_id` within its `album_id`.
416
+ * Aborts if either ASIN is empty or exceeds its maximum length.
417
+ */
418
+ export function newAmazonMusicTrack(options: NewAmazonMusicTrackOptions) {
419
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
420
+ const argumentsTypes = [
421
+ '0x1::string::String',
422
+ '0x1::string::String'
423
+ ] satisfies (string | null)[];
424
+ const parameterNames = ["albumId", "trackId"];
425
+ return (tx: Transaction) => tx.moveCall({
426
+ package: packageAddress,
427
+ module: 'release_dsp_link',
428
+ function: 'new_amazon_music_track',
429
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
430
+ });
431
+ }
432
+ export interface NewBandcampArguments {
433
+ subdomain: RawTransactionArgument<string>;
434
+ slug: RawTransactionArgument<string>;
435
+ }
436
+ export interface NewBandcampOptions {
437
+ package?: string;
438
+ arguments: NewBandcampArguments | [
439
+ subdomain: RawTransactionArgument<string>,
440
+ slug: RawTransactionArgument<string>
441
+ ];
442
+ }
443
+ /**
444
+ * Builds a Bandcamp link. Aborts if `subdomain` or `slug` is empty or exceeds its
445
+ * maximum length.
446
+ */
447
+ export function newBandcamp(options: NewBandcampOptions) {
448
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
449
+ const argumentsTypes = [
450
+ '0x1::string::String',
451
+ '0x1::string::String'
452
+ ] satisfies (string | null)[];
453
+ const parameterNames = ["subdomain", "slug"];
454
+ return (tx: Transaction) => tx.moveCall({
455
+ package: packageAddress,
456
+ module: 'release_dsp_link',
457
+ function: 'new_bandcamp',
458
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
459
+ });
460
+ }
461
+ export interface NewDeezerArguments {
462
+ id: RawTransactionArgument<string>;
463
+ }
464
+ export interface NewDeezerOptions {
465
+ package?: string;
466
+ arguments: NewDeezerArguments | [
467
+ id: RawTransactionArgument<string>
468
+ ];
469
+ }
470
+ /**
471
+ * Builds a Deezer link from its id. Aborts if `id` is empty or exceeds
472
+ * `MAX_DEEZER_ID_LENGTH`.
473
+ */
474
+ export function newDeezer(options: NewDeezerOptions) {
475
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
476
+ const argumentsTypes = [
477
+ '0x1::string::String'
478
+ ] satisfies (string | null)[];
479
+ const parameterNames = ["id"];
480
+ return (tx: Transaction) => tx.moveCall({
481
+ package: packageAddress,
482
+ module: 'release_dsp_link',
483
+ function: 'new_deezer',
484
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
485
+ });
486
+ }
487
+ export interface NewSoundcloudArguments {
488
+ user: RawTransactionArgument<string>;
489
+ slug: RawTransactionArgument<string>;
490
+ }
491
+ export interface NewSoundcloudOptions {
492
+ package?: string;
493
+ arguments: NewSoundcloudArguments | [
494
+ user: RawTransactionArgument<string>,
495
+ slug: RawTransactionArgument<string>
496
+ ];
497
+ }
498
+ /**
499
+ * Builds a SoundCloud link. Aborts if `user` or `slug` is empty or exceeds its
500
+ * maximum length.
501
+ */
502
+ export function newSoundcloud(options: NewSoundcloudOptions) {
503
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
504
+ const argumentsTypes = [
505
+ '0x1::string::String',
506
+ '0x1::string::String'
507
+ ] satisfies (string | null)[];
508
+ const parameterNames = ["user", "slug"];
509
+ return (tx: Transaction) => tx.moveCall({
510
+ package: packageAddress,
511
+ module: 'release_dsp_link',
512
+ function: 'new_soundcloud',
513
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
514
+ });
515
+ }
516
+ export interface NewTidalArguments {
517
+ id: RawTransactionArgument<string>;
518
+ }
519
+ export interface NewTidalOptions {
520
+ package?: string;
521
+ arguments: NewTidalArguments | [
522
+ id: RawTransactionArgument<string>
523
+ ];
524
+ }
525
+ /**
526
+ * Builds a Tidal link from its id. Aborts if `id` is empty or exceeds
527
+ * `MAX_TIDAL_ID_LENGTH`.
528
+ */
529
+ export function newTidal(options: NewTidalOptions) {
530
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
531
+ const argumentsTypes = [
532
+ '0x1::string::String'
533
+ ] satisfies (string | null)[];
534
+ const parameterNames = ["id"];
535
+ return (tx: Transaction) => tx.moveCall({
536
+ package: packageAddress,
537
+ module: 'release_dsp_link',
538
+ function: 'new_tidal',
539
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
540
+ });
541
+ }
542
+ export interface NewYoutubeMusicArguments {
543
+ id: RawTransactionArgument<string>;
544
+ }
545
+ export interface NewYoutubeMusicOptions {
546
+ package?: string;
547
+ arguments: NewYoutubeMusicArguments | [
548
+ id: RawTransactionArgument<string>
549
+ ];
550
+ }
551
+ /**
552
+ * Builds a YouTube Music link from its id. Aborts if `id` is empty or exceeds
553
+ * `MAX_YOUTUBE_MUSIC_ID_LENGTH`.
554
+ */
555
+ export function newYoutubeMusic(options: NewYoutubeMusicOptions) {
556
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
557
+ const argumentsTypes = [
558
+ '0x1::string::String'
559
+ ] satisfies (string | null)[];
560
+ const parameterNames = ["id"];
561
+ return (tx: Transaction) => tx.moveCall({
562
+ package: packageAddress,
563
+ module: 'release_dsp_link',
564
+ function: 'new_youtube_music',
565
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
566
+ });
567
+ }
568
+ export interface SetReleaseLinkArguments {
569
+ self: RawTransactionArgument<string>;
570
+ cap: RawTransactionArgument<string>;
571
+ link: TransactionArgument;
572
+ }
573
+ export interface SetReleaseLinkOptions {
574
+ package?: string;
575
+ arguments: SetReleaseLinkArguments | [
576
+ self: RawTransactionArgument<string>,
577
+ cap: RawTransactionArgument<string>,
578
+ link: TransactionArgument
579
+ ];
580
+ }
581
+ /**
582
+ * Sets (or replaces) a DSP's album-level link. The platform is derived from `link`
583
+ * itself. Per-track links are untouched.
584
+ */
585
+ export function setReleaseLink(options: SetReleaseLinkOptions) {
586
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
587
+ const argumentsTypes = [
588
+ null,
589
+ null,
590
+ null
591
+ ] satisfies (string | null)[];
592
+ const parameterNames = ["self", "cap", "link"];
593
+ return (tx: Transaction) => tx.moveCall({
594
+ package: packageAddress,
595
+ module: 'release_dsp_link',
596
+ function: 'set_release_link',
597
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
598
+ });
599
+ }
600
+ export interface ClearReleaseLinkArguments {
601
+ self: RawTransactionArgument<string>;
602
+ cap: RawTransactionArgument<string>;
603
+ platform: RawTransactionArgument<number>;
604
+ }
605
+ export interface ClearReleaseLinkOptions {
606
+ package?: string;
607
+ arguments: ClearReleaseLinkArguments | [
608
+ self: RawTransactionArgument<string>,
609
+ cap: RawTransactionArgument<string>,
610
+ platform: RawTransactionArgument<number>
611
+ ];
612
+ }
613
+ /** Clears a DSP's album-level link. No-op if unset. */
614
+ export function clearReleaseLink(options: ClearReleaseLinkOptions) {
615
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
616
+ const argumentsTypes = [
617
+ null,
618
+ null,
619
+ 'u8'
620
+ ] satisfies (string | null)[];
621
+ const parameterNames = ["self", "cap", "platform"];
622
+ return (tx: Transaction) => tx.moveCall({
623
+ package: packageAddress,
624
+ module: 'release_dsp_link',
625
+ function: 'clear_release_link',
626
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
627
+ });
628
+ }
629
+ export interface SetTrackLinkArguments {
630
+ self: RawTransactionArgument<string>;
631
+ cap: RawTransactionArgument<string>;
632
+ trackIndex: RawTransactionArgument<number | bigint>;
633
+ link: TransactionArgument;
634
+ }
635
+ export interface SetTrackLinkOptions {
636
+ package?: string;
637
+ arguments: SetTrackLinkArguments | [
638
+ self: RawTransactionArgument<string>,
639
+ cap: RawTransactionArgument<string>,
640
+ trackIndex: RawTransactionArgument<number | bigint>,
641
+ link: TransactionArgument
642
+ ];
643
+ }
644
+ /**
645
+ * Sets (or replaces) a DSP's link for one track (by tracklist index). The platform
646
+ * is derived from `link` itself. Aborts if the index is out of range.
647
+ */
648
+ export function setTrackLink(options: SetTrackLinkOptions) {
649
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
650
+ const argumentsTypes = [
651
+ null,
652
+ null,
653
+ 'u64',
654
+ null
655
+ ] satisfies (string | null)[];
656
+ const parameterNames = ["self", "cap", "trackIndex", "link"];
657
+ return (tx: Transaction) => tx.moveCall({
658
+ package: packageAddress,
659
+ module: 'release_dsp_link',
660
+ function: 'set_track_link',
661
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
662
+ });
663
+ }
664
+ export interface ClearTrackLinkArguments {
665
+ self: RawTransactionArgument<string>;
666
+ cap: RawTransactionArgument<string>;
667
+ platform: RawTransactionArgument<number>;
668
+ trackIndex: RawTransactionArgument<number | bigint>;
669
+ }
670
+ export interface ClearTrackLinkOptions {
671
+ package?: string;
672
+ arguments: ClearTrackLinkArguments | [
673
+ self: RawTransactionArgument<string>,
674
+ cap: RawTransactionArgument<string>,
675
+ platform: RawTransactionArgument<number>,
676
+ trackIndex: RawTransactionArgument<number | bigint>
677
+ ];
678
+ }
679
+ /**
680
+ * Clears a DSP's link for one track (the track falls back to the album-level
681
+ * link). No-op if no per-track array exists for this platform. Aborts if the index
682
+ * is out of range (when an array exists).
683
+ */
684
+ export function clearTrackLink(options: ClearTrackLinkOptions) {
685
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
686
+ const argumentsTypes = [
687
+ null,
688
+ null,
689
+ 'u8',
690
+ 'u64'
691
+ ] satisfies (string | null)[];
692
+ const parameterNames = ["self", "cap", "platform", "trackIndex"];
693
+ return (tx: Transaction) => tx.moveCall({
694
+ package: packageAddress,
695
+ module: 'release_dsp_link',
696
+ function: 'clear_track_link',
697
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
698
+ });
699
+ }
700
+ export interface ClearTrackLinksArguments {
701
+ self: RawTransactionArgument<string>;
702
+ cap: RawTransactionArgument<string>;
703
+ platform: RawTransactionArgument<number>;
704
+ }
705
+ export interface ClearTrackLinksOptions {
706
+ package?: string;
707
+ arguments: ClearTrackLinksArguments | [
708
+ self: RawTransactionArgument<string>,
709
+ cap: RawTransactionArgument<string>,
710
+ platform: RawTransactionArgument<number>
711
+ ];
712
+ }
713
+ /** Removes a DSP's entire per-track array. No-op if absent. */
714
+ export function clearTrackLinks(options: ClearTrackLinksOptions) {
715
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
716
+ const argumentsTypes = [
717
+ null,
718
+ null,
719
+ 'u8'
720
+ ] satisfies (string | null)[];
721
+ const parameterNames = ["self", "cap", "platform"];
722
+ return (tx: Transaction) => tx.moveCall({
723
+ package: packageAddress,
724
+ module: 'release_dsp_link',
725
+ function: 'clear_track_links',
726
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
727
+ });
728
+ }
729
+ export interface HasReleaseLinkArguments {
730
+ self: RawTransactionArgument<string>;
731
+ platform: RawTransactionArgument<number>;
732
+ }
733
+ export interface HasReleaseLinkOptions {
734
+ package?: string;
735
+ arguments: HasReleaseLinkArguments | [
736
+ self: RawTransactionArgument<string>,
737
+ platform: RawTransactionArgument<number>
738
+ ];
739
+ }
740
+ /** Whether a DSP's album-level link is set. */
741
+ export function hasReleaseLink(options: HasReleaseLinkOptions) {
742
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
743
+ const argumentsTypes = [
744
+ null,
745
+ 'u8'
746
+ ] satisfies (string | null)[];
747
+ const parameterNames = ["self", "platform"];
748
+ return (tx: Transaction) => tx.moveCall({
749
+ package: packageAddress,
750
+ module: 'release_dsp_link',
751
+ function: 'has_release_link',
752
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
753
+ });
754
+ }
755
+ export interface ReleaseLinkArguments {
756
+ self: RawTransactionArgument<string>;
757
+ platform: RawTransactionArgument<number>;
758
+ }
759
+ export interface ReleaseLinkOptions {
760
+ package?: string;
761
+ arguments: ReleaseLinkArguments | [
762
+ self: RawTransactionArgument<string>,
763
+ platform: RawTransactionArgument<number>
764
+ ];
765
+ }
766
+ /** A DSP's album-level link, if set. */
767
+ export function releaseLink(options: ReleaseLinkOptions) {
768
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
769
+ const argumentsTypes = [
770
+ null,
771
+ 'u8'
772
+ ] satisfies (string | null)[];
773
+ const parameterNames = ["self", "platform"];
774
+ return (tx: Transaction) => tx.moveCall({
775
+ package: packageAddress,
776
+ module: 'release_dsp_link',
777
+ function: 'release_link',
778
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
779
+ });
780
+ }
781
+ export interface TrackLinkArguments {
782
+ self: RawTransactionArgument<string>;
783
+ platform: RawTransactionArgument<number>;
784
+ trackIndex: RawTransactionArgument<number | bigint>;
785
+ }
786
+ export interface TrackLinkOptions {
787
+ package?: string;
788
+ arguments: TrackLinkArguments | [
789
+ self: RawTransactionArgument<string>,
790
+ platform: RawTransactionArgument<number>,
791
+ trackIndex: RawTransactionArgument<number | bigint>
792
+ ];
793
+ }
794
+ /**
795
+ * A DSP's link for one track, if set. An unset slot — or no array at all — yields
796
+ * `none`, meaning the track inherits the album-level link. Aborts if the index is
797
+ * out of range (when an array exists).
798
+ */
799
+ export function trackLink(options: TrackLinkOptions) {
800
+ const packageAddress = options.package ?? '@local-pkg/release_dsp_link';
801
+ const argumentsTypes = [
802
+ null,
803
+ 'u8',
804
+ 'u64'
805
+ ] satisfies (string | null)[];
806
+ const parameterNames = ["self", "platform", "trackIndex"];
807
+ return (tx: Transaction) => tx.moveCall({
808
+ package: packageAddress,
809
+ module: 'release_dsp_link',
810
+ function: 'track_link',
811
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
812
+ });
813
+ }