@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
@@ -16,7 +16,7 @@
16
16
  // minato, publishing (sharing) the work, and transferring its admin cap is
17
17
  // an opinion about economics;
18
18
  // - minting a release is a platform primitive: core's `release::new` takes an
19
- // unconstructible PTB `&mut UID`, so `release_registry::new_release` is the
19
+ // unconstructible PTB `&mut UID`, so core `release::new(registry, …)` is the
20
20
  // canonical client path. Choosing a track-assembly strategy, publishing
21
21
  // (sharing) it, and picking a recipient for its `ReleaseAdminCap` is the
22
22
  // opinion, so `finalizeRelease` / `publishRelease` live here.
@@ -42,7 +42,7 @@ import {
42
42
  type ShareCurrencyBinding,
43
43
  type TxThunk,
44
44
  } from "@misonetwork/sdk";
45
- import * as releaseRegistry from "./contracts/release_registry/release_registry.ts";
45
+ import { asU64, directAdminCap, disposeNewAdminCap, invokeWithAdminCap, type AdminCapAuthority, type AdminCapCustody, type U64Input } from "./vault.ts";
46
46
 
47
47
  const { track, release } = contracts;
48
48
 
@@ -55,13 +55,45 @@ interface ReleaseParts {
55
55
  // the same nominal shape rather than a structurally-identical twin.
56
56
  export type { TxThunk };
57
57
 
58
+ /** New custody is explicit; the legacy address shape remains mutually exclusive. */
59
+ export type AdminCustodyInput =
60
+ | { readonly adminCustody: AdminCapCustody; readonly adminAddress?: never }
61
+ | { readonly adminCustody?: never; readonly adminAddress: string };
62
+ export type RecordingAuthorityInput =
63
+ | { readonly recordingAuthority: AdminCapAuthority; readonly recordingAdminCapId?: never }
64
+ | { readonly recordingAuthority?: never; readonly recordingAdminCapId: string };
65
+
66
+ export function custodyOf(input: AdminCustodyInput): AdminCapCustody {
67
+ if (input.adminCustody !== undefined) return input.adminCustody;
68
+ if (input.adminAddress !== undefined) return { kind: "direct", owner: input.adminAddress };
69
+ throw new Error("admin custody is required");
70
+ }
71
+ export function recordingAuthorityOf(input: RecordingAuthorityInput): AdminCapAuthority {
72
+ if (input.recordingAuthority !== undefined) return input.recordingAuthority;
73
+ if (input.recordingAdminCapId !== undefined) return directAdminCap(input.recordingAdminCapId);
74
+ throw new Error("recording authority is required");
75
+ }
76
+
77
+ /** Reject a malformed multi-result command before it becomes a PTB argument. */
78
+ export function requiredCommandResult<T>(
79
+ result: { readonly [index: number]: T | undefined },
80
+ index: number,
81
+ command: string,
82
+ ): T {
83
+ const value = result[index];
84
+ if (value === undefined) {
85
+ throw new Error(`${command} did not return result ${index}`);
86
+ }
87
+ return value;
88
+ }
89
+
58
90
  // ============================================================================
59
91
  // Share dispersal (minato)
60
92
  // ============================================================================
61
93
 
62
94
  export interface ShareRecipient {
63
95
  address: string;
64
- value: number;
96
+ value: U64Input;
65
97
  }
66
98
 
67
99
  /**
@@ -81,7 +113,7 @@ export function disperseShares(
81
113
  typeArguments: [shareType],
82
114
  arguments: [
83
115
  balance,
84
- tx.makeMoveVec({ type: "u64", elements: recipients.map((r) => tx.pure.u64(r.value)) }),
116
+ tx.makeMoveVec({ type: "u64", elements: recipients.map((r) => tx.pure.u64(asU64("share recipient value", r.value)))}),
85
117
  tx.makeMoveVec({ type: "address", elements: recipients.map((r) => tx.pure.address(r.address)) }),
86
118
  ],
87
119
  });
@@ -130,14 +162,14 @@ export function initializeShareCurrency(params: InitializeShareCurrencyParams):
130
162
  // Composition
131
163
  // ============================================================================
132
164
 
133
- export interface FinalizeCompositionParams extends CompositionParts {
165
+ interface FinalizeCompositionParamsBase extends CompositionParts {
134
166
  /** The composition's `share::Share` type. */
135
167
  shareType: string;
136
168
  shareRecipients: ShareRecipient[];
137
- adminAddress: string;
138
169
  misoPackageId: string;
139
170
  minatoPackageId: string;
140
171
  }
172
+ export type FinalizeCompositionParams = FinalizeCompositionParamsBase & AdminCustodyInput;
141
173
 
142
174
  /**
143
175
  * The opinionated finish for a composition: disperse its share supply to
@@ -148,18 +180,17 @@ export interface FinalizeCompositionParams extends CompositionParts {
148
180
  export function finalizeComposition(tx: Transaction, params: FinalizeCompositionParams): void {
149
181
  disperseShares(tx, params.minatoPackageId, params.shareType, params.balance, params.shareRecipients);
150
182
  tx.add(contracts.composition.publish({ package: params.misoPackageId, typeArguments: [params.shareType], arguments: [params.composition, params.adminCap] }));
151
- tx.transferObjects([params.adminCap], params.adminAddress);
183
+ disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
152
184
  }
153
185
 
154
- export interface PublishCompositionParams extends ShareCurrencyBinding {
186
+ interface PublishCompositionParamsBase extends ShareCurrencyBinding {
155
187
  title: string;
156
188
  royaltyRateBps: number;
157
189
  shareRecipients: ShareRecipient[];
158
- /** Sole owner of the shares + CompositionAdminCap (the zkLogin address). */
159
- adminAddress: string;
160
190
  misoPackageId: string;
161
191
  minatoPackageId: string;
162
192
  }
193
+ export type PublishCompositionParams = PublishCompositionParamsBase & AdminCustodyInput;
163
194
 
164
195
  /** Convenience: publish a composition end-to-end (createComposition → finalizeComposition). */
165
196
  export function publishComposition(params: PublishCompositionParams): TxThunk {
@@ -176,7 +207,7 @@ export function publishComposition(params: PublishCompositionParams): TxThunk {
176
207
  ...parts,
177
208
  shareType: params.shareType,
178
209
  shareRecipients: params.shareRecipients,
179
- adminAddress: params.adminAddress,
210
+ adminCustody: custodyOf(params),
180
211
  misoPackageId: params.misoPackageId,
181
212
  minatoPackageId: params.minatoPackageId,
182
213
  });
@@ -187,16 +218,16 @@ export function publishComposition(params: PublishCompositionParams): TxThunk {
187
218
  // Recording
188
219
  // ============================================================================
189
220
 
190
- export interface FinalizeRecordingParams extends RecordingParts {
221
+ interface FinalizeRecordingParamsBase extends RecordingParts {
191
222
  /** The recording's own `share::Share` type. */
192
223
  recordingShareType: string;
193
224
  /** Share type of the parent composition. */
194
225
  compositionShareType: string;
195
226
  shareRecipients: ShareRecipient[];
196
- adminAddress: string;
197
227
  misoPackageId: string;
198
228
  minatoPackageId: string;
199
229
  }
230
+ export type FinalizeRecordingParams = FinalizeRecordingParamsBase & AdminCustodyInput;
200
231
 
201
232
  /**
202
233
  * The opinionated finish for a recording: publish (share) it, disperse its
@@ -207,10 +238,10 @@ export function finalizeRecording(tx: Transaction, params: FinalizeRecordingPara
207
238
  const typeArguments: [string, string] = [params.recordingShareType, params.compositionShareType];
208
239
  tx.add(contracts.recording.publish({ package: params.misoPackageId, typeArguments, arguments: [params.recording, params.adminCap] }));
209
240
  disperseShares(tx, params.minatoPackageId, params.recordingShareType, params.balance, params.shareRecipients);
210
- tx.transferObjects([params.adminCap], params.adminAddress);
241
+ disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
211
242
  }
212
243
 
213
- export interface PublishRecordingParams extends ShareCurrencyBinding {
244
+ interface PublishRecordingParamsBase extends ShareCurrencyBinding {
214
245
  /**
215
246
  * Parent composition, referenced as an on-chain object. Read-only at
216
247
  * `recording::new` (only its royalty rate and id are read).
@@ -219,10 +250,10 @@ export interface PublishRecordingParams extends ShareCurrencyBinding {
219
250
  /** Share type of the parent composition (the recording's `CompositionShare` phantom). */
220
251
  compositionShareType: string;
221
252
  shareRecipients: ShareRecipient[];
222
- adminAddress: string;
223
253
  misoPackageId: string;
224
254
  minatoPackageId: string;
225
255
  }
256
+ export type PublishRecordingParams = PublishRecordingParamsBase & AdminCustodyInput;
226
257
 
227
258
  /** Convenience: publish a recording against an already-on-chain composition. */
228
259
  export function publishRecording(params: PublishRecordingParams): TxThunk {
@@ -240,7 +271,7 @@ export function publishRecording(params: PublishRecordingParams): TxThunk {
240
271
  recordingShareType: params.shareType,
241
272
  compositionShareType: params.compositionShareType,
242
273
  shareRecipients: params.shareRecipients,
243
- adminAddress: params.adminAddress,
274
+ adminCustody: custodyOf(params),
244
275
  misoPackageId: params.misoPackageId,
245
276
  minatoPackageId: params.minatoPackageId,
246
277
  });
@@ -255,9 +286,9 @@ export interface PublishCompositionAndRecordingParams {
255
286
  title: string;
256
287
  royaltyRateBps: number;
257
288
  /** Share-currency binding for the composition. */
258
- composition: ShareCurrencyBinding & { shareRecipients: ShareRecipient[]; adminAddress: string };
289
+ composition: ShareCurrencyBinding & { shareRecipients: ShareRecipient[] } & AdminCustodyInput;
259
290
  /** Share-currency binding for the recording. */
260
- recording: ShareCurrencyBinding & { shareRecipients: ShareRecipient[]; adminAddress: string };
291
+ recording: ShareCurrencyBinding & { shareRecipients: ShareRecipient[] } & AdminCustodyInput;
261
292
  misoPackageId: string;
262
293
  minatoPackageId: string;
263
294
  }
@@ -299,7 +330,7 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
299
330
  ...comp,
300
331
  shareType: params.composition.shareType,
301
332
  shareRecipients: params.composition.shareRecipients,
302
- adminAddress: params.composition.adminAddress,
333
+ adminCustody: custodyOf(params.composition),
303
334
  misoPackageId: params.misoPackageId,
304
335
  minatoPackageId: params.minatoPackageId,
305
336
  });
@@ -309,7 +340,7 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
309
340
  recordingShareType: params.recording.shareType,
310
341
  compositionShareType: params.composition.shareType,
311
342
  shareRecipients: params.recording.shareRecipients,
312
- adminAddress: params.recording.adminAddress,
343
+ adminCustody: custodyOf(params.recording),
313
344
  misoPackageId: params.misoPackageId,
314
345
  minatoPackageId: params.minatoPackageId,
315
346
  });
@@ -320,17 +351,17 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
320
351
  // Release
321
352
  // ============================================================================
322
353
 
323
- export interface FinalizeReleaseParams extends ReleaseParts {
324
- /** Recipient of the `ReleaseAdminCap`. */
325
- adminAddress: string;
354
+ interface FinalizeReleaseParamsBase extends ReleaseParts {
355
+ /** Explicit direct delivery or Vault custody for the ReleaseAdminCap. */
326
356
  misoPackageId: string;
327
357
  }
358
+ export type FinalizeReleaseParams = FinalizeReleaseParamsBase & AdminCustodyInput;
328
359
 
329
360
  /**
330
361
  * The opinionated finish for a release: publish (share) it and transfer its
331
362
  * admin cap to `adminAddress`.
332
363
  *
333
- * MUST run in the same PTB as the `release_registry::new_release` that produced
364
+ * MUST run in the same PTB as `release::new(registry, …)` that produced
334
365
  * these parts —
335
366
  * `Release` is `key`-only with no `drop`, so an unpublished release cannot
336
367
  * outlive its transaction. Splitting create from finalize is what lets a caller
@@ -339,31 +370,31 @@ export interface FinalizeReleaseParams extends ReleaseParts {
339
370
  */
340
371
  export function finalizeRelease(tx: Transaction, params: FinalizeReleaseParams): void {
341
372
  tx.add(release.publish({ package: params.misoPackageId, arguments: [params.release, params.adminCap] }));
342
- tx.transferObjects([params.adminCap], tx.pure.address(params.adminAddress));
373
+ disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
343
374
  }
344
375
 
345
- export interface TrackInput {
376
+ interface TrackInputBase {
346
377
  recordingId: string;
347
- recordingAdminCapId: string;
378
+ /** Explicit legacy direct cap or Vault custody authority for this recording. */
348
379
  /** Share type of the recording (the track `RecordingShare` phantom). */
349
380
  recordingShareType: string;
350
381
  /** Share type of the parent composition (the track `CompositionShare` phantom). */
351
382
  compositionShareType: string;
352
383
  splitBps: number;
353
384
  }
385
+ export type TrackInput = TrackInputBase & RecordingAuthorityInput;
354
386
 
355
- export interface PublishReleaseParams {
387
+ interface PublishReleaseParamsBase {
356
388
  title: string;
357
389
  /** The ordered tracklist. Display grouping (discs/sides) is extension data. */
358
390
  tracks: TrackInput[];
359
- /** `release_registry` extension package, distinct from its shared object id. */
360
- releaseRegistryPackageId: string;
391
+ /** Shared core `miso::release::ReleaseRegistry` object. */
361
392
  releaseRegistryId: string;
362
393
  releaseId: string;
363
394
  releaseNonce: string;
364
395
  misoPackageId: string;
365
- adminAddress: string;
366
396
  }
397
+ export type PublishReleaseParams = PublishReleaseParamsBase & AdminCustodyInput;
367
398
 
368
399
  function buildTrackVec(
369
400
  tx: Transaction,
@@ -379,29 +410,24 @@ function buildTrackVec(
379
410
  */
380
411
  export function publishRelease(params: PublishReleaseParams): TxThunk {
381
412
  return (tx) => {
382
- const { misoPackageId, releaseRegistryPackageId } = params;
413
+ const { misoPackageId } = params;
383
414
  const trackArgs = params.tracks.map((t) => {
384
415
  const typeArguments: [string, string] = [t.recordingShareType, t.compositionShareType];
385
- return tx.add(
386
- track._new({
387
- package: misoPackageId,
388
- typeArguments,
389
- arguments: [tx.object(t.recordingAdminCapId), tx.object(t.recordingId), tx.pure.id(params.releaseId), tx.pure.u16(t.splitBps)],
390
- }),
391
- );
416
+ return invokeWithAdminCap(tx, recordingAuthorityOf(t), {
417
+ target: `${misoPackageId}::track::new`,
418
+ typeArguments,
419
+ arguments: [tx.object(t.recordingId), tx.pure.id(params.releaseId), tx.pure.u16(t.splitBps)],
420
+ adminCapIndex: 0,
421
+ });
422
+ });
423
+ const created = tx.moveCall({
424
+ target: `${misoPackageId}::release::new`,
425
+ arguments: [tx.object(params.releaseRegistryId), tx.pure.string(params.title), buildTrackVec(tx, misoPackageId, trackArgs), tx.pure.u256(BigInt(params.releaseNonce))],
392
426
  });
393
- const created = tx.add(
394
- releaseRegistry.newRelease({
395
- package: releaseRegistryPackageId,
396
- arguments: [
397
- tx.object(params.releaseRegistryId),
398
- tx.pure.string(params.title),
399
- buildTrackVec(tx, misoPackageId, trackArgs),
400
- tx.pure.u256(BigInt(params.releaseNonce)),
401
- ],
402
- }),
403
- );
404
- const parts: ReleaseParts = { release: created[0]!, adminCap: created[1]! };
405
- finalizeRelease(tx, { ...parts, adminAddress: params.adminAddress, misoPackageId });
427
+ const parts: ReleaseParts = {
428
+ release: requiredCommandResult(created, 0, "release::new"),
429
+ adminCap: requiredCommandResult(created, 1, "release::new"),
430
+ };
431
+ finalizeRelease(tx, { ...parts, ...params, misoPackageId });
406
432
  };
407
433
  }