@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,454 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+
6
+ /**
7
+ * Generic capability custody and plugin authorization.
8
+ *
9
+ * `Vault<Cap>` holds a capability in a Sui `Referent`. An authorized plugin
10
+ * receives the whole capability temporarily, paired with a hot-potato `Borrow`
11
+ * receipt that forces the same capability back into the same vault before the
12
+ * transaction can finish. Plugin authorization is represented by a typed dynamic
13
+ * field in the vault's `Bag`.
14
+ */
15
+
16
+ import { type BcsType, bcs } from '@mysten/sui/bcs';
17
+ import { MoveStruct, MoveTuple, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
18
+ import { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';
19
+ import * as borrow from './deps/sui/borrow.js';
20
+ import * as bag from './deps/sui/bag.js';
21
+ const $moduleName = '@local-pkg/vault::vault';
22
+ /**
23
+ * Custodies one capability and the typed authorization records for plugins.
24
+ *
25
+ * `Vault` intentionally lacks `store`: only this module can share or destroy it.
26
+ * The wrapped capability is never exposed except through a hot-potato borrow that
27
+ * requires its exact return.
28
+ */
29
+ export function Vault<Cap extends BcsType<any>>(...typeParameters: [
30
+ Cap
31
+ ]) {
32
+ return new MoveStruct({ name: `${$moduleName}::Vault<${typeParameters[0].name as Cap['name']}>`, fields: {
33
+ id: bcs.Address,
34
+ cap: borrow.Referent(typeParameters[0]),
35
+ authorized_plugins: bag.Bag
36
+ } });
37
+ }
38
+ export const VaultAdminCap = new MoveStruct({ name: `${$moduleName}::VaultAdminCap<phantom Cap>`, fields: {
39
+ id: bcs.Address,
40
+ vault_id: bcs.Address
41
+ } });
42
+ export const AuthorizedPluginKey = new MoveTuple({ name: `${$moduleName}::AuthorizedPluginKey<phantom Witness>`, fields: [bcs.bool()] });
43
+ export const VaultCreatedEvent = new MoveStruct({ name: `${$moduleName}::VaultCreatedEvent<phantom Cap>`, fields: {
44
+ vault_id: bcs.Address,
45
+ vault_admin_cap_id: bcs.Address,
46
+ wrapped_cap_id: bcs.Address,
47
+ authorized_plugins_id: bcs.Address
48
+ } });
49
+ export const PluginAuthorizedEvent = new MoveStruct({ name: `${$moduleName}::PluginAuthorizedEvent<phantom Cap, phantom Witness>`, fields: {
50
+ vault_id: bcs.Address
51
+ } });
52
+ export const PluginRevokedEvent = new MoveStruct({ name: `${$moduleName}::PluginRevokedEvent<phantom Cap, phantom Witness>`, fields: {
53
+ vault_id: bcs.Address
54
+ } });
55
+ export const VaultDestroyedEvent = new MoveStruct({ name: `${$moduleName}::VaultDestroyedEvent<phantom Cap>`, fields: {
56
+ vault_id: bcs.Address,
57
+ wrapped_cap_id: bcs.Address
58
+ } });
59
+ export interface NewArguments<Cap extends BcsType<any>> {
60
+ cap: RawTransactionArgument<Cap>;
61
+ }
62
+ export interface NewOptions<Cap extends BcsType<any>> {
63
+ package?: string;
64
+ arguments: NewArguments<Cap> | [
65
+ cap: RawTransactionArgument<Cap>
66
+ ];
67
+ typeArguments: [
68
+ string
69
+ ];
70
+ }
71
+ /** Custody `cap` and create its vault-specific administrator capability. */
72
+ export function _new<Cap extends BcsType<any>>(options: NewOptions<Cap>) {
73
+ const packageAddress = options.package ?? '@local-pkg/vault';
74
+ const argumentsTypes = [
75
+ `${options.typeArguments[0]}`
76
+ ] satisfies (string | null)[];
77
+ const parameterNames = ["cap"];
78
+ return (tx: Transaction) => tx.moveCall({
79
+ package: packageAddress,
80
+ module: 'vault',
81
+ function: 'new',
82
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
83
+ typeArguments: options.typeArguments
84
+ });
85
+ }
86
+ export interface ShareArguments {
87
+ vault: RawTransactionArgument<string>;
88
+ }
89
+ export interface ShareOptions {
90
+ package?: string;
91
+ arguments: ShareArguments | [
92
+ vault: RawTransactionArgument<string>
93
+ ];
94
+ typeArguments: [
95
+ string
96
+ ];
97
+ }
98
+ /** Share a newly-created vault. */
99
+ export function share(options: ShareOptions) {
100
+ const packageAddress = options.package ?? '@local-pkg/vault';
101
+ const argumentsTypes = [
102
+ null
103
+ ] satisfies (string | null)[];
104
+ const parameterNames = ["vault"];
105
+ return (tx: Transaction) => tx.moveCall({
106
+ package: packageAddress,
107
+ module: 'vault',
108
+ function: 'share',
109
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
110
+ typeArguments: options.typeArguments
111
+ });
112
+ }
113
+ export interface DestroyArguments {
114
+ self: RawTransactionArgument<string>;
115
+ adminCap: RawTransactionArgument<string>;
116
+ }
117
+ export interface DestroyOptions {
118
+ package?: string;
119
+ arguments: DestroyArguments | [
120
+ self: RawTransactionArgument<string>,
121
+ adminCap: RawTransactionArgument<string>
122
+ ];
123
+ typeArguments: [
124
+ string
125
+ ];
126
+ }
127
+ /** Destroy an empty vault and return the exact capability it custodied. */
128
+ export function destroy(options: DestroyOptions) {
129
+ const packageAddress = options.package ?? '@local-pkg/vault';
130
+ const argumentsTypes = [
131
+ null,
132
+ null
133
+ ] satisfies (string | null)[];
134
+ const parameterNames = ["self", "adminCap"];
135
+ return (tx: Transaction) => tx.moveCall({
136
+ package: packageAddress,
137
+ module: 'vault',
138
+ function: 'destroy',
139
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
140
+ typeArguments: options.typeArguments
141
+ });
142
+ }
143
+ export interface AuthorizePluginArguments<Witness extends BcsType<any>> {
144
+ self: RawTransactionArgument<string>;
145
+ adminCap: RawTransactionArgument<string>;
146
+ _: RawTransactionArgument<Witness>;
147
+ }
148
+ export interface AuthorizePluginOptions<Witness extends BcsType<any>> {
149
+ package?: string;
150
+ arguments: AuthorizePluginArguments<Witness> | [
151
+ self: RawTransactionArgument<string>,
152
+ adminCap: RawTransactionArgument<string>,
153
+ _: RawTransactionArgument<Witness>
154
+ ];
155
+ typeArguments: [
156
+ string,
157
+ string
158
+ ];
159
+ }
160
+ /**
161
+ * Authorize the package identified by its canonical `witness::Witness` type.
162
+ *
163
+ * The witness is consumed here. A plugin should construct it with a package-only
164
+ * `witness::new()` function.
165
+ */
166
+ export function authorizePlugin<Witness extends BcsType<any>>(options: AuthorizePluginOptions<Witness>) {
167
+ const packageAddress = options.package ?? '@local-pkg/vault';
168
+ const argumentsTypes = [
169
+ null,
170
+ null,
171
+ `${options.typeArguments[1]}`
172
+ ] satisfies (string | null)[];
173
+ const parameterNames = ["self", "adminCap", "_"];
174
+ return (tx: Transaction) => tx.moveCall({
175
+ package: packageAddress,
176
+ module: 'vault',
177
+ function: 'authorize_plugin',
178
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
179
+ typeArguments: options.typeArguments
180
+ });
181
+ }
182
+ export interface RevokePluginArguments {
183
+ self: RawTransactionArgument<string>;
184
+ adminCap: RawTransactionArgument<string>;
185
+ }
186
+ export interface RevokePluginOptions {
187
+ package?: string;
188
+ arguments: RevokePluginArguments | [
189
+ self: RawTransactionArgument<string>,
190
+ adminCap: RawTransactionArgument<string>
191
+ ];
192
+ typeArguments: [
193
+ string,
194
+ string
195
+ ];
196
+ }
197
+ /** Revoke a plugin authorization without requiring cooperation from the plugin. */
198
+ export function revokePlugin(options: RevokePluginOptions) {
199
+ const packageAddress = options.package ?? '@local-pkg/vault';
200
+ const argumentsTypes = [
201
+ null,
202
+ null
203
+ ] satisfies (string | null)[];
204
+ const parameterNames = ["self", "adminCap"];
205
+ return (tx: Transaction) => tx.moveCall({
206
+ package: packageAddress,
207
+ module: 'vault',
208
+ function: 'revoke_plugin',
209
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
210
+ typeArguments: options.typeArguments
211
+ });
212
+ }
213
+ export interface BorrowAsPluginArguments<Witness extends BcsType<any>> {
214
+ self: RawTransactionArgument<string>;
215
+ _: RawTransactionArgument<Witness>;
216
+ }
217
+ export interface BorrowAsPluginOptions<Witness extends BcsType<any>> {
218
+ package?: string;
219
+ arguments: BorrowAsPluginArguments<Witness> | [
220
+ self: RawTransactionArgument<string>,
221
+ _: RawTransactionArgument<Witness>
222
+ ];
223
+ typeArguments: [
224
+ string,
225
+ string
226
+ ];
227
+ }
228
+ /**
229
+ * Temporarily lend the full custodied capability to an authorized plugin.
230
+ *
231
+ * `Borrow` has no abilities, so the exact capability must be returned through
232
+ * `put_back` in this transaction.
233
+ */
234
+ export function borrowAsPlugin<Witness extends BcsType<any>>(options: BorrowAsPluginOptions<Witness>) {
235
+ const packageAddress = options.package ?? '@local-pkg/vault';
236
+ const argumentsTypes = [
237
+ null,
238
+ `${options.typeArguments[1]}`
239
+ ] satisfies (string | null)[];
240
+ const parameterNames = ["self", "_"];
241
+ return (tx: Transaction) => tx.moveCall({
242
+ package: packageAddress,
243
+ module: 'vault',
244
+ function: 'borrow_as_plugin',
245
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
246
+ typeArguments: options.typeArguments
247
+ });
248
+ }
249
+ export interface BorrowAsAdminArguments {
250
+ self: RawTransactionArgument<string>;
251
+ adminCap: RawTransactionArgument<string>;
252
+ }
253
+ export interface BorrowAsAdminOptions {
254
+ package?: string;
255
+ arguments: BorrowAsAdminArguments | [
256
+ self: RawTransactionArgument<string>,
257
+ adminCap: RawTransactionArgument<string>
258
+ ];
259
+ typeArguments: [
260
+ string
261
+ ];
262
+ }
263
+ /** Temporarily lend the full custodied capability to the vault administrator. */
264
+ export function borrowAsAdmin(options: BorrowAsAdminOptions) {
265
+ const packageAddress = options.package ?? '@local-pkg/vault';
266
+ const argumentsTypes = [
267
+ null,
268
+ null
269
+ ] satisfies (string | null)[];
270
+ const parameterNames = ["self", "adminCap"];
271
+ return (tx: Transaction) => tx.moveCall({
272
+ package: packageAddress,
273
+ module: 'vault',
274
+ function: 'borrow_as_admin',
275
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
276
+ typeArguments: options.typeArguments
277
+ });
278
+ }
279
+ export interface PutBackArguments<Cap extends BcsType<any>> {
280
+ self: RawTransactionArgument<string>;
281
+ cap: RawTransactionArgument<Cap>;
282
+ receipt: TransactionArgument;
283
+ }
284
+ export interface PutBackOptions<Cap extends BcsType<any>> {
285
+ package?: string;
286
+ arguments: PutBackArguments<Cap> | [
287
+ self: RawTransactionArgument<string>,
288
+ cap: RawTransactionArgument<Cap>,
289
+ receipt: TransactionArgument
290
+ ];
291
+ typeArguments: [
292
+ string
293
+ ];
294
+ }
295
+ /**
296
+ * Return the exact capability borrowed from this vault.
297
+ *
298
+ * No additional authorization is required: `Borrow` proves the originating
299
+ * referent and capability object ID, and blocking return would harm liveness.
300
+ */
301
+ export function putBack<Cap extends BcsType<any>>(options: PutBackOptions<Cap>) {
302
+ const packageAddress = options.package ?? '@local-pkg/vault';
303
+ const argumentsTypes = [
304
+ null,
305
+ `${options.typeArguments[0]}`,
306
+ null
307
+ ] satisfies (string | null)[];
308
+ const parameterNames = ["self", "cap", "receipt"];
309
+ return (tx: Transaction) => tx.moveCall({
310
+ package: packageAddress,
311
+ module: 'vault',
312
+ function: 'put_back',
313
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
314
+ typeArguments: options.typeArguments
315
+ });
316
+ }
317
+ export interface IdArguments {
318
+ self: RawTransactionArgument<string>;
319
+ }
320
+ export interface IdOptions {
321
+ package?: string;
322
+ arguments: IdArguments | [
323
+ self: RawTransactionArgument<string>
324
+ ];
325
+ typeArguments: [
326
+ string
327
+ ];
328
+ }
329
+ export function id(options: IdOptions) {
330
+ const packageAddress = options.package ?? '@local-pkg/vault';
331
+ const argumentsTypes = [
332
+ null
333
+ ] satisfies (string | null)[];
334
+ const parameterNames = ["self"];
335
+ return (tx: Transaction) => tx.moveCall({
336
+ package: packageAddress,
337
+ module: 'vault',
338
+ function: 'id',
339
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
340
+ typeArguments: options.typeArguments
341
+ });
342
+ }
343
+ export interface VaultIdArguments {
344
+ self: RawTransactionArgument<string>;
345
+ }
346
+ export interface VaultIdOptions {
347
+ package?: string;
348
+ arguments: VaultIdArguments | [
349
+ self: RawTransactionArgument<string>
350
+ ];
351
+ typeArguments: [
352
+ string
353
+ ];
354
+ }
355
+ export function vaultId(options: VaultIdOptions) {
356
+ const packageAddress = options.package ?? '@local-pkg/vault';
357
+ const argumentsTypes = [
358
+ null
359
+ ] satisfies (string | null)[];
360
+ const parameterNames = ["self"];
361
+ return (tx: Transaction) => tx.moveCall({
362
+ package: packageAddress,
363
+ module: 'vault',
364
+ function: 'vault_id',
365
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
366
+ typeArguments: options.typeArguments
367
+ });
368
+ }
369
+ export interface AuthorizedPluginsIdArguments {
370
+ self: RawTransactionArgument<string>;
371
+ }
372
+ export interface AuthorizedPluginsIdOptions {
373
+ package?: string;
374
+ arguments: AuthorizedPluginsIdArguments | [
375
+ self: RawTransactionArgument<string>
376
+ ];
377
+ typeArguments: [
378
+ string
379
+ ];
380
+ }
381
+ /** The ID under which `AuthorizedPluginKey` records are dynamic fields. */
382
+ export function authorizedPluginsId(options: AuthorizedPluginsIdOptions) {
383
+ const packageAddress = options.package ?? '@local-pkg/vault';
384
+ const argumentsTypes = [
385
+ null
386
+ ] satisfies (string | null)[];
387
+ const parameterNames = ["self"];
388
+ return (tx: Transaction) => tx.moveCall({
389
+ package: packageAddress,
390
+ module: 'vault',
391
+ function: 'authorized_plugins_id',
392
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
393
+ typeArguments: options.typeArguments
394
+ });
395
+ }
396
+ export interface AuthorizedPluginCountArguments {
397
+ self: RawTransactionArgument<string>;
398
+ }
399
+ export interface AuthorizedPluginCountOptions {
400
+ package?: string;
401
+ arguments: AuthorizedPluginCountArguments | [
402
+ self: RawTransactionArgument<string>
403
+ ];
404
+ typeArguments: [
405
+ string
406
+ ];
407
+ }
408
+ export function authorizedPluginCount(options: AuthorizedPluginCountOptions) {
409
+ const packageAddress = options.package ?? '@local-pkg/vault';
410
+ const argumentsTypes = [
411
+ null
412
+ ] satisfies (string | null)[];
413
+ const parameterNames = ["self"];
414
+ return (tx: Transaction) => tx.moveCall({
415
+ package: packageAddress,
416
+ module: 'vault',
417
+ function: 'authorized_plugin_count',
418
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
419
+ typeArguments: options.typeArguments
420
+ });
421
+ }
422
+ export interface IsPluginAuthorizedArguments {
423
+ self: RawTransactionArgument<string>;
424
+ }
425
+ export interface IsPluginAuthorizedOptions {
426
+ package?: string;
427
+ arguments: IsPluginAuthorizedArguments | [
428
+ self: RawTransactionArgument<string>
429
+ ];
430
+ typeArguments: [
431
+ string,
432
+ string
433
+ ];
434
+ }
435
+ /**
436
+ * Returns whether this witness type has an authorization record.
437
+ *
438
+ * This deliberately does not validate the witness shape: arbitrary types simply
439
+ * report false, while `authorize_plugin` is the only way to add one.
440
+ */
441
+ export function isPluginAuthorized(options: IsPluginAuthorizedOptions) {
442
+ const packageAddress = options.package ?? '@local-pkg/vault';
443
+ const argumentsTypes = [
444
+ null
445
+ ] satisfies (string | null)[];
446
+ const parameterNames = ["self"];
447
+ return (tx: Transaction) => tx.moveCall({
448
+ package: packageAddress,
449
+ module: 'vault',
450
+ function: 'is_plugin_authorized',
451
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
452
+ typeArguments: options.typeArguments
453
+ });
454
+ }
package/src/contracts.ts CHANGED
@@ -14,24 +14,32 @@ export * as pressing from "./contracts/miso_pressing/pressing.ts";
14
14
  export * as listing from "./contracts/miso_pressing/listing.ts";
15
15
  export * as certificate from "./contracts/miso_pressing/certificate.ts";
16
16
 
17
- // The canonical release-id derivation parent the only PTB-callable path to
18
- // minting a `Release` now that core's `release::new` takes `&mut UID`.
19
- export * as releaseRegistry from "./contracts/release_registry/release_registry.ts";
20
-
21
- // Existing launch drops remain readable and purchasable while releases move to
22
- // the pressing/listing contracts.
23
- export * as drop from "./contracts/miso_drop/drop.ts";
24
-
25
- // Royalty-pool extension (base lib + per-work extensions).
17
+ // Generic royalty-pool primitive plus vault-custodied business-logic plugins.
26
18
  export * as royaltyPool from "./contracts/royalty_pool/pool.ts";
27
19
  export * as royaltyPoolStake from "./contracts/royalty_pool/stake.ts";
20
+ export * as vault from "./contracts/vault/vault.ts";
28
21
  export * as compositionRoyaltyPool from "./contracts/composition_royalty_pool/composition_royalty_pool.ts";
29
22
  export * as recordingRoyaltyPool from "./contracts/recording_royalty_pool/recording_royalty_pool.ts";
23
+ export * as routedStake from "./contracts/routed_stake/routed_stake.ts";
24
+ export * as compositionRoutedStake from "./contracts/composition_routed_stake/composition_routed_stake.ts";
30
25
 
31
26
  // Cover art (the CoverArt value type + the release attachment extension).
32
27
  export * as coverArt from "./contracts/cover_art/cover_art.ts";
33
28
  export * as releaseCoverArt from "./contracts/release_cover_art/release_cover_art.ts";
34
29
 
30
+ // Release presentation, discovery, buyer-content, and runtime economics.
31
+ export * as genre from "./contracts/genre/genre.ts";
32
+ export * as releaseDescription from "./contracts/release_description/release_description.ts";
33
+ export * as releaseDspLink from "./contracts/release_dsp_link/release_dsp_link.ts";
34
+ export * as releaseGenre from "./contracts/release_genre/release_genre.ts";
35
+ export * as releaseKind from "./contracts/release_kind/release_kind.ts";
36
+ export * as releaseRevenueDistributor from "./contracts/release_revenue_distributor/release_revenue_distributor.ts";
37
+ export * as releaseSnapshotBundle from "./contracts/release_snapshot_bundle/release_snapshot_bundle.ts";
38
+ export * as recordingAdvisory from "./contracts/recording_advisory/recording_advisory.ts";
39
+ export * as recordingLanguage from "./contracts/recording_language/recording_language.ts";
40
+ export * as recordingMasterReference from "./contracts/recording_master_reference/recording_master_reference.ts";
41
+ export * as recordingPreview from "./contracts/recording_preview/recording_preview.ts";
42
+
35
43
  // Credits extensions (per-work credit stores + their role vocabularies).
36
44
  export * as compositionCredits from "./contracts/composition_credits/composition_credits.ts";
37
45
  export * as compositionPartyRole from "./contracts/composition_credits/composition_party_role.ts";
package/src/cover.ts CHANGED
@@ -18,15 +18,23 @@ import type { ClientWithCoreApi } from "@mysten/sui/client";
18
18
  import { bcs } from "@mysten/sui/bcs";
19
19
  import { deriveDynamicFieldID } from "@mysten/sui/utils";
20
20
  import type { TxThunk } from "./transactions.ts";
21
+ import { asU64, directAdminCap, invokeWithAdminCap, type AdminCapAuthority, type U64Input } from "./vault.ts";
21
22
  import { OPTION_NONE, OPTION_SOME } from "./internal.ts";
22
23
  import * as coverArt from "./contracts/cover_art/cover_art.ts";
23
24
  import * as releaseCoverArt from "./contracts/release_cover_art/release_cover_art.ts";
24
25
 
25
- export interface SetReleaseCoverParams {
26
+ type ReleaseAuthorityInput =
27
+ | { readonly authority: AdminCapAuthority; readonly releaseAdminCapId?: never }
28
+ | { readonly authority?: never; readonly releaseAdminCapId: string };
29
+ function releaseAuthorityOf(input: ReleaseAuthorityInput): AdminCapAuthority {
30
+ if (input.authority !== undefined) return input.authority;
31
+ if (input.releaseAdminCapId !== undefined) return directAdminCap(input.releaseAdminCapId);
32
+ throw new Error("release authority is required");
33
+ }
34
+
35
+ interface SetReleaseCoverParamsBase {
26
36
  /** The `Release` object to attach the cover to. */
27
37
  releaseId: string;
28
- /** The release's `ReleaseAdminCap`. */
29
- releaseAdminCapId: string;
30
38
  /** Walrus blob id of the still cover image, as `u256` (decimal string or bigint). */
31
39
  stillBlobId: bigint | string;
32
40
  /** Optional animated-cover Walrus blob id (`u256`); omit for a still-only cover. */
@@ -38,39 +46,60 @@ export interface SetReleaseCoverParams {
38
46
  /** `ori` package (home of `walrus_data::new_blob` / the `WalrusData` type). */
39
47
  oriPackageId: string;
40
48
  }
49
+ export type SetReleaseCoverParams = SetReleaseCoverParamsBase & ReleaseAuthorityInput;
50
+
51
+ export type SetReleaseTrackCoverParams = SetReleaseCoverParams & {
52
+ /** Zero-based index in the release's flattened tracklist. */
53
+ trackIndex: U64Input;
54
+ };
55
+
56
+ function buildCover(tx: Parameters<TxThunk>[0], p: SetReleaseCoverParams) {
57
+ const walrusType = `${p.oriPackageId}::walrus_data::WalrusData`;
58
+ const blob = (id: bigint | string) =>
59
+ tx.moveCall({
60
+ target: `${p.oriPackageId}::walrus_data::new_blob`,
61
+ arguments: [tx.pure.u256(id)],
62
+ });
63
+
64
+ const still = blob(p.stillBlobId);
65
+ const animated =
66
+ p.animatedBlobId == null
67
+ ? tx.moveCall({ target: OPTION_NONE, typeArguments: [walrusType] })
68
+ : tx.moveCall({
69
+ target: OPTION_SOME,
70
+ typeArguments: [walrusType],
71
+ arguments: [blob(p.animatedBlobId)],
72
+ });
73
+
74
+ return tx.add(
75
+ coverArt._new({
76
+ package: p.coverArtPackageId,
77
+ arguments: [still, animated],
78
+ }),
79
+ );
80
+ }
41
81
 
42
82
  /** Sets (or replaces) a release's album-level cover from Walrus blob ids. */
43
83
  export function setReleaseCover(p: SetReleaseCoverParams): TxThunk {
44
84
  return (tx) => {
45
- const walrusType = `${p.oriPackageId}::walrus_data::WalrusData`;
46
- const blob = (id: bigint | string) =>
47
- tx.moveCall({
48
- target: `${p.oriPackageId}::walrus_data::new_blob`,
49
- arguments: [tx.pure.u256(id)],
50
- });
51
-
52
- const still = blob(p.stillBlobId);
53
- const animated =
54
- p.animatedBlobId == null
55
- ? tx.moveCall({ target: OPTION_NONE, typeArguments: [walrusType] })
56
- : tx.moveCall({
57
- target: OPTION_SOME,
58
- typeArguments: [walrusType],
59
- arguments: [blob(p.animatedBlobId)],
60
- });
61
-
62
- const cover = tx.add(
63
- coverArt._new({
64
- package: p.coverArtPackageId,
65
- arguments: [still, animated],
66
- }),
67
- );
68
- tx.add(
69
- releaseCoverArt.setCover({
70
- package: p.releaseCoverArtPackageId,
71
- arguments: [p.releaseId, p.releaseAdminCapId, cover],
72
- }),
73
- );
85
+ const cover = buildCover(tx, p);
86
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
87
+ target: `${p.releaseCoverArtPackageId}::release_cover_art::set_cover`,
88
+ arguments: [tx.object(p.releaseId), cover],
89
+ adminCapIndex: 1,
90
+ });
91
+ };
92
+ }
93
+
94
+ /** Sets (or replaces) one track's cover from Walrus blob ids. */
95
+ export function setReleaseTrackCover(p: SetReleaseTrackCoverParams): TxThunk {
96
+ return (tx) => {
97
+ const cover = buildCover(tx, p);
98
+ invokeWithAdminCap(tx, releaseAuthorityOf(p), {
99
+ target: `${p.releaseCoverArtPackageId}::release_cover_art::set_track_cover`,
100
+ arguments: [tx.object(p.releaseId), tx.pure.u64(asU64("trackIndex", p.trackIndex)), cover],
101
+ adminCapIndex: 1,
102
+ });
74
103
  };
75
104
  }
76
105
 
@@ -142,11 +171,7 @@ export async function getReleaseCover(
142
171
  ): Promise<ReleaseCoverView | null> {
143
172
  return (
144
173
  (
145
- await getReleaseCoversByIds(
146
- client,
147
- [releaseId],
148
- releaseCoverArtPackageId,
149
- )
174
+ await getReleaseCoversByIds(client, [releaseId], releaseCoverArtPackageId)
150
175
  )[releaseId] ?? null
151
176
  );
152
177
  }