@misofm/platform 0.24.0 → 0.26.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 +262 -95
- package/dist/auth.d.ts +8 -13
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +78 -59
- package/dist/auth.js.map +1 -1
- package/dist/catalog.d.ts +6 -6
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +33 -21
- package/dist/catalog.js.map +1 -1
- package/dist/client.d.ts +124 -127
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +112 -114
- 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.d.ts +4 -3
- package/dist/cover.d.ts.map +1 -1
- package/dist/cover.js +30 -19
- package/dist/cover.js.map +1 -1
- package/dist/credits.d.ts +12 -10
- package/dist/credits.d.ts.map +1 -1
- package/dist/credits.js +66 -39
- package/dist/credits.js.map +1 -1
- package/dist/deployments.d.ts +122 -74
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +239 -58
- package/dist/deployments.js.map +1 -1
- package/dist/errors.d.ts +91 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +111 -0
- package/dist/errors.js.map +1 -0
- 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 +5 -3
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +11 -6
- package/dist/execute.js.map +1 -1
- package/dist/genre.d.ts +108 -0
- package/dist/genre.d.ts.map +1 -0
- package/dist/genre.js +289 -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 +327 -0
- package/dist/party/client.d.ts.map +1 -0
- package/dist/party/client.js +225 -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 +66 -0
- package/dist/party/extensions/links.d.ts.map +1 -0
- package/dist/party/extensions/links.js +118 -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 +18 -0
- package/dist/party/queries.d.ts.map +1 -0
- package/dist/party/queries.js +124 -0
- package/dist/party/queries.js.map +1 -0
- package/dist/party/types.d.ts +54 -0
- package/dist/party/types.d.ts.map +1 -0
- package/dist/party/types.js +85 -0
- package/dist/party/types.js.map +1 -0
- package/dist/pressing.d.ts +55 -35
- package/dist/pressing.d.ts.map +1 -1
- package/dist/pressing.js +102 -79
- 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 +5 -4
- package/dist/queries.js.map +1 -1
- package/dist/read/artist.d.ts +6 -4
- package/dist/read/artist.d.ts.map +1 -1
- package/dist/read/artist.js +29 -27
- package/dist/read/artist.js.map +1 -1
- package/dist/read/catalog.d.ts +21 -18
- package/dist/read/catalog.d.ts.map +1 -1
- package/dist/read/catalog.js +120 -141
- package/dist/read/catalog.js.map +1 -1
- package/dist/read/client.d.ts +15 -11
- 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/genres.d.ts +5 -3
- package/dist/read/genres.d.ts.map +1 -1
- package/dist/read/genres.js +18 -15
- package/dist/read/genres.js.map +1 -1
- package/dist/read/index.d.ts.map +1 -1
- package/dist/read/index.js +8 -2
- package/dist/read/index.js.map +1 -1
- package/dist/read/receipts.d.ts +15 -6
- package/dist/read/receipts.d.ts.map +1 -1
- package/dist/read/receipts.js +76 -63
- 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 +12 -10
- package/dist/read/wallet.d.ts.map +1 -1
- package/dist/read/wallet.js +122 -136
- package/dist/read/wallet.js.map +1 -1
- package/dist/read/works.d.ts +9 -16
- package/dist/read/works.d.ts.map +1 -1
- package/dist/read/works.js +48 -117
- package/dist/read/works.js.map +1 -1
- package/dist/recording-extensions.d.ts +8 -7
- package/dist/recording-extensions.d.ts.map +1 -1
- package/dist/recording-extensions.js +36 -69
- package/dist/recording-extensions.js.map +1 -1
- package/dist/release-extensions.d.ts +3 -20
- package/dist/release-extensions.d.ts.map +1 -1
- package/dist/release-extensions.js +13 -59
- 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 +160 -0
- package/dist/royalty.js.map +1 -0
- package/dist/share.d.ts +7 -6
- package/dist/share.d.ts.map +1 -1
- package/dist/share.js +38 -31
- 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 +20 -8
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +37 -21
- package/dist/vault.js.map +1 -1
- package/package.json +31 -10
- package/src/auth.ts +89 -70
- package/src/catalog.ts +35 -51
- package/src/client.ts +220 -141
- 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 +19 -28
- package/src/credits.ts +49 -81
- package/src/deployments.ts +321 -73
- package/src/errors.ts +156 -0
- package/src/events.ts +121 -0
- package/src/execute.ts +13 -9
- package/src/genre.ts +384 -0
- package/src/index.ts +10 -1
- package/src/internal.ts +2 -2
- package/src/packages.ts +243 -0
- package/src/party/client.ts +280 -0
- package/src/party/extensions/ctas.ts +46 -0
- package/src/party/extensions/genres.ts +62 -0
- package/src/party/extensions/links.ts +186 -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 +175 -0
- package/src/party/types.ts +88 -0
- package/src/pressing.ts +163 -166
- package/src/publication.ts +58 -45
- package/src/queries.ts +5 -5
- package/src/read/artist.ts +47 -42
- package/src/read/catalog.ts +201 -224
- package/src/read/client.ts +20 -13
- package/src/read/config.ts +9 -2
- package/src/read/genres.ts +24 -16
- package/src/read/index.ts +8 -2
- package/src/read/receipts.ts +131 -70
- package/src/read/types.ts +1 -1
- package/src/read/wallet.ts +199 -166
- package/src/read/works.ts +76 -195
- package/src/recording-extensions.ts +44 -98
- package/src/release-extensions.ts +11 -87
- package/src/release-graph.ts +2 -2
- package/src/royalty.ts +264 -0
- package/src/share.ts +45 -30
- package/src/transactions.ts +6 -6
- package/src/vault.ts +53 -30
package/src/read/wallet.ts
CHANGED
|
@@ -11,18 +11,30 @@
|
|
|
11
11
|
// than be reimplemented by every browser, Worker, server, or native client.
|
|
12
12
|
|
|
13
13
|
import { normalizeStructTag, normalizeSuiAddress, parseStructTag } from "@mysten/sui/utils";
|
|
14
|
+
import { Effect, Option } from "effect";
|
|
14
15
|
import {
|
|
15
16
|
contracts as networkContracts,
|
|
16
17
|
getCompositionByShareType,
|
|
17
18
|
getOwnedReleaseAdminCaps,
|
|
18
19
|
getRecordingByShareType,
|
|
19
20
|
getReleaseById,
|
|
20
|
-
|
|
21
|
-
} from "@misofm/
|
|
22
|
-
import
|
|
21
|
+
} from "@misofm/musicos";
|
|
22
|
+
import { party as partyContracts } from "@misofm/partyos/contracts";
|
|
23
|
+
import { derivePartyAdminCapId, getPartiesByIds, getPendingMemberships as getPartyPendingMemberships } from "@misofm/partyos";
|
|
24
|
+
import {
|
|
25
|
+
getObjectsContent,
|
|
26
|
+
getOptionalObjectContent,
|
|
27
|
+
SuiClient,
|
|
28
|
+
SuiGraphQL,
|
|
29
|
+
SuiRpcError,
|
|
30
|
+
type BcsDecodeError,
|
|
31
|
+
type ObjectNotFoundError,
|
|
32
|
+
type ObjectTypeMismatchError,
|
|
33
|
+
} from "@misofm/effect";
|
|
34
|
+
import type { MisoConfig } from "./config.ts";
|
|
23
35
|
import { int, u64 } from "./internal/scalars.ts";
|
|
24
|
-
import * as vaultContract from "
|
|
25
|
-
import * as recordContract from "
|
|
36
|
+
import * as vaultContract from "../contracts/vault/vault.ts";
|
|
37
|
+
import * as recordContract from "../contracts/record/record.ts";
|
|
26
38
|
import { deriveRecordId } from "../pressing.ts";
|
|
27
39
|
import { requireRecordSalesDeployment } from "../deployments.ts";
|
|
28
40
|
import type {
|
|
@@ -155,29 +167,52 @@ function isCanonicalRecordType(
|
|
|
155
167
|
return true;
|
|
156
168
|
}
|
|
157
169
|
|
|
170
|
+
/** Page shape this file needs from `client.core.listOwnedObjects` — content is optional per-call, not per-object. */
|
|
171
|
+
interface OwnedObjectsPage {
|
|
172
|
+
objects: Array<{ objectId: string; type: string; content?: Uint8Array }>;
|
|
173
|
+
hasNextPage: boolean;
|
|
174
|
+
cursor: string | null;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** One page of `client.core.listOwnedObjects`, requesting `content` when `withContent` is set. */
|
|
178
|
+
const listOwnedObjectsPage = Effect.fn("listOwnedObjectsPage")(function* (
|
|
179
|
+
owner: string,
|
|
180
|
+
type: string,
|
|
181
|
+
cursor: string | null,
|
|
182
|
+
withContent: boolean,
|
|
183
|
+
): Effect.fn.Return<OwnedObjectsPage, SuiRpcError, SuiClient> {
|
|
184
|
+
const client = yield* SuiClient;
|
|
185
|
+
return yield* Effect.tryPromise({
|
|
186
|
+
try: (signal) =>
|
|
187
|
+
(client.core.listOwnedObjects as (args: unknown) => Promise<OwnedObjectsPage>)({
|
|
188
|
+
owner,
|
|
189
|
+
type,
|
|
190
|
+
cursor,
|
|
191
|
+
limit: 50,
|
|
192
|
+
...(withContent ? { include: { content: true } } : {}),
|
|
193
|
+
signal,
|
|
194
|
+
}),
|
|
195
|
+
catch: (cause) => new SuiRpcError({ operation: "listOwnedObjects", cause }),
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
|
|
158
199
|
/**
|
|
159
200
|
* The records `owner` holds. Ownership is DIRECT — a record is an address-owned
|
|
160
|
-
* `<
|
|
201
|
+
* `<record>::record::Record` with no pressing/license/receipt intermediary.
|
|
161
202
|
* The server-side type filter and exact local check deliberately exclude records
|
|
162
203
|
* from any retired package namespace.
|
|
163
204
|
*/
|
|
164
|
-
export
|
|
205
|
+
export const getOwnedRecords = Effect.fn("getOwnedRecords")(function* (
|
|
206
|
+
owner: string,
|
|
207
|
+
config: MisoConfig,
|
|
208
|
+
): Effect.fn.Return<OwnedRecord[], SuiRpcError, SuiClient> {
|
|
165
209
|
const out: OwnedRecord[] = [];
|
|
166
210
|
let cursor: string | null = null;
|
|
167
|
-
const sales = requireRecordSalesDeployment(
|
|
211
|
+
const sales = requireRecordSalesDeployment(config.recordSales);
|
|
168
212
|
const recordType = `${sales.recordPackageId}::record::Record`;
|
|
169
213
|
|
|
170
214
|
for (let page = 0; page < MAX_PAGES; page++) {
|
|
171
|
-
|
|
172
|
-
// TypeScript reads as a circular initializer without an explicit type.
|
|
173
|
-
const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
|
|
174
|
-
await client.protocol.core.listOwnedObjects({
|
|
175
|
-
owner,
|
|
176
|
-
type: recordType,
|
|
177
|
-
cursor,
|
|
178
|
-
limit: 50,
|
|
179
|
-
include: { content: true },
|
|
180
|
-
});
|
|
215
|
+
const res = (yield* listOwnedObjectsPage(owner, recordType, cursor, true)) as OwnedObjectsPage;
|
|
181
216
|
for (const obj of res.objects) {
|
|
182
217
|
if (!isCanonicalRecordType(obj.type, sales.recordPackageId)) {
|
|
183
218
|
continue;
|
|
@@ -209,7 +244,7 @@ export async function getOwnedRecords(client: MisoClient, owner: string): Promis
|
|
|
209
244
|
if (!cursor) break;
|
|
210
245
|
}
|
|
211
246
|
return out;
|
|
212
|
-
}
|
|
247
|
+
});
|
|
213
248
|
|
|
214
249
|
// ── Parties ──────────────────────────────────────────────────────────────────
|
|
215
250
|
|
|
@@ -219,21 +254,19 @@ export async function getOwnedRecords(client: MisoClient, owner: string): Promis
|
|
|
219
254
|
* cap type plus a name resolve. Caps are transferable, which is why this is
|
|
220
255
|
* authoritative in a way that remembering created parties client-side is not.
|
|
221
256
|
*/
|
|
222
|
-
export
|
|
223
|
-
|
|
257
|
+
export const getOwnedParties = Effect.fn("getOwnedParties")(function* (
|
|
258
|
+
owner: string,
|
|
259
|
+
config: MisoConfig,
|
|
260
|
+
): Effect.fn.Return<OwnedParty[], SuiRpcError | ObjectTypeMismatchError | BcsDecodeError, SuiClient> {
|
|
261
|
+
const capType = `${config.partyos.partyos}::party::PartyAdminCap`;
|
|
224
262
|
|
|
225
263
|
// One page of 50 caps is plenty for launch-scale artists; paginate if labels
|
|
226
264
|
// ever start hitting the cap.
|
|
227
|
-
const { objects } =
|
|
228
|
-
owner,
|
|
229
|
-
type: capType,
|
|
230
|
-
limit: 50,
|
|
231
|
-
include: { content: true },
|
|
232
|
-
});
|
|
265
|
+
const { objects } = yield* listOwnedObjectsPage(owner, capType, null, true);
|
|
233
266
|
|
|
234
267
|
const caps = objects.flatMap((obj) => {
|
|
235
268
|
try {
|
|
236
|
-
const cap =
|
|
269
|
+
const cap = partyContracts.PartyAdminCap.parse(obj.content!);
|
|
237
270
|
return [{ capId: obj.objectId, partyId: cap.party_id }];
|
|
238
271
|
} catch {
|
|
239
272
|
return [];
|
|
@@ -241,12 +274,15 @@ export async function getOwnedParties(client: MisoClient, owner: string): Promis
|
|
|
241
274
|
});
|
|
242
275
|
if (caps.length === 0) return [];
|
|
243
276
|
|
|
244
|
-
const parties =
|
|
277
|
+
const parties = yield* getPartiesByIds(
|
|
278
|
+
caps.map((c) => c.partyId),
|
|
279
|
+
config.partyos.partyos,
|
|
280
|
+
);
|
|
245
281
|
return caps.flatMap(({ capId, partyId }) => {
|
|
246
282
|
const p = parties[partyId];
|
|
247
283
|
return p ? [{ partyId, capId, name: p.name, kind: p.kind }] : [];
|
|
248
284
|
});
|
|
249
|
-
}
|
|
285
|
+
});
|
|
250
286
|
|
|
251
287
|
/**
|
|
252
288
|
* Pending group invitations for every individual party the wallet administers.
|
|
@@ -256,24 +292,24 @@ export async function getOwnedParties(client: MisoClient, owner: string): Promis
|
|
|
256
292
|
* names are resolved in one batch so the API can render an inbox without extra
|
|
257
293
|
* browser reads.
|
|
258
294
|
*/
|
|
259
|
-
export
|
|
260
|
-
client: MisoClient,
|
|
295
|
+
export const getPendingMemberships = Effect.fn("getPendingMemberships")(function* (
|
|
261
296
|
owner: string,
|
|
262
|
-
|
|
263
|
-
|
|
297
|
+
config: MisoConfig,
|
|
298
|
+
): Effect.fn.Return<PendingMembership[], SuiRpcError | ObjectTypeMismatchError | BcsDecodeError, SuiClient> {
|
|
299
|
+
const controlled = yield* getOwnedParties(owner, config);
|
|
264
300
|
const individuals = controlled.filter((party) => party.kind === "individual");
|
|
265
301
|
if (individuals.length === 0) return [];
|
|
266
302
|
|
|
267
|
-
const invitations =
|
|
268
|
-
individuals
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
303
|
+
const invitations = yield* Effect.forEach(
|
|
304
|
+
individuals,
|
|
305
|
+
(member) =>
|
|
306
|
+
getPartyPendingMemberships(member.partyId).pipe(Effect.map((groupIds) => ({ member, groupIds }))),
|
|
307
|
+
{ concurrency: "unbounded" },
|
|
272
308
|
);
|
|
273
309
|
const groupIds = [...new Set(invitations.flatMap(({ groupIds }) => groupIds))];
|
|
274
310
|
if (groupIds.length === 0) return [];
|
|
275
311
|
|
|
276
|
-
const groups =
|
|
312
|
+
const groups = yield* getPartiesByIds(groupIds, config.partyos.partyos);
|
|
277
313
|
return invitations.flatMap(({ member, groupIds }) =>
|
|
278
314
|
groupIds.flatMap((groupId): PendingMembership[] => {
|
|
279
315
|
const group = groups[groupId];
|
|
@@ -282,7 +318,7 @@ export async function getPendingMemberships(
|
|
|
282
318
|
: [];
|
|
283
319
|
}),
|
|
284
320
|
);
|
|
285
|
-
}
|
|
321
|
+
});
|
|
286
322
|
|
|
287
323
|
// ── Works (studio catalog) ───────────────────────────────────────────────────
|
|
288
324
|
|
|
@@ -292,12 +328,14 @@ export async function getPendingMemberships(
|
|
|
292
328
|
* type `T` is parsed back out of each instance's type tag, because the cap does
|
|
293
329
|
* not store the work's id — only its share type.
|
|
294
330
|
*/
|
|
295
|
-
|
|
331
|
+
const ownedGenericCaps = Effect.fn("ownedGenericCaps")(function* (
|
|
332
|
+
owner: string,
|
|
333
|
+
capType: string,
|
|
334
|
+
): Effect.fn.Return<{ id: string; shareType: string }[], SuiRpcError, SuiClient> {
|
|
296
335
|
const caps: { id: string; shareType: string }[] = [];
|
|
297
336
|
let cursor: string | null = null;
|
|
298
337
|
for (let page = 0; page < MAX_PAGES; page++) {
|
|
299
|
-
const res
|
|
300
|
-
await client.protocol.core.listOwnedObjects({ owner, type: capType, cursor, limit: 50 });
|
|
338
|
+
const res = (yield* listOwnedObjectsPage(owner, capType, cursor, false)) as OwnedObjectsPage;
|
|
301
339
|
for (const obj of res.objects) {
|
|
302
340
|
const match = /<(.+)>$/.exec(obj.type);
|
|
303
341
|
if (match?.[1]) caps.push({ id: obj.objectId, shareType: match[1] });
|
|
@@ -307,33 +345,33 @@ async function ownedGenericCaps(client: MisoClient, owner: string, capType: stri
|
|
|
307
345
|
if (!cursor) break;
|
|
308
346
|
}
|
|
309
347
|
return caps;
|
|
310
|
-
}
|
|
348
|
+
});
|
|
311
349
|
|
|
312
350
|
/**
|
|
313
351
|
* Discover owner-held VaultAdminCaps whose wrapped capability administers a
|
|
314
352
|
* catalog work. PressingAdminCap is deliberately ignored: Catalog is a work
|
|
315
353
|
* surface (composition / recording / release), not a sale-management surface.
|
|
316
354
|
*/
|
|
317
|
-
|
|
355
|
+
const ownedVaultedWorkCaps = Effect.fn("ownedVaultedWorkCaps")(function* (
|
|
356
|
+
owner: string,
|
|
357
|
+
config: MisoConfig,
|
|
358
|
+
): Effect.fn.Return<
|
|
359
|
+
{ compositions: VaultedGenericCap[]; recordings: VaultedGenericCap[]; releases: VaultedReleaseCap[] },
|
|
360
|
+
SuiRpcError,
|
|
361
|
+
SuiClient
|
|
362
|
+
> {
|
|
318
363
|
const out: {
|
|
319
364
|
compositions: VaultedGenericCap[];
|
|
320
365
|
recordings: VaultedGenericCap[];
|
|
321
366
|
releases: VaultedReleaseCap[];
|
|
322
367
|
} = { compositions: [], recordings: [], releases: [] };
|
|
323
|
-
const vaultPackageId =
|
|
324
|
-
const misoPackageId =
|
|
368
|
+
const vaultPackageId = config.protocol.vault;
|
|
369
|
+
const misoPackageId = config.deployment.musicos;
|
|
325
370
|
const capType = `${vaultPackageId}::vault::VaultAdminCap`;
|
|
326
371
|
let cursor: string | null = null;
|
|
327
372
|
|
|
328
373
|
for (let page = 0; page < MAX_PAGES; page++) {
|
|
329
|
-
const res
|
|
330
|
-
await client.protocol.core.listOwnedObjects({
|
|
331
|
-
owner,
|
|
332
|
-
type: capType,
|
|
333
|
-
cursor,
|
|
334
|
-
limit: 50,
|
|
335
|
-
include: { content: true },
|
|
336
|
-
});
|
|
374
|
+
const res = (yield* listOwnedObjectsPage(owner, capType, cursor, true)) as OwnedObjectsPage;
|
|
337
375
|
for (const object of res.objects) {
|
|
338
376
|
if (!object.content) continue;
|
|
339
377
|
const work = classifyVaultedWorkAdminCapType(
|
|
@@ -361,32 +399,24 @@ async function ownedVaultedWorkCaps(client: MisoClient, owner: string) {
|
|
|
361
399
|
if (!cursor) break;
|
|
362
400
|
}
|
|
363
401
|
return out;
|
|
364
|
-
}
|
|
402
|
+
});
|
|
365
403
|
|
|
366
404
|
/** Read the ReleaseAdminCap wrapped by each shared release vault. */
|
|
367
|
-
|
|
368
|
-
client: MisoClient,
|
|
405
|
+
const resolveVaultedReleaseCaps = Effect.fn("resolveVaultedReleaseCaps")(function* (
|
|
369
406
|
caps: readonly VaultedReleaseCap[],
|
|
370
|
-
|
|
407
|
+
config: MisoConfig,
|
|
408
|
+
): Effect.fn.Return<{ id: string; releaseId: string }[], SuiRpcError, SuiClient> {
|
|
371
409
|
if (caps.length === 0) return [];
|
|
372
|
-
const releaseCapType = `${
|
|
373
|
-
const vaultType = normalizeStructTag(
|
|
374
|
-
|
|
375
|
-
);
|
|
376
|
-
const { objects } = await client.protocol.core.getObjects({
|
|
377
|
-
objectIds: caps.map((cap) => cap.vaultId),
|
|
378
|
-
include: { content: true },
|
|
379
|
-
});
|
|
410
|
+
const releaseCapType = `${config.deployment.musicos}::release::ReleaseAdminCap`;
|
|
411
|
+
const vaultType = normalizeStructTag(`${config.protocol.vault}::vault::Vault<${releaseCapType}>`);
|
|
412
|
+
const contentById = yield* getObjectsContent(caps.map((cap) => cap.vaultId));
|
|
380
413
|
const releasesByVault = new Map<string, string>();
|
|
381
|
-
for (const object of
|
|
382
|
-
if (object instanceof Error || !object.content) continue;
|
|
414
|
+
for (const [objectId, object] of contentById) {
|
|
383
415
|
try {
|
|
384
416
|
if (normalizeStructTag(object.type) !== vaultType) continue;
|
|
385
|
-
const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(
|
|
386
|
-
object.content,
|
|
387
|
-
);
|
|
417
|
+
const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(object.content);
|
|
388
418
|
const releaseId = vault.cap?.value?.release_id;
|
|
389
|
-
if (releaseId) releasesByVault.set(
|
|
419
|
+
if (releaseId) releasesByVault.set(objectId, releaseId);
|
|
390
420
|
} catch {
|
|
391
421
|
// Batch catalog discovery is best-effort per authority, matching the
|
|
392
422
|
// existing direct-cap path's treatment of unreadable work objects.
|
|
@@ -396,7 +426,7 @@ async function resolveVaultedReleaseCaps(
|
|
|
396
426
|
const releaseId = releasesByVault.get(cap.vaultId);
|
|
397
427
|
return releaseId ? [{ id: cap.id, releaseId }] : [];
|
|
398
428
|
});
|
|
399
|
-
}
|
|
429
|
+
});
|
|
400
430
|
|
|
401
431
|
/**
|
|
402
432
|
* Every work the wallet administers, keyed by its ADMIN CAP id (the studio
|
|
@@ -408,33 +438,33 @@ async function resolveVaultedReleaseCaps(
|
|
|
408
438
|
* the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
|
|
409
439
|
* `release_id` directly.
|
|
410
440
|
*/
|
|
411
|
-
export
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
441
|
+
export const getOwnedWorks = Effect.fn("getOwnedWorks")(function* (
|
|
442
|
+
owner: string,
|
|
443
|
+
config: MisoConfig,
|
|
444
|
+
): Effect.fn.Return<OwnedWork[], SuiRpcError | BcsDecodeError, SuiClient | SuiGraphQL> {
|
|
445
|
+
const miso = config.deployment.musicos;
|
|
446
|
+
|
|
447
|
+
const [directCompCaps, directRecCaps, directRelCaps, vaulted] = yield* Effect.all([
|
|
448
|
+
ownedGenericCaps(owner, `${miso}::composition::CompositionAdminCap`),
|
|
449
|
+
ownedGenericCaps(owner, `${miso}::recording::RecordingAdminCap`),
|
|
450
|
+
getOwnedReleaseAdminCaps(owner, miso),
|
|
451
|
+
ownedVaultedWorkCaps(owner, config),
|
|
419
452
|
]);
|
|
420
|
-
const vaultedRelCaps =
|
|
453
|
+
const vaultedRelCaps = yield* resolveVaultedReleaseCaps(vaulted.releases, config);
|
|
421
454
|
const compCaps = [...directCompCaps, ...vaulted.compositions];
|
|
422
455
|
const recCaps = [...directRecCaps, ...vaulted.recordings];
|
|
423
456
|
const relCaps = [...directRelCaps, ...vaultedRelCaps];
|
|
424
457
|
|
|
425
|
-
const addresses =
|
|
426
|
-
client.graphql,
|
|
458
|
+
const addresses = yield* getWorkAddressesByShareTypes(
|
|
427
459
|
{ compositions: compCaps.map((c) => c.shareType), recordings: recCaps.map((c) => c.shareType) },
|
|
428
460
|
miso,
|
|
429
461
|
);
|
|
430
|
-
const works =
|
|
462
|
+
const works = yield* getWorksByIds({
|
|
431
463
|
compositions: Object.values(addresses.compositions).filter((id): id is string => id !== undefined),
|
|
432
464
|
recordings: Object.values(addresses.recordings).filter((id): id is string => id !== undefined),
|
|
433
465
|
releases: relCaps.map((c) => c.releaseId),
|
|
434
466
|
});
|
|
435
|
-
const recordingTitles =
|
|
436
|
-
client.protocol,
|
|
437
|
-
client.graphql,
|
|
467
|
+
const recordingTitles = yield* getRecordingTitles(
|
|
438
468
|
Object.values(addresses.recordings).filter((id): id is string => id !== undefined),
|
|
439
469
|
miso,
|
|
440
470
|
);
|
|
@@ -464,32 +494,23 @@ export async function getOwnedWorks(client: MisoClient, owner: string): Promise<
|
|
|
464
494
|
});
|
|
465
495
|
|
|
466
496
|
return [...comps, ...recs, ...rels];
|
|
467
|
-
}
|
|
497
|
+
});
|
|
468
498
|
|
|
469
499
|
/** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
|
|
470
|
-
export
|
|
471
|
-
|
|
500
|
+
export const getWorkByCap = Effect.fn("getWorkByCap")(function* (
|
|
501
|
+
capId: string,
|
|
502
|
+
config: MisoConfig,
|
|
503
|
+
): Effect.fn.Return<WorkDetail | null, ObjectNotFoundError | SuiRpcError | BcsDecodeError, SuiClient | SuiGraphQL> {
|
|
504
|
+
const miso = config.deployment.musicos;
|
|
472
505
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
try {
|
|
477
|
-
const { object } = await client.protocol.core.getObject({
|
|
478
|
-
objectId: capId,
|
|
479
|
-
include: { json: true, content: true },
|
|
480
|
-
});
|
|
481
|
-
type = object.type;
|
|
482
|
-
json = (object.json ?? null) as Record<string, unknown> | null;
|
|
483
|
-
content = object.content;
|
|
484
|
-
} catch (e) {
|
|
485
|
-
if (isNotFound(e)) return null;
|
|
486
|
-
throw e;
|
|
487
|
-
}
|
|
506
|
+
const found = yield* getOptionalObjectContent(capId);
|
|
507
|
+
if (Option.isNone(found)) return null;
|
|
508
|
+
const { content, type } = found.value;
|
|
488
509
|
|
|
489
510
|
const direct = classifyWorkAdminCapType(type, miso);
|
|
490
511
|
if (direct?.kind === "composition") {
|
|
491
512
|
const { shareType } = direct;
|
|
492
|
-
const c =
|
|
513
|
+
const c = yield* getCompositionByShareType(shareType, miso);
|
|
493
514
|
return {
|
|
494
515
|
capId,
|
|
495
516
|
kind: "composition",
|
|
@@ -503,8 +524,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
503
524
|
|
|
504
525
|
if (direct?.kind === "recording") {
|
|
505
526
|
const { shareType } = direct;
|
|
506
|
-
const r =
|
|
507
|
-
const titles =
|
|
527
|
+
const r = yield* getRecordingByShareType(shareType, miso);
|
|
528
|
+
const titles = yield* getRecordingTitles([r.id], miso);
|
|
508
529
|
return {
|
|
509
530
|
capId,
|
|
510
531
|
kind: "recording",
|
|
@@ -516,9 +537,9 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
516
537
|
}
|
|
517
538
|
|
|
518
539
|
if (direct?.kind === "release") {
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
const r =
|
|
540
|
+
// `ReleaseAdminCap`'s BCS carries `release_id` directly — no `json` include needed.
|
|
541
|
+
const { release_id: releaseId } = networkContracts.release.ReleaseAdminCap.parse(content);
|
|
542
|
+
const r = yield* getReleaseById(releaseId);
|
|
522
543
|
return {
|
|
523
544
|
capId,
|
|
524
545
|
kind: "release",
|
|
@@ -530,12 +551,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
530
551
|
};
|
|
531
552
|
}
|
|
532
553
|
|
|
533
|
-
const vaulted = classifyVaultedWorkAdminCapType(
|
|
534
|
-
|
|
535
|
-
client.config.protocol.vault,
|
|
536
|
-
miso,
|
|
537
|
-
);
|
|
538
|
-
if (!vaulted || !content) {
|
|
554
|
+
const vaulted = classifyVaultedWorkAdminCapType(type, config.protocol.vault, miso);
|
|
555
|
+
if (!vaulted) {
|
|
539
556
|
// A real object, but not a supported work authority — "no such work",
|
|
540
557
|
// not a transport failure. PressingAdminCap intentionally lands here.
|
|
541
558
|
return null;
|
|
@@ -543,12 +560,7 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
543
560
|
const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(content);
|
|
544
561
|
|
|
545
562
|
if (vaulted.kind === "composition") {
|
|
546
|
-
const c =
|
|
547
|
-
client.protocol,
|
|
548
|
-
client.graphql,
|
|
549
|
-
vaulted.shareType,
|
|
550
|
-
miso,
|
|
551
|
-
);
|
|
563
|
+
const c = yield* getCompositionByShareType(vaulted.shareType, miso);
|
|
552
564
|
return {
|
|
553
565
|
capId,
|
|
554
566
|
kind: "composition",
|
|
@@ -561,13 +573,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
561
573
|
}
|
|
562
574
|
|
|
563
575
|
if (vaulted.kind === "recording") {
|
|
564
|
-
const r =
|
|
565
|
-
|
|
566
|
-
client.graphql,
|
|
567
|
-
vaulted.shareType,
|
|
568
|
-
miso,
|
|
569
|
-
);
|
|
570
|
-
const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
|
|
576
|
+
const r = yield* getRecordingByShareType(vaulted.shareType, miso);
|
|
577
|
+
const titles = yield* getRecordingTitles([r.id], miso);
|
|
571
578
|
return {
|
|
572
579
|
capId,
|
|
573
580
|
kind: "recording",
|
|
@@ -578,9 +585,9 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
578
585
|
};
|
|
579
586
|
}
|
|
580
587
|
|
|
581
|
-
const [releaseCap] =
|
|
588
|
+
const [releaseCap] = yield* resolveVaultedReleaseCaps([{ id: capId, vaultId }], config);
|
|
582
589
|
if (!releaseCap) throw new Error(`Release vault ${vaultId} carries no release admin cap`);
|
|
583
|
-
const r =
|
|
590
|
+
const r = yield* getReleaseById(releaseCap.releaseId);
|
|
584
591
|
return {
|
|
585
592
|
capId,
|
|
586
593
|
kind: "release",
|
|
@@ -590,15 +597,17 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
590
597
|
discCount: r.tracks.length > 0 ? 1 : 0,
|
|
591
598
|
trackCount: r.tracks.length,
|
|
592
599
|
};
|
|
593
|
-
}
|
|
600
|
+
});
|
|
594
601
|
|
|
595
602
|
// ── Balance ──────────────────────────────────────────────────────────────────
|
|
596
603
|
|
|
597
|
-
const decimalsByClient = new WeakMap<
|
|
604
|
+
const decimalsByClient = new WeakMap<object, Map<string, Promise<number>>>();
|
|
598
605
|
|
|
599
|
-
/**
|
|
600
|
-
*
|
|
601
|
-
|
|
606
|
+
/**
|
|
607
|
+
* Resolve once per (transport client, coin type). Failed lookups are evicted so
|
|
608
|
+
* a transient fullnode error cannot poison a long-lived API worker.
|
|
609
|
+
*/
|
|
610
|
+
function coinDecimalsPromise(client: object & { core: { getCoinMetadata: (args: { coinType: string }) => Promise<{ coinMetadata: { decimals?: number } | null }> } }, coinType: string): Promise<number> {
|
|
602
611
|
let cache = decimalsByClient.get(client);
|
|
603
612
|
if (!cache) {
|
|
604
613
|
cache = new Map();
|
|
@@ -608,7 +617,7 @@ async function coinDecimals(client: MisoClient, coinType: string): Promise<numbe
|
|
|
608
617
|
const cached = cache.get(key);
|
|
609
618
|
if (cached) return cached;
|
|
610
619
|
|
|
611
|
-
const pending = client.
|
|
620
|
+
const pending = client.core.getCoinMetadata({ coinType: key }).then(({ coinMetadata }) => {
|
|
612
621
|
const decimals = coinMetadata?.decimals;
|
|
613
622
|
if (!Number.isSafeInteger(decimals) || decimals! < 0 || decimals! > 18) {
|
|
614
623
|
throw new Error(`Coin metadata for ${key} has no supported decimal precision`);
|
|
@@ -616,12 +625,10 @@ async function coinDecimals(client: MisoClient, coinType: string): Promise<numbe
|
|
|
616
625
|
return decimals!;
|
|
617
626
|
});
|
|
618
627
|
cache.set(key, pending);
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
throw error;
|
|
624
|
-
}
|
|
628
|
+
pending.catch(() => {
|
|
629
|
+
if (cache!.get(key) === pending) cache!.delete(key);
|
|
630
|
+
});
|
|
631
|
+
return pending;
|
|
625
632
|
}
|
|
626
633
|
|
|
627
634
|
/**
|
|
@@ -629,11 +636,22 @@ async function coinDecimals(client: MisoClient, coinType: string): Promise<numbe
|
|
|
629
636
|
* classes: callers using a `FundsWithdrawal` must never mistake coin-object
|
|
630
637
|
* value for immediately withdrawable address balance.
|
|
631
638
|
*/
|
|
632
|
-
export
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
639
|
+
export const getBalance = Effect.fn("getBalance")(function* (
|
|
640
|
+
address: string,
|
|
641
|
+
config: MisoConfig,
|
|
642
|
+
coinType?: string,
|
|
643
|
+
): Effect.fn.Return<Balance, SuiRpcError, SuiClient> {
|
|
644
|
+
const client = yield* SuiClient;
|
|
645
|
+
const type = coinType ?? config.money.usdCoinType;
|
|
646
|
+
const [res, decimals] = yield* Effect.all([
|
|
647
|
+
Effect.tryPromise({
|
|
648
|
+
try: (signal) => client.core.getBalance({ owner: address, coinType: type, signal }),
|
|
649
|
+
catch: (cause) => new SuiRpcError({ operation: "getBalance", cause }),
|
|
650
|
+
}),
|
|
651
|
+
Effect.tryPromise({
|
|
652
|
+
try: () => coinDecimalsPromise(client, type),
|
|
653
|
+
catch: (cause) => new SuiRpcError({ operation: "getCoinMetadata", cause }),
|
|
654
|
+
}),
|
|
637
655
|
]);
|
|
638
656
|
return {
|
|
639
657
|
address: normalizeSuiAddress(address),
|
|
@@ -643,7 +661,7 @@ export async function getBalance(client: MisoClient, address: string, coinType?:
|
|
|
643
661
|
addressBalance: u64(res.balance.addressBalance),
|
|
644
662
|
decimals,
|
|
645
663
|
};
|
|
646
|
-
}
|
|
664
|
+
});
|
|
647
665
|
|
|
648
666
|
// ── Ownership ────────────────────────────────────────────────────────────────
|
|
649
667
|
|
|
@@ -663,14 +681,22 @@ function isAddressOwner(owner: unknown, address: string): boolean {
|
|
|
663
681
|
* A failed read means "can't confirm", which resolves to `false` — the editor
|
|
664
682
|
* stays hidden rather than being offered and then rejected on submit.
|
|
665
683
|
*/
|
|
666
|
-
export
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
684
|
+
export const ownsParty = Effect.fn("ownsParty")(function* (
|
|
685
|
+
address: string,
|
|
686
|
+
partyId: string,
|
|
687
|
+
config: MisoConfig,
|
|
688
|
+
): Effect.fn.Return<Ownership, never, SuiClient> {
|
|
689
|
+
const capId = derivePartyAdminCapId(partyId, config.partyos.partyos);
|
|
690
|
+
const client = yield* SuiClient;
|
|
691
|
+
const isOwner = yield* Effect.tryPromise({
|
|
692
|
+
try: (signal) => client.core.getObject({ objectId: capId, signal }),
|
|
693
|
+
catch: (cause) => cause,
|
|
694
|
+
}).pipe(
|
|
695
|
+
Effect.map(({ object }) => isAddressOwner(object?.owner, address)),
|
|
696
|
+
Effect.catch(() => Effect.succeed(false)),
|
|
697
|
+
);
|
|
672
698
|
return { address: normalizeSuiAddress(address), objectId: partyId, isOwner, capId };
|
|
673
|
-
}
|
|
699
|
+
});
|
|
674
700
|
|
|
675
701
|
/**
|
|
676
702
|
* Whether `address` owns a record. Records are address-owned objects, so this is
|
|
@@ -678,10 +704,17 @@ export async function ownsParty(client: MisoClient, address: string, partyId: st
|
|
|
678
704
|
* whether the Snapshots tab appears, and a non-owner has no snapshot content to
|
|
679
705
|
* fetch regardless.
|
|
680
706
|
*/
|
|
681
|
-
export
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
707
|
+
export const ownsRecord = Effect.fn("ownsRecord")(function* (
|
|
708
|
+
address: string,
|
|
709
|
+
recordId: string,
|
|
710
|
+
): Effect.fn.Return<Ownership, never, SuiClient> {
|
|
711
|
+
const client = yield* SuiClient;
|
|
712
|
+
const isOwner = yield* Effect.tryPromise({
|
|
713
|
+
try: (signal) => client.core.getObject({ objectId: recordId, signal }),
|
|
714
|
+
catch: (cause) => cause,
|
|
715
|
+
}).pipe(
|
|
716
|
+
Effect.map(({ object }) => isAddressOwner(object?.owner, address)),
|
|
717
|
+
Effect.catch(() => Effect.succeed(false)),
|
|
718
|
+
);
|
|
686
719
|
return { address: normalizeSuiAddress(address), objectId: recordId, isOwner };
|
|
687
|
-
}
|
|
720
|
+
});
|