@misofm/sdk 0.15.11 → 0.17.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 (371) hide show
  1. package/README.md +210 -73
  2. package/dist/client.d.ts +224 -68
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +465 -79
  5. package/dist/client.js.map +1 -1
  6. package/dist/contracts/composition_credits/composition_credits.d.ts +10 -10
  7. package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -1
  8. package/dist/contracts/composition_credits/composition_credits.js.map +1 -1
  9. package/dist/contracts/composition_credits/composition_party_role.d.ts +1 -1
  10. package/dist/contracts/composition_credits/composition_party_role.d.ts.map +1 -1
  11. package/dist/contracts/composition_credits/composition_party_role.js.map +1 -1
  12. package/dist/contracts/composition_credits/deps/miso_credit/credit.d.ts.map +1 -1
  13. package/dist/contracts/composition_credits/deps/miso_credit/credit.js.map +1 -1
  14. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts.map +1 -1
  15. package/dist/contracts/composition_credits/deps/sui/vec_map.js.map +1 -1
  16. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +29 -93
  17. package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts.map +1 -1
  18. package/dist/contracts/composition_routed_stake/composition_routed_stake.js +19 -79
  19. package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -1
  20. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +22 -106
  21. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -1
  22. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +16 -98
  23. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -1
  24. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts +90 -0
  25. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts.map +1 -0
  26. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js +85 -0
  27. package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js.map +1 -0
  28. package/dist/contracts/{party_wallet → composition_royalty_pool_plugin}/witness.d.ts +1 -1
  29. package/dist/contracts/composition_royalty_pool_plugin/witness.d.ts.map +1 -0
  30. package/dist/contracts/{recording_royalty_pool → composition_royalty_pool_plugin}/witness.js +1 -1
  31. package/dist/contracts/composition_royalty_pool_plugin/witness.js.map +1 -0
  32. package/dist/contracts/cover_art/cover_art.d.ts +4 -4
  33. package/dist/contracts/cover_art/cover_art.d.ts.map +1 -1
  34. package/dist/contracts/cover_art/cover_art.js.map +1 -1
  35. package/dist/contracts/cover_art/deps/ori/walrus_data.d.ts +4 -4
  36. package/dist/contracts/cover_art/deps/ori/walrus_data.d.ts.map +1 -1
  37. package/dist/contracts/cover_art/deps/ori/walrus_data.js.map +1 -1
  38. package/dist/contracts/genre/genre.d.ts +6 -6
  39. package/dist/contracts/genre/genre.d.ts.map +1 -1
  40. package/dist/contracts/genre/genre.js.map +1 -1
  41. package/dist/contracts/{miso_pressing → miso_record}/deps/std/type_name.d.ts +1 -1
  42. package/dist/contracts/miso_record/deps/std/type_name.d.ts.map +1 -0
  43. package/dist/contracts/miso_record/deps/std/type_name.js.map +1 -0
  44. package/dist/contracts/miso_record/deps/sui/vec_set.d.ts +21 -0
  45. package/dist/contracts/miso_record/deps/sui/vec_set.d.ts.map +1 -0
  46. package/dist/contracts/miso_record/deps/sui/vec_set.js +20 -0
  47. package/dist/contracts/miso_record/deps/sui/vec_set.js.map +1 -0
  48. package/dist/contracts/miso_record/pressing.d.ts +327 -0
  49. package/dist/contracts/miso_record/pressing.d.ts.map +1 -0
  50. package/dist/contracts/miso_record/pressing.js +345 -0
  51. package/dist/contracts/miso_record/pressing.js.map +1 -0
  52. package/dist/contracts/miso_record/record.d.ts +190 -0
  53. package/dist/contracts/miso_record/record.d.ts.map +1 -0
  54. package/dist/contracts/miso_record/record.js +226 -0
  55. package/dist/contracts/miso_record/record.js.map +1 -0
  56. package/dist/contracts/miso_record_shop/deps/std/type_name.d.ts +18 -0
  57. package/dist/contracts/miso_record_shop/deps/std/type_name.d.ts.map +1 -0
  58. package/dist/contracts/miso_record_shop/deps/std/type_name.js +20 -0
  59. package/dist/contracts/miso_record_shop/deps/std/type_name.js.map +1 -0
  60. package/dist/contracts/miso_record_shop/listing.d.ts +387 -0
  61. package/dist/contracts/miso_record_shop/listing.d.ts.map +1 -0
  62. package/dist/contracts/miso_record_shop/listing.js +380 -0
  63. package/dist/contracts/miso_record_shop/listing.js.map +1 -0
  64. package/dist/contracts/{release_revenue_distributor → miso_record_shop}/witness.d.ts +2 -2
  65. package/dist/contracts/miso_record_shop/witness.d.ts.map +1 -0
  66. package/dist/contracts/{release_revenue_distributor → miso_record_shop}/witness.js +2 -2
  67. package/dist/contracts/miso_record_shop/witness.js.map +1 -0
  68. package/dist/contracts/party_wallet/party_wallet.d.ts +41 -168
  69. package/dist/contracts/party_wallet/party_wallet.d.ts.map +1 -1
  70. package/dist/contracts/party_wallet/party_wallet.js +27 -152
  71. package/dist/contracts/party_wallet/party_wallet.js.map +1 -1
  72. package/dist/contracts/recording_advisory/recording_advisory.d.ts +3 -3
  73. package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -1
  74. package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -1
  75. package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts.map +1 -1
  76. package/dist/contracts/recording_credits/deps/miso_credit/credit.js.map +1 -1
  77. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -1
  78. package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -1
  79. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -1
  80. package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -1
  81. package/dist/contracts/recording_credits/recording_credits.d.ts +20 -20
  82. package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -1
  83. package/dist/contracts/recording_credits/recording_credits.js.map +1 -1
  84. package/dist/contracts/recording_credits/recording_party_role.d.ts +30 -30
  85. package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -1
  86. package/dist/contracts/recording_credits/recording_party_role.js.map +1 -1
  87. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +1 -1
  88. package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +1 -1
  89. package/dist/contracts/recording_language/deps/language_code/language_code.js.map +1 -1
  90. package/dist/contracts/recording_language/recording_language.d.ts +4 -4
  91. package/dist/contracts/recording_language/recording_language.d.ts.map +1 -1
  92. package/dist/contracts/recording_language/recording_language.js.map +1 -1
  93. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts +4 -4
  94. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts.map +1 -1
  95. package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js.map +1 -1
  96. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +6 -6
  97. package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -1
  98. package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -1
  99. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts +4 -4
  100. package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts.map +1 -1
  101. package/dist/contracts/recording_preview/deps/ori/walrus_data.js.map +1 -1
  102. package/dist/contracts/recording_preview/recording_preview.d.ts +6 -6
  103. package/dist/contracts/recording_preview/recording_preview.d.ts.map +1 -1
  104. package/dist/contracts/recording_preview/recording_preview.js.map +1 -1
  105. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +21 -109
  106. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -1
  107. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +15 -100
  108. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -1
  109. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts +92 -0
  110. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts.map +1 -0
  111. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js +85 -0
  112. package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js.map +1 -0
  113. package/dist/contracts/{composition_royalty_pool → recording_royalty_pool_plugin}/witness.d.ts +1 -1
  114. package/dist/contracts/recording_royalty_pool_plugin/witness.d.ts.map +1 -0
  115. package/dist/contracts/{party_wallet → recording_royalty_pool_plugin}/witness.js +1 -1
  116. package/dist/contracts/recording_royalty_pool_plugin/witness.js.map +1 -0
  117. package/dist/contracts/release_cover_art/deps/{0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78 → 0xf35cf353a62cef01084b51a9cf3da4c64c8724685ad1862f2f8284b71bd26c1a}/walrus_data.d.ts +7 -7
  118. package/dist/contracts/release_cover_art/deps/{0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78 → 0xf35cf353a62cef01084b51a9cf3da4c64c8724685ad1862f2f8284b71bd26c1a}/walrus_data.d.ts.map +1 -1
  119. package/dist/contracts/release_cover_art/deps/{0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78 → 0xf35cf353a62cef01084b51a9cf3da4c64c8724685ad1862f2f8284b71bd26c1a}/walrus_data.js +1 -1
  120. package/dist/contracts/release_cover_art/deps/{0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78 → 0xf35cf353a62cef01084b51a9cf3da4c64c8724685ad1862f2f8284b71bd26c1a}/walrus_data.js.map +1 -1
  121. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +7 -7
  122. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -1
  123. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +1 -1
  124. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -1
  125. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -1
  126. package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -1
  127. package/dist/contracts/release_cover_art/release_cover_art.d.ts +23 -23
  128. package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -1
  129. package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -1
  130. package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts.map +1 -1
  131. package/dist/contracts/release_credits/deps/miso_credit/credit.js.map +1 -1
  132. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -1
  133. package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -1
  134. package/dist/contracts/release_credits/release_credits.d.ts +10 -10
  135. package/dist/contracts/release_credits/release_credits.d.ts.map +1 -1
  136. package/dist/contracts/release_credits/release_credits.js.map +1 -1
  137. package/dist/contracts/release_description/release_description.d.ts +4 -4
  138. package/dist/contracts/release_description/release_description.d.ts.map +1 -1
  139. package/dist/contracts/release_description/release_description.js.map +1 -1
  140. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +41 -42
  141. package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -1
  142. package/dist/contracts/release_dsp_link/release_dsp_link.js +4 -5
  143. package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -1
  144. package/dist/contracts/release_genre/deps/per_track/per_track.d.ts.map +1 -1
  145. package/dist/contracts/release_genre/deps/per_track/per_track.js.map +1 -1
  146. package/dist/contracts/release_genre/release_genre.d.ts +15 -15
  147. package/dist/contracts/release_genre/release_genre.d.ts.map +1 -1
  148. package/dist/contracts/release_genre/release_genre.js.map +1 -1
  149. package/dist/contracts/release_kind/release_kind.d.ts +4 -4
  150. package/dist/contracts/release_kind/release_kind.d.ts.map +1 -1
  151. package/dist/contracts/release_kind/release_kind.js.map +1 -1
  152. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts +46 -59
  153. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts.map +1 -1
  154. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js +27 -48
  155. package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -1
  156. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts +75 -0
  157. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts.map +1 -0
  158. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js +80 -0
  159. package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js.map +1 -0
  160. package/dist/contracts/{recording_royalty_pool → release_revenue_distributor_plugin}/witness.d.ts +1 -1
  161. package/dist/contracts/release_revenue_distributor_plugin/witness.d.ts.map +1 -0
  162. package/dist/contracts/{composition_royalty_pool → release_revenue_distributor_plugin}/witness.js +1 -1
  163. package/dist/contracts/release_revenue_distributor_plugin/witness.js.map +1 -0
  164. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +5 -5
  165. package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts.map +1 -1
  166. package/dist/contracts/routed_stake/deps/royalty_pool/stake.js.map +1 -1
  167. package/dist/contracts/routed_stake/deps/std/type_name.d.ts +1 -1
  168. package/dist/contracts/routed_stake/deps/std/type_name.d.ts.map +1 -1
  169. package/dist/contracts/routed_stake/deps/std/type_name.js.map +1 -1
  170. package/dist/contracts/routed_stake/deps/sui/balance.d.ts +1 -1
  171. package/dist/contracts/routed_stake/deps/sui/balance.d.ts.map +1 -1
  172. package/dist/contracts/routed_stake/deps/sui/balance.js.map +1 -1
  173. package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts.map +1 -1
  174. package/dist/contracts/routed_stake/deps/sui/vec_map.js.map +1 -1
  175. package/dist/contracts/routed_stake/routed_stake.d.ts +15 -15
  176. package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -1
  177. package/dist/contracts/routed_stake/routed_stake.js.map +1 -1
  178. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +1 -1
  179. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -1
  180. package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -1
  181. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +1 -1
  182. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -1
  183. package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -1
  184. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -1
  185. package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -1
  186. package/dist/contracts/royalty_pool/pool.d.ts +19 -19
  187. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -1
  188. package/dist/contracts/royalty_pool/pool.js.map +1 -1
  189. package/dist/contracts/royalty_pool/stake.d.ts +9 -9
  190. package/dist/contracts/royalty_pool/stake.d.ts.map +1 -1
  191. package/dist/contracts/royalty_pool/stake.js.map +1 -1
  192. package/dist/contracts/vault/deps/sui/bag.d.ts +2 -2
  193. package/dist/contracts/vault/deps/sui/bag.d.ts.map +1 -1
  194. package/dist/contracts/vault/deps/sui/bag.js.map +1 -1
  195. package/dist/contracts/vault/deps/sui/borrow.d.ts.map +1 -1
  196. package/dist/contracts/vault/deps/sui/borrow.js.map +1 -1
  197. package/dist/contracts/vault/vault.d.ts +19 -93
  198. package/dist/contracts/vault/vault.d.ts.map +1 -1
  199. package/dist/contracts/vault/vault.js +16 -95
  200. package/dist/contracts/vault/vault.js.map +1 -1
  201. package/dist/contracts.d.ts +6 -3
  202. package/dist/contracts.d.ts.map +1 -1
  203. package/dist/contracts.js +9 -5
  204. package/dist/contracts.js.map +1 -1
  205. package/dist/deployments.d.ts +156 -77
  206. package/dist/deployments.d.ts.map +1 -1
  207. package/dist/deployments.js +146 -32
  208. package/dist/deployments.js.map +1 -1
  209. package/dist/index.d.ts +3 -1
  210. package/dist/index.d.ts.map +1 -1
  211. package/dist/index.js +3 -1
  212. package/dist/index.js.map +1 -1
  213. package/dist/internal.d.ts +9 -0
  214. package/dist/internal.d.ts.map +1 -1
  215. package/dist/internal.js +23 -0
  216. package/dist/internal.js.map +1 -1
  217. package/dist/mix.d.ts +144 -0
  218. package/dist/mix.d.ts.map +1 -0
  219. package/dist/mix.js +656 -0
  220. package/dist/mix.js.map +1 -0
  221. package/dist/pressing.d.ts +72 -156
  222. package/dist/pressing.d.ts.map +1 -1
  223. package/dist/pressing.js +269 -261
  224. package/dist/pressing.js.map +1 -1
  225. package/dist/publication.d.ts +6 -6
  226. package/dist/publication.d.ts.map +1 -1
  227. package/dist/publication.js +134 -90
  228. package/dist/publication.js.map +1 -1
  229. package/dist/read/catalog.d.ts +8 -5
  230. package/dist/read/catalog.d.ts.map +1 -1
  231. package/dist/read/catalog.js +47 -35
  232. package/dist/read/catalog.js.map +1 -1
  233. package/dist/read/config.d.ts +6 -4
  234. package/dist/read/config.d.ts.map +1 -1
  235. package/dist/read/config.js +10 -3
  236. package/dist/read/config.js.map +1 -1
  237. package/dist/read/index.d.ts +1 -1
  238. package/dist/read/index.d.ts.map +1 -1
  239. package/dist/read/index.js +1 -1
  240. package/dist/read/index.js.map +1 -1
  241. package/dist/read/internal/scalars.d.ts.map +1 -1
  242. package/dist/read/internal/scalars.js +4 -3
  243. package/dist/read/internal/scalars.js.map +1 -1
  244. package/dist/read/internal/walrus.d.ts.map +1 -1
  245. package/dist/read/internal/walrus.js +2 -1
  246. package/dist/read/internal/walrus.js.map +1 -1
  247. package/dist/read/receipts.d.ts +21 -12
  248. package/dist/read/receipts.d.ts.map +1 -1
  249. package/dist/read/receipts.js +159 -56
  250. package/dist/read/receipts.js.map +1 -1
  251. package/dist/read/types.d.ts +34 -24
  252. package/dist/read/types.d.ts.map +1 -1
  253. package/dist/read/wallet.d.ts.map +1 -1
  254. package/dist/read/wallet.js +31 -46
  255. package/dist/read/wallet.js.map +1 -1
  256. package/dist/vault.d.ts +81 -48
  257. package/dist/vault.d.ts.map +1 -1
  258. package/dist/vault.js +173 -174
  259. package/dist/vault.js.map +1 -1
  260. package/package.json +17 -7
  261. package/src/client.ts +618 -120
  262. package/src/contracts/composition_credits/composition_credits.ts +3 -2
  263. package/src/contracts/composition_credits/composition_party_role.ts +5 -4
  264. package/src/contracts/composition_credits/deps/miso_credit/credit.ts +1 -0
  265. package/src/contracts/composition_credits/deps/sui/vec_map.ts +1 -0
  266. package/src/contracts/composition_routed_stake/composition_routed_stake.ts +36 -146
  267. package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +28 -169
  268. package/src/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts +165 -0
  269. package/src/contracts/{recording_royalty_pool → composition_royalty_pool_plugin}/witness.ts +2 -1
  270. package/src/contracts/cover_art/cover_art.ts +2 -1
  271. package/src/contracts/cover_art/deps/ori/walrus_data.ts +1 -0
  272. package/src/contracts/genre/genre.ts +3 -2
  273. package/src/contracts/{miso_pressing → miso_record}/deps/std/type_name.ts +1 -0
  274. package/src/contracts/miso_record/deps/sui/vec_set.ts +22 -0
  275. package/src/contracts/miso_record/pressing.ts +523 -0
  276. package/src/contracts/miso_record/record.ts +339 -0
  277. package/src/contracts/miso_record_shop/deps/std/type_name.ts +23 -0
  278. package/src/contracts/miso_record_shop/listing.ts +603 -0
  279. package/src/contracts/{release_revenue_distributor → miso_record_shop}/witness.ts +3 -2
  280. package/src/contracts/party_wallet/party_wallet.ts +41 -256
  281. package/src/contracts/recording_advisory/recording_advisory.ts +4 -3
  282. package/src/contracts/recording_credits/deps/miso_credit/credit.ts +1 -0
  283. package/src/contracts/recording_credits/deps/sui/vec_map.ts +1 -0
  284. package/src/contracts/recording_credits/deps/sui/vec_set.ts +1 -0
  285. package/src/contracts/recording_credits/recording_credits.ts +3 -2
  286. package/src/contracts/recording_credits/recording_party_role.ts +5 -4
  287. package/src/contracts/recording_language/deps/language_code/language_code.ts +1 -0
  288. package/src/contracts/recording_language/recording_language.ts +5 -4
  289. package/src/contracts/recording_master_reference/deps/ori/walrus_data.ts +1 -0
  290. package/src/contracts/recording_master_reference/recording_master_reference.ts +6 -5
  291. package/src/contracts/recording_preview/deps/ori/walrus_data.ts +1 -0
  292. package/src/contracts/recording_preview/recording_preview.ts +2 -1
  293. package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +27 -172
  294. package/src/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts +167 -0
  295. package/src/contracts/{party_wallet → recording_royalty_pool_plugin}/witness.ts +2 -1
  296. package/src/contracts/release_cover_art/deps/{0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78 → 0xf35cf353a62cef01084b51a9cf3da4c64c8724685ad1862f2f8284b71bd26c1a}/walrus_data.ts +2 -1
  297. package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +3 -2
  298. package/src/contracts/release_cover_art/deps/per_track/per_track.ts +3 -2
  299. package/src/contracts/release_cover_art/release_cover_art.ts +2 -1
  300. package/src/contracts/release_credits/deps/miso_credit/credit.ts +1 -0
  301. package/src/contracts/release_credits/deps/sui/vec_map.ts +1 -0
  302. package/src/contracts/release_credits/release_credits.ts +4 -3
  303. package/src/contracts/release_credits/release_party_role.ts +4 -4
  304. package/src/contracts/release_description/release_description.ts +6 -5
  305. package/src/contracts/release_dsp_link/release_dsp_link.ts +8 -8
  306. package/src/contracts/release_genre/deps/per_track/per_track.ts +3 -2
  307. package/src/contracts/release_genre/release_genre.ts +4 -3
  308. package/src/contracts/release_kind/release_kind.ts +5 -4
  309. package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +50 -85
  310. package/src/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts +145 -0
  311. package/src/contracts/{composition_royalty_pool → release_revenue_distributor_plugin}/witness.ts +2 -1
  312. package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +1 -0
  313. package/src/contracts/routed_stake/deps/std/type_name.ts +1 -0
  314. package/src/contracts/routed_stake/deps/sui/balance.ts +1 -0
  315. package/src/contracts/routed_stake/deps/sui/vec_map.ts +1 -0
  316. package/src/contracts/routed_stake/routed_stake.ts +4 -3
  317. package/src/contracts/royalty_pool/deps/std/type_name.ts +1 -0
  318. package/src/contracts/royalty_pool/deps/sui/balance.ts +1 -0
  319. package/src/contracts/royalty_pool/deps/sui/vec_map.ts +1 -0
  320. package/src/contracts/royalty_pool/pool.ts +1 -0
  321. package/src/contracts/royalty_pool/stake.ts +1 -0
  322. package/src/contracts/vault/deps/sui/bag.ts +3 -2
  323. package/src/contracts/vault/deps/sui/borrow.ts +2 -1
  324. package/src/contracts/vault/vault.ts +27 -152
  325. package/src/contracts.ts +9 -5
  326. package/src/deployments.ts +273 -55
  327. package/src/index.ts +5 -0
  328. package/src/internal.ts +27 -0
  329. package/src/mix.ts +910 -0
  330. package/src/pressing.ts +428 -423
  331. package/src/publication.ts +148 -101
  332. package/src/read/catalog.ts +49 -34
  333. package/src/read/config.ts +19 -8
  334. package/src/read/index.ts +9 -1
  335. package/src/read/internal/scalars.ts +4 -2
  336. package/src/read/internal/walrus.ts +2 -1
  337. package/src/read/receipts.ts +181 -66
  338. package/src/read/types.ts +35 -22
  339. package/src/read/wallet.ts +29 -50
  340. package/src/vault.ts +275 -271
  341. package/dist/contracts/composition_routed_stake/witness.d.ts +0 -7
  342. package/dist/contracts/composition_routed_stake/witness.d.ts.map +0 -1
  343. package/dist/contracts/composition_routed_stake/witness.js +0 -9
  344. package/dist/contracts/composition_routed_stake/witness.js.map +0 -1
  345. package/dist/contracts/composition_royalty_pool/witness.d.ts.map +0 -1
  346. package/dist/contracts/composition_royalty_pool/witness.js.map +0 -1
  347. package/dist/contracts/miso_pressing/certificate.d.ts +0 -89
  348. package/dist/contracts/miso_pressing/certificate.d.ts.map +0 -1
  349. package/dist/contracts/miso_pressing/certificate.js +0 -108
  350. package/dist/contracts/miso_pressing/certificate.js.map +0 -1
  351. package/dist/contracts/miso_pressing/deps/std/type_name.d.ts.map +0 -1
  352. package/dist/contracts/miso_pressing/deps/std/type_name.js.map +0 -1
  353. package/dist/contracts/miso_pressing/listing.d.ts +0 -434
  354. package/dist/contracts/miso_pressing/listing.d.ts.map +0 -1
  355. package/dist/contracts/miso_pressing/listing.js +0 -401
  356. package/dist/contracts/miso_pressing/listing.js.map +0 -1
  357. package/dist/contracts/miso_pressing/pressing.d.ts +0 -334
  358. package/dist/contracts/miso_pressing/pressing.d.ts.map +0 -1
  359. package/dist/contracts/miso_pressing/pressing.js +0 -298
  360. package/dist/contracts/miso_pressing/pressing.js.map +0 -1
  361. package/dist/contracts/party_wallet/witness.d.ts.map +0 -1
  362. package/dist/contracts/party_wallet/witness.js.map +0 -1
  363. package/dist/contracts/recording_royalty_pool/witness.d.ts.map +0 -1
  364. package/dist/contracts/recording_royalty_pool/witness.js.map +0 -1
  365. package/dist/contracts/release_revenue_distributor/witness.d.ts.map +0 -1
  366. package/dist/contracts/release_revenue_distributor/witness.js.map +0 -1
  367. package/src/contracts/composition_routed_stake/witness.ts +0 -11
  368. package/src/contracts/miso_pressing/certificate.ts +0 -164
  369. package/src/contracts/miso_pressing/listing.ts +0 -592
  370. package/src/contracts/miso_pressing/pressing.ts +0 -399
  371. /package/dist/contracts/{miso_pressing → miso_record}/deps/std/type_name.js +0 -0
package/src/client.ts CHANGED
@@ -7,9 +7,10 @@
7
7
  //
8
8
  // const client = new SuiGrpcClient({ network, baseUrl }).$extend(miso());
9
9
  //
10
- // await client.miso.getSale({ releaseId, currencyType });
10
+ // await client.miso.getSale({ releaseId, edition, currencyType });
11
11
  // await client.miso.protocol.getReleaseById(releaseId);
12
- // tx.add(client.miso.tx.buyRecord({ releaseId, currencyType, amount, recipient }));
12
+ // tx.add(client.miso.tx.purchaseRecord({ releaseId, edition, currencyType,
13
+ // paymentAmount, expectedPricing, recipient }));
13
14
  //
14
15
  // Two things this buys over calling the bare functions:
15
16
  //
@@ -30,16 +31,19 @@ import type {
30
31
  ClientWithCoreApi,
31
32
  SuiClientRegistration,
32
33
  } from "@mysten/sui/client";
34
+ import type {} from "@mysten/bcs";
33
35
  import type { Signer } from "@mysten/sui/cryptography";
34
36
  import type { SuiGraphQLClient } from "@mysten/sui/graphql";
37
+ import type { ParallelTransactionExecutor } from "@mysten/sui/transactions";
35
38
  import {
36
39
  miso as protocolMiso,
37
40
  type MisoProtocolClient,
38
41
  } from "@misonetwork/sdk/client";
39
42
  import type { PartyProtocolClient } from "@misonetwork/sdk/party";
40
43
 
41
- import * as listingContract from "./contracts/miso_pressing/listing.ts";
42
- import * as pressingContract from "./contracts/miso_pressing/pressing.ts";
44
+ import * as recordContract from "./contracts/miso_record/record.ts";
45
+ import * as pressingContract from "./contracts/miso_record/pressing.ts";
46
+ import * as listingContract from "./contracts/miso_record_shop/listing.ts";
43
47
  import * as genreContract from "./contracts/genre/genre.ts";
44
48
  import * as releaseDescriptionContract from "./contracts/release_description/release_description.ts";
45
49
  import * as releaseDspLinkContract from "./contracts/release_dsp_link/release_dsp_link.ts";
@@ -51,6 +55,9 @@ import * as compositionRoyaltyPoolContract from "./contracts/composition_royalty
51
55
  import * as recordingRoyaltyPoolContract from "./contracts/recording_royalty_pool/recording_royalty_pool.ts";
52
56
  import * as partyWalletContract from "./contracts/party_wallet/party_wallet.ts";
53
57
  import * as compositionRoutedStakeContract from "./contracts/composition_routed_stake/composition_routed_stake.ts";
58
+ import * as compositionRoyaltyPoolPluginContract from "./contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts";
59
+ import * as recordingRoyaltyPoolPluginContract from "./contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts";
60
+ import * as releaseRevenueDistributorPluginContract from "./contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts";
54
61
  import * as routedStakeContract from "./contracts/routed_stake/routed_stake.ts";
55
62
  import * as royaltyPoolContract from "./contracts/royalty_pool/pool.ts";
56
63
  import * as recordingAdvisoryContract from "./contracts/recording_advisory/recording_advisory.ts";
@@ -62,30 +69,34 @@ import * as coverArtContract from "./contracts/cover_art/cover_art.ts";
62
69
  import * as releaseCoverArtContract from "./contracts/release_cover_art/release_cover_art.ts";
63
70
  import * as releaseCreditsContract from "./contracts/release_credits/release_credits.ts";
64
71
  import {
65
- buyRecord,
72
+ authorizeRecordShop,
66
73
  deriveListingId,
67
74
  derivePressingAdminCapId,
68
75
  derivePressingId,
76
+ deriveRecordId,
69
77
  deriveSaleIds,
70
78
  getListing,
71
79
  getPressing,
80
+ getRecord,
72
81
  getSale,
73
82
  openListing,
74
83
  openPressing,
84
+ purchaseRecord,
85
+ revokeRecordShop,
75
86
  setListingPrice,
76
87
  setListingState,
77
- setPressingState,
78
88
  } from "./pressing.ts";
79
89
  import type {
80
- BuyRecordParams,
81
90
  GetSaleParams,
82
91
  ListingView,
83
92
  OpenListingParams,
84
93
  OpenPressingParams,
94
+ PressingAdministrationParams,
85
95
  PressingView,
96
+ PurchaseRecordParams,
97
+ RecordView,
86
98
  SetListingPriceParams,
87
99
  SetListingStateParams,
88
- SetPressingStateParams,
89
100
  } from "./pressing.ts";
90
101
  import {
91
102
  publishShareCurrency,
@@ -109,8 +120,13 @@ import {
109
120
  } from "./release-graph.ts";
110
121
  import {
111
122
  getMisoPlatformDeployment,
123
+ requireOperationsDeployment,
124
+ requireRecordSalesDeployment,
112
125
  type MisoPlatformDeployment,
126
+ type OperationsDeployment,
127
+ type RecordSalesDeployment,
113
128
  } from "./deployments.ts";
129
+ import { immutableSnapshot } from "./internal.ts";
114
130
  import {
115
131
  deriveGenreAddress,
116
132
  setReleaseDescription,
@@ -129,6 +145,10 @@ import {
129
145
  type SetReleaseCoverParams,
130
146
  type SetReleaseTrackCoverParams,
131
147
  } from "./cover.ts";
148
+ import {
149
+ executeViaExecutor as executePlatformViaExecutor,
150
+ type PlatformExecResult,
151
+ } from "./execute.ts";
132
152
 
133
153
  type BoundMoveFunction<F> = F extends (options: infer Options) => infer Result
134
154
  ? Options extends { package?: unknown }
@@ -161,6 +181,43 @@ function bindModulePackage<M extends object, K extends readonly (keyof M)[]>(
161
181
  return out as BoundModule<M, K>;
162
182
  }
163
183
 
184
+ /** Keep synchronous, client-bound surfaces unusable until the endpoint's exact
185
+ * ledger has been validated. The underlying standalone builders remain pure. */
186
+ function requireReadyOnFunctions<T extends object>(
187
+ surface: T,
188
+ requireReady: (operation: string) => void,
189
+ namespace: string,
190
+ ): T {
191
+ return new Proxy(surface, {
192
+ get(target, property, receiver) {
193
+ const value = Reflect.get(target, property, receiver) as unknown;
194
+ if (typeof value !== "function") return value;
195
+ return (...args: unknown[]) => {
196
+ requireReady(`${namespace}.${String(property)}`);
197
+ return Reflect.apply(value, target, args);
198
+ };
199
+ },
200
+ });
201
+ }
202
+
203
+ function requireReadyOnModuleFunctions<T extends object>(
204
+ surface: T,
205
+ requireReady: (operation: string) => void,
206
+ namespace: string,
207
+ ): T {
208
+ return new Proxy(surface, {
209
+ get(target, property, receiver) {
210
+ const value = Reflect.get(target, property, receiver) as unknown;
211
+ if (!value || typeof value !== "object") return value;
212
+ return requireReadyOnFunctions(
213
+ value,
214
+ requireReady,
215
+ `${namespace}.${String(property)}`,
216
+ );
217
+ },
218
+ });
219
+ }
220
+
164
221
  export interface MisoOptions<Name extends string = "miso"> {
165
222
  /** Name for the client extension. Defaults to `miso`. */
166
223
  name?: Name;
@@ -170,9 +227,47 @@ export interface MisoOptions<Name extends string = "miso"> {
170
227
  graphqlClient?: SuiGraphQLClient;
171
228
  }
172
229
 
230
+ export class MisoNetworkMismatchError extends Error {
231
+ override readonly name = "MisoNetworkMismatchError";
232
+ constructor(
233
+ readonly clientNetwork: string,
234
+ readonly deploymentNetwork: string,
235
+ ) {
236
+ super(
237
+ `@misofm/sdk: client network "${clientNetwork}" does not match deployment network "${deploymentNetwork}"`,
238
+ );
239
+ }
240
+ }
241
+
242
+ export class MisoChainIdentifierMismatchError extends Error {
243
+ override readonly name = "MisoChainIdentifierMismatchError";
244
+ constructor(
245
+ readonly actual: string,
246
+ readonly expected: string,
247
+ ) {
248
+ super(
249
+ `@misofm/sdk: endpoint chain identifier "${actual}" does not match deployment chain identifier "${expected}"`,
250
+ );
251
+ }
252
+ }
253
+
254
+ export class MisoClientNotReadyError extends Error {
255
+ override readonly name = "MisoClientNotReadyError";
256
+ constructor(readonly operation: string) {
257
+ super(
258
+ `@misofm/sdk: ${operation} requires an exact-chain validation lifecycle; call and await client.miso.ready() first`,
259
+ );
260
+ }
261
+ }
262
+
173
263
  export interface MisoPlatformConfig {
174
- /** The published `miso_pressing` package. */
175
- packageId: string;
264
+ /** Exact client network label for deprecated `misoPlatform()` registration. */
265
+ network?: string;
266
+ /** Exact ledger identifier required by deprecated `misoPlatform().ready()`. */
267
+ chainIdentifier?: string;
268
+ /** Finalized immutable Record + Record Shop identities, or an explicit
269
+ * unavailable legacy state that makes every sales API fail closed. */
270
+ recordSales?: RecordSalesDeployment;
176
271
  /**
177
272
  * The `@misonetwork/sdk` protocol package (miso core). Required for the
178
273
  * publish builders (`publishComposition`, `publishRecording`,
@@ -197,19 +292,11 @@ export interface MisoPlatformConfig {
197
292
  recordingLanguagePackageId?: string;
198
293
  recordingMasterReferencePackageId?: string;
199
294
  recordingPreviewPackageId?: string;
200
- /** Shared custody package; needed for VaultAdminCap authority orchestration. */
201
- vaultPackageId?: string;
202
- /** Shared singleton from which canonical Vault IDs are derived. */
203
- vaultRegistryId?: string;
295
+ /** Structurally complete Vault/Action/plugin identity set. */
296
+ operations?: OperationsDeployment;
204
297
  /** Generic royalty-pool value package used by pool and routed-stake helpers. */
205
298
  royaltyPoolPackageId?: string;
206
- /** Vault plugins, deliberately separate from data-extension package ids. */
207
- vaultCompositionRoyaltyPoolPluginPackageId?: string;
208
- vaultRecordingRoyaltyPoolPluginPackageId?: string;
209
- vaultPartyWalletPluginPackageId?: string;
210
- vaultCompositionRoutedStakePluginPackageId?: string;
211
299
  routedStakePackageId?: string;
212
- vaultReleaseRevenueDistributorPluginPackageId?: string;
213
300
  releaseCreditsPackageId?: string;
214
301
  misoCreditPackageId?: string;
215
302
  coverArtPackageId?: string;
@@ -222,21 +309,30 @@ export interface MisoPlatformConfig {
222
309
  }
223
310
 
224
311
  /** Params with the ids this client already knows dropped from the call site. */
225
- type DistributiveOmit<T, Keys extends PropertyKey> = T extends unknown ? Omit<T, Keys> : never;
226
- type Configured<T> = DistributiveOmit<T, "misoPressingPackageId">;
312
+ type DistributiveOmit<T, Keys extends PropertyKey> = T extends unknown
313
+ ? Omit<T, Keys>
314
+ : never;
315
+ type Configured<T> = DistributiveOmit<
316
+ T,
317
+ "recordPackageId" | "recordShopPackageId"
318
+ >;
227
319
 
228
320
  /** Publish-builder params with the protocol/minato ids this client already knows dropped. */
229
- type ConfiguredPublish<T> = DistributiveOmit<T, "misoPackageId" | "minatoPackageId">;
321
+ type ConfiguredPublish<T> = DistributiveOmit<
322
+ T,
323
+ "misoPackageId" | "minatoPackageId"
324
+ >;
230
325
 
231
326
  /** Release-builder params with this client's core, share, and registry ids dropped. */
232
327
  type ConfiguredRelease<T> = DistributiveOmit<
233
328
  T,
234
- | "misoPackageId"
235
- | "minatoPackageId"
236
- | "releaseRegistryId"
329
+ "misoPackageId" | "minatoPackageId" | "releaseRegistryId"
237
330
  >;
238
331
 
239
- type ConfiguredReleaseKind = DistributiveOmit<SetReleaseKindParams, "releaseKindPackageId">;
332
+ type ConfiguredReleaseKind = DistributiveOmit<
333
+ SetReleaseKindParams,
334
+ "releaseKindPackageId"
335
+ >;
240
336
  type ConfiguredReleaseDescription = DistributiveOmit<
241
337
  SetReleaseDescriptionParams,
242
338
  "releaseDescriptionPackageId"
@@ -263,15 +359,21 @@ type ConfiguredReleaseTrackCover = DistributiveOmit<
263
359
  >;
264
360
 
265
361
  /** Whole-graph params with this client's package ids dropped. */
266
- export type ConfiguredReleaseGraphParams = Omit<PublishReleaseGraphParams, "misoPackageId" | "minatoPackageId">;
362
+ export type ConfiguredReleaseGraphParams = Omit<
363
+ PublishReleaseGraphParams,
364
+ "misoPackageId" | "minatoPackageId"
365
+ >;
267
366
 
268
367
  export class MisoPlatformClient {
269
368
  readonly #client: ClientWithCoreApi;
270
369
  readonly #config: MisoPlatformConfig;
271
- /** The permissionless protocol layer wrapped by this platform facade. */
272
- readonly protocol?: MisoProtocolClient;
370
+ readonly #protocol?: MisoProtocolClient;
371
+ readonly #chainIdentifier?: string;
273
372
  /** Bundled/custom deployment selected for the full facade, when available. */
274
373
  readonly deployment?: MisoPlatformDeployment;
374
+ #readyState: "unvalidated" | "validating" | "ready" | "failed" =
375
+ "unvalidated";
376
+ #readyPromise?: Promise<void>;
275
377
 
276
378
  constructor(
277
379
  client: ClientWithCoreApi,
@@ -279,29 +381,141 @@ export class MisoPlatformClient {
279
381
  protocol?: MisoProtocolClient,
280
382
  deployment?: MisoPlatformDeployment,
281
383
  ) {
384
+ const configSnapshot = immutableSnapshot(config);
385
+ const deploymentSnapshot = deployment
386
+ ? immutableSnapshot(deployment)
387
+ : undefined;
282
388
  this.#client = client;
283
- this.#config = config;
389
+ this.#config = configSnapshot;
390
+ if (configSnapshot.operations?.status === "available") {
391
+ requireOperationsDeployment(configSnapshot.operations);
392
+ }
284
393
  // A pressing-only facade must not implicitly register a fail-closed core
285
394
  // extension. Supply a core deployment/misoPackageId when `protocol` is
286
395
  // needed; otherwise this remains a safe, independent pressing client.
287
- this.protocol = protocol ?? (config.misoPackageId
288
- ? protocolMiso({ deployment: { packageId: config.misoPackageId } }).register(client)
289
- : undefined);
290
- this.deployment = deployment;
396
+ this.#protocol =
397
+ protocol ??
398
+ (configSnapshot.misoPackageId
399
+ ? protocolMiso({
400
+ deployment: { packageId: configSnapshot.misoPackageId },
401
+ }).register(client)
402
+ : undefined);
403
+ this.deployment = deploymentSnapshot;
404
+ this.#chainIdentifier =
405
+ deploymentSnapshot?.chainIdentifier ?? configSnapshot.chainIdentifier;
406
+ }
407
+
408
+ /** Permissionless protocol APIs bound to the same validated ledger. */
409
+ get protocol(): MisoProtocolClient | undefined {
410
+ if (!this.#protocol) return undefined;
411
+ this.#requireReady("protocol APIs");
412
+ return this.#protocol;
413
+ }
414
+
415
+ /**
416
+ * Memoized exact-ledger readiness gate. Registration already rejects a
417
+ * synchronous network-label mismatch; this Core API read protects every
418
+ * client-bound write surface from a mislabeled or custom endpoint.
419
+ */
420
+ ready(): Promise<void> {
421
+ if (!this.#readyPromise) {
422
+ this.#readyState = "validating";
423
+ this.#readyPromise = (async () => {
424
+ try {
425
+ if (!this.#chainIdentifier) {
426
+ throw new Error(
427
+ "misoPlatform: chain readiness requires a complete deployment or an explicit `chainIdentifier`.",
428
+ );
429
+ }
430
+ const { chainIdentifier } =
431
+ await this.#client.core.getChainIdentifier();
432
+ if (chainIdentifier !== this.#chainIdentifier) {
433
+ throw new MisoChainIdentifierMismatchError(
434
+ chainIdentifier,
435
+ this.#chainIdentifier,
436
+ );
437
+ }
438
+ this.#readyState = "ready";
439
+ } catch (error) {
440
+ this.#readyState = "failed";
441
+ throw error;
442
+ }
443
+ })();
444
+ }
445
+ return this.#readyPromise;
446
+ }
447
+
448
+ /** Compatibility hook; prefer `await client.miso.ready()`. */
449
+ async validateChainIdentifier(): Promise<string> {
450
+ await this.ready();
451
+ return this.#chainIdentifier!;
452
+ }
453
+
454
+ #requireReady(operation: string): void {
455
+ // Capability availability remains the first fail-closed boundary. This
456
+ // keeps an unavailable deployment from masquerading as a mere lifecycle
457
+ // error while still preventing configured builders from running pre-ready.
458
+ if (
459
+ operation === "ids.pressing" ||
460
+ operation === "ids.pressingAdminCap" ||
461
+ operation === "ids.record" ||
462
+ operation === "ids.listing" ||
463
+ operation === "ids.sale" ||
464
+ operation === "tx.purchaseRecord" ||
465
+ operation === "tx.openPressing" ||
466
+ operation === "tx.openListing" ||
467
+ operation === "tx.authorizeRecordShop" ||
468
+ operation === "tx.revokeRecordShop" ||
469
+ operation === "tx.setListingPrice" ||
470
+ operation === "tx.setListingState"
471
+ ) {
472
+ this.#recordSales();
473
+ }
474
+ if (operation === "ids.vault" || operation === "ids.vaultAdminCap") {
475
+ this.#operations();
476
+ }
477
+ if (this.#readyState !== "ready") {
478
+ throw new MisoClientNotReadyError(operation);
479
+ }
291
480
  }
292
481
 
293
482
  /** Party identity and profile APIs, backed by the network SDK. */
294
483
  get party(): PartyProtocolClient {
295
- if (!this.protocol) {
484
+ if (!this.#protocol) {
296
485
  throw new Error(
297
486
  "misoPlatform: Party APIs require the complete platform deployment. Use miso({ deployment }).",
298
487
  );
299
488
  }
300
- return this.protocol.party;
489
+ this.#requireReady("party APIs");
490
+ return this.#protocol.party;
301
491
  }
302
492
 
303
- get packageId(): string {
304
- return this.#config.packageId;
493
+ #recordSales() {
494
+ return requireRecordSalesDeployment(
495
+ this.#config.recordSales ?? {
496
+ status: "unavailable",
497
+ reason:
498
+ "this client was configured without Record and Record Shop package IDs",
499
+ },
500
+ );
501
+ }
502
+
503
+ #operations() {
504
+ return requireOperationsDeployment(this.#config.operations);
505
+ }
506
+
507
+ #availableOperations() {
508
+ return this.#config.operations?.status === "available"
509
+ ? requireOperationsDeployment(this.#config.operations)
510
+ : undefined;
511
+ }
512
+
513
+ get recordPackageId(): string {
514
+ return this.#recordSales().recordPackageId;
515
+ }
516
+
517
+ get recordShopPackageId(): string {
518
+ return this.#recordSales().recordShopPackageId;
305
519
  }
306
520
 
307
521
  #misoPackageId(): string {
@@ -349,48 +563,66 @@ export class MisoPlatformClient {
349
563
  // ── Reads ─────────────────────────────────────────────────────────────────
350
564
 
351
565
  /** The run itself, or `null` if this release has never opened one. */
352
- getPressing(pressingId: string): Promise<PressingView | null> {
353
- return getPressing(this.#client, pressingId, this.packageId);
566
+ async getPressing(pressingId: string): Promise<PressingView | null> {
567
+ await this.ready();
568
+ return getPressing(this.#client, pressingId, this.recordPackageId);
354
569
  }
355
570
 
356
571
  /** One currency's offer, or `null` if the run does not sell in it. */
357
- getListing(listingId: string): Promise<ListingView | null> {
358
- return getListing(this.#client, listingId, this.packageId);
572
+ async getListing(listingId: string): Promise<ListingView | null> {
573
+ await this.ready();
574
+ return getListing(this.#client, listingId, this.recordShopPackageId);
575
+ }
576
+
577
+ /** One concrete purchased Record, including immutable purchase provenance. */
578
+ async getRecord(recordId: string): Promise<RecordView | null> {
579
+ await this.ready();
580
+ return getRecord(this.#client, recordId, this.recordPackageId);
359
581
  }
360
582
 
361
583
  /** Run + one currency's offer in a single round trip, by address math. */
362
- getSale(p: Configured<GetSaleParams>): Promise<{
584
+ async getSale(p: Configured<GetSaleParams>): Promise<{
363
585
  pressing: PressingView | null;
364
586
  listing: ListingView | null;
365
587
  }> {
588
+ await this.ready();
366
589
  return getSale(this.#client, {
367
590
  ...p,
368
- misoPressingPackageId: this.packageId,
591
+ recordPackageId: this.recordPackageId,
592
+ recordShopPackageId: this.recordShopPackageId,
369
593
  });
370
594
  }
371
595
 
372
596
  // ── Address math ──────────────────────────────────────────────────────────
373
597
 
374
- readonly ids = {
375
- pressing: (releaseId: string) =>
376
- derivePressingId(releaseId, this.packageId),
598
+ readonly ids = requireReadyOnFunctions({
599
+ pressing: (releaseId: string, edition: number) =>
600
+ derivePressingId(releaseId, edition, this.recordPackageId),
377
601
  pressingAdminCap: (pressingId: string) =>
378
- derivePressingAdminCapId(pressingId, this.packageId),
602
+ derivePressingAdminCapId(pressingId, this.recordPackageId),
603
+ record: (pressingId: string, number: number) =>
604
+ deriveRecordId(pressingId, number, this.recordPackageId),
379
605
  listing: (pressingId: string, currencyType: string) =>
380
- deriveListingId(pressingId, currencyType, this.packageId),
381
- sale: (releaseId: string, currencyType: string) =>
382
- deriveSaleIds(releaseId, currencyType, this.packageId),
606
+ deriveListingId(pressingId, currencyType, this.recordShopPackageId),
607
+ sale: (releaseId: string, edition: number, currencyType: string) =>
608
+ deriveSaleIds(
609
+ releaseId,
610
+ edition,
611
+ currencyType,
612
+ this.recordPackageId,
613
+ this.recordShopPackageId,
614
+ ),
383
615
  vault: (capId: string, capType: string) =>
384
616
  vaultActions.deriveVaultId({
385
- vaultRegistryId: this.#requiredConfig("vaultRegistryId", "Vault ID derivation"),
617
+ vaultRegistryId: this.#operations().vault.registryId,
386
618
  capId,
387
619
  capType,
388
- vaultPackageId: this.#requiredConfig("vaultPackageId", "Vault ID derivation"),
620
+ vaultPackageId: this.#operations().vault.packageId,
389
621
  }),
390
622
  vaultAdminCap: (vaultId: string) =>
391
623
  vaultActions.deriveVaultAdminCapId(
392
624
  vaultId,
393
- this.#requiredConfig("vaultPackageId", "VaultAdminCap ID derivation"),
625
+ this.#operations().vault.packageId,
394
626
  ),
395
627
  genre: (canonicalName: string) =>
396
628
  deriveGenreAddress(
@@ -398,26 +630,45 @@ export class MisoPlatformClient {
398
630
  this.#requiredConfig("genrePackageId", "genre id derivation"),
399
631
  canonicalName,
400
632
  ),
401
- };
633
+ }, (operation) => this.#requireReady(operation), "ids");
402
634
 
403
635
  // ── Transaction builders ──────────────────────────────────────────────────
404
636
 
405
- readonly tx = {
406
- buyRecord: (p: Configured<BuyRecordParams>): TxThunk =>
407
- buyRecord({
637
+ /** Client-bound builders require a successful `await client.miso.ready()`.
638
+ * Standalone exports remain pure for explicitly managed offline workflows. */
639
+ readonly tx = requireReadyOnFunctions({
640
+ purchaseRecord: (p: Configured<PurchaseRecordParams>): TxThunk =>
641
+ purchaseRecord({
408
642
  ...p,
409
- misoPressingPackageId: this.packageId,
643
+ recordPackageId: this.recordPackageId,
644
+ recordShopPackageId: this.recordShopPackageId,
410
645
  }),
411
646
  openPressing: (p: Configured<OpenPressingParams>): TxThunk =>
412
- openPressing({ ...p, misoPressingPackageId: this.packageId }),
647
+ openPressing({
648
+ ...p,
649
+ recordPackageId: this.recordPackageId,
650
+ recordShopPackageId: this.recordShopPackageId,
651
+ }),
413
652
  openListing: (p: Configured<OpenListingParams>): TxThunk =>
414
- openListing({ ...p, misoPressingPackageId: this.packageId }),
653
+ openListing({ ...p, recordShopPackageId: this.recordShopPackageId }),
654
+ authorizeRecordShop: (
655
+ p: Configured<PressingAdministrationParams>,
656
+ ): TxThunk =>
657
+ authorizeRecordShop({
658
+ ...p,
659
+ recordPackageId: this.recordPackageId,
660
+ recordShopPackageId: this.recordShopPackageId,
661
+ }),
662
+ revokeRecordShop: (p: Configured<PressingAdministrationParams>): TxThunk =>
663
+ revokeRecordShop({
664
+ ...p,
665
+ recordPackageId: this.recordPackageId,
666
+ recordShopPackageId: this.recordShopPackageId,
667
+ }),
415
668
  setListingPrice: (p: Configured<SetListingPriceParams>): TxThunk =>
416
- setListingPrice({ ...p, misoPressingPackageId: this.packageId }),
669
+ setListingPrice({ ...p, recordShopPackageId: this.recordShopPackageId }),
417
670
  setListingState: (p: Configured<SetListingStateParams>): TxThunk =>
418
- setListingState({ ...p, misoPressingPackageId: this.packageId }),
419
- setPressingState: (p: Configured<SetPressingStateParams>): TxThunk =>
420
- setPressingState({ ...p, misoPressingPackageId: this.packageId }),
671
+ setListingState({ ...p, recordShopPackageId: this.recordShopPackageId }),
421
672
 
422
673
  // Publishing (protocol works + minato share economics) — package-id-free
423
674
  // builders pass through unchanged; the rest bind this client's
@@ -535,14 +786,18 @@ export class MisoPlatformClient {
535
786
  "setReleaseTrackCover",
536
787
  ),
537
788
  }),
538
- };
789
+ }, (operation) => this.#requireReady(operation), "tx");
539
790
 
540
791
  /**
541
792
  * Vault-aware builders and parsers. These take explicit object ids because a
542
793
  * VaultAdminCap is owner-held while the Vault is shared; package ids can come
543
794
  * from the deployment config or be supplied for private deployments.
544
795
  */
545
- readonly vault = vaultActions;
796
+ get vault(): typeof vaultActions | undefined {
797
+ if (!this.#availableOperations()) return undefined;
798
+ this.#requireReady("vault builders");
799
+ return vaultActions;
800
+ }
546
801
 
547
802
  // ── Share currency provisioning (executes; Signer pattern) ─────────────────
548
803
 
@@ -551,18 +806,83 @@ export class MisoPlatformClient {
551
806
  signer: Signer,
552
807
  params: share.CreateShareCurrencyParams,
553
808
  ): Promise<share.ShareCurrency> {
809
+ await this.ready();
554
810
  return share.createShareCurrency(this.#client, signer, params);
555
811
  }
556
812
 
813
+ /** Execute a composed platform PTB only after exact-ledger validation. */
814
+ async executeViaExecutor(
815
+ executor: ParallelTransactionExecutor,
816
+ ...thunks: TxThunk[]
817
+ ): Promise<PlatformExecResult> {
818
+ await this.ready();
819
+ return executePlatformViaExecutor(executor, ...thunks);
820
+ }
821
+
557
822
  // ── Generated layer ───────────────────────────────────────────────────────
558
823
 
559
824
  /** Generated Move-call bindings, for commands this facade doesn't wrap. */
560
825
  get call() {
561
- return {
562
- listing: bindModulePackage(listingContract, this.packageId, ["newFixedPrice", "newFloorPrice", "newEnabledState", "newDisabledState", "buy", "setState", "setPrice", "deriveId", "hasListing", "releaseId", "pressingId", "price", "state", "isLive", "amount"] as const),
563
- pressing: bindModulePackage(pressingContract, this.packageId, ["newScheduledState", "newActiveState", "newPausedState", "setState", "deriveId", "releaseId", "supply", "isSelling", "pressingAdminCapPressingId"] as const),
826
+ const sales =
827
+ this.#config.recordSales?.status === "available"
828
+ ? this.#config.recordSales
829
+ : undefined;
830
+ const operations = this.#availableOperations();
831
+ return requireReadyOnModuleFunctions({
832
+ record: sales
833
+ ? bindModulePackage(recordContract, sales.recordPackageId, [
834
+ "destroy",
835
+ "releaseId",
836
+ "pressingId",
837
+ "edition",
838
+ "number",
839
+ "purchaseCurrency",
840
+ "purchasePrice",
841
+ "purchasedBy",
842
+ "purchasedTimestampMs",
843
+ "deriveAddress",
844
+ ] as const)
845
+ : undefined,
846
+ listing: sales
847
+ ? bindModulePackage(listingContract, sales.recordShopPackageId, [
848
+ "fixed",
849
+ "floor",
850
+ "enabled",
851
+ "disabled",
852
+ "setState",
853
+ "setPrice",
854
+ "purchase",
855
+ "deriveAddress",
856
+ "releaseId",
857
+ "pressingId",
858
+ "pricing",
859
+ "price",
860
+ "state",
861
+ "isEnabled",
862
+ "isDisabled",
863
+ "isFixed",
864
+ "isFloor",
865
+ ] as const)
866
+ : undefined,
867
+ pressing: sales
868
+ ? bindModulePackage(pressingContract, sales.recordPackageId, [
869
+ "authorizeDistributor",
870
+ "revokeDistributor",
871
+ "deriveAddress",
872
+ "deriveAdminCapAddress",
873
+ "releaseId",
874
+ "edition",
875
+ "supply",
876
+ "maxSupply",
877
+ "distributors",
878
+ "isDistributorAuthorized",
879
+ "pressingId",
880
+ ] as const)
881
+ : undefined,
564
882
  genre: this.#config.genrePackageId
565
- ? bindModulePackage(genreContract, this.#config.genrePackageId, ["deriveAddress"] as const)
883
+ ? bindModulePackage(genreContract, this.#config.genrePackageId, [
884
+ "deriveAddress",
885
+ ] as const)
566
886
  : undefined,
567
887
  releaseDescription: this.#config.releaseDescriptionPackageId
568
888
  ? bindModulePackage(
@@ -575,14 +895,47 @@ export class MisoPlatformClient {
575
895
  ? bindModulePackage(
576
896
  releaseDspLinkContract,
577
897
  this.#config.releaseDspLinkPackageId,
578
- ["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,
898
+ [
899
+ "platform",
900
+ "platformSpotify",
901
+ "platformAppleMusic",
902
+ "platformAmazonMusic",
903
+ "platformBandcamp",
904
+ "platformDeezer",
905
+ "platformSoundcloud",
906
+ "platformTidal",
907
+ "platformYoutubeMusic",
908
+ "newSpotify",
909
+ "newAppleMusicAlbum",
910
+ "newAppleMusicTrack",
911
+ "newAmazonMusicAlbum",
912
+ "newAmazonMusicTrack",
913
+ "newBandcamp",
914
+ "newDeezer",
915
+ "newSoundcloud",
916
+ "newTidal",
917
+ "newYoutubeMusic",
918
+ "setReleaseLink",
919
+ "clearReleaseLink",
920
+ "setTrackLink",
921
+ "clearTrackLink",
922
+ "clearTrackLinks",
923
+ "hasReleaseLink",
924
+ ] as const,
579
925
  )
580
926
  : undefined,
581
927
  releaseGenre: this.#config.releaseGenrePackageId
582
928
  ? bindModulePackage(
583
929
  releaseGenreContract,
584
930
  this.#config.releaseGenrePackageId,
585
- ["setPrimaryGenre", "addSecondaryGenre", "removeSecondaryGenre", "setTrackPrimaryGenre", "unsetTrackPrimaryGenre", "hasGenre"] as const,
931
+ [
932
+ "setPrimaryGenre",
933
+ "addSecondaryGenre",
934
+ "removeSecondaryGenre",
935
+ "setTrackPrimaryGenre",
936
+ "unsetTrackPrimaryGenre",
937
+ "hasGenre",
938
+ ] as const,
586
939
  )
587
940
  : undefined,
588
941
  releaseKind: this.#config.releaseKindPackageId
@@ -592,70 +945,198 @@ export class MisoPlatformClient {
592
945
  ["setKind", "unsetKind", "hasKind"] as const,
593
946
  )
594
947
  : undefined,
595
- releaseRevenueDistributor: this.#config.vaultReleaseRevenueDistributorPluginPackageId
948
+ releaseRevenueDistributor: operations
596
949
  ? bindModulePackage(
597
950
  releaseRevenueDistributorContract,
598
- this.#config.vaultReleaseRevenueDistributorPluginPackageId,
599
- ["install", "uninstall", "redeemAndDistribute", "receiveAndDistribute", "isInstalled"] as const,
951
+ operations.actions.releaseRevenueDistributor,
952
+ [
953
+ "redeemAndDistribute",
954
+ "redeemAllAndDistribute",
955
+ "receiveAndDistribute",
956
+ ] as const,
957
+ )
958
+ : undefined,
959
+ releaseRevenueDistributorPlugin: operations
960
+ ? bindModulePackage(
961
+ releaseRevenueDistributorPluginContract,
962
+ operations.plugins.releaseRevenueDistributor,
963
+ [
964
+ "install",
965
+ "uninstall",
966
+ "redeemAllAndDistribute",
967
+ "receiveAndDistribute",
968
+ "isInstalled",
969
+ ] as const,
600
970
  )
601
971
  : undefined,
602
- vault: this.#config.vaultPackageId
603
- ? bindModulePackage(vaultContract, this.#config.vaultPackageId, ["share", "transferAdminCap", "withdrawCap", "restoreCap", "vaultAddress", "vaultAdminCapAddress", "vaultId", "capId", "isOccupied", "authorizedPluginsId", "authorizedPluginCount", "isPluginAuthorized"] as const)
972
+ vault: operations
973
+ ? bindModulePackage(vaultContract, operations.vault.packageId, [
974
+ "share",
975
+ "withdrawCap",
976
+ "restoreCap",
977
+ "derivedAddress",
978
+ "capId",
979
+ "isActive",
980
+ "authorizedPlugins",
981
+ "isPluginAuthorized",
982
+ ] as const)
604
983
  : undefined,
605
- compositionRoyaltyPool: this.#config.vaultCompositionRoyaltyPoolPluginPackageId
984
+ compositionRoyaltyPool: operations
606
985
  ? bindModulePackage(
607
986
  compositionRoyaltyPoolContract,
608
- this.#config.vaultCompositionRoyaltyPoolPluginPackageId,
609
- ["install", "uninstall", "newPool", "initializePool", "receiveAndDeposit", "sweepAndDeposit", "isInstalled", "poolAddress"] as const,
987
+ operations.actions.compositionRoyaltyPool,
988
+ ["newPool", "receiveAndDeposit", "redeemAndDeposit", "poolAddress"] as const,
989
+ )
990
+ : undefined,
991
+ compositionRoyaltyPoolPlugin: operations
992
+ ? bindModulePackage(
993
+ compositionRoyaltyPoolPluginContract,
994
+ operations.plugins.compositionRoyaltyPool,
995
+ [
996
+ "install",
997
+ "uninstall",
998
+ "receiveAndDeposit",
999
+ "redeemAndDeposit",
1000
+ "isInstalled",
1001
+ ] as const,
610
1002
  )
611
1003
  : undefined,
612
- recordingRoyaltyPool: this.#config.vaultRecordingRoyaltyPoolPluginPackageId
1004
+ recordingRoyaltyPool: operations
613
1005
  ? bindModulePackage(
614
1006
  recordingRoyaltyPoolContract,
615
- this.#config.vaultRecordingRoyaltyPoolPluginPackageId,
616
- ["install", "uninstall", "newPool", "initializePool", "receiveAndDeposit", "sweepAndDeposit", "isInstalled", "poolAddress"] as const,
1007
+ operations.actions.recordingRoyaltyPool,
1008
+ ["newPool", "receiveAndDeposit", "redeemAndDeposit", "poolAddress"] as const,
1009
+ )
1010
+ : undefined,
1011
+ recordingRoyaltyPoolPlugin: operations
1012
+ ? bindModulePackage(
1013
+ recordingRoyaltyPoolPluginContract,
1014
+ operations.plugins.recordingRoyaltyPool,
1015
+ [
1016
+ "install",
1017
+ "uninstall",
1018
+ "receiveAndDeposit",
1019
+ "redeemAndDeposit",
1020
+ "isInstalled",
1021
+ ] as const,
617
1022
  )
618
1023
  : undefined,
619
- partyWallet: this.#config.vaultPartyWalletPluginPackageId
1024
+ partyWallet: operations
620
1025
  ? bindModulePackage(
621
1026
  partyWalletContract,
622
- this.#config.vaultPartyWalletPluginPackageId,
623
- ["install", "uninstall", "receiveObject", "receiveObjects", "receiveCoins", "redeemBalance", "sweepBalance", "isInstalled", "inboxAddress", "settledFunds"] as const,
1027
+ operations.actions.partyWallet,
1028
+ ["receive", "receiveBalance", "redeemBalance", "inboxAddress"] as const,
624
1029
  )
625
1030
  : undefined,
626
- compositionRoutedStake: this.#config.vaultCompositionRoutedStakePluginPackageId
1031
+ compositionRoutedStake: operations
627
1032
  ? bindModulePackage(
628
1033
  compositionRoutedStakeContract,
629
- this.#config.vaultCompositionRoutedStakePluginPackageId,
630
- ["install", "uninstall", "createStake", "register", "unregister", "unstake", "restake", "isInstalled", "stakeAddress"] as const,
1034
+ operations.actions.compositionRoutedStake,
1035
+ ["createStake", "register", "unregister", "unstake", "restake", "stakeAddress"] as const,
631
1036
  )
632
1037
  : undefined,
633
1038
  routedStake: this.#config.routedStakePackageId
634
- ? bindModulePackage(routedStakeContract, this.#config.routedStakePackageId, ["share", "register", "unregister", "sweep", "unstake", "restake", "derivedAddress"] as const)
1039
+ ? bindModulePackage(
1040
+ routedStakeContract,
1041
+ this.#config.routedStakePackageId,
1042
+ [
1043
+ "share",
1044
+ "register",
1045
+ "unregister",
1046
+ "sweep",
1047
+ "unstake",
1048
+ "restake",
1049
+ "derivedAddress",
1050
+ ] as const,
1051
+ )
635
1052
  : undefined,
636
1053
  royaltyPool: this.#config.royaltyPoolPackageId
637
- ? bindModulePackage(royaltyPoolContract, this.#config.royaltyPoolPackageId, ["share", "deposit", "sweepAndDeposit", "receiveAndDeposit", "registerStake", "unregisterStake", "claimRewards", "pendingRewards", "stakedShares", "cumulativeRewardPerShare", "cumulativeDeposits", "derivedAddress", "assertDerivedFrom"] as const)
1054
+ ? bindModulePackage(
1055
+ royaltyPoolContract,
1056
+ this.#config.royaltyPoolPackageId,
1057
+ [
1058
+ "share",
1059
+ "deposit",
1060
+ "sweepAndDeposit",
1061
+ "receiveAndDeposit",
1062
+ "registerStake",
1063
+ "unregisterStake",
1064
+ "claimRewards",
1065
+ "pendingRewards",
1066
+ "stakedShares",
1067
+ "cumulativeRewardPerShare",
1068
+ "cumulativeDeposits",
1069
+ "derivedAddress",
1070
+ "assertDerivedFrom",
1071
+ ] as const,
1072
+ )
638
1073
  : undefined,
639
1074
  recordingAdvisory: this.#config.recordingAdvisoryPackageId
640
- ? bindModulePackage(recordingAdvisoryContract, this.#config.recordingAdvisoryPackageId, ["explicit", "notExplicit", "cleaned", "setRating", "unsetRating", "hasRating", "isExplicit", "isNotExplicit", "isCleaned"] as const)
1075
+ ? bindModulePackage(
1076
+ recordingAdvisoryContract,
1077
+ this.#config.recordingAdvisoryPackageId,
1078
+ [
1079
+ "explicit",
1080
+ "notExplicit",
1081
+ "cleaned",
1082
+ "setRating",
1083
+ "unsetRating",
1084
+ "hasRating",
1085
+ "isExplicit",
1086
+ "isNotExplicit",
1087
+ "isCleaned",
1088
+ ] as const,
1089
+ )
641
1090
  : undefined,
642
1091
  recordingLanguage: this.#config.recordingLanguagePackageId
643
- ? bindModulePackage(recordingLanguageContract, this.#config.recordingLanguagePackageId, ["setLanguages", "setInstrumental", "unsetLanguages", "hasLanguages", "isInstrumental"] as const)
1092
+ ? bindModulePackage(
1093
+ recordingLanguageContract,
1094
+ this.#config.recordingLanguagePackageId,
1095
+ [
1096
+ "setLanguages",
1097
+ "setInstrumental",
1098
+ "unsetLanguages",
1099
+ "hasLanguages",
1100
+ "isInstrumental",
1101
+ ] as const,
1102
+ )
644
1103
  : undefined,
645
1104
  recordingMasterReference: this.#config.recordingMasterReferencePackageId
646
- ? bindModulePackage(recordingMasterReferenceContract, this.#config.recordingMasterReferencePackageId, ["setMasterReference", "unsetMasterReference", "hasMasterReference"] as const)
1105
+ ? bindModulePackage(
1106
+ recordingMasterReferenceContract,
1107
+ this.#config.recordingMasterReferencePackageId,
1108
+ [
1109
+ "setMasterReference",
1110
+ "unsetMasterReference",
1111
+ "hasMasterReference",
1112
+ ] as const,
1113
+ )
647
1114
  : undefined,
648
1115
  recordingPreview: this.#config.recordingPreviewPackageId
649
- ? bindModulePackage(recordingPreviewContract, this.#config.recordingPreviewPackageId, ["setPreview", "unsetPreview", "hasPreview"] as const)
1116
+ ? bindModulePackage(
1117
+ recordingPreviewContract,
1118
+ this.#config.recordingPreviewPackageId,
1119
+ ["setPreview", "unsetPreview", "hasPreview"] as const,
1120
+ )
650
1121
  : undefined,
651
1122
  coverArt: this.#config.coverArtPackageId
652
- ? bindModulePackage(coverArtContract, this.#config.coverArtPackageId, [] as const)
1123
+ ? bindModulePackage(
1124
+ coverArtContract,
1125
+ this.#config.coverArtPackageId,
1126
+ [] as const,
1127
+ )
653
1128
  : undefined,
654
1129
  releaseCoverArt: this.#config.releaseCoverArtPackageId
655
1130
  ? bindModulePackage(
656
1131
  releaseCoverArtContract,
657
1132
  this.#config.releaseCoverArtPackageId,
658
- ["setCover", "unsetCover", "setTrackCover", "unsetTrackCover", "hasCoverArt"] as const,
1133
+ [
1134
+ "setCover",
1135
+ "unsetCover",
1136
+ "setTrackCover",
1137
+ "unsetTrackCover",
1138
+ "hasCoverArt",
1139
+ ] as const,
659
1140
  )
660
1141
  : undefined,
661
1142
  releaseCredits: this.#config.releaseCreditsPackageId
@@ -665,23 +1146,39 @@ export class MisoPlatformClient {
665
1146
  ["addCredit", "removeCredit", "hasCredits"] as const,
666
1147
  )
667
1148
  : undefined,
668
- };
1149
+ }, (operation) => this.#requireReady(operation), "call");
669
1150
  }
670
1151
 
671
1152
  /** Generated BCS definitions, for parsing objects or events yourself. */
672
1153
  readonly bcs = {
1154
+ Record: recordContract.Record,
673
1155
  Pressing: pressingContract.Pressing,
674
1156
  PressingAdminCap: pressingContract.PressingAdminCap,
675
1157
  Listing: listingContract.Listing,
676
- Price: listingContract.Price,
1158
+ Pricing: listingContract.Pricing,
1159
+ ListingState: listingContract.State,
1160
+ RecordCreatedEvent: recordContract.RecordCreatedEvent,
1161
+ RecordDestroyedEvent: recordContract.RecordDestroyedEvent,
1162
+ PressingCreatedEvent: pressingContract.PressingCreatedEvent,
1163
+ DistributorAuthorizedEvent: pressingContract.DistributorAuthorizedEvent,
1164
+ DistributorRevokedEvent: pressingContract.DistributorRevokedEvent,
1165
+ RecordPurchasedEvent: pressingContract.RecordPurchasedEvent,
1166
+ ListingCreatedEvent: listingContract.ListingCreatedEvent,
1167
+ ListingPriceChangedEvent: listingContract.ListingPriceChangedEvent,
1168
+ ListingStateChangedEvent: listingContract.ListingStateChangedEvent,
1169
+ RecordSoldEvent: listingContract.RecordSoldEvent,
677
1170
  VaultAdminCap: vaultContract.VaultAdminCap,
678
1171
  VaultRegistry: vaultContract.VaultRegistry,
679
1172
  VaultKey: vaultContract.VaultKey,
680
1173
  VaultAdminCapKey: vaultContract.VaultAdminCapKey,
681
- VaultRegistryCreatedEvent: vaultContract.VaultRegistryCreatedEvent,
682
1174
  VaultCreatedEvent: vaultContract.VaultCreatedEvent,
683
1175
  VaultCapabilityWithdrawnEvent: vaultContract.VaultCapabilityWithdrawnEvent,
684
1176
  VaultCapabilityRestoredEvent: vaultContract.VaultCapabilityRestoredEvent,
1177
+ PartyObjectReceivedEvent: partyWalletContract.ObjectReceivedEvent,
1178
+ PartyCoinsReceivedEvent: partyWalletContract.CoinsReceivedEvent,
1179
+ PartyFundsRedeemedEvent: partyWalletContract.FundsRedeemedEvent,
1180
+ ReleaseTrackRevenueDistributedEvent:
1181
+ releaseRevenueDistributorContract.ReleaseTrackRevenueDistributedEvent,
685
1182
  ReleaseRevenueDistributedEvent:
686
1183
  releaseRevenueDistributorContract.ReleaseRevenueDistributedEvent,
687
1184
  };
@@ -703,8 +1200,12 @@ export function miso<const Name extends string = "miso">(
703
1200
  return {
704
1201
  name,
705
1202
  register: (client: ClientWithCoreApi) => {
706
- const deployment =
707
- options.deployment ?? getMisoPlatformDeployment(client.network);
1203
+ const deployment = immutableSnapshot(
1204
+ options.deployment ?? getMisoPlatformDeployment(client.network),
1205
+ );
1206
+ if (deployment.network !== client.network) {
1207
+ throw new MisoNetworkMismatchError(client.network, deployment.network);
1208
+ }
708
1209
  const protocol = protocolMiso({
709
1210
  deployment: deployment.protocol,
710
1211
  graphqlClient: options.graphqlClient,
@@ -712,7 +1213,7 @@ export function miso<const Name extends string = "miso">(
712
1213
  return new MisoPlatformClient(
713
1214
  client,
714
1215
  {
715
- packageId: deployment.packages.pressing,
1216
+ recordSales: deployment.recordSales,
716
1217
  misoPackageId: deployment.protocol.miso,
717
1218
  minatoPackageId: deployment.packages.minato,
718
1219
  releaseRegistryId: deployment.objects.releaseRegistry,
@@ -722,21 +1223,12 @@ export function miso<const Name extends string = "miso">(
722
1223
  releaseDspLinkPackageId: deployment.packages.releaseDspLink,
723
1224
  recordingAdvisoryPackageId: deployment.packages.recordingAdvisory,
724
1225
  recordingLanguagePackageId: deployment.packages.recordingLanguage,
725
- recordingMasterReferencePackageId: deployment.packages.recordingMasterReference,
1226
+ recordingMasterReferencePackageId:
1227
+ deployment.packages.recordingMasterReference,
726
1228
  recordingPreviewPackageId: deployment.packages.recordingPreview,
727
- vaultPackageId: deployment.packages.vault,
728
- vaultRegistryId: deployment.objects.vaultRegistry,
1229
+ operations: deployment.operations,
729
1230
  royaltyPoolPackageId: deployment.packages.royaltyPool,
730
- vaultCompositionRoyaltyPoolPluginPackageId:
731
- deployment.packages.vaultCompositionRoyaltyPoolPlugin,
732
- vaultRecordingRoyaltyPoolPluginPackageId:
733
- deployment.packages.vaultRecordingRoyaltyPoolPlugin,
734
- vaultPartyWalletPluginPackageId: deployment.packages.vaultPartyWalletPlugin,
735
- vaultCompositionRoutedStakePluginPackageId:
736
- deployment.packages.vaultCompositionRoutedStakePlugin,
737
1231
  routedStakePackageId: deployment.packages.routedStake,
738
- vaultReleaseRevenueDistributorPluginPackageId:
739
- deployment.packages.vaultReleaseRevenueDistributorPlugin,
740
1232
  releaseCreditsPackageId: deployment.packages.releaseCredits,
741
1233
  misoCreditPackageId: deployment.packages.credit,
742
1234
  coverArtPackageId: deployment.packages.coverArt,
@@ -760,10 +1252,16 @@ export function misoPlatform(config: MisoPlatformConfig) {
760
1252
  return {
761
1253
  name: "misoPlatform" as const,
762
1254
  register: (client: ClientWithCoreApi) => {
763
- const protocol = config.misoPackageId
764
- ? protocolMiso({ deployment: { packageId: config.misoPackageId } }).register(client)
1255
+ const configSnapshot = immutableSnapshot(config);
1256
+ if (configSnapshot.network && configSnapshot.network !== client.network) {
1257
+ throw new MisoNetworkMismatchError(client.network, configSnapshot.network);
1258
+ }
1259
+ const protocol = configSnapshot.misoPackageId
1260
+ ? protocolMiso({
1261
+ deployment: { packageId: configSnapshot.misoPackageId },
1262
+ }).register(client)
765
1263
  : undefined;
766
- return new MisoPlatformClient(client, config, protocol);
1264
+ return new MisoPlatformClient(client, configSnapshot, protocol);
767
1265
  },
768
1266
  };
769
1267
  }