@misofm/platform 0.23.0 → 0.25.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.
- package/README.md +125 -57
- package/dist/catalog.d.ts +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +1 -1
- package/dist/catalog.js.map +1 -1
- package/dist/client.d.ts +107 -97
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +59 -39
- package/dist/client.js.map +1 -1
- package/dist/contracts/composition_credits/composition_credits.d.ts +181 -0
- package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -0
- package/dist/contracts/composition_credits/composition_credits.js +109 -0
- package/dist/contracts/composition_credits/composition_credits.js.map +1 -0
- package/dist/contracts/composition_credits/composition_party_role.d.ts +119 -0
- package/dist/contracts/composition_credits/composition_party_role.d.ts.map +1 -0
- package/dist/contracts/composition_credits/composition_party_role.js +139 -0
- package/dist/contracts/composition_credits/composition_party_role.js.map +1 -0
- package/dist/contracts/composition_credits/deps/credit/credit.d.ts +24 -0
- package/dist/contracts/composition_credits/deps/credit/credit.d.ts.map +1 -0
- package/dist/contracts/composition_credits/deps/credit/credit.js +23 -0
- package/dist/contracts/composition_credits/deps/credit/credit.js.map +1 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.js +28 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +143 -0
- package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts.map +1 -0
- package/dist/contracts/composition_routed_stake/composition_routed_stake.js +125 -0
- package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +93 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +86 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -0
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts +90 -0
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts.map +1 -0
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js +85 -0
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js.map +1 -0
- package/dist/contracts/composition_royalty_pool_plugin/witness.d.ts +6 -0
- package/dist/contracts/composition_royalty_pool_plugin/witness.d.ts.map +1 -0
- package/dist/contracts/composition_royalty_pool_plugin/witness.js +8 -0
- package/dist/contracts/composition_royalty_pool_plugin/witness.js.map +1 -0
- package/dist/contracts/cover_art/cover_art.d.ts +83 -0
- package/dist/contracts/cover_art/cover_art.d.ts.map +1 -0
- package/dist/contracts/cover_art/cover_art.js +66 -0
- package/dist/contracts/cover_art/cover_art.js.map +1 -0
- package/dist/contracts/cover_art/deps/ori/confidentiality.d.ts +24 -0
- package/dist/contracts/cover_art/deps/ori/confidentiality.d.ts.map +1 -0
- package/dist/contracts/cover_art/deps/ori/confidentiality.js +24 -0
- package/dist/contracts/cover_art/deps/ori/confidentiality.js.map +1 -0
- package/dist/contracts/cover_art/deps/ori/data.d.ts +16 -0
- package/dist/contracts/cover_art/deps/ori/data.d.ts.map +1 -0
- package/dist/contracts/cover_art/deps/ori/data.js +12 -0
- package/dist/contracts/cover_art/deps/ori/data.js.map +1 -0
- package/dist/contracts/genre/genre.d.ts +78 -0
- package/dist/contracts/genre/genre.d.ts.map +1 -0
- package/dist/contracts/genre/genre.js +87 -0
- package/dist/contracts/genre/genre.js.map +1 -0
- package/dist/contracts/party_cta/party_cta.d.ts +120 -0
- package/dist/contracts/party_cta/party_cta.d.ts.map +1 -0
- package/dist/contracts/party_cta/party_cta.js +139 -0
- package/dist/contracts/party_cta/party_cta.js.map +1 -0
- package/dist/contracts/party_genre/party_genre.d.ts +117 -0
- package/dist/contracts/party_genre/party_genre.d.ts.map +1 -0
- package/dist/contracts/party_genre/party_genre.js +131 -0
- package/dist/contracts/party_genre/party_genre.js.map +1 -0
- package/dist/contracts/party_media/party_media.d.ts +86 -0
- package/dist/contracts/party_media/party_media.d.ts.map +1 -0
- package/dist/contracts/party_media/party_media.js +97 -0
- package/dist/contracts/party_media/party_media.js.map +1 -0
- package/dist/contracts/party_music/party_music.d.ts +209 -0
- package/dist/contracts/party_music/party_music.d.ts.map +1 -0
- package/dist/contracts/party_music/party_music.js +259 -0
- package/dist/contracts/party_music/party_music.js.map +1 -0
- package/dist/contracts/party_platform_link/party_platform_link.d.ts +89 -0
- package/dist/contracts/party_platform_link/party_platform_link.d.ts.map +1 -0
- package/dist/contracts/party_platform_link/party_platform_link.js +92 -0
- package/dist/contracts/party_platform_link/party_platform_link.js.map +1 -0
- package/dist/contracts/party_pro_link/party_pro_link.d.ts +233 -0
- package/dist/contracts/party_pro_link/party_pro_link.d.ts.map +1 -0
- package/dist/contracts/party_pro_link/party_pro_link.js +289 -0
- package/dist/contracts/party_pro_link/party_pro_link.js.map +1 -0
- package/dist/contracts/party_profile/deps/country_code/country_code.d.ts +15 -0
- package/dist/contracts/party_profile/deps/country_code/country_code.d.ts.map +1 -0
- package/dist/contracts/party_profile/deps/country_code/country_code.js +17 -0
- package/dist/contracts/party_profile/deps/country_code/country_code.js.map +1 -0
- package/dist/contracts/party_profile/deps/language_code/language_code.d.ts +6 -0
- package/dist/contracts/party_profile/deps/language_code/language_code.d.ts.map +1 -0
- package/dist/contracts/party_profile/deps/language_code/language_code.js +8 -0
- package/dist/contracts/party_profile/deps/language_code/language_code.js.map +1 -0
- package/dist/contracts/party_profile/party_profile.d.ts +133 -0
- package/dist/contracts/party_profile/party_profile.d.ts.map +1 -0
- package/dist/contracts/party_profile/party_profile.js +153 -0
- package/dist/contracts/party_profile/party_profile.js.map +1 -0
- package/dist/contracts/party_roles/party_roles.d.ts +201 -0
- package/dist/contracts/party_roles/party_roles.d.ts.map +1 -0
- package/dist/contracts/party_roles/party_roles.js +237 -0
- package/dist/contracts/party_roles/party_roles.js.map +1 -0
- package/dist/contracts/party_social/party_social.d.ts +258 -0
- package/dist/contracts/party_social/party_social.d.ts.map +1 -0
- package/dist/contracts/party_social/party_social.js +320 -0
- package/dist/contracts/party_social/party_social.js.map +1 -0
- package/dist/contracts/party_tags/party_tags.d.ts +116 -0
- package/dist/contracts/party_tags/party_tags.d.ts.map +1 -0
- package/dist/contracts/party_tags/party_tags.js +130 -0
- package/dist/contracts/party_tags/party_tags.js.map +1 -0
- package/dist/contracts/party_wallet/party_wallet.d.ts +112 -0
- package/dist/contracts/party_wallet/party_wallet.d.ts.map +1 -0
- package/dist/contracts/party_wallet/party_wallet.js +114 -0
- package/dist/contracts/party_wallet/party_wallet.js.map +1 -0
- package/dist/contracts/record/deps/std/type_name.d.ts +18 -0
- package/dist/contracts/record/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/record/deps/std/type_name.js +20 -0
- package/dist/contracts/record/deps/std/type_name.js.map +1 -0
- package/dist/contracts/record/deps/sui/vec_set.d.ts +21 -0
- package/dist/contracts/record/deps/sui/vec_set.d.ts.map +1 -0
- package/dist/contracts/record/deps/sui/vec_set.js +20 -0
- package/dist/contracts/record/deps/sui/vec_set.js.map +1 -0
- package/dist/contracts/record/pressing.d.ts +327 -0
- package/dist/contracts/record/pressing.d.ts.map +1 -0
- package/dist/contracts/record/pressing.js +345 -0
- package/dist/contracts/record/pressing.js.map +1 -0
- package/dist/contracts/record/record.d.ts +190 -0
- package/dist/contracts/record/record.d.ts.map +1 -0
- package/dist/contracts/record/record.js +226 -0
- package/dist/contracts/record/record.js.map +1 -0
- package/dist/contracts/record_shop/deps/std/type_name.d.ts +18 -0
- package/dist/contracts/record_shop/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/record_shop/deps/std/type_name.js +20 -0
- package/dist/contracts/record_shop/deps/std/type_name.js.map +1 -0
- package/dist/contracts/record_shop/listing.d.ts +387 -0
- package/dist/contracts/record_shop/listing.d.ts.map +1 -0
- package/dist/contracts/record_shop/listing.js +380 -0
- package/dist/contracts/record_shop/listing.js.map +1 -0
- package/dist/contracts/record_shop/witness.d.ts +7 -0
- package/dist/contracts/record_shop/witness.d.ts.map +1 -0
- package/dist/contracts/record_shop/witness.js +9 -0
- package/dist/contracts/record_shop/witness.js.map +1 -0
- package/dist/contracts/recording_advisory/recording_advisory.d.ts +194 -0
- package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -0
- package/dist/contracts/recording_advisory/recording_advisory.js +204 -0
- package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -0
- package/dist/contracts/recording_credits/deps/credit/credit.d.ts +24 -0
- package/dist/contracts/recording_credits/deps/credit/credit.d.ts.map +1 -0
- package/dist/contracts/recording_credits/deps/credit/credit.js +23 -0
- package/dist/contracts/recording_credits/deps/credit/credit.js.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.js +28 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts +21 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.js +20 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -0
- package/dist/contracts/recording_credits/recording_credits.d.ts +2313 -0
- package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -0
- package/dist/contracts/recording_credits/recording_credits.js +270 -0
- package/dist/contracts/recording_credits/recording_credits.js.map +1 -0
- package/dist/contracts/recording_credits/recording_party_role.d.ts +1174 -0
- package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -0
- package/dist/contracts/recording_credits/recording_party_role.js +692 -0
- package/dist/contracts/recording_credits/recording_party_role.js.map +1 -0
- package/dist/contracts/recording_engine_session/deps/ori/confidentiality.d.ts +24 -0
- package/dist/contracts/recording_engine_session/deps/ori/confidentiality.d.ts.map +1 -0
- package/dist/contracts/recording_engine_session/deps/ori/confidentiality.js +24 -0
- package/dist/contracts/recording_engine_session/deps/ori/confidentiality.js.map +1 -0
- package/dist/contracts/recording_engine_session/deps/ori/data.d.ts +16 -0
- package/dist/contracts/recording_engine_session/deps/ori/data.d.ts.map +1 -0
- package/dist/contracts/recording_engine_session/deps/ori/data.js +12 -0
- package/dist/contracts/recording_engine_session/deps/ori/data.js.map +1 -0
- package/dist/contracts/recording_engine_session/recording_engine_session.d.ts +296 -0
- package/dist/contracts/recording_engine_session/recording_engine_session.d.ts.map +1 -0
- package/dist/contracts/recording_engine_session/recording_engine_session.js +216 -0
- package/dist/contracts/recording_engine_session/recording_engine_session.js.map +1 -0
- package/dist/contracts/recording_genre/recording_genre.d.ts +173 -0
- package/dist/contracts/recording_genre/recording_genre.d.ts.map +1 -0
- package/dist/contracts/recording_genre/recording_genre.js +170 -0
- package/dist/contracts/recording_genre/recording_genre.js.map +1 -0
- package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +6 -0
- package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +1 -0
- package/dist/contracts/recording_language/deps/language_code/language_code.js +8 -0
- package/dist/contracts/recording_language/deps/language_code/language_code.js.map +1 -0
- package/dist/contracts/recording_language/recording_language.d.ts +152 -0
- package/dist/contracts/recording_language/recording_language.d.ts.map +1 -0
- package/dist/contracts/recording_language/recording_language.js +149 -0
- package/dist/contracts/recording_language/recording_language.js.map +1 -0
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts +24 -0
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts.map +1 -0
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js +24 -0
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js.map +1 -0
- package/dist/contracts/recording_master_reference/deps/ori/data.d.ts +16 -0
- package/dist/contracts/recording_master_reference/deps/ori/data.d.ts.map +1 -0
- package/dist/contracts/recording_master_reference/deps/ori/data.js +12 -0
- package/dist/contracts/recording_master_reference/deps/ori/data.js.map +1 -0
- package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +129 -0
- package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -0
- package/dist/contracts/recording_master_reference/recording_master_reference.js +119 -0
- package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +96 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +85 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -0
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts +92 -0
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts.map +1 -0
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js +85 -0
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js.map +1 -0
- package/dist/contracts/recording_royalty_pool_plugin/witness.d.ts +6 -0
- package/dist/contracts/recording_royalty_pool_plugin/witness.d.ts.map +1 -0
- package/dist/contracts/recording_royalty_pool_plugin/witness.js +8 -0
- package/dist/contracts/recording_royalty_pool_plugin/witness.js.map +1 -0
- package/dist/contracts/recording_streaming_transcode/deps/ori/data.d.ts +8 -0
- package/dist/contracts/recording_streaming_transcode/deps/ori/data.d.ts.map +1 -0
- package/dist/contracts/recording_streaming_transcode/deps/ori/data.js +10 -0
- package/dist/contracts/recording_streaming_transcode/deps/ori/data.js.map +1 -0
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts +124 -0
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts.map +1 -0
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js +124 -0
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js.map +1 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.d.ts +24 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.js +24 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.js.map +1 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.d.ts +16 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.js +12 -0
- package/dist/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.js.map +1 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +47 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +22 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts +33 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.js +32 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -0
- package/dist/contracts/release_cover_art/release_cover_art.d.ts +300 -0
- package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/release_cover_art.js +168 -0
- package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -0
- package/dist/contracts/release_credits/deps/credit/credit.d.ts +24 -0
- package/dist/contracts/release_credits/deps/credit/credit.d.ts.map +1 -0
- package/dist/contracts/release_credits/deps/credit/credit.js +23 -0
- package/dist/contracts/release_credits/deps/credit/credit.js.map +1 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.js +28 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/release_credits/release_credits.d.ts +142 -0
- package/dist/contracts/release_credits/release_credits.d.ts.map +1 -0
- package/dist/contracts/release_credits/release_credits.js +108 -0
- package/dist/contracts/release_credits/release_credits.js.map +1 -0
- package/dist/contracts/release_credits/release_party_role.d.ts +58 -0
- package/dist/contracts/release_credits/release_party_role.d.ts.map +1 -0
- package/dist/contracts/release_credits/release_party_role.js +66 -0
- package/dist/contracts/release_credits/release_party_role.js.map +1 -0
- package/dist/contracts/release_description/release_description.d.ts +112 -0
- package/dist/contracts/release_description/release_description.d.ts.map +1 -0
- package/dist/contracts/release_description/release_description.js +123 -0
- package/dist/contracts/release_description/release_description.js.map +1 -0
- package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +643 -0
- package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -0
- package/dist/contracts/release_dsp_link/release_dsp_link.js +555 -0
- package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -0
- package/dist/contracts/release_genre/release_genre.d.ts +145 -0
- package/dist/contracts/release_genre/release_genre.d.ts.map +1 -0
- package/dist/contracts/release_genre/release_genre.js +154 -0
- package/dist/contracts/release_genre/release_genre.js.map +1 -0
- package/dist/contracts/release_kind/release_kind.d.ts +98 -0
- package/dist/contracts/release_kind/release_kind.d.ts.map +1 -0
- package/dist/contracts/release_kind/release_kind.js +109 -0
- package/dist/contracts/release_kind/release_kind.js.map +1 -0
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts +91 -0
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts.map +1 -0
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js +92 -0
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -0
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts +73 -0
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts.map +1 -0
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js +80 -0
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js.map +1 -0
- package/dist/contracts/release_revenue_distributor_plugin/witness.d.ts +6 -0
- package/dist/contracts/release_revenue_distributor_plugin/witness.d.ts.map +1 -0
- package/dist/contracts/release_revenue_distributor_plugin/witness.js +8 -0
- package/dist/contracts/release_revenue_distributor_plugin/witness.js.map +1 -0
- package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +67 -0
- package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts.map +1 -0
- package/dist/contracts/routed_stake/deps/royalty_pool/stake.js +50 -0
- package/dist/contracts/routed_stake/deps/royalty_pool/stake.js.map +1 -0
- package/dist/contracts/routed_stake/deps/std/type_name.d.ts +18 -0
- package/dist/contracts/routed_stake/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/routed_stake/deps/std/type_name.js +20 -0
- package/dist/contracts/routed_stake/deps/std/type_name.js.map +1 -0
- package/dist/contracts/routed_stake/deps/sui/balance.d.ts +13 -0
- package/dist/contracts/routed_stake/deps/sui/balance.d.ts.map +1 -0
- package/dist/contracts/routed_stake/deps/sui/balance.js +15 -0
- package/dist/contracts/routed_stake/deps/sui/balance.js.map +1 -0
- package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/routed_stake/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/routed_stake/deps/sui/vec_map.js +28 -0
- package/dist/contracts/routed_stake/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/routed_stake/routed_stake.d.ts +347 -0
- package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -0
- package/dist/contracts/routed_stake/routed_stake.js +302 -0
- package/dist/contracts/routed_stake/routed_stake.js.map +1 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +18 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.js +20 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +13 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.js +15 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.js +28 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/royalty_pool/pool.d.ts +414 -0
- package/dist/contracts/royalty_pool/pool.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/pool.js +409 -0
- package/dist/contracts/royalty_pool/pool.js.map +1 -0
- package/dist/contracts/royalty_pool/stake.d.ts +202 -0
- package/dist/contracts/royalty_pool/stake.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/stake.js +196 -0
- package/dist/contracts/royalty_pool/stake.js.map +1 -0
- package/dist/contracts/utils/index.d.ts +104 -0
- package/dist/contracts/utils/index.d.ts.map +1 -0
- package/dist/contracts/utils/index.js +272 -0
- package/dist/contracts/utils/index.js.map +1 -0
- package/dist/contracts/vault/deps/sui/bag.d.ts +35 -0
- package/dist/contracts/vault/deps/sui/bag.d.ts.map +1 -0
- package/dist/contracts/vault/deps/sui/bag.js +37 -0
- package/dist/contracts/vault/deps/sui/bag.js.map +1 -0
- package/dist/contracts/vault/deps/sui/borrow.d.ts +20 -0
- package/dist/contracts/vault/deps/sui/borrow.d.ts.map +1 -0
- package/dist/contracts/vault/deps/sui/borrow.js +21 -0
- package/dist/contracts/vault/deps/sui/borrow.js.map +1 -0
- package/dist/contracts/vault/vault.d.ts +316 -0
- package/dist/contracts/vault/vault.d.ts.map +1 -0
- package/dist/contracts/vault/vault.js +308 -0
- package/dist/contracts/vault/vault.js.map +1 -0
- package/dist/contracts.d.ts +57 -33
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +63 -41
- package/dist/contracts.js.map +1 -1
- package/dist/cover.js +2 -2
- package/dist/cover.js.map +1 -1
- package/dist/credits.js +6 -6
- package/dist/credits.js.map +1 -1
- package/dist/deployments.d.ts +104 -64
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +170 -36
- package/dist/deployments.js.map +1 -1
- package/dist/events.d.ts +1045 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +116 -0
- package/dist/events.js.map +1 -0
- package/dist/execute.d.ts +2 -2
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +2 -2
- package/dist/execute.js.map +1 -1
- package/dist/genre.d.ts +124 -0
- package/dist/genre.d.ts.map +1 -0
- package/dist/genre.js +238 -0
- package/dist/genre.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.js +2 -2
- package/dist/internal.js.map +1 -1
- package/dist/packages.d.ts +4185 -0
- package/dist/packages.d.ts.map +1 -0
- package/dist/packages.js +190 -0
- package/dist/packages.js.map +1 -0
- package/dist/party/client.d.ts +324 -0
- package/dist/party/client.d.ts.map +1 -0
- package/dist/party/client.js +214 -0
- package/dist/party/client.js.map +1 -0
- package/dist/party/extensions/ctas.d.ts +19 -0
- package/dist/party/extensions/ctas.d.ts.map +1 -0
- package/dist/party/extensions/ctas.js +25 -0
- package/dist/party/extensions/ctas.js.map +1 -0
- package/dist/party/extensions/genres.d.ts +27 -0
- package/dist/party/extensions/genres.d.ts.map +1 -0
- package/dist/party/extensions/genres.js +31 -0
- package/dist/party/extensions/genres.js.map +1 -0
- package/dist/party/extensions/links.d.ts +65 -0
- package/dist/party/extensions/links.d.ts.map +1 -0
- package/dist/party/extensions/links.js +117 -0
- package/dist/party/extensions/links.js.map +1 -0
- package/dist/party/extensions/media.d.ts +36 -0
- package/dist/party/extensions/media.d.ts.map +1 -0
- package/dist/party/extensions/media.js +45 -0
- package/dist/party/extensions/media.js.map +1 -0
- package/dist/party/extensions/profile.d.ts +24 -0
- package/dist/party/extensions/profile.d.ts.map +1 -0
- package/dist/party/extensions/profile.js +48 -0
- package/dist/party/extensions/profile.js.map +1 -0
- package/dist/party/extensions/roles.d.ts +37 -0
- package/dist/party/extensions/roles.d.ts.map +1 -0
- package/dist/party/extensions/roles.js +46 -0
- package/dist/party/extensions/roles.js.map +1 -0
- package/dist/party/extensions/tags.d.ts +25 -0
- package/dist/party/extensions/tags.d.ts.map +1 -0
- package/dist/party/extensions/tags.js +25 -0
- package/dist/party/extensions/tags.js.map +1 -0
- package/dist/party/index.d.ts +12 -0
- package/dist/party/index.d.ts.map +1 -0
- package/dist/party/index.js +18 -0
- package/dist/party/index.js.map +1 -0
- package/dist/party/internal.d.ts +14 -0
- package/dist/party/internal.d.ts.map +1 -0
- package/dist/party/internal.js +89 -0
- package/dist/party/internal.js.map +1 -0
- package/dist/party/queries.d.ts +17 -0
- package/dist/party/queries.d.ts.map +1 -0
- package/dist/party/queries.js +118 -0
- package/dist/party/queries.js.map +1 -0
- package/dist/party/types.d.ts +43 -0
- package/dist/party/types.d.ts.map +1 -0
- package/dist/party/types.js +4 -0
- package/dist/party/types.js.map +1 -0
- package/dist/pressing.js +3 -3
- package/dist/pressing.js.map +1 -1
- package/dist/publication.d.ts +4 -8
- package/dist/publication.d.ts.map +1 -1
- package/dist/publication.js +53 -40
- package/dist/publication.js.map +1 -1
- package/dist/queries.d.ts +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +2 -2
- package/dist/queries.js.map +1 -1
- package/dist/read/artist.js +3 -3
- package/dist/read/artist.js.map +1 -1
- package/dist/read/catalog.d.ts +1 -1
- package/dist/read/catalog.d.ts.map +1 -1
- package/dist/read/catalog.js +3 -3
- package/dist/read/catalog.js.map +1 -1
- package/dist/read/client.d.ts +6 -3
- package/dist/read/client.d.ts.map +1 -1
- package/dist/read/client.js +5 -1
- package/dist/read/client.js.map +1 -1
- package/dist/read/config.d.ts +7 -2
- package/dist/read/config.d.ts.map +1 -1
- package/dist/read/config.js +2 -0
- package/dist/read/config.js.map +1 -1
- package/dist/read/index.js +1 -1
- package/dist/read/index.js.map +1 -1
- package/dist/read/receipts.js +4 -4
- package/dist/read/receipts.js.map +1 -1
- package/dist/read/types.d.ts +1 -1
- package/dist/read/types.d.ts.map +1 -1
- package/dist/read/wallet.d.ts +1 -1
- package/dist/read/wallet.d.ts.map +1 -1
- package/dist/read/wallet.js +15 -14
- package/dist/read/wallet.js.map +1 -1
- package/dist/read/works.d.ts +1 -1
- package/dist/read/works.d.ts.map +1 -1
- package/dist/read/works.js +1 -1
- package/dist/read/works.js.map +1 -1
- package/dist/recording-extensions.js +7 -7
- package/dist/recording-extensions.js.map +1 -1
- package/dist/release-extensions.d.ts +0 -18
- package/dist/release-extensions.d.ts.map +1 -1
- package/dist/release-extensions.js +4 -49
- package/dist/release-extensions.js.map +1 -1
- package/dist/release-graph.js +2 -2
- package/dist/release-graph.js.map +1 -1
- package/dist/royalty.d.ts +87 -0
- package/dist/royalty.d.ts.map +1 -0
- package/dist/royalty.js +78 -0
- package/dist/royalty.js.map +1 -0
- package/dist/share.js +1 -1
- package/dist/share.js.map +1 -1
- package/dist/transactions.d.ts +2 -2
- package/dist/transactions.d.ts.map +1 -1
- package/dist/transactions.js +6 -6
- package/dist/transactions.js.map +1 -1
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +13 -10
- package/dist/vault.js.map +1 -1
- package/package.json +24 -10
- package/src/catalog.ts +2 -2
- package/src/client.ts +103 -44
- package/src/contracts/composition_credits/composition_credits.ts +170 -0
- package/src/contracts/composition_credits/composition_party_role.ts +190 -0
- package/src/contracts/composition_credits/deps/credit/credit.ts +28 -0
- package/src/contracts/composition_credits/deps/sui/vec_map.ts +34 -0
- package/src/contracts/composition_routed_stake/composition_routed_stake.ts +239 -0
- package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +154 -0
- package/src/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts +165 -0
- package/src/contracts/composition_royalty_pool_plugin/witness.ts +8 -0
- package/src/contracts/cover_art/cover_art.ts +98 -0
- package/src/contracts/cover_art/deps/ori/confidentiality.ts +24 -0
- package/src/contracts/cover_art/deps/ori/data.ts +12 -0
- package/src/contracts/genre/genre.ts +121 -0
- package/src/contracts/party_cta/party_cta.ts +213 -0
- package/src/contracts/party_genre/party_genre.ts +200 -0
- package/src/contracts/party_media/party_media.ts +142 -0
- package/src/contracts/party_music/party_music.ts +406 -0
- package/src/contracts/party_platform_link/party_platform_link.ts +149 -0
- package/src/contracts/party_pro_link/party_pro_link.ts +454 -0
- package/src/contracts/party_profile/deps/country_code/country_code.ts +20 -0
- package/src/contracts/party_profile/deps/language_code/language_code.ts +8 -0
- package/src/contracts/party_profile/party_profile.ts +240 -0
- package/src/contracts/party_roles/party_roles.ts +364 -0
- package/src/contracts/party_social/party_social.ts +503 -0
- package/src/contracts/party_tags/party_tags.ts +199 -0
- package/src/contracts/party_wallet/party_wallet.ts +174 -0
- package/src/contracts/record/deps/std/type_name.ts +23 -0
- package/src/contracts/record/deps/sui/vec_set.ts +22 -0
- package/src/contracts/record/pressing.ts +523 -0
- package/src/contracts/record/record.ts +339 -0
- package/src/contracts/record_shop/deps/std/type_name.ts +23 -0
- package/src/contracts/record_shop/listing.ts +603 -0
- package/src/contracts/record_shop/witness.ts +12 -0
- package/src/contracts/recording_advisory/recording_advisory.ts +316 -0
- package/src/contracts/recording_credits/deps/credit/credit.ts +28 -0
- package/src/contracts/recording_credits/deps/sui/vec_map.ts +34 -0
- package/src/contracts/recording_credits/deps/sui/vec_set.ts +22 -0
- package/src/contracts/recording_credits/recording_credits.ts +459 -0
- package/src/contracts/recording_credits/recording_party_role.ts +1042 -0
- package/src/contracts/recording_engine_session/deps/ori/confidentiality.ts +24 -0
- package/src/contracts/recording_engine_session/deps/ori/data.ts +12 -0
- package/src/contracts/recording_engine_session/recording_engine_session.ts +335 -0
- package/src/contracts/recording_genre/recording_genre.ts +235 -0
- package/src/contracts/recording_language/deps/language_code/language_code.ts +8 -0
- package/src/contracts/recording_language/recording_language.ts +238 -0
- package/src/contracts/recording_master_reference/deps/ori/confidentiality.ts +24 -0
- package/src/contracts/recording_master_reference/deps/ori/data.ts +12 -0
- package/src/contracts/recording_master_reference/recording_master_reference.ts +180 -0
- package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +157 -0
- package/src/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts +167 -0
- package/src/contracts/recording_royalty_pool_plugin/witness.ts +8 -0
- package/src/contracts/recording_streaming_transcode/deps/ori/data.ts +10 -0
- package/src/contracts/recording_streaming_transcode/recording_streaming_transcode.ts +203 -0
- package/src/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/confidentiality.ts +24 -0
- package/src/contracts/release_cover_art/deps/0x51792b9adb9a5d05d7c4d74d7d0cb5aefc5639afa80c0089399cab8b99752e60/data.ts +12 -0
- package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +25 -0
- package/src/contracts/release_cover_art/deps/per_track/per_track.ts +37 -0
- package/src/contracts/release_cover_art/release_cover_art.ts +252 -0
- package/src/contracts/release_credits/deps/credit/credit.ts +28 -0
- package/src/contracts/release_credits/deps/sui/vec_map.ts +34 -0
- package/src/contracts/release_credits/release_credits.ts +157 -0
- package/src/contracts/release_credits/release_party_role.ts +87 -0
- package/src/contracts/release_description/release_description.ts +168 -0
- package/src/contracts/release_dsp_link/release_dsp_link.ts +813 -0
- package/src/contracts/release_genre/release_genre.ts +203 -0
- package/src/contracts/release_kind/release_kind.ts +154 -0
- package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +141 -0
- package/src/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts +143 -0
- package/src/contracts/release_revenue_distributor_plugin/witness.ts +8 -0
- package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +53 -0
- package/src/contracts/routed_stake/deps/std/type_name.ts +23 -0
- package/src/contracts/routed_stake/deps/sui/balance.ts +18 -0
- package/src/contracts/routed_stake/deps/sui/vec_map.ts +34 -0
- package/src/contracts/routed_stake/routed_stake.ts +487 -0
- package/src/contracts/royalty_pool/deps/std/type_name.ts +23 -0
- package/src/contracts/royalty_pool/deps/sui/balance.ts +18 -0
- package/src/contracts/royalty_pool/deps/sui/vec_map.ts +34 -0
- package/src/contracts/royalty_pool/pool.ts +634 -0
- package/src/contracts/royalty_pool/stake.ts +305 -0
- package/src/contracts/utils/index.ts +428 -0
- package/src/contracts/vault/deps/sui/bag.ts +40 -0
- package/src/contracts/vault/deps/sui/borrow.ts +26 -0
- package/src/contracts/vault/vault.ts +509 -0
- package/src/contracts.ts +86 -39
- package/src/cover.ts +2 -2
- package/src/credits.ts +6 -6
- package/src/deployments.ts +253 -39
- package/src/events.ts +121 -0
- package/src/execute.ts +3 -3
- package/src/genre.ts +369 -0
- package/src/index.ts +10 -1
- package/src/internal.ts +2 -2
- package/src/packages.ts +243 -0
- package/src/party/client.ts +268 -0
- package/src/party/extensions/ctas.ts +46 -0
- package/src/party/extensions/genres.ts +62 -0
- package/src/party/extensions/links.ts +185 -0
- package/src/party/extensions/media.ts +72 -0
- package/src/party/extensions/profile.ts +81 -0
- package/src/party/extensions/roles.ts +94 -0
- package/src/party/extensions/tags.ts +54 -0
- package/src/party/index.ts +40 -0
- package/src/party/internal.ts +102 -0
- package/src/party/queries.ts +163 -0
- package/src/party/types.ts +84 -0
- package/src/pressing.ts +5 -5
- package/src/publication.ts +58 -45
- package/src/queries.ts +2 -2
- package/src/read/artist.ts +3 -3
- package/src/read/catalog.ts +4 -4
- package/src/read/client.ts +9 -3
- package/src/read/config.ts +9 -2
- package/src/read/index.ts +1 -1
- package/src/read/receipts.ts +4 -4
- package/src/read/types.ts +1 -1
- package/src/read/wallet.ts +15 -14
- package/src/read/works.ts +1 -1
- package/src/recording-extensions.ts +7 -7
- package/src/release-extensions.ts +4 -75
- package/src/release-graph.ts +2 -2
- package/src/royalty.ts +167 -0
- package/src/share.ts +1 -1
- package/src/transactions.ts +6 -6
- package/src/vault.ts +18 -17
package/src/genre.ts
ADDED
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Genre classification for both `Release` and `Recording`.
|
|
6
|
+
*
|
|
7
|
+
* On-chain, `release_genre` and `recording_genre` store the identical shape: a
|
|
8
|
+
* bare `vector<ID>` of `genre::Genre` object ids under a dynamic field keyed by
|
|
9
|
+
* an empty `ExtensionKey()`, index 0 the primary, capped at `MAX_GENRES` (6), and
|
|
10
|
+
* non-empty by construction — removing the last entry drops the field, so "the
|
|
11
|
+
* field exists" and "there is a primary" are the same fact. Every id in the list
|
|
12
|
+
* came from `add_genre(self, cap, genre: &Genre)`, which only accepts a real
|
|
13
|
+
* object minted by the shared `genre` vocabulary registry; `remove_genre` takes
|
|
14
|
+
* a bare `ID` since proving membership is not needed to drop a reference.
|
|
15
|
+
*
|
|
16
|
+
* This module spans both `Release` and `Recording` rather than living beside
|
|
17
|
+
* one target object (contrast `release-extensions.ts` / `recording-extensions.ts`,
|
|
18
|
+
* which are split by target). Genre is not a per-target-object axis: the two
|
|
19
|
+
* packages are separately deployed, separately versioned siblings with the same
|
|
20
|
+
* vocabulary and the same shape, and `recording-extensions.ts` must not import
|
|
21
|
+
* genre helpers out of `release-extensions.ts` (or vice versa) just because one
|
|
22
|
+
* happened to be written first.
|
|
23
|
+
*
|
|
24
|
+
* `setReleaseGenres` / `setRecordingGenres` below express the complete desired
|
|
25
|
+
* list: they emit `clear_genres` first, then exactly one `add_genre` per id in
|
|
26
|
+
* array order. `clear_genres` is a no-op when nothing is attached, so this is
|
|
27
|
+
* safe to run against a fresh object, and it is equally safe to re-run against
|
|
28
|
+
* one that already carries genres — the leading `clear_genres` wipes prior
|
|
29
|
+
* state before the adds replay, so the transaction is idempotent and can be
|
|
30
|
+
* composed more than once in the same PTB. Editing clients that want to
|
|
31
|
+
* mutate an existing assignment without a full replace should use the
|
|
32
|
+
* exported single-mutation primitives (`addReleaseGenre`, `removeReleaseGenre`
|
|
33
|
+
* and their `recording` counterparts), or `clearReleaseGenres` /
|
|
34
|
+
* `clearRecordingGenres` to drop the list outright.
|
|
35
|
+
*
|
|
36
|
+
* `getReleaseGenres` / `getRecordingGenres` below return `[]` when the
|
|
37
|
+
* dynamic field is absent, which now exactly mirrors the on-chain `genres()`
|
|
38
|
+
* view — both Move modules removed their standalone emptiness/first-entry
|
|
39
|
+
* accessors, so emptiness is `genres().length === 0` and the primary is
|
|
40
|
+
* `genres()[0]`, computed client-side the same way Move computes them.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
import type { ClientWithCoreApi } from "@mysten/sui/client";
|
|
44
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
45
|
+
import { deriveDynamicFieldID, deriveObjectID, normalizeSuiObjectId } from "@mysten/sui/utils";
|
|
46
|
+
import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
47
|
+
import type { TxThunk } from "./transactions.ts";
|
|
48
|
+
import { directAdminCap, invokeWithAdminCap, type AdminCapAuthority, type ObjectInput } from "./vault.ts";
|
|
49
|
+
import type { ReleaseExtensionTarget } from "./release-extensions.ts";
|
|
50
|
+
import type { RecordingExtensionTarget } from "./recording-extensions.ts";
|
|
51
|
+
import * as genre from "./contracts/genre/genre.ts";
|
|
52
|
+
import * as releaseGenre from "./contracts/release_genre/release_genre.ts";
|
|
53
|
+
import * as recordingGenre from "./contracts/recording_genre/recording_genre.ts";
|
|
54
|
+
|
|
55
|
+
// ── Vocabulary helpers ───────────────────────────────────────────────────────
|
|
56
|
+
|
|
57
|
+
const GENRE_NAME_RE = /^[A-Z]+(?:_[A-Z]+)*$/;
|
|
58
|
+
|
|
59
|
+
/** Validate the canonical on-chain genre vocabulary spelling. */
|
|
60
|
+
export function assertCanonicalGenreName(name: string): void {
|
|
61
|
+
const bytes = new TextEncoder().encode(name).length;
|
|
62
|
+
if (bytes === 0 || bytes > 64 || !GENRE_NAME_RE.test(name)) {
|
|
63
|
+
throw new Error(
|
|
64
|
+
`Genre name must be 1-64 bytes of uppercase A-Z and underscores; got ${JSON.stringify(name)}`,
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Derive the immutable Genre object address for a canonical vocabulary name.
|
|
70
|
+
* `genrePackageId` must be the genre package's defining (original publish)
|
|
71
|
+
* address — the on-chain derivation hashes type names with defining IDs. */
|
|
72
|
+
export function deriveGenreAddress(
|
|
73
|
+
genreRegistryId: string,
|
|
74
|
+
genrePackageId: string,
|
|
75
|
+
canonicalName: string,
|
|
76
|
+
): string {
|
|
77
|
+
assertCanonicalGenreName(canonicalName);
|
|
78
|
+
return deriveObjectID(
|
|
79
|
+
genreRegistryId,
|
|
80
|
+
`${genrePackageId}::genre::GenreKey`,
|
|
81
|
+
genre.GenreKey.serialize([canonicalName]).toBytes(),
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ── Shared validation ────────────────────────────────────────────────────────
|
|
86
|
+
|
|
87
|
+
/** The maximum number of genres `release_genre` / `recording_genre` will accept. */
|
|
88
|
+
export const MAX_GENRES = 6;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Fail closed before signing rather than let a bad list abort on-chain as
|
|
92
|
+
* `EDuplicateGenre` (40) or `EMaxGenres` (41). Mirrors how `setReleaseKind`
|
|
93
|
+
* validates its input up front and returns a thunk only once it is well-formed.
|
|
94
|
+
*/
|
|
95
|
+
function validateGenreIds(op: string, genreIds: readonly string[]): string[] {
|
|
96
|
+
if (genreIds.length === 0) {
|
|
97
|
+
throw new Error(`${op}: genreIds must not be empty`);
|
|
98
|
+
}
|
|
99
|
+
if (genreIds.length > MAX_GENRES) {
|
|
100
|
+
throw new Error(`${op}: at most ${MAX_GENRES} genres (got ${genreIds.length})`);
|
|
101
|
+
}
|
|
102
|
+
const seen = new Set<string>();
|
|
103
|
+
for (const id of genreIds) {
|
|
104
|
+
const normalized = normalizeSuiObjectId(id);
|
|
105
|
+
if (seen.has(normalized)) {
|
|
106
|
+
throw new Error(`${op}: duplicate genre id ${id}`);
|
|
107
|
+
}
|
|
108
|
+
seen.add(normalized);
|
|
109
|
+
}
|
|
110
|
+
return [...genreIds];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// ── Release setters ──────────────────────────────────────────────────────────
|
|
114
|
+
|
|
115
|
+
function releaseAuthorityOf(p: ReleaseExtensionTarget): AdminCapAuthority {
|
|
116
|
+
if (p.authority !== undefined) return p.authority;
|
|
117
|
+
if (p.releaseAdminCapId !== undefined) return directAdminCap(p.releaseAdminCapId);
|
|
118
|
+
throw new Error("release authority is required");
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function object(tx: Transaction, value: ObjectInput): TransactionObjectArgument {
|
|
122
|
+
return typeof value === "string" ? tx.object(value) : value;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export type SetReleaseGenresParams = ReleaseExtensionTarget & {
|
|
126
|
+
/** Ordered `genre::Genre` object ids; index 0 becomes the primary. 1-6 entries, no duplicates. */
|
|
127
|
+
genreIds: readonly string[];
|
|
128
|
+
releaseGenrePackageId: string;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Attach the complete, ordered list of genres to a Release. Emits
|
|
133
|
+
* `release_genre::clear_genres` first, then exactly one
|
|
134
|
+
* `release_genre::add_genre` per id in array order. `clear_genres` is a no-op
|
|
135
|
+
* when nothing is attached, so this is safe to run against a fresh release
|
|
136
|
+
* and safe to re-run against one that already has genres assigned.
|
|
137
|
+
*/
|
|
138
|
+
export function setReleaseGenres(p: SetReleaseGenresParams): TxThunk {
|
|
139
|
+
const genreIds = validateGenreIds("setReleaseGenres", p.genreIds);
|
|
140
|
+
return (tx) => {
|
|
141
|
+
const authority = releaseAuthorityOf(p);
|
|
142
|
+
invokeWithAdminCap(tx, authority, {
|
|
143
|
+
target: `${p.releaseGenrePackageId}::release_genre::clear_genres`,
|
|
144
|
+
arguments: [object(tx, p.releaseId)],
|
|
145
|
+
adminCapIndex: 1,
|
|
146
|
+
});
|
|
147
|
+
for (const genreId of genreIds) {
|
|
148
|
+
invokeWithAdminCap(tx, authority, {
|
|
149
|
+
target: `${p.releaseGenrePackageId}::release_genre::add_genre`,
|
|
150
|
+
arguments: [object(tx, p.releaseId), tx.object(genreId)],
|
|
151
|
+
adminCapIndex: 1,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export type ClearReleaseGenresParams = ReleaseExtensionTarget & {
|
|
158
|
+
releaseGenrePackageId: string;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
/** Remove a Release's entire genre list. A no-op on-chain if nothing is attached. */
|
|
162
|
+
export function clearReleaseGenres(p: ClearReleaseGenresParams): TxThunk {
|
|
163
|
+
return (tx) => {
|
|
164
|
+
invokeWithAdminCap(tx, releaseAuthorityOf(p), {
|
|
165
|
+
target: `${p.releaseGenrePackageId}::release_genre::clear_genres`,
|
|
166
|
+
arguments: [object(tx, p.releaseId)],
|
|
167
|
+
adminCapIndex: 1,
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export type ReleaseGenreMutationParams = ReleaseExtensionTarget & {
|
|
173
|
+
genreId: string;
|
|
174
|
+
releaseGenrePackageId: string;
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/** Append one genre to a Release's list. */
|
|
178
|
+
export function addReleaseGenre(p: ReleaseGenreMutationParams): TxThunk {
|
|
179
|
+
return (tx) => {
|
|
180
|
+
invokeWithAdminCap(tx, releaseAuthorityOf(p), {
|
|
181
|
+
target: `${p.releaseGenrePackageId}::release_genre::add_genre`,
|
|
182
|
+
arguments: [object(tx, p.releaseId), tx.object(p.genreId)],
|
|
183
|
+
adminCapIndex: 1,
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** Remove one genre from a Release by id. */
|
|
189
|
+
export function removeReleaseGenre(p: ReleaseGenreMutationParams): TxThunk {
|
|
190
|
+
return (tx) => {
|
|
191
|
+
invokeWithAdminCap(tx, releaseAuthorityOf(p), {
|
|
192
|
+
target: `${p.releaseGenrePackageId}::release_genre::remove_genre`,
|
|
193
|
+
arguments: [object(tx, p.releaseId), tx.pure.id(p.genreId)],
|
|
194
|
+
adminCapIndex: 1,
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// ── Recording setters ────────────────────────────────────────────────────────
|
|
200
|
+
|
|
201
|
+
export interface SetRecordingGenresParams extends RecordingExtensionTarget {
|
|
202
|
+
readonly recordingGenrePackageId: string;
|
|
203
|
+
/** Ordered `genre::Genre` object ids; index 0 becomes the primary. 1-6 entries, no duplicates. */
|
|
204
|
+
readonly genreIds: readonly string[];
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Attach the complete, ordered list of genres to a Recording. Emits
|
|
209
|
+
* `recording_genre::clear_genres` first, then exactly one
|
|
210
|
+
* `recording_genre::add_genre` per id in array order. `clear_genres` is a
|
|
211
|
+
* no-op when nothing is attached, so this is safe to run against a fresh
|
|
212
|
+
* recording and safe to re-run against one that already has genres assigned.
|
|
213
|
+
*/
|
|
214
|
+
export function setRecordingGenres(p: SetRecordingGenresParams): TxThunk {
|
|
215
|
+
const genreIds = validateGenreIds("setRecordingGenres", p.genreIds);
|
|
216
|
+
return (tx) => {
|
|
217
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
218
|
+
target: `${p.recordingGenrePackageId}::recording_genre::clear_genres`,
|
|
219
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
220
|
+
arguments: [object(tx, p.recordingId)],
|
|
221
|
+
adminCapIndex: 1,
|
|
222
|
+
});
|
|
223
|
+
for (const genreId of genreIds) {
|
|
224
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
225
|
+
target: `${p.recordingGenrePackageId}::recording_genre::add_genre`,
|
|
226
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
227
|
+
arguments: [object(tx, p.recordingId), tx.object(genreId)],
|
|
228
|
+
adminCapIndex: 1,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export interface ClearRecordingGenresParams extends RecordingExtensionTarget {
|
|
235
|
+
readonly recordingGenrePackageId: string;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** Remove a Recording's entire genre list. A no-op on-chain if nothing is attached. */
|
|
239
|
+
export function clearRecordingGenres(p: ClearRecordingGenresParams): TxThunk {
|
|
240
|
+
return (tx) => {
|
|
241
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
242
|
+
target: `${p.recordingGenrePackageId}::recording_genre::clear_genres`,
|
|
243
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
244
|
+
arguments: [object(tx, p.recordingId)],
|
|
245
|
+
adminCapIndex: 1,
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export interface RecordingGenreMutationParams extends RecordingExtensionTarget {
|
|
251
|
+
readonly recordingGenrePackageId: string;
|
|
252
|
+
readonly genreId: string;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/** Append one genre to a Recording's list. */
|
|
256
|
+
export function addRecordingGenre(p: RecordingGenreMutationParams): TxThunk {
|
|
257
|
+
return (tx) => {
|
|
258
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
259
|
+
target: `${p.recordingGenrePackageId}::recording_genre::add_genre`,
|
|
260
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
261
|
+
arguments: [object(tx, p.recordingId), tx.object(p.genreId)],
|
|
262
|
+
adminCapIndex: 1,
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/** Remove one genre from a Recording by id. */
|
|
268
|
+
export function removeRecordingGenre(p: RecordingGenreMutationParams): TxThunk {
|
|
269
|
+
return (tx) => {
|
|
270
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
271
|
+
target: `${p.recordingGenrePackageId}::recording_genre::remove_genre`,
|
|
272
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
273
|
+
arguments: [object(tx, p.recordingId), tx.pure.id(p.genreId)],
|
|
274
|
+
adminCapIndex: 1,
|
|
275
|
+
});
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// ── Reads ────────────────────────────────────────────────────────────────────
|
|
280
|
+
|
|
281
|
+
// Both packages store the same shape: a dynamic field on the target's UID under
|
|
282
|
+
// an empty `ExtensionKey()` (Move's implicit `dummy_field: bool` → one `false`
|
|
283
|
+
// byte), value `vector<ID>`, ordered with the primary first.
|
|
284
|
+
const ReleaseGenresField = bcs.struct("Field", {
|
|
285
|
+
id: bcs.Address,
|
|
286
|
+
name: releaseGenre.ExtensionKey,
|
|
287
|
+
value: bcs.vector(bcs.Address),
|
|
288
|
+
});
|
|
289
|
+
const RELEASE_GENRES_KEY_BYTES = releaseGenre.ExtensionKey.serialize([false]).toBytes();
|
|
290
|
+
|
|
291
|
+
const RecordingGenresField = bcs.struct("Field", {
|
|
292
|
+
id: bcs.Address,
|
|
293
|
+
name: recordingGenre.ExtensionKey,
|
|
294
|
+
value: bcs.vector(bcs.Address),
|
|
295
|
+
});
|
|
296
|
+
const RECORDING_GENRES_KEY_BYTES = recordingGenre.ExtensionKey.serialize([false]).toBytes();
|
|
297
|
+
|
|
298
|
+
/** Parse a `release_genre` dynamic field's content into its ordered genre ids. */
|
|
299
|
+
export function parseReleaseGenresContent(content: Uint8Array): string[] {
|
|
300
|
+
return ReleaseGenresField.parse(content).value;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/** Parse a `recording_genre` dynamic field's content into its ordered genre ids. */
|
|
304
|
+
export function parseRecordingGenresContent(content: Uint8Array): string[] {
|
|
305
|
+
return RecordingGenresField.parse(content).value;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/** Deterministic dynamic-field id for a Release's genre list. */
|
|
309
|
+
export function releaseGenresFieldId(
|
|
310
|
+
releaseId: string,
|
|
311
|
+
releaseGenrePackageId: string,
|
|
312
|
+
): string {
|
|
313
|
+
return deriveDynamicFieldID(
|
|
314
|
+
releaseId,
|
|
315
|
+
`${releaseGenrePackageId}::release_genre::ExtensionKey`,
|
|
316
|
+
RELEASE_GENRES_KEY_BYTES,
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/** Deterministic dynamic-field id for a Recording's genre list. */
|
|
321
|
+
export function recordingGenresFieldId(
|
|
322
|
+
recordingId: string,
|
|
323
|
+
recordingGenrePackageId: string,
|
|
324
|
+
): string {
|
|
325
|
+
return deriveDynamicFieldID(
|
|
326
|
+
recordingId,
|
|
327
|
+
`${recordingGenrePackageId}::recording_genre::ExtensionKey`,
|
|
328
|
+
RECORDING_GENRES_KEY_BYTES,
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Read a Release's genre ids in order (primary first), or `[]` when no genres
|
|
334
|
+
* are attached. The primary is `list[0]`; there is no separate primary reader
|
|
335
|
+
* because the Move `genres` view already returns `[]` for the absent case.
|
|
336
|
+
*/
|
|
337
|
+
export async function getReleaseGenres(
|
|
338
|
+
client: ClientWithCoreApi,
|
|
339
|
+
releaseId: string,
|
|
340
|
+
releaseGenrePackageId: string,
|
|
341
|
+
): Promise<string[]> {
|
|
342
|
+
const { objects } = await client.core.getObjects({
|
|
343
|
+
objectIds: [releaseGenresFieldId(releaseId, releaseGenrePackageId)],
|
|
344
|
+
include: { content: true },
|
|
345
|
+
});
|
|
346
|
+
const object = objects[0];
|
|
347
|
+
if (!object || object instanceof Error || !object.content) return [];
|
|
348
|
+
return parseReleaseGenresContent(object.content);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Read a Recording's genre ids in order (primary first), or `[]` when no
|
|
353
|
+
* genres are attached. The primary is `list[0]`; there is no separate primary
|
|
354
|
+
* reader because the Move `genres` view already returns `[]` for the absent
|
|
355
|
+
* case.
|
|
356
|
+
*/
|
|
357
|
+
export async function getRecordingGenres(
|
|
358
|
+
client: ClientWithCoreApi,
|
|
359
|
+
recordingId: string,
|
|
360
|
+
recordingGenrePackageId: string,
|
|
361
|
+
): Promise<string[]> {
|
|
362
|
+
const { objects } = await client.core.getObjects({
|
|
363
|
+
objectIds: [recordingGenresFieldId(recordingId, recordingGenrePackageId)],
|
|
364
|
+
include: { content: true },
|
|
365
|
+
});
|
|
366
|
+
const object = objects[0];
|
|
367
|
+
if (!object || object instanceof Error || !object.content) return [];
|
|
368
|
+
return parseRecordingGenresContent(object.content);
|
|
369
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// Miso's own product sits on top of the permissionless protocol, and the two
|
|
7
7
|
// ship as separate packages because they have different promises:
|
|
8
8
|
//
|
|
9
|
-
// @misofm/
|
|
9
|
+
// @misofm/musicos PROTOCOL — Composition, Recording, Release. The open layer
|
|
10
10
|
// anyone can build on, and nobody needs Miso's permission to use.
|
|
11
11
|
// @misofm/platform PLATFORM — Pressing, Listing, Record, and the first-party
|
|
12
12
|
// EXTENSIONS. How MISO sells copies of a release, and the
|
|
@@ -53,6 +53,14 @@ export * from "./walrus-ids.ts";
|
|
|
53
53
|
export * from "./streaming.ts";
|
|
54
54
|
export * from "./walrus.ts";
|
|
55
55
|
|
|
56
|
+
// Re-homed from the pre-split protocol package: extension/primitive package
|
|
57
|
+
// bindings, event decoders, and the generic royalty-pool / routed-stake
|
|
58
|
+
// queries and PTB builders (see the boundary rule above — these are all
|
|
59
|
+
// things Miso offers on top of the object model, not the model itself).
|
|
60
|
+
export * from "./packages.ts";
|
|
61
|
+
export { platformEventParsers } from "./events.ts";
|
|
62
|
+
export * from "./royalty.ts";
|
|
63
|
+
|
|
56
64
|
// High-level, JSON-safe platform projections used directly by clients and by
|
|
57
65
|
// the thin HTTP read service. Namespaced because these composed view types are
|
|
58
66
|
// intentionally distinct from the lower-level contract views above.
|
|
@@ -63,6 +71,7 @@ export * as read from "./read/index.ts";
|
|
|
63
71
|
export * from "./credits.ts";
|
|
64
72
|
export * from "./cover.ts";
|
|
65
73
|
export * from "./release-extensions.ts";
|
|
74
|
+
export * from "./genre.ts";
|
|
66
75
|
export * from "./recording-extensions.ts";
|
|
67
76
|
export * from "./vault.ts";
|
|
68
77
|
|
package/src/internal.ts
CHANGED
|
@@ -9,8 +9,8 @@ import type { Transaction, TransactionArgument } from "@mysten/sui/transactions"
|
|
|
9
9
|
// call needs an `Option` argument built inline. Consumed by `./cover` and
|
|
10
10
|
// `./credits`.
|
|
11
11
|
//
|
|
12
|
-
// These came over from
|
|
13
|
-
// extension surface moved here. They were NOT promoted to that package's public
|
|
12
|
+
// These came over from the object-model package's own private `internal.ts`
|
|
13
|
+
// when the extension surface moved here. They were NOT promoted to that package's public
|
|
14
14
|
// API to make them reachable: they are two literal Move function targets from the
|
|
15
15
|
// standard library, so re-deriving them costs nothing, whereas exporting them
|
|
16
16
|
// would widen the protocol SDK's public surface — and therefore its compatibility
|
package/src/packages.ts
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Package-bound generated APIs for the platform layer: extensions, generic
|
|
6
|
+
* royalty/routed-stake primitives, and Party. The object-model core (composition,
|
|
7
|
+
* recording, release, track) has its own `MisoPackageBindings` in
|
|
8
|
+
* `@misofm/musicos/packages` — this class covers everything else.
|
|
9
|
+
*
|
|
10
|
+
* `@mysten/codegen` intentionally emits `@local-pkg/*` source labels. This
|
|
11
|
+
* adapter replaces those labels with the exact addresses from a complete
|
|
12
|
+
* platform deployment manifest, so applications never have to hand-write a
|
|
13
|
+
* Move target.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { bindModulePackage } from "@misofm/musicos/packages";
|
|
17
|
+
// The Party core's generated bindings live in `@misofm/partyos` now (this
|
|
18
|
+
// package's own generated `partyos` tree is gone). Binding `call.party.core`/
|
|
19
|
+
// `bcs.party.core` from partyos's curated barrel — rather than dropping them —
|
|
20
|
+
// keeps this package's single `MisoPlatformPackageBindings` facade covering
|
|
21
|
+
// every package a platform deployment addresses, core included, which is what
|
|
22
|
+
// `packages.test.ts` exercises.
|
|
23
|
+
import { party as partyCoreContracts } from "@misofm/partyos/contracts";
|
|
24
|
+
import {
|
|
25
|
+
normalizeMisoPlatformDeployment,
|
|
26
|
+
type MisoPlatformDeployment,
|
|
27
|
+
} from "./deployments.ts";
|
|
28
|
+
|
|
29
|
+
import * as compositionCredits from "./contracts/composition_credits/composition_credits.ts";
|
|
30
|
+
import * as compositionPartyRole from "./contracts/composition_credits/composition_party_role.ts";
|
|
31
|
+
import * as recordingAdvisory from "./contracts/recording_advisory/recording_advisory.ts";
|
|
32
|
+
import * as recordingCredits from "./contracts/recording_credits/recording_credits.ts";
|
|
33
|
+
import * as recordingPartyRole from "./contracts/recording_credits/recording_party_role.ts";
|
|
34
|
+
import * as recordingLanguage from "./contracts/recording_language/recording_language.ts";
|
|
35
|
+
import * as recordingMasterReference from "./contracts/recording_master_reference/recording_master_reference.ts";
|
|
36
|
+
import * as releaseCoverArt from "./contracts/release_cover_art/release_cover_art.ts";
|
|
37
|
+
import * as releaseCredits from "./contracts/release_credits/release_credits.ts";
|
|
38
|
+
import * as releasePartyRole from "./contracts/release_credits/release_party_role.ts";
|
|
39
|
+
import * as releaseDescription from "./contracts/release_description/release_description.ts";
|
|
40
|
+
import * as releaseDspLink from "./contracts/release_dsp_link/release_dsp_link.ts";
|
|
41
|
+
import * as releaseGenre from "./contracts/release_genre/release_genre.ts";
|
|
42
|
+
import * as releaseKind from "./contracts/release_kind/release_kind.ts";
|
|
43
|
+
|
|
44
|
+
import * as royaltyPool from "./contracts/royalty_pool/pool.ts";
|
|
45
|
+
import * as royaltyStake from "./contracts/royalty_pool/stake.ts";
|
|
46
|
+
import * as routedStake from "./contracts/routed_stake/routed_stake.ts";
|
|
47
|
+
|
|
48
|
+
import * as partyCta from "./contracts/party_cta/party_cta.ts";
|
|
49
|
+
import * as partyGenre from "./contracts/party_genre/party_genre.ts";
|
|
50
|
+
import * as partyMedia from "./contracts/party_media/party_media.ts";
|
|
51
|
+
import * as partyMusic from "./contracts/party_music/party_music.ts";
|
|
52
|
+
import * as partyPlatformLink from "./contracts/party_platform_link/party_platform_link.ts";
|
|
53
|
+
import * as partyProLink from "./contracts/party_pro_link/party_pro_link.ts";
|
|
54
|
+
import * as partyProfile from "./contracts/party_profile/party_profile.ts";
|
|
55
|
+
import * as partyRoles from "./contracts/party_roles/party_roles.ts";
|
|
56
|
+
import * as partySocial from "./contracts/party_social/party_social.ts";
|
|
57
|
+
import * as partyTags from "./contracts/party_tags/party_tags.ts";
|
|
58
|
+
|
|
59
|
+
/** Generated modules mix BCS constants with transaction-builder functions. */
|
|
60
|
+
type CodecModule<M extends object> = {
|
|
61
|
+
[Key in keyof M as M[Key] extends (...args: never[]) => unknown ? never : Key]: M[Key];
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/** BCS-only projection: never leak Move-call builders into the `bcs` namespace. */
|
|
65
|
+
function codecsOnly<M extends object>(mod: M): CodecModule<M> {
|
|
66
|
+
return Object.fromEntries(
|
|
67
|
+
Object.entries(mod).filter(([, value]) => typeof value !== "function"),
|
|
68
|
+
) as CodecModule<M>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Public Move functions that return references. A PTB can borrow internally,
|
|
73
|
+
* but a Move-call command result cannot carry a reference to a later command.
|
|
74
|
+
* Keep them out of `call`; use object/dynamic-field BCS queries instead.
|
|
75
|
+
*/
|
|
76
|
+
export const REF_RETURNING_CALLS = {
|
|
77
|
+
compositionCredits: ["credits"],
|
|
78
|
+
recordingCredits: ["credits", "primaryArtistIds", "featuredArtistIds"],
|
|
79
|
+
recordingMasterReference: ["masterReference"],
|
|
80
|
+
releaseCoverArt: ["cover"],
|
|
81
|
+
releaseCredits: ["credits"],
|
|
82
|
+
releaseDescription: ["description"],
|
|
83
|
+
// `new` is emitted as `_new`; its `&mut UID` parent credential cannot be
|
|
84
|
+
// constructed by a caller-side PTB, so only authority-package code may use it.
|
|
85
|
+
royaltyPool: ["balance", "_new"],
|
|
86
|
+
royaltyStake: ["balance", "getRegistration"],
|
|
87
|
+
// These lifecycle functions require a parent `&mut UID`, which cannot be a
|
|
88
|
+
// caller-provided PTB input. Only `share`, `sweep`, scalar reads and derives
|
|
89
|
+
// remain usable at this layer.
|
|
90
|
+
routedStake: ["stake", "_new", "register", "unregister", "unstake", "restake"],
|
|
91
|
+
partyProfile: ["profile"],
|
|
92
|
+
} as const;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* All platform generated functions and BCS codecs bound to one full, verified
|
|
96
|
+
* deployment. The `call` namespaces construct only caller-owned PTB commands.
|
|
97
|
+
* They neither set gas nor sign/execute. Query dynamic fields directly rather
|
|
98
|
+
* than using a Move function whose return type is a reference: PTB command
|
|
99
|
+
* outputs cannot carry references.
|
|
100
|
+
*/
|
|
101
|
+
export class MisoPlatformPackageBindings {
|
|
102
|
+
readonly deployment: MisoPlatformDeployment;
|
|
103
|
+
|
|
104
|
+
constructor(deployment: MisoPlatformDeployment) {
|
|
105
|
+
this.deployment = normalizeMisoPlatformDeployment(deployment);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
get call() {
|
|
109
|
+
const p = this.deployment.packages;
|
|
110
|
+
const party_ = this.deployment.party;
|
|
111
|
+
const partyosPkg = this.deployment.partyos.partyos;
|
|
112
|
+
return {
|
|
113
|
+
extensions: {
|
|
114
|
+
compositionCredits: {
|
|
115
|
+
compositionCredits: bindModulePackage(
|
|
116
|
+
compositionCredits,
|
|
117
|
+
p.compositionCredits,
|
|
118
|
+
REF_RETURNING_CALLS.compositionCredits,
|
|
119
|
+
),
|
|
120
|
+
compositionPartyRole: bindModulePackage(
|
|
121
|
+
compositionPartyRole,
|
|
122
|
+
p.compositionCredits,
|
|
123
|
+
),
|
|
124
|
+
},
|
|
125
|
+
recordingAdvisory: bindModulePackage(recordingAdvisory, p.recordingAdvisory),
|
|
126
|
+
recordingCredits: {
|
|
127
|
+
recordingCredits: bindModulePackage(
|
|
128
|
+
recordingCredits,
|
|
129
|
+
p.recordingCredits,
|
|
130
|
+
REF_RETURNING_CALLS.recordingCredits,
|
|
131
|
+
),
|
|
132
|
+
recordingPartyRole: bindModulePackage(
|
|
133
|
+
recordingPartyRole,
|
|
134
|
+
p.recordingCredits,
|
|
135
|
+
),
|
|
136
|
+
},
|
|
137
|
+
recordingLanguage: bindModulePackage(recordingLanguage, p.recordingLanguage),
|
|
138
|
+
recordingMasterReference: bindModulePackage(
|
|
139
|
+
recordingMasterReference,
|
|
140
|
+
p.recordingMasterReference,
|
|
141
|
+
REF_RETURNING_CALLS.recordingMasterReference,
|
|
142
|
+
),
|
|
143
|
+
releaseCoverArt: bindModulePackage(
|
|
144
|
+
releaseCoverArt,
|
|
145
|
+
p.releaseCoverArt,
|
|
146
|
+
REF_RETURNING_CALLS.releaseCoverArt,
|
|
147
|
+
),
|
|
148
|
+
releaseCredits: {
|
|
149
|
+
releaseCredits: bindModulePackage(
|
|
150
|
+
releaseCredits,
|
|
151
|
+
p.releaseCredits,
|
|
152
|
+
REF_RETURNING_CALLS.releaseCredits,
|
|
153
|
+
),
|
|
154
|
+
releasePartyRole: bindModulePackage(releasePartyRole, p.releaseCredits),
|
|
155
|
+
},
|
|
156
|
+
releaseDescription: bindModulePackage(
|
|
157
|
+
releaseDescription,
|
|
158
|
+
p.releaseDescription,
|
|
159
|
+
REF_RETURNING_CALLS.releaseDescription,
|
|
160
|
+
),
|
|
161
|
+
releaseDspLink: bindModulePackage(releaseDspLink, p.releaseDspLink),
|
|
162
|
+
releaseGenre: bindModulePackage(releaseGenre, p.releaseGenre),
|
|
163
|
+
releaseKind: bindModulePackage(releaseKind, p.releaseKind),
|
|
164
|
+
},
|
|
165
|
+
primitives: {
|
|
166
|
+
royaltyPool: {
|
|
167
|
+
pool: bindModulePackage(royaltyPool, p.royaltyPool, REF_RETURNING_CALLS.royaltyPool),
|
|
168
|
+
stake: bindModulePackage(royaltyStake, p.royaltyPool, REF_RETURNING_CALLS.royaltyStake),
|
|
169
|
+
},
|
|
170
|
+
routedStake: bindModulePackage(routedStake, p.routedStake, REF_RETURNING_CALLS.routedStake),
|
|
171
|
+
},
|
|
172
|
+
party: {
|
|
173
|
+
// Party core: `@misofm/partyos`'s curated `contracts.party` barrel is
|
|
174
|
+
// already stripped of reference-returning calls (its own
|
|
175
|
+
// PARTY_REF_RETURNING_CALLS, the same set as REF_RETURNING_CALLS.party
|
|
176
|
+
// below), so no `unavailable` list is passed here.
|
|
177
|
+
core: bindModulePackage(partyCoreContracts, partyosPkg),
|
|
178
|
+
cta: bindModulePackage(partyCta, party_.partyCta),
|
|
179
|
+
genre: bindModulePackage(partyGenre, party_.partyGenre),
|
|
180
|
+
media: bindModulePackage(partyMedia, party_.partyMedia),
|
|
181
|
+
music: bindModulePackage(partyMusic, party_.partyMusic),
|
|
182
|
+
platformLink: bindModulePackage(partyPlatformLink, party_.partyPlatformLink),
|
|
183
|
+
proLink: bindModulePackage(partyProLink, party_.partyProLink),
|
|
184
|
+
profile: bindModulePackage(partyProfile, party_.partyProfile, REF_RETURNING_CALLS.partyProfile),
|
|
185
|
+
roles: bindModulePackage(partyRoles, party_.partyRoles),
|
|
186
|
+
social: bindModulePackage(partySocial, party_.partySocial),
|
|
187
|
+
tags: bindModulePackage(partyTags, party_.partyTags),
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** Generated BCS codecs, grouped with the same ownership boundary as `call`. */
|
|
193
|
+
get bcs() {
|
|
194
|
+
return {
|
|
195
|
+
extensions: {
|
|
196
|
+
compositionCredits: {
|
|
197
|
+
compositionCredits: codecsOnly(compositionCredits),
|
|
198
|
+
compositionPartyRole: codecsOnly(compositionPartyRole),
|
|
199
|
+
},
|
|
200
|
+
recordingAdvisory: codecsOnly(recordingAdvisory),
|
|
201
|
+
recordingCredits: {
|
|
202
|
+
recordingCredits: codecsOnly(recordingCredits),
|
|
203
|
+
recordingPartyRole: codecsOnly(recordingPartyRole),
|
|
204
|
+
},
|
|
205
|
+
recordingLanguage: codecsOnly(recordingLanguage),
|
|
206
|
+
recordingMasterReference: codecsOnly(recordingMasterReference),
|
|
207
|
+
releaseCoverArt: codecsOnly(releaseCoverArt),
|
|
208
|
+
releaseCredits: {
|
|
209
|
+
releaseCredits: codecsOnly(releaseCredits),
|
|
210
|
+
releasePartyRole: codecsOnly(releasePartyRole),
|
|
211
|
+
},
|
|
212
|
+
releaseDescription: codecsOnly(releaseDescription),
|
|
213
|
+
releaseDspLink: codecsOnly(releaseDspLink),
|
|
214
|
+
releaseGenre: codecsOnly(releaseGenre),
|
|
215
|
+
releaseKind: codecsOnly(releaseKind),
|
|
216
|
+
},
|
|
217
|
+
primitives: {
|
|
218
|
+
royaltyPool: { pool: codecsOnly(royaltyPool), stake: codecsOnly(royaltyStake) },
|
|
219
|
+
routedStake: codecsOnly(routedStake),
|
|
220
|
+
},
|
|
221
|
+
party: {
|
|
222
|
+
core: codecsOnly(partyCoreContracts),
|
|
223
|
+
cta: codecsOnly(partyCta),
|
|
224
|
+
genre: codecsOnly(partyGenre),
|
|
225
|
+
media: codecsOnly(partyMedia),
|
|
226
|
+
music: codecsOnly(partyMusic),
|
|
227
|
+
platformLink: codecsOnly(partyPlatformLink),
|
|
228
|
+
proLink: codecsOnly(partyProLink),
|
|
229
|
+
profile: codecsOnly(partyProfile),
|
|
230
|
+
roles: codecsOnly(partyRoles),
|
|
231
|
+
social: codecsOnly(partySocial),
|
|
232
|
+
tags: codecsOnly(partyTags),
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** Construct complete platform package bindings from an explicit verified manifest. */
|
|
239
|
+
export function misoPlatformPackages(
|
|
240
|
+
deployment: MisoPlatformDeployment,
|
|
241
|
+
): MisoPlatformPackageBindings {
|
|
242
|
+
return new MisoPlatformPackageBindings(deployment);
|
|
243
|
+
}
|