@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
package/src/client.ts CHANGED
@@ -39,7 +39,27 @@ import {
39
39
 
40
40
  import * as listingContract from "./contracts/miso_pressing/listing.ts";
41
41
  import * as pressingContract from "./contracts/miso_pressing/pressing.ts";
42
- import * as releaseRegistry from "./contracts/release_registry/release_registry.ts";
42
+ import * as genreContract from "./contracts/genre/genre.ts";
43
+ import * as releaseDescriptionContract from "./contracts/release_description/release_description.ts";
44
+ import * as releaseDspLinkContract from "./contracts/release_dsp_link/release_dsp_link.ts";
45
+ import * as releaseGenreContract from "./contracts/release_genre/release_genre.ts";
46
+ import * as releaseKindContract from "./contracts/release_kind/release_kind.ts";
47
+ import * as releaseRevenueDistributorContract from "./contracts/release_revenue_distributor/release_revenue_distributor.ts";
48
+ import * as vaultContract from "./contracts/vault/vault.ts";
49
+ import * as compositionRoyaltyPoolContract from "./contracts/composition_royalty_pool/composition_royalty_pool.ts";
50
+ import * as recordingRoyaltyPoolContract from "./contracts/recording_royalty_pool/recording_royalty_pool.ts";
51
+ import * as compositionRoutedStakeContract from "./contracts/composition_routed_stake/composition_routed_stake.ts";
52
+ import * as routedStakeContract from "./contracts/routed_stake/routed_stake.ts";
53
+ import * as royaltyPoolContract from "./contracts/royalty_pool/pool.ts";
54
+ import * as recordingAdvisoryContract from "./contracts/recording_advisory/recording_advisory.ts";
55
+ import * as recordingLanguageContract from "./contracts/recording_language/recording_language.ts";
56
+ import * as recordingMasterReferenceContract from "./contracts/recording_master_reference/recording_master_reference.ts";
57
+ import * as recordingPreviewContract from "./contracts/recording_preview/recording_preview.ts";
58
+ import * as vaultActions from "./vault.ts";
59
+ import * as releaseSnapshotBundleContract from "./contracts/release_snapshot_bundle/release_snapshot_bundle.ts";
60
+ import * as coverArtContract from "./contracts/cover_art/cover_art.ts";
61
+ import * as releaseCoverArtContract from "./contracts/release_cover_art/release_cover_art.ts";
62
+ import * as releaseCreditsContract from "./contracts/release_credits/release_credits.ts";
43
63
  import {
44
64
  buyRecord,
45
65
  deriveListingId,
@@ -90,18 +110,56 @@ import {
90
110
  getMisoPlatformDeployment,
91
111
  type MisoPlatformDeployment,
92
112
  } from "./deployments.ts";
113
+ import {
114
+ deriveGenreId,
115
+ setReleaseDescription,
116
+ setReleaseDspLinks,
117
+ setReleaseGenres,
118
+ setReleaseKind,
119
+ setReleaseSnapshotBundle,
120
+ type SetReleaseDescriptionParams,
121
+ type SetReleaseDspLinksParams,
122
+ type SetReleaseGenresParams,
123
+ type SetReleaseKindParams,
124
+ type SetReleaseSnapshotBundleParams,
125
+ } from "./release-extensions.ts";
126
+ import { addReleaseCredit, type AddReleaseCreditParams } from "./credits.ts";
127
+ import {
128
+ setReleaseCover,
129
+ setReleaseTrackCover,
130
+ type SetReleaseCoverParams,
131
+ type SetReleaseTrackCoverParams,
132
+ } from "./cover.ts";
133
+
134
+ type BoundMoveFunction<F> = F extends (options: infer Options) => infer Result
135
+ ? Options extends { package?: unknown }
136
+ ? (options: Omit<Options, "package">) => Result
137
+ : F
138
+ : F;
139
+ type BoundModule<M extends object, Available extends readonly (keyof M)[]> = {
140
+ [Key in Available[number]]: BoundMoveFunction<M[Key]>;
141
+ };
93
142
 
94
- /** Defaults `options.package` to `pkg` for every generated call function. */
95
- function bindModulePackage<M extends object>(mod: M, pkg: string): M {
143
+ /**
144
+ * Bind an explicit safe subset of a generated module to one immutable package.
145
+ * Callers cannot supply or override `package`; reference-returning, UID-only,
146
+ * and package-internal constructors never appear in this executable facade.
147
+ */
148
+ function bindModulePackage<M extends object, K extends readonly (keyof M)[]>(
149
+ mod: M,
150
+ pkg: string,
151
+ available: K,
152
+ ): BoundModule<M, K> {
96
153
  const out: Record<string, unknown> = {};
97
- for (const [key, value] of Object.entries({ ...mod })) {
98
- out[key] =
154
+ for (const key of available) {
155
+ const value = (mod as Record<PropertyKey, unknown>)[key];
156
+ out[String(key)] =
99
157
  typeof value === "function"
100
158
  ? (options: { package?: string }) =>
101
- (value as (o: unknown) => unknown)({ package: pkg, ...options })
159
+ (value as (o: unknown) => unknown)({ ...options, package: pkg })
102
160
  : value;
103
161
  }
104
- return out as M;
162
+ return out as BoundModule<M, K>;
105
163
  }
106
164
 
107
165
  export interface MisoOptions<Name extends string = "miso"> {
@@ -134,32 +192,92 @@ export interface MisoPlatformConfig {
134
192
  * builders (they disperse shares via minato).
135
193
  */
136
194
  minatoPackageId?: string;
137
- /** The published `release_registry` extension package used to mint releases. */
138
- releaseRegistryPackageId?: string;
139
- /** The one shared `ReleaseRegistry` object created by that package's `init`. */
195
+ /** The shared core `miso::release::ReleaseRegistry` object. */
140
196
  releaseRegistryId?: string;
197
+ /** Release metadata/discovery extension package ids. */
198
+ releaseKindPackageId?: string;
199
+ releaseDescriptionPackageId?: string;
200
+ releaseGenrePackageId?: string;
201
+ releaseDspLinkPackageId?: string;
202
+ releaseSnapshotBundlePackageId?: string;
203
+ recordingAdvisoryPackageId?: string;
204
+ recordingLanguagePackageId?: string;
205
+ recordingMasterReferencePackageId?: string;
206
+ recordingPreviewPackageId?: string;
207
+ /** Shared custody package; needed for VaultAdminCap authority orchestration. */
208
+ vaultPackageId?: string;
209
+ /** Generic royalty-pool value package used by pool and routed-stake helpers. */
210
+ royaltyPoolPackageId?: string;
211
+ /** Vault plugins, deliberately separate from data-extension package ids. */
212
+ compositionRoyaltyPoolPluginPackageId?: string;
213
+ recordingRoyaltyPoolPluginPackageId?: string;
214
+ compositionRoutedStakePluginPackageId?: string;
215
+ routedStakePackageId?: string;
216
+ releaseRevenueDistributorPluginPackageId?: string;
217
+ releaseCreditsPackageId?: string;
218
+ misoCreditPackageId?: string;
219
+ coverArtPackageId?: string;
220
+ releaseCoverArtPackageId?: string;
221
+ /** Curated genre vocabulary package and its shared derivation parent. */
222
+ genrePackageId?: string;
223
+ genreRegistryId?: string;
224
+ /** External ori package used to create WalrusData values. */
225
+ oriPackageId?: string;
141
226
  }
142
227
 
143
228
  /** Params with the ids this client already knows dropped from the call site. */
144
- type Configured<T> = Omit<T, "misoPressingPackageId" | "settingsId">;
229
+ type DistributiveOmit<T, Keys extends PropertyKey> = T extends unknown ? Omit<T, Keys> : never;
230
+ type Configured<T> = DistributiveOmit<T, "misoPressingPackageId" | "settingsId">;
145
231
 
146
232
  /** Publish-builder params with the protocol/minato ids this client already knows dropped. */
147
- type ConfiguredPublish<T> = Omit<T, "misoPackageId" | "minatoPackageId">;
233
+ type ConfiguredPublish<T> = DistributiveOmit<T, "misoPackageId" | "minatoPackageId">;
148
234
 
149
235
  /** Release-builder params with this client's core, share, and registry ids dropped. */
150
- type ConfiguredRelease<T> = Omit<T, "misoPackageId" | "minatoPackageId" | "releaseRegistryPackageId" | "releaseRegistryId">;
236
+ type ConfiguredRelease<T> = DistributiveOmit<
237
+ T,
238
+ | "misoPackageId"
239
+ | "minatoPackageId"
240
+ | "releaseRegistryId"
241
+ >;
151
242
 
152
- /** Whole-graph params with this client's package ids dropped. */
153
- export type ConfiguredReleaseGraphParams = Omit<
154
- PublishReleaseGraphParams,
155
- "misoPackageId" | "minatoPackageId" | "releaseRegistryPackageId"
243
+ type ConfiguredReleaseKind = DistributiveOmit<SetReleaseKindParams, "releaseKindPackageId">;
244
+ type ConfiguredReleaseDescription = DistributiveOmit<
245
+ SetReleaseDescriptionParams,
246
+ "releaseDescriptionPackageId"
247
+ >;
248
+ type ConfiguredReleaseGenres = DistributiveOmit<
249
+ SetReleaseGenresParams,
250
+ "releaseGenrePackageId"
251
+ >;
252
+ type ConfiguredReleaseDspLinks = DistributiveOmit<
253
+ SetReleaseDspLinksParams,
254
+ "releaseDspLinkPackageId"
255
+ >;
256
+ type ConfiguredReleaseSnapshotBundle = DistributiveOmit<
257
+ SetReleaseSnapshotBundleParams,
258
+ "releaseSnapshotBundlePackageId" | "oriPackageId"
259
+ >;
260
+ type ConfiguredReleaseCredit = DistributiveOmit<
261
+ AddReleaseCreditParams,
262
+ "releaseCreditsPackageId" | "misoCreditPackageId"
263
+ >;
264
+ type ConfiguredReleaseCover = DistributiveOmit<
265
+ SetReleaseCoverParams,
266
+ "coverArtPackageId" | "releaseCoverArtPackageId" | "oriPackageId"
267
+ >;
268
+ type ConfiguredReleaseTrackCover = DistributiveOmit<
269
+ SetReleaseTrackCoverParams,
270
+ "coverArtPackageId" | "releaseCoverArtPackageId" | "oriPackageId"
156
271
  >;
157
272
 
273
+ /** Whole-graph params with this client's package ids dropped. */
274
+ export type ConfiguredReleaseGraphParams = Omit<PublishReleaseGraphParams, "misoPackageId" | "minatoPackageId">;
275
+
158
276
  export class MisoPlatformClient {
159
277
  readonly #client: ClientWithCoreApi;
160
278
  readonly #config: MisoPlatformConfig;
161
279
  /** The permissionless protocol layer wrapped by this platform facade. */
162
- readonly protocol: MisoProtocolClient;
280
+ readonly protocol?: MisoProtocolClient;
163
281
  /** Bundled/custom deployment selected for the full facade, when available. */
164
282
  readonly deployment?: MisoPlatformDeployment;
165
283
 
@@ -171,13 +289,12 @@ export class MisoPlatformClient {
171
289
  ) {
172
290
  this.#client = client;
173
291
  this.#config = config;
174
- this.protocol =
175
- protocol ??
176
- protocolMiso({
177
- deployment: config.misoPackageId
178
- ? { packageId: config.misoPackageId }
179
- : undefined,
180
- }).register(client);
292
+ // A pressing-only facade must not implicitly register a fail-closed core
293
+ // extension. Supply a core deployment/misoPackageId when `protocol` is
294
+ // needed; otherwise this remains a safe, independent pressing client.
295
+ this.protocol = protocol ?? (config.misoPackageId
296
+ ? protocolMiso({ deployment: { packageId: config.misoPackageId } }).register(client)
297
+ : undefined);
181
298
  this.deployment = deployment;
182
299
  }
183
300
 
@@ -217,26 +334,36 @@ export class MisoPlatformClient {
217
334
  return minatoPackageId;
218
335
  }
219
336
 
220
- #releaseRegistry(): { packageId: string; id: string } {
221
- const { releaseRegistryPackageId: packageId, releaseRegistryId: id } = this.#config;
222
- if (!packageId || !id) {
337
+ #releaseRegistryId(): string {
338
+ const { releaseRegistryId: id } = this.#config;
339
+ if (!id) {
223
340
  throw new Error(
224
- "misoPlatform: `releaseRegistryPackageId` and `releaseRegistryId` are required to build a release — pass both to misoPlatform(...).",
341
+ "misoPlatform: `releaseRegistryId` is required to build a release.",
225
342
  );
226
343
  }
227
- return { packageId, id };
344
+ return id;
345
+ }
346
+
347
+ #requiredConfig(field: keyof MisoPlatformConfig, operation: string): string {
348
+ const value = this.#config[field];
349
+ if (typeof value !== "string" || value.length === 0) {
350
+ throw new Error(
351
+ `misoPlatform: \`${String(field)}\` is required for ${operation}.`,
352
+ );
353
+ }
354
+ return value;
228
355
  }
229
356
 
230
357
  // ── Reads ─────────────────────────────────────────────────────────────────
231
358
 
232
359
  /** The run itself, or `null` if this release has never opened one. */
233
360
  getPressing(pressingId: string): Promise<PressingView | null> {
234
- return getPressing(this.#client, pressingId);
361
+ return getPressing(this.#client, pressingId, this.packageId);
235
362
  }
236
363
 
237
364
  /** One currency's offer, or `null` if the run does not sell in it. */
238
365
  getListing(listingId: string): Promise<ListingView | null> {
239
- return getListing(this.#client, listingId);
366
+ return getListing(this.#client, listingId, this.packageId);
240
367
  }
241
368
 
242
369
  /** Run + one currency's offer in a single round trip, by address math. */
@@ -244,19 +371,29 @@ export class MisoPlatformClient {
244
371
  pressing: PressingView | null;
245
372
  listing: ListingView | null;
246
373
  }> {
247
- return getSale(this.#client, { ...p, misoPressingPackageId: this.packageId });
374
+ return getSale(this.#client, {
375
+ ...p,
376
+ misoPressingPackageId: this.packageId,
377
+ });
248
378
  }
249
379
 
250
380
  // ── Address math ──────────────────────────────────────────────────────────
251
381
 
252
382
  readonly ids = {
253
- pressing: (releaseId: string) => derivePressingId(releaseId, this.packageId),
383
+ pressing: (releaseId: string) =>
384
+ derivePressingId(releaseId, this.packageId),
254
385
  pressingAdminCap: (pressingId: string) =>
255
386
  derivePressingAdminCapId(pressingId, this.packageId),
256
387
  listing: (pressingId: string, currencyType: string) =>
257
388
  deriveListingId(pressingId, currencyType, this.packageId),
258
389
  sale: (releaseId: string, currencyType: string) =>
259
390
  deriveSaleIds(releaseId, currencyType, this.packageId),
391
+ genre: (canonicalName: string) =>
392
+ deriveGenreId(
393
+ this.#requiredConfig("genreRegistryId", "genre id derivation"),
394
+ this.#requiredConfig("genrePackageId", "genre id derivation"),
395
+ canonicalName,
396
+ ),
260
397
  };
261
398
 
262
399
  // ── Transaction builders ──────────────────────────────────────────────────
@@ -286,36 +423,143 @@ export class MisoPlatformClient {
286
423
  // storefront that never mints new works, doesn't need to carry them).
287
424
  publishShareCurrency,
288
425
  initializeShareCurrency,
289
- publishComposition: (p: ConfiguredPublish<PublishCompositionParams>): TxThunk =>
290
- publishComposition({ ...p, misoPackageId: this.#misoPackageId(), minatoPackageId: this.#minatoPackageId() }),
426
+ publishComposition: (
427
+ p: ConfiguredPublish<PublishCompositionParams>,
428
+ ): TxThunk =>
429
+ publishComposition({
430
+ ...p,
431
+ misoPackageId: this.#misoPackageId(),
432
+ minatoPackageId: this.#minatoPackageId(),
433
+ }),
291
434
  publishRecording: (p: ConfiguredPublish<PublishRecordingParams>): TxThunk =>
292
- publishRecording({ ...p, misoPackageId: this.#misoPackageId(), minatoPackageId: this.#minatoPackageId() }),
293
- publishCompositionAndRecording: (p: ConfiguredPublish<PublishCompositionAndRecordingParams>): TxThunk =>
294
- publishCompositionAndRecording({ ...p, misoPackageId: this.#misoPackageId(), minatoPackageId: this.#minatoPackageId() }),
435
+ publishRecording({
436
+ ...p,
437
+ misoPackageId: this.#misoPackageId(),
438
+ minatoPackageId: this.#minatoPackageId(),
439
+ }),
440
+ publishCompositionAndRecording: (
441
+ p: ConfiguredPublish<PublishCompositionAndRecordingParams>,
442
+ ): TxThunk =>
443
+ publishCompositionAndRecording({
444
+ ...p,
445
+ misoPackageId: this.#misoPackageId(),
446
+ minatoPackageId: this.#minatoPackageId(),
447
+ }),
295
448
  publishRelease: (p: ConfiguredRelease<PublishReleaseParams>): TxThunk => {
296
- const registry = this.#releaseRegistry();
297
449
  return publishRelease({
298
450
  ...p,
299
451
  misoPackageId: this.#misoPackageId(),
300
- releaseRegistryPackageId: registry.packageId,
301
- releaseRegistryId: registry.id,
452
+ releaseRegistryId: this.#releaseRegistryId(),
302
453
  });
303
454
  },
304
455
  publishReleaseGraph: (p: ConfiguredReleaseGraphParams): TxThunk => {
305
- const registry = this.#releaseRegistry();
306
456
  return publishReleaseGraph({
307
457
  ...p,
308
458
  misoPackageId: this.#misoPackageId(),
309
459
  minatoPackageId: this.#minatoPackageId(),
310
- releaseRegistryPackageId: registry.packageId,
311
460
  });
312
461
  },
462
+ setReleaseKind: (p: ConfiguredReleaseKind): TxThunk =>
463
+ setReleaseKind({
464
+ ...p,
465
+ releaseKindPackageId: this.#requiredConfig(
466
+ "releaseKindPackageId",
467
+ "setReleaseKind",
468
+ ),
469
+ }),
470
+ setReleaseDescription: (p: ConfiguredReleaseDescription): TxThunk =>
471
+ setReleaseDescription({
472
+ ...p,
473
+ releaseDescriptionPackageId: this.#requiredConfig(
474
+ "releaseDescriptionPackageId",
475
+ "setReleaseDescription",
476
+ ),
477
+ }),
478
+ setReleaseGenres: (p: ConfiguredReleaseGenres): TxThunk =>
479
+ setReleaseGenres({
480
+ ...p,
481
+ releaseGenrePackageId: this.#requiredConfig(
482
+ "releaseGenrePackageId",
483
+ "setReleaseGenres",
484
+ ),
485
+ }),
486
+ setReleaseDspLinks: (p: ConfiguredReleaseDspLinks): TxThunk =>
487
+ setReleaseDspLinks({
488
+ ...p,
489
+ releaseDspLinkPackageId: this.#requiredConfig(
490
+ "releaseDspLinkPackageId",
491
+ "setReleaseDspLinks",
492
+ ),
493
+ }),
494
+ setReleaseSnapshotBundle: (p: ConfiguredReleaseSnapshotBundle): TxThunk =>
495
+ setReleaseSnapshotBundle({
496
+ ...p,
497
+ releaseSnapshotBundlePackageId: this.#requiredConfig(
498
+ "releaseSnapshotBundlePackageId",
499
+ "setReleaseSnapshotBundle",
500
+ ),
501
+ oriPackageId: this.#requiredConfig(
502
+ "oriPackageId",
503
+ "setReleaseSnapshotBundle",
504
+ ),
505
+ }),
506
+ addReleaseCredit: (p: ConfiguredReleaseCredit): TxThunk =>
507
+ addReleaseCredit({
508
+ ...p,
509
+ releaseCreditsPackageId: this.#requiredConfig(
510
+ "releaseCreditsPackageId",
511
+ "addReleaseCredit",
512
+ ),
513
+ misoCreditPackageId: this.#requiredConfig(
514
+ "misoCreditPackageId",
515
+ "addReleaseCredit",
516
+ ),
517
+ }),
518
+ setReleaseCover: (p: ConfiguredReleaseCover): TxThunk =>
519
+ setReleaseCover({
520
+ ...p,
521
+ coverArtPackageId: this.#requiredConfig(
522
+ "coverArtPackageId",
523
+ "setReleaseCover",
524
+ ),
525
+ releaseCoverArtPackageId: this.#requiredConfig(
526
+ "releaseCoverArtPackageId",
527
+ "setReleaseCover",
528
+ ),
529
+ oriPackageId: this.#requiredConfig("oriPackageId", "setReleaseCover"),
530
+ }),
531
+ setReleaseTrackCover: (p: ConfiguredReleaseTrackCover): TxThunk =>
532
+ setReleaseTrackCover({
533
+ ...p,
534
+ coverArtPackageId: this.#requiredConfig(
535
+ "coverArtPackageId",
536
+ "setReleaseTrackCover",
537
+ ),
538
+ releaseCoverArtPackageId: this.#requiredConfig(
539
+ "releaseCoverArtPackageId",
540
+ "setReleaseTrackCover",
541
+ ),
542
+ oriPackageId: this.#requiredConfig(
543
+ "oriPackageId",
544
+ "setReleaseTrackCover",
545
+ ),
546
+ }),
313
547
  };
314
548
 
549
+ /**
550
+ * Vault-aware builders and parsers. These take explicit object ids because a
551
+ * VaultAdminCap is owner-held while the Vault is shared; package ids can come
552
+ * from the deployment config or be supplied for private deployments.
553
+ */
554
+ readonly vault = vaultActions;
555
+
315
556
  // ── Share currency provisioning (executes; Signer pattern) ─────────────────
316
557
 
317
558
  /** Publishes + initializes a fresh share currency (two txs). */
318
- async createShareCurrency(signer: Signer, params: share.CreateShareCurrencyParams): Promise<share.ShareCurrency> {
559
+ async createShareCurrency(
560
+ signer: Signer,
561
+ params: share.CreateShareCurrencyParams,
562
+ ): Promise<share.ShareCurrency> {
319
563
  return share.createShareCurrency(this.#client, signer, params);
320
564
  }
321
565
 
@@ -324,14 +568,112 @@ export class MisoPlatformClient {
324
568
  /** Generated Move-call bindings, for commands this facade doesn't wrap. */
325
569
  get call() {
326
570
  return {
327
- listing: bindModulePackage(listingContract, this.packageId),
328
- pressing: bindModulePackage(pressingContract, this.packageId),
329
- releaseRegistry: this.#config.releaseRegistryPackageId
571
+ listing: bindModulePackage(listingContract, this.packageId, ["newFixedPrice", "newFloorPrice", "newEnabledState", "newDisabledState", "buy", "setState", "setPrice", "deriveId", "hasListing", "id", "releaseId", "pressingId", "price", "state", "isLive", "amount"] as const),
572
+ pressing: bindModulePackage(pressingContract, this.packageId, ["newScheduledState", "newActiveState", "newPausedState", "setState", "deriveId", "id", "releaseId", "supply", "isSelling", "pressingAdminCapPressingId", "verifyRecord"] as const),
573
+ genre: this.#config.genrePackageId
574
+ ? bindModulePackage(genreContract, this.#config.genrePackageId, ["deriveGenreId", "id"] as const)
575
+ : undefined,
576
+ releaseDescription: this.#config.releaseDescriptionPackageId
577
+ ? bindModulePackage(
578
+ releaseDescriptionContract,
579
+ this.#config.releaseDescriptionPackageId,
580
+ ["setDescription", "clearDescription", "hasDescription"],
581
+ )
582
+ : undefined,
583
+ releaseDspLink: this.#config.releaseDspLinkPackageId
584
+ ? bindModulePackage(
585
+ releaseDspLinkContract,
586
+ this.#config.releaseDspLinkPackageId,
587
+ ["platform", "platformSpotify", "platformAppleMusic", "platformAmazonMusic", "platformBandcamp", "platformDeezer", "platformSoundcloud", "platformTidal", "platformYoutubeMusic", "newSpotify", "newAppleMusicAlbum", "newAppleMusicTrack", "newAmazonMusicAlbum", "newAmazonMusicTrack", "newBandcamp", "newDeezer", "newSoundcloud", "newTidal", "newYoutubeMusic", "setReleaseLink", "clearReleaseLink", "setTrackLink", "clearTrackLink", "clearTrackLinks", "hasReleaseLink"] as const,
588
+ )
589
+ : undefined,
590
+ releaseGenre: this.#config.releaseGenrePackageId
330
591
  ? bindModulePackage(
331
- releaseRegistry,
332
- this.#config.releaseRegistryPackageId,
592
+ releaseGenreContract,
593
+ this.#config.releaseGenrePackageId,
594
+ ["setPrimaryGenre", "addSecondaryGenre", "removeSecondaryGenre", "setTrackPrimaryGenre", "unsetTrackPrimaryGenre", "hasGenre"] as const,
333
595
  )
334
- : releaseRegistry,
596
+ : undefined,
597
+ releaseKind: this.#config.releaseKindPackageId
598
+ ? bindModulePackage(
599
+ releaseKindContract,
600
+ this.#config.releaseKindPackageId,
601
+ ["setKind", "unsetKind", "hasKind"] as const,
602
+ )
603
+ : undefined,
604
+ releaseRevenueDistributor: this.#config.releaseRevenueDistributorPluginPackageId
605
+ ? bindModulePackage(
606
+ releaseRevenueDistributorContract,
607
+ this.#config.releaseRevenueDistributorPluginPackageId,
608
+ ["install", "uninstall", "redeemAndDistribute", "receiveAndDistribute", "isInstalled"] as const,
609
+ )
610
+ : undefined,
611
+ vault: this.#config.vaultPackageId
612
+ ? bindModulePackage(vaultContract, this.#config.vaultPackageId, ["share", "id", "vaultId", "authorizedPluginsId", "authorizedPluginCount", "isPluginAuthorized"] as const)
613
+ : undefined,
614
+ compositionRoyaltyPool: this.#config.compositionRoyaltyPoolPluginPackageId
615
+ ? bindModulePackage(
616
+ compositionRoyaltyPoolContract,
617
+ this.#config.compositionRoyaltyPoolPluginPackageId,
618
+ ["install", "uninstall", "initializePool", "receiveAndDeposit", "redeemAndDeposit", "isInstalled", "poolAddress"] as const,
619
+ )
620
+ : undefined,
621
+ recordingRoyaltyPool: this.#config.recordingRoyaltyPoolPluginPackageId
622
+ ? bindModulePackage(
623
+ recordingRoyaltyPoolContract,
624
+ this.#config.recordingRoyaltyPoolPluginPackageId,
625
+ ["install", "uninstall", "initializePool", "receiveAndDeposit", "redeemAndDeposit", "isInstalled", "poolAddress"] as const,
626
+ )
627
+ : undefined,
628
+ compositionRoutedStake: this.#config.compositionRoutedStakePluginPackageId
629
+ ? bindModulePackage(
630
+ compositionRoutedStakeContract,
631
+ this.#config.compositionRoutedStakePluginPackageId,
632
+ ["install", "uninstall", "createStake", "register", "unregister", "unstake", "restake", "isInstalled", "stakeAddress"] as const,
633
+ )
634
+ : undefined,
635
+ routedStake: this.#config.routedStakePackageId
636
+ ? bindModulePackage(routedStakeContract, this.#config.routedStakePackageId, ["share", "register", "unregister", "sweep", "unstake", "restake", "id"] as const)
637
+ : undefined,
638
+ royaltyPool: this.#config.royaltyPoolPackageId
639
+ ? bindModulePackage(royaltyPoolContract, this.#config.royaltyPoolPackageId, ["share", "deposit", "redeemAndDeposit", "receiveAndDeposit", "registerStake", "unregisterStake", "claimRewards", "pendingRewards", "id", "stakedShares", "cumulativeRewardPerShare", "cumulativeDeposits", "derivedAddress", "assertDerivedFrom"] as const)
640
+ : undefined,
641
+ recordingAdvisory: this.#config.recordingAdvisoryPackageId
642
+ ? bindModulePackage(recordingAdvisoryContract, this.#config.recordingAdvisoryPackageId, ["explicit", "notExplicit", "cleaned", "setRating", "unsetRating", "hasRating", "isExplicit", "isNotExplicit", "isCleaned"] as const)
643
+ : undefined,
644
+ recordingLanguage: this.#config.recordingLanguagePackageId
645
+ ? bindModulePackage(recordingLanguageContract, this.#config.recordingLanguagePackageId, ["setLanguages", "setInstrumental", "unsetLanguages", "hasLanguages", "isInstrumental"] as const)
646
+ : undefined,
647
+ recordingMasterReference: this.#config.recordingMasterReferencePackageId
648
+ ? bindModulePackage(recordingMasterReferenceContract, this.#config.recordingMasterReferencePackageId, ["setMasterReference", "unsetMasterReference", "hasMasterReference"] as const)
649
+ : undefined,
650
+ recordingPreview: this.#config.recordingPreviewPackageId
651
+ ? bindModulePackage(recordingPreviewContract, this.#config.recordingPreviewPackageId, ["setPreview", "unsetPreview", "hasPreview"] as const)
652
+ : undefined,
653
+ releaseSnapshotBundle: this.#config.releaseSnapshotBundlePackageId
654
+ ? bindModulePackage(
655
+ releaseSnapshotBundleContract,
656
+ this.#config.releaseSnapshotBundlePackageId,
657
+ ["setSnapshotBundle", "hasSnapshotBundle"],
658
+ )
659
+ : undefined,
660
+ coverArt: this.#config.coverArtPackageId
661
+ ? bindModulePackage(coverArtContract, this.#config.coverArtPackageId, [] as const)
662
+ : undefined,
663
+ releaseCoverArt: this.#config.releaseCoverArtPackageId
664
+ ? bindModulePackage(
665
+ releaseCoverArtContract,
666
+ this.#config.releaseCoverArtPackageId,
667
+ ["setCover", "unsetCover", "setTrackCover", "unsetTrackCover", "hasCoverArt"] as const,
668
+ )
669
+ : undefined,
670
+ releaseCredits: this.#config.releaseCreditsPackageId
671
+ ? bindModulePackage(
672
+ releaseCreditsContract,
673
+ this.#config.releaseCreditsPackageId,
674
+ ["addCredit", "removeCredit", "hasCredits"] as const,
675
+ )
676
+ : undefined,
335
677
  };
336
678
  }
337
679
 
@@ -341,8 +683,10 @@ export class MisoPlatformClient {
341
683
  PressingAdminCap: pressingContract.PressingAdminCap,
342
684
  Listing: listingContract.Listing,
343
685
  Price: listingContract.Price,
344
- ReleaseRegistry: releaseRegistry.ReleaseRegistry,
345
- ReleaseRegistryCreatedEvent: releaseRegistry.ReleaseRegistryCreatedEvent,
686
+ VaultAdminCap: vaultContract.VaultAdminCap,
687
+ VaultCreatedEvent: vaultContract.VaultCreatedEvent,
688
+ ReleaseRevenueDistributedEvent:
689
+ releaseRevenueDistributorContract.ReleaseRevenueDistributedEvent,
346
690
  };
347
691
  }
348
692
 
@@ -375,8 +719,35 @@ export function miso<const Name extends string = "miso">(
375
719
  settingsId: deployment.objects.recordSettings,
376
720
  misoPackageId: deployment.protocol.packageId,
377
721
  minatoPackageId: deployment.packages.minato,
378
- releaseRegistryPackageId: deployment.packages.releaseRegistry,
379
722
  releaseRegistryId: deployment.objects.releaseRegistry,
723
+ releaseKindPackageId: deployment.packages.releaseKind,
724
+ releaseDescriptionPackageId: deployment.packages.releaseDescription,
725
+ releaseGenrePackageId: deployment.packages.releaseGenre,
726
+ releaseDspLinkPackageId: deployment.packages.releaseDspLink,
727
+ releaseSnapshotBundlePackageId:
728
+ deployment.packages.releaseSnapshotBundle,
729
+ recordingAdvisoryPackageId: deployment.packages.recordingAdvisory,
730
+ recordingLanguagePackageId: deployment.packages.recordingLanguage,
731
+ recordingMasterReferencePackageId: deployment.packages.recordingMasterReference,
732
+ recordingPreviewPackageId: deployment.packages.recordingPreview,
733
+ vaultPackageId: deployment.packages.vault,
734
+ royaltyPoolPackageId: deployment.packages.royaltyPool,
735
+ compositionRoyaltyPoolPluginPackageId:
736
+ deployment.packages.compositionRoyaltyPoolPlugin,
737
+ recordingRoyaltyPoolPluginPackageId:
738
+ deployment.packages.recordingRoyaltyPoolPlugin,
739
+ compositionRoutedStakePluginPackageId:
740
+ deployment.packages.compositionRoutedStakePlugin,
741
+ routedStakePackageId: deployment.packages.routedStake,
742
+ releaseRevenueDistributorPluginPackageId:
743
+ deployment.packages.releaseRevenueDistributorPlugin,
744
+ releaseCreditsPackageId: deployment.packages.releaseCredits,
745
+ misoCreditPackageId: deployment.packages.credit,
746
+ coverArtPackageId: deployment.packages.coverArt,
747
+ releaseCoverArtPackageId: deployment.packages.releaseCoverArt,
748
+ genrePackageId: deployment.packages.genre,
749
+ genreRegistryId: deployment.objects.genreRegistry,
750
+ oriPackageId: deployment.packages.ori,
380
751
  },
381
752
  protocol,
382
753
  deployment,
@@ -397,13 +768,9 @@ export function misoPlatform(config: MisoPlatformConfig) {
397
768
  return {
398
769
  name: "misoPlatform" as const,
399
770
  register: (client: ClientWithCoreApi) => {
400
- const protocol = protocolMiso({
401
- deployment: config.misoPackageId
402
- ? {
403
- packageId: config.misoPackageId,
404
- }
405
- : undefined,
406
- }).register(client);
771
+ const protocol = config.misoPackageId
772
+ ? protocolMiso({ deployment: { packageId: config.misoPackageId } }).register(client)
773
+ : undefined;
407
774
  return new MisoPlatformClient(client, config, protocol);
408
775
  },
409
776
  };