@misofm/sdk 0.9.0 → 0.10.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 (275) hide show
  1. package/README.md +88 -56
  2. package/dist/client.d.ts +126 -18
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +210 -44
  5. package/dist/client.js.map +1 -1
  6. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +205 -0
  7. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts.map +1 -0
  8. package/dist/contracts/composition_routed_stake/composition_routed_stake.js +184 -0
  9. package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -0
  10. package/dist/contracts/composition_routed_stake/witness.d.ts +7 -0
  11. package/dist/contracts/composition_routed_stake/witness.d.ts.map +1 -0
  12. package/dist/contracts/composition_routed_stake/witness.js +9 -0
  13. package/dist/contracts/composition_routed_stake/witness.js.map +1 -0
  14. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +89 -28
  15. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -1
  16. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +84 -23
  17. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -1
  18. package/dist/contracts/composition_royalty_pool/witness.d.ts +6 -0
  19. package/dist/contracts/composition_royalty_pool/witness.d.ts.map +1 -0
  20. package/dist/contracts/composition_royalty_pool/witness.js +8 -0
  21. package/dist/contracts/composition_royalty_pool/witness.js.map +1 -0
  22. package/dist/contracts/genre/genre.d.ts +96 -0
  23. package/dist/contracts/genre/genre.d.ts.map +1 -0
  24. package/dist/contracts/genre/genre.js +107 -0
  25. package/dist/contracts/genre/genre.js.map +1 -0
  26. package/dist/contracts/recording_advisory/recording_advisory.d.ts +194 -0
  27. package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -0
  28. package/dist/contracts/recording_advisory/recording_advisory.js +204 -0
  29. package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -0
  30. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +6 -0
  31. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +1 -0
  32. package/dist/contracts/recording_language/deps/language_code/language_code.js +8 -0
  33. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +1 -0
  34. package/dist/contracts/recording_language/recording_language.d.ts +152 -0
  35. package/dist/contracts/recording_language/recording_language.d.ts.map +1 -0
  36. package/dist/contracts/recording_language/recording_language.js +149 -0
  37. package/dist/contracts/recording_language/recording_language.js.map +1 -0
  38. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts +52 -0
  39. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts.map +1 -0
  40. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js +37 -0
  41. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js.map +1 -0
  42. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +131 -0
  43. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -0
  44. package/dist/contracts/recording_master_reference/recording_master_reference.js +121 -0
  45. package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -0
  46. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts +52 -0
  47. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts.map +1 -0
  48. package/dist/contracts/recording_preview/deps/ori/walrus_data.js +37 -0
  49. package/dist/contracts/recording_preview/deps/ori/walrus_data.js.map +1 -0
  50. package/dist/contracts/recording_preview/recording_preview.d.ts +104 -0
  51. package/dist/contracts/recording_preview/recording_preview.d.ts.map +1 -0
  52. package/dist/contracts/recording_preview/recording_preview.js +94 -0
  53. package/dist/contracts/recording_preview/recording_preview.js.map +1 -0
  54. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +90 -28
  55. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -1
  56. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +84 -23
  57. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -1
  58. package/dist/contracts/recording_royalty_pool/witness.d.ts +6 -0
  59. package/dist/contracts/recording_royalty_pool/witness.d.ts.map +1 -0
  60. package/dist/contracts/recording_royalty_pool/witness.js +8 -0
  61. package/dist/contracts/recording_royalty_pool/witness.js.map +1 -0
  62. package/dist/contracts/release_description/release_description.d.ts +112 -0
  63. package/dist/contracts/release_description/release_description.d.ts.map +1 -0
  64. package/dist/contracts/release_description/release_description.js +123 -0
  65. package/dist/contracts/release_description/release_description.js.map +1 -0
  66. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +644 -0
  67. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -0
  68. package/dist/contracts/release_dsp_link/release_dsp_link.js +556 -0
  69. package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -0
  70. package/dist/contracts/release_genre/deps/per_track/per_track.d.ts +33 -0
  71. package/dist/contracts/release_genre/deps/per_track/per_track.d.ts.map +1 -0
  72. package/dist/contracts/release_genre/deps/per_track/per_track.js +32 -0
  73. package/dist/contracts/release_genre/deps/per_track/per_track.js.map +1 -0
  74. package/dist/contracts/release_genre/release_genre.d.ts +193 -0
  75. package/dist/contracts/release_genre/release_genre.d.ts.map +1 -0
  76. package/dist/contracts/release_genre/release_genre.js +207 -0
  77. package/dist/contracts/release_genre/release_genre.js.map +1 -0
  78. package/dist/contracts/release_kind/release_kind.d.ts +98 -0
  79. package/dist/contracts/release_kind/release_kind.d.ts.map +1 -0
  80. package/dist/contracts/release_kind/release_kind.js +109 -0
  81. package/dist/contracts/release_kind/release_kind.js.map +1 -0
  82. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts +106 -0
  83. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts.map +1 -0
  84. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js +113 -0
  85. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -0
  86. package/dist/contracts/release_revenue_distributor/witness.d.ts +7 -0
  87. package/dist/contracts/release_revenue_distributor/witness.d.ts.map +1 -0
  88. package/dist/contracts/release_revenue_distributor/witness.js +9 -0
  89. package/dist/contracts/release_revenue_distributor/witness.js.map +1 -0
  90. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.d.ts +52 -0
  91. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.d.ts.map +1 -0
  92. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.js +37 -0
  93. package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.js.map +1 -0
  94. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.d.ts +91 -0
  95. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.d.ts.map +1 -0
  96. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.js +91 -0
  97. package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.js.map +1 -0
  98. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +54 -0
  99. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts.map +1 -0
  100. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js +37 -0
  101. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js.map +1 -0
  102. package/dist/contracts/routed_stake/deps/std/type_name.d.ts +18 -0
  103. package/dist/contracts/routed_stake/deps/std/type_name.d.ts.map +1 -0
  104. package/dist/contracts/routed_stake/deps/std/type_name.js +20 -0
  105. package/dist/contracts/routed_stake/deps/std/type_name.js.map +1 -0
  106. package/dist/contracts/routed_stake/deps/sui/balance.d.ts +13 -0
  107. package/dist/contracts/routed_stake/deps/sui/balance.d.ts.map +1 -0
  108. package/dist/contracts/routed_stake/deps/sui/balance.js +15 -0
  109. package/dist/contracts/routed_stake/deps/sui/balance.js.map +1 -0
  110. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts +37 -0
  111. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts.map +1 -0
  112. package/dist/contracts/routed_stake/deps/sui/vec_map.js +28 -0
  113. package/dist/contracts/routed_stake/deps/sui/vec_map.js.map +1 -0
  114. package/dist/contracts/routed_stake/routed_stake.d.ts +356 -0
  115. package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -0
  116. package/dist/contracts/routed_stake/routed_stake.js +311 -0
  117. package/dist/contracts/routed_stake/routed_stake.js.map +1 -0
  118. package/dist/contracts/royalty_pool/pool.d.ts +27 -17
  119. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -1
  120. package/dist/contracts/royalty_pool/pool.js +26 -17
  121. package/dist/contracts/royalty_pool/pool.js.map +1 -1
  122. package/dist/contracts/vault/deps/sui/bag.d.ts +35 -0
  123. package/dist/contracts/vault/deps/sui/bag.d.ts.map +1 -0
  124. package/dist/contracts/vault/deps/sui/bag.js +37 -0
  125. package/dist/contracts/vault/deps/sui/bag.js.map +1 -0
  126. package/dist/contracts/vault/deps/sui/borrow.d.ts +20 -0
  127. package/dist/contracts/vault/deps/sui/borrow.d.ts.map +1 -0
  128. package/dist/contracts/vault/deps/sui/borrow.js +21 -0
  129. package/dist/contracts/vault/deps/sui/borrow.js.map +1 -0
  130. package/dist/contracts/vault/vault.d.ts +276 -0
  131. package/dist/contracts/vault/vault.d.ts.map +1 -0
  132. package/dist/contracts/vault/vault.js +274 -0
  133. package/dist/contracts/vault/vault.js.map +1 -0
  134. package/dist/contracts.d.ts +14 -2
  135. package/dist/contracts.d.ts.map +1 -1
  136. package/dist/contracts.js +16 -7
  137. package/dist/contracts.js.map +1 -1
  138. package/dist/cover.d.ts +17 -3
  139. package/dist/cover.d.ts.map +1 -1
  140. package/dist/cover.js +43 -20
  141. package/dist/cover.js.map +1 -1
  142. package/dist/credits.d.ts +31 -12
  143. package/dist/credits.d.ts.map +1 -1
  144. package/dist/credits.js +41 -25
  145. package/dist/credits.js.map +1 -1
  146. package/dist/deployments.d.ts +31 -57
  147. package/dist/deployments.d.ts.map +1 -1
  148. package/dist/deployments.js +5 -53
  149. package/dist/deployments.js.map +1 -1
  150. package/dist/index.d.ts +4 -2
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +6 -5
  153. package/dist/index.js.map +1 -1
  154. package/dist/pressing.d.ts +8 -7
  155. package/dist/pressing.d.ts.map +1 -1
  156. package/dist/pressing.js +91 -32
  157. package/dist/pressing.js.map +1 -1
  158. package/dist/read/artist.js +3 -3
  159. package/dist/read/artist.js.map +1 -1
  160. package/dist/read/catalog.d.ts +14 -9
  161. package/dist/read/catalog.d.ts.map +1 -1
  162. package/dist/read/catalog.js +71 -37
  163. package/dist/read/catalog.js.map +1 -1
  164. package/dist/read/client.d.ts +4 -2
  165. package/dist/read/client.d.ts.map +1 -1
  166. package/dist/read/client.js +15 -4
  167. package/dist/read/client.js.map +1 -1
  168. package/dist/read/config.d.ts +14 -11
  169. package/dist/read/config.d.ts.map +1 -1
  170. package/dist/read/config.js +10 -37
  171. package/dist/read/config.js.map +1 -1
  172. package/dist/read/index.d.ts +2 -2
  173. package/dist/read/index.d.ts.map +1 -1
  174. package/dist/read/index.js +1 -1
  175. package/dist/read/index.js.map +1 -1
  176. package/dist/read/receipts.d.ts +24 -7
  177. package/dist/read/receipts.d.ts.map +1 -1
  178. package/dist/read/receipts.js +78 -25
  179. package/dist/read/receipts.js.map +1 -1
  180. package/dist/read/types.d.ts +43 -25
  181. package/dist/read/types.d.ts.map +1 -1
  182. package/dist/read/types.js +2 -2
  183. package/dist/read/types.js.map +1 -1
  184. package/dist/recording-extensions.d.ts +37 -0
  185. package/dist/recording-extensions.d.ts.map +1 -0
  186. package/dist/recording-extensions.js +61 -0
  187. package/dist/recording-extensions.js.map +1 -0
  188. package/dist/release-extensions.d.ts +92 -0
  189. package/dist/release-extensions.d.ts.map +1 -0
  190. package/dist/release-extensions.js +175 -0
  191. package/dist/release-extensions.js.map +1 -0
  192. package/dist/release-graph.d.ts +17 -26
  193. package/dist/release-graph.d.ts.map +1 -1
  194. package/dist/release-graph.js +55 -49
  195. package/dist/release-graph.js.map +1 -1
  196. package/dist/transactions.d.ts +43 -24
  197. package/dist/transactions.d.ts.map +1 -1
  198. package/dist/transactions.js +48 -27
  199. package/dist/transactions.js.map +1 -1
  200. package/dist/vault.d.ts +268 -0
  201. package/dist/vault.d.ts.map +1 -0
  202. package/dist/vault.js +389 -0
  203. package/dist/vault.js.map +1 -0
  204. package/package.json +17 -11
  205. package/src/client.ts +428 -61
  206. package/src/contracts/composition_routed_stake/composition_routed_stake.ts +346 -0
  207. package/src/contracts/composition_routed_stake/witness.ts +11 -0
  208. package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +151 -35
  209. package/src/contracts/composition_royalty_pool/witness.ts +7 -0
  210. package/src/contracts/genre/genre.ts +151 -0
  211. package/src/contracts/recording_advisory/recording_advisory.ts +315 -0
  212. package/src/contracts/recording_language/deps/language_code/language_code.ts +7 -0
  213. package/src/contracts/recording_language/recording_language.ts +237 -0
  214. package/src/contracts/recording_master_reference/deps/ori/walrus_data.ts +36 -0
  215. package/src/contracts/recording_master_reference/recording_master_reference.ts +181 -0
  216. package/src/contracts/recording_preview/deps/ori/walrus_data.ts +36 -0
  217. package/src/contracts/recording_preview/recording_preview.ts +154 -0
  218. package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +152 -35
  219. package/src/contracts/recording_royalty_pool/witness.ts +7 -0
  220. package/src/contracts/release_description/release_description.ts +167 -0
  221. package/src/contracts/release_dsp_link/release_dsp_link.ts +813 -0
  222. package/src/contracts/release_genre/deps/per_track/per_track.ts +36 -0
  223. package/src/contracts/release_genre/release_genre.ts +314 -0
  224. package/src/contracts/release_kind/release_kind.ts +153 -0
  225. package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +178 -0
  226. package/src/contracts/release_revenue_distributor/witness.ts +11 -0
  227. package/src/contracts/release_snapshot_bundle/deps/ori/walrus_data.ts +36 -0
  228. package/src/contracts/release_snapshot_bundle/release_snapshot_bundle.ts +124 -0
  229. package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +39 -0
  230. package/src/contracts/routed_stake/deps/std/type_name.ts +22 -0
  231. package/src/contracts/routed_stake/deps/sui/balance.ts +17 -0
  232. package/src/contracts/routed_stake/deps/sui/vec_map.ts +33 -0
  233. package/src/contracts/routed_stake/routed_stake.ts +508 -0
  234. package/src/contracts/royalty_pool/pool.ts +34 -24
  235. package/src/contracts/vault/deps/sui/bag.ts +39 -0
  236. package/src/contracts/vault/deps/sui/borrow.ts +25 -0
  237. package/src/contracts/vault/vault.ts +454 -0
  238. package/src/contracts.ts +17 -9
  239. package/src/cover.ts +62 -37
  240. package/src/credits.ts +64 -51
  241. package/src/deployments.ts +36 -97
  242. package/src/index.ts +11 -5
  243. package/src/pressing.ts +135 -39
  244. package/src/read/artist.ts +3 -3
  245. package/src/read/catalog.ts +99 -44
  246. package/src/read/client.ts +20 -4
  247. package/src/read/config.ts +23 -49
  248. package/src/read/index.ts +3 -1
  249. package/src/read/receipts.ts +103 -26
  250. package/src/read/types.ts +44 -27
  251. package/src/recording-extensions.ts +102 -0
  252. package/src/release-extensions.ts +286 -0
  253. package/src/release-graph.ts +68 -81
  254. package/src/transactions.ts +79 -53
  255. package/src/vault.ts +777 -0
  256. package/dist/contracts/miso_drop/drop.d.ts +0 -550
  257. package/dist/contracts/miso_drop/drop.d.ts.map +0 -1
  258. package/dist/contracts/miso_drop/drop.js +0 -523
  259. package/dist/contracts/miso_drop/drop.js.map +0 -1
  260. package/dist/contracts/release_registry/release_registry.d.ts +0 -114
  261. package/dist/contracts/release_registry/release_registry.d.ts.map +0 -1
  262. package/dist/contracts/release_registry/release_registry.js +0 -119
  263. package/dist/contracts/release_registry/release_registry.js.map +0 -1
  264. package/dist/drop.d.ts +0 -127
  265. package/dist/drop.d.ts.map +0 -1
  266. package/dist/drop.js +0 -202
  267. package/dist/drop.js.map +0 -1
  268. package/dist/extensions/royalty-pool.d.ts +0 -32
  269. package/dist/extensions/royalty-pool.d.ts.map +0 -1
  270. package/dist/extensions/royalty-pool.js +0 -33
  271. package/dist/extensions/royalty-pool.js.map +0 -1
  272. package/src/contracts/miso_drop/drop.ts +0 -798
  273. package/src/contracts/release_registry/release_registry.ts +0 -160
  274. package/src/drop.ts +0 -376
  275. package/src/extensions/royalty-pool.ts +0 -90
@@ -0,0 +1,92 @@
1
+ import type { TxThunk } from "./transactions.ts";
2
+ import { type AdminCapAuthority, type U64Input } from "./vault.ts";
3
+ type ReleaseAuthorityInput = {
4
+ readonly authority: AdminCapAuthority;
5
+ readonly releaseAdminCapId?: never;
6
+ } | {
7
+ readonly authority?: never;
8
+ readonly releaseAdminCapId: string;
9
+ };
10
+ interface ReleaseExtensionTargetBase {
11
+ releaseId: string;
12
+ }
13
+ export type ReleaseExtensionTarget = ReleaseExtensionTargetBase & ReleaseAuthorityInput;
14
+ export type SetReleaseKindParams = ReleaseExtensionTarget & {
15
+ kind: string;
16
+ releaseKindPackageId: string;
17
+ };
18
+ /** Attach the release's self-declared kind (for example "EP" or "Mixtape"). */
19
+ export declare function setReleaseKind(p: SetReleaseKindParams): TxThunk;
20
+ export type SetReleaseDescriptionParams = ReleaseExtensionTarget & {
21
+ description: string;
22
+ releaseDescriptionPackageId: string;
23
+ };
24
+ /** Attach the release's editorial description. */
25
+ export declare function setReleaseDescription(p: SetReleaseDescriptionParams): TxThunk;
26
+ /** Validate the canonical on-chain genre vocabulary spelling. */
27
+ export declare function assertCanonicalGenreName(name: string): void;
28
+ /** Derive the immutable Genre object id for a canonical vocabulary name. */
29
+ export declare function deriveGenreId(genreRegistryId: string, genrePackageId: string, canonicalName: string): string;
30
+ export interface TrackGenreAssignment {
31
+ trackIndex: U64Input;
32
+ genreId: string;
33
+ }
34
+ export type SetReleaseGenresParams = ReleaseExtensionTarget & {
35
+ primaryGenreId: string;
36
+ secondaryGenreIds?: readonly string[];
37
+ trackPrimaryGenres?: readonly TrackGenreAssignment[];
38
+ releaseGenrePackageId: string;
39
+ };
40
+ /** Attach primary/secondary release genres and optional per-track overrides. */
41
+ export declare function setReleaseGenres(p: SetReleaseGenresParams): TxThunk;
42
+ export type DspLink = {
43
+ platform: "Spotify";
44
+ id: string;
45
+ } | {
46
+ platform: "AppleMusic";
47
+ storefront: string;
48
+ albumId: string;
49
+ trackId?: string;
50
+ } | {
51
+ platform: "AmazonMusic";
52
+ albumId: string;
53
+ trackId?: string;
54
+ } | {
55
+ platform: "Bandcamp";
56
+ subdomain: string;
57
+ slug: string;
58
+ } | {
59
+ platform: "Deezer";
60
+ id: string;
61
+ } | {
62
+ platform: "SoundCloud";
63
+ user: string;
64
+ slug: string;
65
+ } | {
66
+ platform: "Tidal";
67
+ id: string;
68
+ } | {
69
+ platform: "YouTubeMusic";
70
+ id: string;
71
+ };
72
+ export interface TrackDspLink {
73
+ trackIndex: U64Input;
74
+ link: DspLink;
75
+ }
76
+ export type SetReleaseDspLinksParams = ReleaseExtensionTarget & {
77
+ releaseLinks?: readonly DspLink[];
78
+ trackLinks?: readonly TrackDspLink[];
79
+ releaseDspLinkPackageId: string;
80
+ };
81
+ /** Attach release-level and per-track DSP links. */
82
+ export declare function setReleaseDspLinks(p: SetReleaseDspLinksParams): TxThunk;
83
+ export type SetReleaseSnapshotBundleParams = ReleaseExtensionTarget & {
84
+ /** Plaintext outer Walrus quilt blob id, as the on-chain u256 value. */
85
+ blobId: bigint | string;
86
+ releaseSnapshotBundlePackageId: string;
87
+ oriPackageId: string;
88
+ };
89
+ /** Attach the write-once release snapshot-bundle pointer. */
90
+ export declare function setReleaseSnapshotBundle(p: SetReleaseSnapshotBundleParams): TxThunk;
91
+ export {};
92
+ //# sourceMappingURL=release-extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-extensions.d.ts","sourceRoot":"","sources":["../src/release-extensions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // First-party metadata attached to a protocol Release. The JSON/CLI release
4
+ // intent aggregates these concerns, but every value is written by its own
5
+ // independently deployed extension package.
6
+ import { deriveDynamicFieldID } from "@mysten/sui/utils";
7
+ import * as genre from "./contracts/genre/genre.js";
8
+ import * as releaseDescription from "./contracts/release_description/release_description.js";
9
+ import * as releaseDspLink from "./contracts/release_dsp_link/release_dsp_link.js";
10
+ import * as releaseGenre from "./contracts/release_genre/release_genre.js";
11
+ import * as releaseKind from "./contracts/release_kind/release_kind.js";
12
+ import * as releaseSnapshotBundle from "./contracts/release_snapshot_bundle/release_snapshot_bundle.js";
13
+ import { asU64, directAdminCap, invokeWithAdminCap } from "./vault.js";
14
+ function authority(p) {
15
+ if (p.authority !== undefined)
16
+ return p.authority;
17
+ if (p.releaseAdminCapId !== undefined)
18
+ return directAdminCap(p.releaseAdminCapId);
19
+ throw new Error("release authority is required");
20
+ }
21
+ /** Attach the release's self-declared kind (for example "EP" or "Mixtape"). */
22
+ export function setReleaseKind(p) {
23
+ const bytes = new TextEncoder().encode(p.kind).length;
24
+ if (bytes === 0)
25
+ throw new Error("setReleaseKind: kind must not be empty");
26
+ if (bytes > 32) {
27
+ throw new Error(`setReleaseKind: kind must be at most 32 UTF-8 bytes (got ${bytes})`);
28
+ }
29
+ return (tx) => {
30
+ invokeWithAdminCap(tx, authority(p), {
31
+ target: `${p.releaseKindPackageId}::release_kind::set_kind`,
32
+ arguments: [tx.object(p.releaseId), tx.pure.string(p.kind)],
33
+ adminCapIndex: 1,
34
+ });
35
+ };
36
+ }
37
+ /** Attach the release's editorial description. */
38
+ export function setReleaseDescription(p) {
39
+ const bytes = new TextEncoder().encode(p.description).length;
40
+ if (bytes === 0) {
41
+ throw new Error("setReleaseDescription: description must not be empty");
42
+ }
43
+ if (bytes > 8192) {
44
+ throw new Error(`setReleaseDescription: description must be at most 8192 UTF-8 bytes (got ${bytes})`);
45
+ }
46
+ return (tx) => {
47
+ invokeWithAdminCap(tx, authority(p), {
48
+ target: `${p.releaseDescriptionPackageId}::release_description::set_description`,
49
+ arguments: [tx.object(p.releaseId), tx.pure.string(p.description)],
50
+ adminCapIndex: 1,
51
+ });
52
+ };
53
+ }
54
+ const GENRE_NAME_RE = /^[A-Z]+(?:_[A-Z]+)*$/;
55
+ /** Validate the canonical on-chain genre vocabulary spelling. */
56
+ export function assertCanonicalGenreName(name) {
57
+ const bytes = new TextEncoder().encode(name).length;
58
+ if (bytes === 0 || bytes > 64 || !GENRE_NAME_RE.test(name)) {
59
+ throw new Error(`Genre name must be 1-64 bytes of uppercase A-Z and underscores; got ${JSON.stringify(name)}`);
60
+ }
61
+ }
62
+ /** Derive the immutable Genre object id for a canonical vocabulary name. */
63
+ export function deriveGenreId(genreRegistryId, genrePackageId, canonicalName) {
64
+ assertCanonicalGenreName(canonicalName);
65
+ return deriveDynamicFieldID(genreRegistryId, `${genrePackageId}::genre::GenreKey`, genre.GenreKey.serialize([canonicalName]).toBytes());
66
+ }
67
+ /** Attach primary/secondary release genres and optional per-track overrides. */
68
+ export function setReleaseGenres(p) {
69
+ return (tx) => {
70
+ invokeWithAdminCap(tx, authority(p), {
71
+ target: `${p.releaseGenrePackageId}::release_genre::set_primary_genre`,
72
+ arguments: [tx.object(p.releaseId), tx.object(p.primaryGenreId)],
73
+ adminCapIndex: 1,
74
+ });
75
+ for (const genreId of p.secondaryGenreIds ?? []) {
76
+ invokeWithAdminCap(tx, authority(p), {
77
+ target: `${p.releaseGenrePackageId}::release_genre::add_secondary_genre`,
78
+ arguments: [tx.object(p.releaseId), tx.object(genreId)],
79
+ adminCapIndex: 1,
80
+ });
81
+ }
82
+ for (const assignment of p.trackPrimaryGenres ?? []) {
83
+ invokeWithAdminCap(tx, authority(p), {
84
+ target: `${p.releaseGenrePackageId}::release_genre::set_track_primary_genre`,
85
+ arguments: [
86
+ tx.object(p.releaseId),
87
+ tx.pure.u64(asU64("trackIndex", assignment.trackIndex)),
88
+ tx.object(assignment.genreId),
89
+ ],
90
+ adminCapIndex: 1,
91
+ });
92
+ }
93
+ };
94
+ }
95
+ function buildDspLink(tx, packageId, link) {
96
+ switch (link.platform) {
97
+ case "Spotify":
98
+ return tx.add(releaseDspLink.newSpotify({ package: packageId, arguments: [link.id] }));
99
+ case "AppleMusic":
100
+ return tx.add(link.trackId === undefined
101
+ ? releaseDspLink.newAppleMusicAlbum({
102
+ package: packageId,
103
+ arguments: [link.storefront, link.albumId],
104
+ })
105
+ : releaseDspLink.newAppleMusicTrack({
106
+ package: packageId,
107
+ arguments: [link.storefront, link.albumId, link.trackId],
108
+ }));
109
+ case "AmazonMusic":
110
+ return tx.add(link.trackId === undefined
111
+ ? releaseDspLink.newAmazonMusicAlbum({
112
+ package: packageId,
113
+ arguments: [link.albumId],
114
+ })
115
+ : releaseDspLink.newAmazonMusicTrack({
116
+ package: packageId,
117
+ arguments: [link.albumId, link.trackId],
118
+ }));
119
+ case "Bandcamp":
120
+ return tx.add(releaseDspLink.newBandcamp({
121
+ package: packageId,
122
+ arguments: [link.subdomain, link.slug],
123
+ }));
124
+ case "Deezer":
125
+ return tx.add(releaseDspLink.newDeezer({ package: packageId, arguments: [link.id] }));
126
+ case "SoundCloud":
127
+ return tx.add(releaseDspLink.newSoundcloud({
128
+ package: packageId,
129
+ arguments: [link.user, link.slug],
130
+ }));
131
+ case "Tidal":
132
+ return tx.add(releaseDspLink.newTidal({ package: packageId, arguments: [link.id] }));
133
+ case "YouTubeMusic":
134
+ return tx.add(releaseDspLink.newYoutubeMusic({
135
+ package: packageId,
136
+ arguments: [link.id],
137
+ }));
138
+ }
139
+ }
140
+ /** Attach release-level and per-track DSP links. */
141
+ export function setReleaseDspLinks(p) {
142
+ return (tx) => {
143
+ for (const link of p.releaseLinks ?? []) {
144
+ const value = buildDspLink(tx, p.releaseDspLinkPackageId, link);
145
+ invokeWithAdminCap(tx, authority(p), {
146
+ target: `${p.releaseDspLinkPackageId}::release_dsp_link::set_release_link`,
147
+ arguments: [tx.object(p.releaseId), value],
148
+ adminCapIndex: 1,
149
+ });
150
+ }
151
+ for (const item of p.trackLinks ?? []) {
152
+ const value = buildDspLink(tx, p.releaseDspLinkPackageId, item.link);
153
+ invokeWithAdminCap(tx, authority(p), {
154
+ target: `${p.releaseDspLinkPackageId}::release_dsp_link::set_track_link`,
155
+ arguments: [tx.object(p.releaseId), tx.pure.u64(asU64("trackIndex", item.trackIndex)), value],
156
+ adminCapIndex: 1,
157
+ });
158
+ }
159
+ };
160
+ }
161
+ /** Attach the write-once release snapshot-bundle pointer. */
162
+ export function setReleaseSnapshotBundle(p) {
163
+ return (tx) => {
164
+ const bundle = tx.moveCall({
165
+ target: `${p.oriPackageId}::walrus_data::new_blob`,
166
+ arguments: [tx.pure.u256(p.blobId)],
167
+ });
168
+ invokeWithAdminCap(tx, authority(p), {
169
+ target: `${p.releaseSnapshotBundlePackageId}::release_snapshot_bundle::set_snapshot_bundle`,
170
+ arguments: [tx.object(p.releaseId), bundle],
171
+ adminCapIndex: 1,
172
+ });
173
+ };
174
+ }
175
+ //# sourceMappingURL=release-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-extensions.js","sourceRoot":"","sources":["../src/release-extensions.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,30 @@
1
1
  import { Transaction } from "@mysten/sui/transactions";
2
- import { type ShareRecipient } from "./transactions.ts";
3
- /** A royalty pool to attach to a work, in the same PTB. */
4
- export interface RoyaltyPoolNode {
5
- currency: string;
6
- /** `composition_royalty_pool` / `recording_royalty_pool` package id. */
7
- extensionPackageId: string;
8
- /** Base `royalty_pool` lib package id. */
9
- royaltyPoolPackageId: string;
10
- }
11
- export interface CompositionNode {
2
+ import { type AdminCustodyInput, type RecordingAuthorityInput, type ShareRecipient } from "./transactions.ts";
3
+ interface CompositionNodeBase {
12
4
  shareType: string;
13
5
  shareCurrencyId: string;
14
6
  shareTreasuryCapId: string;
15
7
  title: string;
16
8
  royaltyRateBps: number;
17
9
  shareRecipients: ShareRecipient[];
18
- /** Recipient of the CompositionAdminCap (the owner). */
19
- adminAddress: string;
20
- royaltyPool?: RoyaltyPoolNode;
21
10
  }
22
- export interface RecordingNode {
11
+ export type CompositionNode = CompositionNodeBase & AdminCustodyInput;
12
+ interface RecordingNodeBase {
23
13
  shareType: string;
24
14
  shareCurrencyId: string;
25
15
  shareTreasuryCapId: string;
26
16
  /** The parent composition's share type. */
27
17
  compositionShareType: string;
28
- /** Index into `compositions[]` if the parent is created in THIS PTB… */
29
- parentCompositionIndex?: number;
30
- /** …or the on-chain composition object id if the parent already exists. */
31
- parentCompositionId?: string;
32
18
  shareRecipients: ShareRecipient[];
33
- adminAddress: string;
34
- royaltyPool?: RoyaltyPoolNode;
35
19
  }
20
+ type RecordingParent = {
21
+ readonly parentCompositionIndex: number;
22
+ readonly parentCompositionId?: never;
23
+ } | {
24
+ readonly parentCompositionIndex?: never;
25
+ readonly parentCompositionId: string;
26
+ };
27
+ export type RecordingNode = RecordingNodeBase & RecordingParent & AdminCustodyInput;
36
28
  /** A track whose recording is created in THIS PTB. */
37
29
  export interface FreshTrackNode {
38
30
  /** Index into `recordings[]`. */
@@ -43,32 +35,31 @@ export interface FreshTrackNode {
43
35
  * A track over an EXISTING recording, authorized by its admin cap held by the
44
36
  * sender. This can coexist with recordings created in this PTB.
45
37
  */
46
- export interface CapTrackNode {
38
+ interface CapTrackNodeBase {
47
39
  recordingId: string;
48
- recordingAdminCapId: string;
49
40
  recordingShareType: string;
50
41
  compositionShareType: string;
51
42
  splitBps: number;
52
43
  }
44
+ export type CapTrackNode = CapTrackNodeBase & RecordingAuthorityInput;
53
45
  export type TrackNode = FreshTrackNode | CapTrackNode;
54
- export interface ReleaseNode {
46
+ interface ReleaseNodeBase {
55
47
  title: string;
56
48
  /** u256 nonce as a decimal string (deterministic release id). */
57
49
  nonce: string;
58
- adminAddress: string;
59
50
  releaseRegistryId: string;
60
51
  /** The ordered tracklist. Display grouping (discs/sides) is extension data. */
61
52
  tracks: TrackNode[];
62
53
  }
54
+ export type ReleaseNode = ReleaseNodeBase & AdminCustodyInput;
63
55
  export interface PublishReleaseGraphParams {
64
56
  compositions: CompositionNode[];
65
57
  recordings: RecordingNode[];
66
58
  release?: ReleaseNode;
67
59
  misoPackageId: string;
68
60
  minatoPackageId: string;
69
- /** `release_registry` extension package, distinct from its shared object id. */
70
- releaseRegistryPackageId: string;
71
61
  }
72
62
  /** Builds the entire graph in a single transaction (see file header for ordering). */
73
63
  export declare function publishReleaseGraph(params: PublishReleaseGraphParams): (tx: Transaction) => void;
64
+ export {};
74
65
  //# sourceMappingURL=release-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-graph.d.ts","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKzF,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;AAItD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAQD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CA0GhG"}
1
+ {"version":3,"file":"release-graph.d.ts","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAA2F,KAAK,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKvM,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AACD,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAEtE,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AACD,KAAK,eAAe,GAChB;IAAE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAA;CAAE,GACjF;IAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAEpF,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;AAUtD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AACD,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAQD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAsGhG"}
@@ -1,15 +1,15 @@
1
1
  // Copyright (c) Miso Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  // Single-PTB publisher for a whole release graph: creates every composition and
4
- // recording, optionally attaches royalty pools, derives the release id ON-CHAIN
4
+ // recording, derives the release id ON-CHAIN
5
5
  // (so recordings need not be shared first), builds the tracks/release,
6
6
  // then shares everything and transfers the admin caps — all in ONE transaction.
7
7
  //
8
8
  // Share currencies must already be published + initialized (their Currency objects
9
9
  // shared on-chain); their ids/types are passed in. Ordering is load-bearing:
10
- // 1. composition::new → recording::new(&comp) (borrow-before-share) + pool attach
10
+ // 1. composition::new → recording::new(&comp) (borrow-before-share)
11
11
  // 2. release::derive_target_release_id(<recording::id results>) →
12
- // track::new(cap, &rec, derivedId, split) → release_registry::new_release
12
+ // track::new(cap, &rec, derivedId, split) → release::new(registry, …)
13
13
  // 3. publish (share) comps + recs + release, disperse supply, transfer caps
14
14
  // Steps 1–2 borrow the works; step 3 consumes them into share_object.
15
15
  //
@@ -18,19 +18,25 @@
18
18
  //
19
19
  // This is the whole-graph orchestration half of the opinionated publish flow —
20
20
  // it composes `@misonetwork/sdk`'s bare `composition`/`recording`/`track`/
21
- // `release` call bindings and this package's `release_registry` binding with its
22
- // own `disperseShares`/`finalizeRelease` and royalty-pool extension helpers, into
23
- // one PTB.
21
+ // `release` core call bindings with its
22
+ // own `disperseShares`/`finalizeRelease` helpers into one PTB. Royalty pools are
23
+ // installed later through an admin-cap Vault plugin; the retired raw-cap helper
24
+ // is intentionally not used here.
24
25
  import { Transaction } from "@mysten/sui/transactions";
25
26
  import { contracts } from "@misonetwork/sdk";
26
- import { attachCompositionRoyaltyPool, attachRecordingRoyaltyPool } from "./extensions/royalty-pool.js";
27
- import { disperseShares, finalizeRelease } from "./transactions.js";
28
- import * as releaseRegistry from "./contracts/release_registry/release_registry.js";
29
- const { composition, recording, track, release } = contracts;
27
+ import { custodyOf, disperseShares, finalizeRelease, recordingAuthorityOf, requiredCommandResult } from "./transactions.js";
28
+ import { disposeNewAdminCap, invokeWithAdminCap } from "./vault.js";
29
+ const { composition, recording, track } = contracts;
30
30
  const isFresh = (t) => "recordingIndex" in t;
31
+ function requiredAt(items, index, description) {
32
+ const item = items[index];
33
+ if (item === undefined)
34
+ throw new Error(`${description} index ${index} is out of range`);
35
+ return item;
36
+ }
31
37
  /** Builds the entire graph in a single transaction (see file header for ordering). */
32
38
  export function publishReleaseGraph(params) {
33
- const { misoPackageId: pkg, minatoPackageId, releaseRegistryPackageId } = params;
39
+ const { misoPackageId: pkg, minatoPackageId } = params;
34
40
  return (tx) => {
35
41
  // ── 1) Create every composition, then every recording (borrow-before-share) ──
36
42
  const comps = params.compositions.map((c) => {
@@ -39,39 +45,28 @@ export function publishReleaseGraph(params) {
39
45
  typeArguments: [c.shareType],
40
46
  arguments: [tx.pure.string(c.title), tx.pure.u16(c.royaltyRateBps), tx.object(c.shareCurrencyId), tx.object(c.shareTreasuryCapId)],
41
47
  }));
42
- const parts = { work: r[0], adminCap: r[1], balance: r[2] };
43
- if (c.royaltyPool) {
44
- attachCompositionRoyaltyPool(tx, {
45
- composition: parts.work,
46
- adminCap: parts.adminCap,
47
- compositionShareType: c.shareType,
48
- currency: c.royaltyPool.currency,
49
- compositionRoyaltyPoolPackageId: c.royaltyPool.extensionPackageId,
50
- royaltyPoolPackageId: c.royaltyPool.royaltyPoolPackageId,
51
- });
52
- }
48
+ const parts = {
49
+ work: requiredCommandResult(r, 0, "composition::_new"),
50
+ adminCap: requiredCommandResult(r, 1, "composition::_new"),
51
+ balance: requiredCommandResult(r, 2, "composition::_new"),
52
+ };
53
53
  return parts;
54
54
  });
55
55
  const recTypeArgs = (i) => {
56
- const n = params.recordings[i];
56
+ const n = requiredAt(params.recordings, i, "recording");
57
57
  return [n.shareType, n.compositionShareType];
58
58
  };
59
59
  const recs = params.recordings.map((rec, i) => {
60
- const parent = rec.parentCompositionIndex !== undefined ? comps[rec.parentCompositionIndex].work : tx.object(rec.parentCompositionId);
60
+ const parent = rec.parentCompositionIndex !== undefined
61
+ ? requiredAt(comps, rec.parentCompositionIndex, "parent composition").work
62
+ : tx.object(rec.parentCompositionId);
61
63
  const typeArgs = recTypeArgs(i);
62
64
  const r = tx.add(recording._new({ package: pkg, typeArguments: typeArgs, arguments: [parent, tx.object(rec.shareCurrencyId), tx.object(rec.shareTreasuryCapId)] }));
63
- const parts = { work: r[0], adminCap: r[1], balance: r[2] };
64
- if (rec.royaltyPool) {
65
- attachRecordingRoyaltyPool(tx, {
66
- recording: parts.work,
67
- adminCap: parts.adminCap,
68
- recordingShareType: rec.shareType,
69
- compositionShareType: rec.compositionShareType,
70
- currency: rec.royaltyPool.currency,
71
- recordingRoyaltyPoolPackageId: rec.royaltyPool.extensionPackageId,
72
- royaltyPoolPackageId: rec.royaltyPool.royaltyPoolPackageId,
73
- });
74
- }
65
+ const parts = {
66
+ work: requiredCommandResult(r, 0, "recording::_new"),
67
+ adminCap: requiredCommandResult(r, 1, "recording::_new"),
68
+ balance: requiredCommandResult(r, 2, "recording::_new"),
69
+ };
75
70
  return parts;
76
71
  });
77
72
  // ── 2) Release: derive the id on-chain, then tracks → release ──────────
@@ -81,43 +76,54 @@ export function publishReleaseGraph(params) {
81
76
  const idVec = tx.makeMoveVec({
82
77
  type: "0x2::object::ID",
83
78
  elements: ordered.map((t) => isFresh(t)
84
- ? tx.add(recording.id({ package: pkg, typeArguments: recTypeArgs(t.recordingIndex), arguments: [recs[t.recordingIndex].work] }))
79
+ ? tx.add(recording.id({ package: pkg, typeArguments: recTypeArgs(t.recordingIndex), arguments: [requiredAt(recs, t.recordingIndex, "fresh recording").work] }))
85
80
  : tx.pure.id(t.recordingId)),
86
81
  });
87
82
  const splitVec = tx.makeMoveVec({ type: "u64", elements: ordered.map((t) => tx.pure.u64(t.splitBps)) });
88
83
  // This returns an ID value (not an object); pass the result straight to
89
84
  // `track::new` so every track consents to this exact release target.
90
- const releaseId = tx.add(release.deriveTargetReleaseId({ package: pkg, arguments: [idVec, splitVec, tx.pure.u256(BigInt(rel.nonce)), tx.pure.id(rel.releaseRegistryId)] }));
85
+ const releaseId = tx.moveCall({
86
+ target: `${pkg}::release::derive_target_release_id`,
87
+ arguments: [tx.object(rel.releaseRegistryId), idVec, splitVec, tx.pure.u256(BigInt(rel.nonce))],
88
+ });
91
89
  const trackArgs = ordered.map((t) => {
92
90
  if (isFresh(t)) {
93
91
  const typeArgs = recTypeArgs(t.recordingIndex);
94
- const parts = recs[t.recordingIndex];
92
+ const parts = requiredAt(recs, t.recordingIndex, "fresh recording");
95
93
  return tx.add(track._new({ package: pkg, typeArguments: typeArgs, arguments: [parts.adminCap, parts.work, releaseId, tx.pure.u16(t.splitBps)] }));
96
94
  }
97
95
  const typeArgs = [t.recordingShareType, t.compositionShareType];
98
96
  const rec = tx.object(t.recordingId);
99
- return tx.add(track._new({ package: pkg, typeArguments: typeArgs, arguments: [tx.object(t.recordingAdminCapId), rec, releaseId, tx.pure.u16(t.splitBps)] }));
97
+ return invokeWithAdminCap(tx, recordingAuthorityOf(t), {
98
+ target: `${pkg}::track::new`,
99
+ typeArguments: typeArgs,
100
+ arguments: [rec, releaseId, tx.pure.u16(t.splitBps)],
101
+ adminCapIndex: 0,
102
+ });
100
103
  });
101
104
  const trackVec = tx.makeMoveVec({ type: `${pkg}::track::Track`, elements: trackArgs });
102
- const created = tx.add(releaseRegistry.newRelease({
103
- package: releaseRegistryPackageId,
105
+ const created = tx.moveCall({
106
+ target: `${pkg}::release::new`,
104
107
  arguments: [tx.object(rel.releaseRegistryId), tx.pure.string(rel.title), trackVec, tx.pure.u256(BigInt(rel.nonce))],
105
- }));
106
- const releaseParts = { release: created[0], adminCap: created[1] };
107
- finalizeRelease(tx, { ...releaseParts, adminAddress: rel.adminAddress, misoPackageId: pkg });
108
+ });
109
+ const releaseParts = {
110
+ release: requiredCommandResult(created, 0, "release::new"),
111
+ adminCap: requiredCommandResult(created, 1, "release::new"),
112
+ };
113
+ finalizeRelease(tx, { ...releaseParts, adminCustody: custodyOf(rel), misoPackageId: pkg });
108
114
  }
109
115
  // ── 3) Share every work, disperse its supply, transfer admin caps ──
110
116
  params.compositions.forEach((c, i) => {
111
- const parts = comps[i];
117
+ const parts = requiredAt(comps, i, "composition");
112
118
  disperseShares(tx, minatoPackageId, c.shareType, parts.balance, c.shareRecipients);
113
119
  tx.add(composition.publish({ package: pkg, typeArguments: [c.shareType], arguments: [parts.work, parts.adminCap] }));
114
- tx.transferObjects([parts.adminCap], c.adminAddress);
120
+ disposeNewAdminCap(tx, parts.adminCap, custodyOf(c));
115
121
  });
116
122
  params.recordings.forEach((rec, i) => {
117
- const parts = recs[i];
123
+ const parts = requiredAt(recs, i, "recording");
118
124
  tx.add(recording.publish({ package: pkg, typeArguments: recTypeArgs(i), arguments: [parts.work, parts.adminCap] }));
119
125
  disperseShares(tx, minatoPackageId, rec.shareType, parts.balance, rec.shareRecipients);
120
- tx.transferObjects([parts.adminCap], rec.adminAddress);
126
+ disposeNewAdminCap(tx, parts.adminCap, custodyOf(rec));
121
127
  });
122
128
  };
123
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"release-graph.js","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAEtC,gFAAgF;AAChF,gFAAgF;AAChF,uEAAuE;AACvE,gFAAgF;AAChF,EAAE;AACF,mFAAmF;AACnF,6EAA6E;AAC7E,qFAAqF;AACrF,oEAAoE;AACpE,+EAA+E;AAC/E,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,gFAAgF;AAChF,8DAA8D;AAC9D,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,iFAAiF;AACjF,kFAAkF;AAClF,WAAW;AAEX,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAuB,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,eAAe,MAAM,kDAAkD,CAAC;AAEpF,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;AA2D7D,MAAM,OAAO,GAAG,CAAC,CAAY,EAAuB,EAAE,CAAC,gBAAgB,IAAI,CAAC,CAAC;AA4B7E,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CAAC,MAAiC;IACnE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAAC;IACjF,OAAO,CAAC,EAAE,EAAE,EAAE;QACZ,gFAAgF;QAChF,MAAM,KAAK,GAAY,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CACd,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,GAAG;gBACZ,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5B,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;aACnI,CAAC,CACH,CAAC;YACF,MAAM,KAAK,GAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;YACtE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClB,4BAA4B,CAAC,EAAE,EAAE;oBAC/B,WAAW,EAAE,KAAK,CAAC,IAAI;oBACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,oBAAoB,EAAE,CAAC,CAAC,SAAS;oBACjC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ;oBAChC,+BAA+B,EAAE,CAAC,CAAC,WAAW,CAAC,kBAAkB;oBACjE,oBAAoB,EAAE,CAAC,CAAC,WAAW,CAAC,oBAAoB;iBACzD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,CAAC,CAAS,EAAoB,EAAE;YAClD,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;YAChC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,MAAM,IAAI,GAAY,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,GAAG,CAAC,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAoB,CAAC,CAAC;YACxI,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CACd,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAClJ,CAAC;YACF,MAAM,KAAK,GAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;YACtE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACpB,0BAA0B,CAAC,EAAE,EAAE;oBAC7B,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,kBAAkB,EAAE,GAAG,CAAC,SAAS;oBACjC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;oBAC9C,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ;oBAClC,6BAA6B,EAAE,GAAG,CAAC,WAAW,CAAC,kBAAkB;oBACjE,oBAAoB,EAAE,GAAG,CAAC,WAAW,CAAC,oBAAoB;iBAC3D,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;YAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC;gBAC3B,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,OAAO,CAAC,CAAC,CAAC;oBACR,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAC9B;aACF,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YACxG,wEAAwE;YACxE,qEAAqE;YACrE,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CACtB,OAAO,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAClJ,CAAC;YAEF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAE,CAAC;oBACtC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpJ,CAAC;gBACD,MAAM,QAAQ,GAAqB,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBAClF,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACrC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/J,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACvF,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CACpB,eAAe,CAAC,UAAU,CAAC;gBACzB,OAAO,EAAE,wBAAwB;gBACjC,SAAS,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aACpH,CAAC,CACH,CAAC;YACF,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC;YACrE,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/F,CAAC;QAED,sEAAsE;QACtE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACxB,cAAc,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;YACnF,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACrH,EAAE,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACvB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACpH,cAAc,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;YACvF,EAAE,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"release-graph.js","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"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"}