@misofm/sdk 0.14.0 → 0.15.1

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 CHANGED
@@ -39,7 +39,7 @@ Install both SDKs at the application boundary; the platform package intentionall
39
39
  does not carry its own protocol SDK copy:
40
40
 
41
41
  ```sh
42
- bun add @misofm/sdk@^0.14.0 @misonetwork/sdk@^0.10.0
42
+ bun add @misofm/sdk@^0.15.0 @misonetwork/sdk@^0.10.0
43
43
  ```
44
44
 
45
45
  Both SDKs are consumed from npm. The platform package keeps
@@ -107,11 +107,11 @@ export declare const MISO_PLATFORM_DEPLOYMENTS: {
107
107
  readonly releaseCredits: "0xbe293700ef758c95b69838df6cfa8377b9cad1dd59cbf933974f68b1766d87b5";
108
108
  readonly royaltyPool: "0xbeddbcfc2c42ed1bcaa74dc241957621b48241451e10af136c20cdc7df8266b8";
109
109
  readonly vault: "0x7075ce4bfc2c738e774c94f1eeb7dc532a5f11ead9b4e3815d90dc16053eae9c";
110
- readonly compositionRoyaltyPoolPlugin: "0x8d61aecceb597441a0d675b44291706742859c8ff7755b3ed143823daa430c50";
111
- readonly recordingRoyaltyPoolPlugin: "0x6de70d4e87a328259f00f354227fb329c63fbf50efb87f057c5da26d6908e1d1";
112
- readonly partyWalletPlugin: "0xccf17215193d1ae64a47480c83df9af2881ffdb75e5ac842ab3898cadd9eeca0";
110
+ readonly compositionRoyaltyPoolPlugin: "0x2447321e57414fb9829f4bbeddffb1d29b14bf17db1ac31856b69956305b2f5f";
111
+ readonly recordingRoyaltyPoolPlugin: "0x8e609f3a80bb4ac8f427e5a35c7333f6ee592c11512cd59662105553263172ec";
112
+ readonly partyWalletPlugin: "0xdeed95c5b0fa04fd6c51a8a1c9dd926e96cd35b8c4b1049b7d72e217ee3a3f2c";
113
113
  readonly routedStake: "0x7a55b1841043efea865d65a6601e057400a79a0aa7bb11e781a25dbe622cbe5f";
114
- readonly compositionRoutedStakePlugin: "0x54fb4befa1be03f7457abfddcfb9334c20a8df3e01c44aa257f1c3d718cd57ee";
114
+ readonly compositionRoutedStakePlugin: "0x59a5aa190ed14c754ef292a23320bd5749bbb781c4990dcd4a8ad1dff60797d4";
115
115
  readonly coverArt: "0x2dae28058b89df93224bacfb9af42fd3ab41f001c2c815fd57fd575024d9a50b";
116
116
  readonly releaseCoverArt: "0x649b18f2bb3d94f6a611a8e4ad3a29dcf8b7bba3f684056d60897a8a5e835106";
117
117
  readonly genre: "0x5091d30e893105abe24adf75223f587361034e90516c6e509897bb86d18d2387";
@@ -119,7 +119,7 @@ export declare const MISO_PLATFORM_DEPLOYMENTS: {
119
119
  readonly releaseDspLink: "0x2b8e1d7be7a3cbc07e6167c5b5c6511059791b4a2116c1fa97d65cfd871d0bda";
120
120
  readonly releaseGenre: "0x7882367d45efff41ef0cb9e937029a3f8a3cdf5908d83beeb5cbc0cff178d290";
121
121
  readonly releaseKind: "0x3e74c960d9446ae2ebf228456ddc1b099d2090501c9cbcd284a999aa2e774e12";
122
- readonly releaseRevenueDistributorPlugin: "0x42a22b24129988a5ce8069a1f78eb31d9aa5edf360d729ae3c2c0b8ed18876e1";
122
+ readonly releaseRevenueDistributorPlugin: "0x23b214507e4b4c344916d10367eaceea1f0dd233b609d99329bb98d55d3c1363";
123
123
  readonly recordingAdvisory: "0x28e0e72c5b892fc888a9007afa59ebe04ed8e47f12632ddb42cd685d09c4af2e";
124
124
  readonly recordingLanguage: "0x4b284a9435cf4f48e3785e4485d16be2fcbcef5beaa2b44b6556d9c1028e2c0d";
125
125
  readonly recordingMasterReference: "0x2b06ab58f2d5a915b42fc5879d52241fc72e804b3da782fa752b2d2f242170c0";
@@ -22,11 +22,11 @@ export const MISO_PLATFORM_DEPLOYMENTS = {
22
22
  releaseCredits: "0xbe293700ef758c95b69838df6cfa8377b9cad1dd59cbf933974f68b1766d87b5",
23
23
  royaltyPool: "0xbeddbcfc2c42ed1bcaa74dc241957621b48241451e10af136c20cdc7df8266b8",
24
24
  vault: "0x7075ce4bfc2c738e774c94f1eeb7dc532a5f11ead9b4e3815d90dc16053eae9c",
25
- compositionRoyaltyPoolPlugin: "0x8d61aecceb597441a0d675b44291706742859c8ff7755b3ed143823daa430c50",
26
- recordingRoyaltyPoolPlugin: "0x6de70d4e87a328259f00f354227fb329c63fbf50efb87f057c5da26d6908e1d1",
27
- partyWalletPlugin: "0xccf17215193d1ae64a47480c83df9af2881ffdb75e5ac842ab3898cadd9eeca0",
25
+ compositionRoyaltyPoolPlugin: "0x2447321e57414fb9829f4bbeddffb1d29b14bf17db1ac31856b69956305b2f5f",
26
+ recordingRoyaltyPoolPlugin: "0x8e609f3a80bb4ac8f427e5a35c7333f6ee592c11512cd59662105553263172ec",
27
+ partyWalletPlugin: "0xdeed95c5b0fa04fd6c51a8a1c9dd926e96cd35b8c4b1049b7d72e217ee3a3f2c",
28
28
  routedStake: "0x7a55b1841043efea865d65a6601e057400a79a0aa7bb11e781a25dbe622cbe5f",
29
- compositionRoutedStakePlugin: "0x54fb4befa1be03f7457abfddcfb9334c20a8df3e01c44aa257f1c3d718cd57ee",
29
+ compositionRoutedStakePlugin: "0x59a5aa190ed14c754ef292a23320bd5749bbb781c4990dcd4a8ad1dff60797d4",
30
30
  coverArt: "0x2dae28058b89df93224bacfb9af42fd3ab41f001c2c815fd57fd575024d9a50b",
31
31
  releaseCoverArt: "0x649b18f2bb3d94f6a611a8e4ad3a29dcf8b7bba3f684056d60897a8a5e835106",
32
32
  genre: "0x5091d30e893105abe24adf75223f587361034e90516c6e509897bb86d18d2387",
@@ -34,7 +34,7 @@ export const MISO_PLATFORM_DEPLOYMENTS = {
34
34
  releaseDspLink: "0x2b8e1d7be7a3cbc07e6167c5b5c6511059791b4a2116c1fa97d65cfd871d0bda",
35
35
  releaseGenre: "0x7882367d45efff41ef0cb9e937029a3f8a3cdf5908d83beeb5cbc0cff178d290",
36
36
  releaseKind: "0x3e74c960d9446ae2ebf228456ddc1b099d2090501c9cbcd284a999aa2e774e12",
37
- releaseRevenueDistributorPlugin: "0x42a22b24129988a5ce8069a1f78eb31d9aa5edf360d729ae3c2c0b8ed18876e1",
37
+ releaseRevenueDistributorPlugin: "0x23b214507e4b4c344916d10367eaceea1f0dd233b609d99329bb98d55d3c1363",
38
38
  recordingAdvisory: "0x28e0e72c5b892fc888a9007afa59ebe04ed8e47f12632ddb42cd685d09c4af2e",
39
39
  recordingLanguage: "0x4b284a9435cf4f48e3785e4485d16be2fcbcef5beaa2b44b6556d9c1028e2c0d",
40
40
  recordingMasterReference: "0x2b06ab58f2d5a915b42fc5879d52241fc72e804b3da782fa752b2d2f242170c0",
@@ -8,6 +8,8 @@ export interface ProtocolIds {
8
8
  pressing: string;
9
9
  /** `miso_record` package — the exact owner/type namespace for `record::Record`. */
10
10
  record: string;
11
+ /** `vault` — shared custody for protocol admin capabilities. */
12
+ vault: string;
11
13
  /** `release_cover_art` — the release cover extension. */
12
14
  releaseCoverArt: string;
13
15
  /** `composition_credits` / `recording_credits` / `release_credits` extensions. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5C,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI9D;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;CACxC;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4FAA4F;AAC5F,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,qBAAqB,GAAG,YAAY,GAAG,eAAe,CAAC,CACpG,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAE,mBAAwB,GAAG,UAAU,CA0B5F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5C,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI9D;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;CACxC;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4FAA4F;AAC5F,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,qBAAqB,GAAG,YAAY,GAAG,eAAe,CAAC,CACpG,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAE,mBAAwB,GAAG,UAAU,CA2B5F"}
@@ -28,6 +28,7 @@ export function misoConfig(network, overrides = {}) {
28
28
  protocol: {
29
29
  pressing: platform.packages.pressing,
30
30
  record: platform.packages.record,
31
+ vault: platform.packages.vault,
31
32
  releaseCoverArt: platform.packages.releaseCoverArt,
32
33
  compositionCredits: platform.packages.compositionCredits,
33
34
  recordingCredits: platform.packages.recordingCredits,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AACtC,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,yEAAyE;AACzE,mFAAmF;AACnF,2CAA2C;AAC3C,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,gCAAgC;AAGhC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,KAAyB;IACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,IAAI,CAAC,CAAC;AACvE,CAAC;AA8DD,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,YAAiC,EAAE;IAC9E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAe;QACzB,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,QAAQ;QAC7B,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ;YACpC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YAChC,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe;YAClD,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB;YACxD,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;YACpD,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc;YAChD,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;SACjC;QACD,KAAK,EAAE;YACL,WAAW,EACT,sFAAsF;YACxF,WAAW,EAAE,CAAC;SACf;QACD,OAAO,EAAE,iCAAiC;QAC1C,UAAU,EAAE,wCAAwC;QACpD,mBAAmB,EAAE,gDAAgD;QACrE,UAAU,EAAE,6BAA6B;QACzC,aAAa,EAAE,EAAE;KAClB,CAAC;IACF,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,sEAAsE;AACtE,SAAS,cAAc,CAAmB,CAAI;IAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAe,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AACtC,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,yEAAyE;AACzE,mFAAmF;AACnF,2CAA2C;AAC3C,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,gCAAgC;AAGhC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,KAAyB;IACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,IAAI,CAAC,CAAC;AACvE,CAAC;AAgED,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,YAAiC,EAAE;IAC9E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAe;QACzB,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,QAAQ;QAC7B,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ;YACpC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YAChC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;YAC9B,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe;YAClD,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB;YACxD,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;YACpD,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc;YAChD,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;SACjC;QACD,KAAK,EAAE;YACL,WAAW,EACT,sFAAsF;YACxF,WAAW,EAAE,CAAC;SACf;QACD,OAAO,EAAE,iCAAiC;QAC1C,UAAU,EAAE,wCAAwC;QACpD,mBAAmB,EAAE,gDAAgD;QACrE,UAAU,EAAE,6BAA6B;QACzC,aAAa,EAAE,EAAE;KAClB,CAAC;IACF,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,sEAAsE;AACtE,SAAS,cAAc,CAAmB,CAAI;IAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAe,CAAC;AAChG,CAAC"}
@@ -1,5 +1,16 @@
1
1
  import type { MisoClient } from "./client.ts";
2
2
  import type { Balance, OwnedParty, OwnedRecord, OwnedWork, Ownership, PendingMembership, WorkDetail } from "./types.ts";
3
+ type WorkAdminCapType = {
4
+ kind: "composition";
5
+ shareType: string;
6
+ } | {
7
+ kind: "recording";
8
+ shareType: string;
9
+ } | {
10
+ kind: "release";
11
+ };
12
+ /** @internal Exact nested-type classifier used by the vault-aware catalog read. */
13
+ export declare function classifyVaultedWorkAdminCapType(type: string, vaultPackageId: string, misoPackageId: string): WorkAdminCapType | null;
3
14
  /**
4
15
  * The records `owner` holds. Ownership is DIRECT — a record is an address-owned
5
16
  * `<miso_record>::record::Record` with no pressing/license/receipt intermediary.
@@ -27,14 +38,14 @@ export declare function getPendingMemberships(client: MisoClient, owner: string)
27
38
  * Every work the wallet administers, keyed by its ADMIN CAP id (the studio
28
39
  * catalog's routing unit — caps are what control means here).
29
40
  *
30
- * Three transports, one answer: cap discovery is gRPC; one aliased GraphQL
41
+ * Three transports, one answer: direct or vaulted cap discovery is gRPC; one aliased GraphQL
31
42
  * request maps every share type to its work address (gRPC cannot ask "which
32
43
  * object has type X"); one gRPC batch loads all the work contents. Releases skip
33
44
  * the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
34
45
  * `release_id` directly.
35
46
  */
36
47
  export declare function getOwnedWorks(client: MisoClient, owner: string): Promise<OwnedWork[]>;
37
- /** Classify a cap by its on-chain type, then resolve the work behind it. */
48
+ /** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
38
49
  export declare function getWorkByCap(client: MisoClient, capId: string): Promise<WorkDetail | null>;
39
50
  /**
40
51
  * A wallet's spendable balance in one currency. `core.getBalance` totals coin
@@ -60,4 +71,5 @@ export declare function ownsParty(client: MisoClient, address: string, partyId:
60
71
  * fetch regardless.
61
72
  */
62
73
  export declare function ownsRecord(client: MisoClient, address: string, recordId: string): Promise<Ownership>;
74
+ export {};
63
75
  //# sourceMappingURL=wallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAiCpB;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA+B/F;AAID;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA2B9F;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuB9B;AAoBD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAmD3F;AAED,4EAA4E;AAC5E,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA2DhG;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASzG;AAWD;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAOxG;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAM1G"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAUpB,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAsDxB,mFAAmF;AACnF,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,gBAAgB,GAAG,IAAI,CAmBzB;AAyBD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA+B/F;AAID;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA2B9F;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuB9B;AAoHD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAwD3F;AAED,oFAAoF;AACpF,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA2HhG;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASzG;AAWD;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAOxG;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAM1G"}
@@ -9,9 +9,10 @@
9
9
  // dance (owned caps over gRPC → share types over GraphQL → work contents over
10
10
  // gRPC) is exactly the sort of thing that should exist once in the SDK rather
11
11
  // than be reimplemented by every browser, Worker, server, or native client.
12
- import { normalizeSuiAddress } from "@mysten/sui/utils";
12
+ import { normalizeStructTag, normalizeSuiAddress, parseStructTag } from "@mysten/sui/utils";
13
13
  import { contracts as networkContracts, getCompositionByShareType, getOwnedReleaseAdminCaps, getRecordingByShareType, getReleaseById, isNotFound, } from "@misonetwork/sdk";
14
14
  import { int, u64 } from "./internal/scalars.js";
15
+ import * as vaultContract from "../contracts/vault/vault.js";
15
16
  import { getRecordingTitles, getWorkAddressesByShareTypes, getWorksByIds } from "./works.js";
16
17
  /**
17
18
  * Page cap on the owned-objects scan, so a wallet holding a huge unrelated object
@@ -19,6 +20,61 @@ import { getRecordingTitles, getWorkAddressesByShareTypes, getWorksByIds } from
19
20
  * library.
20
21
  */
21
22
  const MAX_PAGES = 20;
23
+ function classifyWorkAdminCapType(type, misoPackageId) {
24
+ let tag;
25
+ try {
26
+ tag = parseStructTag(type);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ if (tag.address !== misoPackageId)
32
+ return null;
33
+ if (tag.module === "composition" &&
34
+ tag.name === "CompositionAdminCap" &&
35
+ tag.typeParams.length === 1) {
36
+ const share = tag.typeParams[0];
37
+ return {
38
+ kind: "composition",
39
+ shareType: typeof share === "string" ? share : normalizeStructTag(share),
40
+ };
41
+ }
42
+ if (tag.module === "recording" &&
43
+ tag.name === "RecordingAdminCap" &&
44
+ tag.typeParams.length === 1) {
45
+ const share = tag.typeParams[0];
46
+ return {
47
+ kind: "recording",
48
+ shareType: typeof share === "string" ? share : normalizeStructTag(share),
49
+ };
50
+ }
51
+ if (tag.module === "release" &&
52
+ tag.name === "ReleaseAdminCap" &&
53
+ tag.typeParams.length === 0) {
54
+ return { kind: "release" };
55
+ }
56
+ return null;
57
+ }
58
+ /** @internal Exact nested-type classifier used by the vault-aware catalog read. */
59
+ export function classifyVaultedWorkAdminCapType(type, vaultPackageId, misoPackageId) {
60
+ let tag;
61
+ try {
62
+ tag = parseStructTag(type);
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ if (tag.address !== vaultPackageId ||
68
+ tag.module !== "vault" ||
69
+ tag.name !== "VaultAdminCap" ||
70
+ tag.typeParams.length !== 1) {
71
+ return null;
72
+ }
73
+ const wrapped = tag.typeParams[0];
74
+ return wrapped && typeof wrapped !== "string"
75
+ ? classifyWorkAdminCapType(normalizeStructTag(wrapped), misoPackageId)
76
+ : null;
77
+ }
22
78
  // ── Records ──────────────────────────────────────────────────────────────────
23
79
  function coerceNumber(v) {
24
80
  if (typeof v === "number" && Number.isFinite(v))
@@ -150,20 +206,110 @@ export async function getPendingMemberships(client, owner) {
150
206
  * not store the work's id — only its share type.
151
207
  */
152
208
  async function ownedGenericCaps(client, owner, capType) {
153
- const { objects } = await client.protocol.core.listOwnedObjects({ owner, type: capType, limit: 50 });
154
209
  const caps = [];
155
- for (const obj of objects) {
156
- const match = /<(.+)>$/.exec(obj.type);
157
- if (match?.[1])
158
- caps.push({ id: obj.objectId, shareType: match[1] });
210
+ let cursor = null;
211
+ for (let page = 0; page < MAX_PAGES; page++) {
212
+ const res = await client.protocol.core.listOwnedObjects({ owner, type: capType, cursor, limit: 50 });
213
+ for (const obj of res.objects) {
214
+ const match = /<(.+)>$/.exec(obj.type);
215
+ if (match?.[1])
216
+ caps.push({ id: obj.objectId, shareType: match[1] });
217
+ }
218
+ if (!res.hasNextPage)
219
+ break;
220
+ cursor = res.cursor;
221
+ if (!cursor)
222
+ break;
159
223
  }
160
224
  return caps;
161
225
  }
226
+ /**
227
+ * Discover owner-held VaultAdminCaps whose wrapped capability administers a
228
+ * catalog work. PressingAdminCap is deliberately ignored: Catalog is a work
229
+ * surface (composition / recording / release), not a sale-management surface.
230
+ */
231
+ async function ownedVaultedWorkCaps(client, owner) {
232
+ const out = { compositions: [], recordings: [], releases: [] };
233
+ const vaultPackageId = client.config.protocol.vault;
234
+ const misoPackageId = client.config.deployment.miso;
235
+ const capType = `${vaultPackageId}::vault::VaultAdminCap`;
236
+ let cursor = null;
237
+ for (let page = 0; page < MAX_PAGES; page++) {
238
+ const res = await client.protocol.core.listOwnedObjects({
239
+ owner,
240
+ type: capType,
241
+ cursor,
242
+ limit: 50,
243
+ include: { content: true },
244
+ });
245
+ for (const object of res.objects) {
246
+ if (!object.content)
247
+ continue;
248
+ const work = classifyVaultedWorkAdminCapType(object.type, vaultPackageId, misoPackageId);
249
+ if (!work)
250
+ continue;
251
+ try {
252
+ const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(object.content);
253
+ if (work.kind === "composition") {
254
+ out.compositions.push({ id: object.objectId, shareType: work.shareType, vaultId });
255
+ }
256
+ else if (work.kind === "recording") {
257
+ out.recordings.push({ id: object.objectId, shareType: work.shareType, vaultId });
258
+ }
259
+ else {
260
+ out.releases.push({ id: object.objectId, vaultId });
261
+ }
262
+ }
263
+ catch {
264
+ // A malformed object under the configured vault namespace is not usable
265
+ // authority and should not hide otherwise valid catalog entries.
266
+ }
267
+ }
268
+ if (!res.hasNextPage)
269
+ break;
270
+ cursor = res.cursor;
271
+ if (!cursor)
272
+ break;
273
+ }
274
+ return out;
275
+ }
276
+ /** Read the ReleaseAdminCap wrapped by each shared release vault. */
277
+ async function resolveVaultedReleaseCaps(client, caps) {
278
+ if (caps.length === 0)
279
+ return [];
280
+ const releaseCapType = `${client.config.deployment.miso}::release::ReleaseAdminCap`;
281
+ const vaultType = normalizeStructTag(`${client.config.protocol.vault}::vault::Vault<${releaseCapType}>`);
282
+ const { objects } = await client.protocol.core.getObjects({
283
+ objectIds: caps.map((cap) => cap.vaultId),
284
+ include: { content: true },
285
+ });
286
+ const releasesByVault = new Map();
287
+ for (const object of objects) {
288
+ if (object instanceof Error || !object.content)
289
+ continue;
290
+ try {
291
+ if (normalizeStructTag(object.type) !== vaultType)
292
+ continue;
293
+ const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(object.content);
294
+ const releaseId = vault.cap.value?.release_id;
295
+ if (releaseId)
296
+ releasesByVault.set(object.objectId, releaseId);
297
+ }
298
+ catch {
299
+ // Batch catalog discovery is best-effort per authority, matching the
300
+ // existing direct-cap path's treatment of unreadable work objects.
301
+ }
302
+ }
303
+ return caps.flatMap((cap) => {
304
+ const releaseId = releasesByVault.get(cap.vaultId);
305
+ return releaseId ? [{ id: cap.id, releaseId }] : [];
306
+ });
307
+ }
162
308
  /**
163
309
  * Every work the wallet administers, keyed by its ADMIN CAP id (the studio
164
310
  * catalog's routing unit — caps are what control means here).
165
311
  *
166
- * Three transports, one answer: cap discovery is gRPC; one aliased GraphQL
312
+ * Three transports, one answer: direct or vaulted cap discovery is gRPC; one aliased GraphQL
167
313
  * request maps every share type to its work address (gRPC cannot ask "which
168
314
  * object has type X"); one gRPC batch loads all the work contents. Releases skip
169
315
  * the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
@@ -171,11 +317,16 @@ async function ownedGenericCaps(client, owner, capType) {
171
317
  */
172
318
  export async function getOwnedWorks(client, owner) {
173
319
  const miso = client.config.deployment.miso;
174
- const [compCaps, recCaps, relCaps] = await Promise.all([
320
+ const [directCompCaps, directRecCaps, directRelCaps, vaulted] = await Promise.all([
175
321
  ownedGenericCaps(client, owner, `${miso}::composition::CompositionAdminCap`),
176
322
  ownedGenericCaps(client, owner, `${miso}::recording::RecordingAdminCap`),
177
323
  getOwnedReleaseAdminCaps(client.protocol, owner, miso),
324
+ ownedVaultedWorkCaps(client, owner),
178
325
  ]);
326
+ const vaultedRelCaps = await resolveVaultedReleaseCaps(client, vaulted.releases);
327
+ const compCaps = [...directCompCaps, ...vaulted.compositions];
328
+ const recCaps = [...directRecCaps, ...vaulted.recordings];
329
+ const relCaps = [...directRelCaps, ...vaultedRelCaps];
179
330
  const addresses = await getWorkAddressesByShareTypes(client.graphql, { compositions: compCaps.map((c) => c.shareType), recordings: recCaps.map((c) => c.shareType) }, miso);
180
331
  const works = await getWorksByIds(client.protocol, {
181
332
  compositions: Object.values(addresses.compositions).filter((id) => id !== undefined),
@@ -211,23 +362,29 @@ export async function getOwnedWorks(client, owner) {
211
362
  });
212
363
  return [...comps, ...recs, ...rels];
213
364
  }
214
- /** Classify a cap by its on-chain type, then resolve the work behind it. */
365
+ /** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
215
366
  export async function getWorkByCap(client, capId) {
216
367
  const miso = client.config.deployment.miso;
217
368
  let type;
218
369
  let json;
370
+ let content;
219
371
  try {
220
- const { object } = await client.protocol.core.getObject({ objectId: capId, include: { json: true } });
372
+ const { object } = await client.protocol.core.getObject({
373
+ objectId: capId,
374
+ include: { json: true, content: true },
375
+ });
221
376
  type = object.type;
222
377
  json = (object.json ?? null);
378
+ content = object.content;
223
379
  }
224
380
  catch (e) {
225
381
  if (isNotFound(e))
226
382
  return null;
227
383
  throw e;
228
384
  }
229
- if (type.startsWith(`${miso}::composition::CompositionAdminCap<`)) {
230
- const shareType = type.slice(type.indexOf("<") + 1, -1);
385
+ const direct = classifyWorkAdminCapType(type, miso);
386
+ if (direct?.kind === "composition") {
387
+ const { shareType } = direct;
231
388
  const c = await getCompositionByShareType(client.protocol, client.graphql, shareType, miso);
232
389
  return {
233
390
  capId,
@@ -239,8 +396,8 @@ export async function getWorkByCap(client, capId) {
239
396
  shareType,
240
397
  };
241
398
  }
242
- if (type.startsWith(`${miso}::recording::RecordingAdminCap<`)) {
243
- const shareType = type.slice(type.indexOf("<") + 1, -1);
399
+ if (direct?.kind === "recording") {
400
+ const { shareType } = direct;
244
401
  const r = await getRecordingByShareType(client.protocol, client.graphql, shareType, miso);
245
402
  const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
246
403
  return {
@@ -252,7 +409,7 @@ export async function getWorkByCap(client, capId) {
252
409
  shareType,
253
410
  };
254
411
  }
255
- if (type.startsWith(`${miso}::release::ReleaseAdminCap`)) {
412
+ if (direct?.kind === "release") {
256
413
  const releaseId = typeof json?.release_id === "string" ? json.release_id : null;
257
414
  if (!releaseId)
258
415
  throw new Error(`Release cap ${capId} carries no release id`);
@@ -267,8 +424,50 @@ export async function getWorkByCap(client, capId) {
267
424
  trackCount: r.tracks.length,
268
425
  };
269
426
  }
270
- // A real object, but not a work admin cap — "no such work", not an error.
271
- return null;
427
+ const vaulted = classifyVaultedWorkAdminCapType(type, client.config.protocol.vault, miso);
428
+ if (!vaulted || !content) {
429
+ // A real object, but not a supported work authority — "no such work",
430
+ // not a transport failure. PressingAdminCap intentionally lands here.
431
+ return null;
432
+ }
433
+ const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(content);
434
+ if (vaulted.kind === "composition") {
435
+ const c = await getCompositionByShareType(client.protocol, client.graphql, vaulted.shareType, miso);
436
+ return {
437
+ capId,
438
+ kind: "composition",
439
+ workId: c.id,
440
+ title: c.title,
441
+ state: c.state.type,
442
+ royaltyRateBps: int(c.royaltyRate.value),
443
+ shareType: vaulted.shareType,
444
+ };
445
+ }
446
+ if (vaulted.kind === "recording") {
447
+ const r = await getRecordingByShareType(client.protocol, client.graphql, vaulted.shareType, miso);
448
+ const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
449
+ return {
450
+ capId,
451
+ kind: "recording",
452
+ workId: r.id,
453
+ title: titles[r.id] ?? "Untitled",
454
+ state: r.state.type,
455
+ shareType: vaulted.shareType,
456
+ };
457
+ }
458
+ const [releaseCap] = await resolveVaultedReleaseCaps(client, [{ id: capId, vaultId }]);
459
+ if (!releaseCap)
460
+ throw new Error(`Release vault ${vaultId} carries no release admin cap`);
461
+ const r = await getReleaseById(client.protocol, releaseCap.releaseId);
462
+ return {
463
+ capId,
464
+ kind: "release",
465
+ workId: r.id,
466
+ title: r.title,
467
+ state: r.state.type,
468
+ discCount: r.tracks.length > 0 ? 1 : 0,
469
+ trackCount: r.tracks.length,
470
+ };
272
471
  }
273
472
  // ── Balance ──────────────────────────────────────────────────────────────────
274
473
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@misofm/sdk",
3
- "version": "0.14.0",
3
+ "version": "0.15.1",
4
4
  "packageManager": "bun@1.4.0",
5
5
  "description": "Complete client SDK for the Miso platform on Sui — high-level reads, pressings, listings, records, and work publishing.",
6
6
  "license": "Apache-2.0",
@@ -86,11 +86,11 @@ export const MISO_PLATFORM_DEPLOYMENTS = {
86
86
  releaseCredits: "0xbe293700ef758c95b69838df6cfa8377b9cad1dd59cbf933974f68b1766d87b5",
87
87
  royaltyPool: "0xbeddbcfc2c42ed1bcaa74dc241957621b48241451e10af136c20cdc7df8266b8",
88
88
  vault: "0x7075ce4bfc2c738e774c94f1eeb7dc532a5f11ead9b4e3815d90dc16053eae9c",
89
- compositionRoyaltyPoolPlugin: "0x8d61aecceb597441a0d675b44291706742859c8ff7755b3ed143823daa430c50",
90
- recordingRoyaltyPoolPlugin: "0x6de70d4e87a328259f00f354227fb329c63fbf50efb87f057c5da26d6908e1d1",
91
- partyWalletPlugin: "0xccf17215193d1ae64a47480c83df9af2881ffdb75e5ac842ab3898cadd9eeca0",
89
+ compositionRoyaltyPoolPlugin: "0x2447321e57414fb9829f4bbeddffb1d29b14bf17db1ac31856b69956305b2f5f",
90
+ recordingRoyaltyPoolPlugin: "0x8e609f3a80bb4ac8f427e5a35c7333f6ee592c11512cd59662105553263172ec",
91
+ partyWalletPlugin: "0xdeed95c5b0fa04fd6c51a8a1c9dd926e96cd35b8c4b1049b7d72e217ee3a3f2c",
92
92
  routedStake: "0x7a55b1841043efea865d65a6601e057400a79a0aa7bb11e781a25dbe622cbe5f",
93
- compositionRoutedStakePlugin: "0x54fb4befa1be03f7457abfddcfb9334c20a8df3e01c44aa257f1c3d718cd57ee",
93
+ compositionRoutedStakePlugin: "0x59a5aa190ed14c754ef292a23320bd5749bbb781c4990dcd4a8ad1dff60797d4",
94
94
  coverArt: "0x2dae28058b89df93224bacfb9af42fd3ab41f001c2c815fd57fd575024d9a50b",
95
95
  releaseCoverArt: "0x649b18f2bb3d94f6a611a8e4ad3a29dcf8b7bba3f684056d60897a8a5e835106",
96
96
  genre: "0x5091d30e893105abe24adf75223f587361034e90516c6e509897bb86d18d2387",
@@ -98,7 +98,7 @@ export const MISO_PLATFORM_DEPLOYMENTS = {
98
98
  releaseDspLink: "0x2b8e1d7be7a3cbc07e6167c5b5c6511059791b4a2116c1fa97d65cfd871d0bda",
99
99
  releaseGenre: "0x7882367d45efff41ef0cb9e937029a3f8a3cdf5908d83beeb5cbc0cff178d290",
100
100
  releaseKind: "0x3e74c960d9446ae2ebf228456ddc1b099d2090501c9cbcd284a999aa2e774e12",
101
- releaseRevenueDistributorPlugin: "0x42a22b24129988a5ce8069a1f78eb31d9aa5edf360d729ae3c2c0b8ed18876e1",
101
+ releaseRevenueDistributorPlugin: "0x23b214507e4b4c344916d10367eaceea1f0dd233b609d99329bb98d55d3c1363",
102
102
  recordingAdvisory: "0x28e0e72c5b892fc888a9007afa59ebe04ed8e47f12632ddb42cd685d09c4af2e",
103
103
  recordingLanguage: "0x4b284a9435cf4f48e3785e4485d16be2fcbcef5beaa2b44b6556d9c1028e2c0d",
104
104
  recordingMasterReference: "0x2b06ab58f2d5a915b42fc5879d52241fc72e804b3da782fa752b2d2f242170c0",
@@ -29,6 +29,8 @@ export interface ProtocolIds {
29
29
  pressing: string;
30
30
  /** `miso_record` package — the exact owner/type namespace for `record::Record`. */
31
31
  record: string;
32
+ /** `vault` — shared custody for protocol admin capabilities. */
33
+ vault: string;
32
34
  /** `release_cover_art` — the release cover extension. */
33
35
  releaseCoverArt: string;
34
36
  /** `composition_credits` / `recording_credits` / `release_credits` extensions. */
@@ -92,6 +94,7 @@ export function misoConfig(network: Network, overrides: MisoConfigOverrides = {}
92
94
  protocol: {
93
95
  pressing: platform.packages.pressing,
94
96
  record: platform.packages.record,
97
+ vault: platform.packages.vault,
95
98
  releaseCoverArt: platform.packages.releaseCoverArt,
96
99
  compositionCredits: platform.packages.compositionCredits,
97
100
  recordingCredits: platform.packages.recordingCredits,
@@ -10,7 +10,7 @@
10
10
  // gRPC) is exactly the sort of thing that should exist once in the SDK rather
11
11
  // than be reimplemented by every browser, Worker, server, or native client.
12
12
 
13
- import { normalizeSuiAddress } from "@mysten/sui/utils";
13
+ import { normalizeStructTag, normalizeSuiAddress, parseStructTag } from "@mysten/sui/utils";
14
14
  import {
15
15
  contracts as networkContracts,
16
16
  getCompositionByShareType,
@@ -21,6 +21,7 @@ import {
21
21
  } from "@misonetwork/sdk";
22
22
  import type { MisoClient } from "./client.ts";
23
23
  import { int, u64 } from "./internal/scalars.ts";
24
+ import * as vaultContract from "../contracts/vault/vault.ts";
24
25
  import type {
25
26
  Balance,
26
27
  OwnedParty,
@@ -39,6 +40,89 @@ import { getRecordingTitles, getWorkAddressesByShareTypes, getWorksByIds } from
39
40
  */
40
41
  const MAX_PAGES = 20;
41
42
 
43
+ type WorkAdminCapType =
44
+ | { kind: "composition"; shareType: string }
45
+ | { kind: "recording"; shareType: string }
46
+ | { kind: "release" };
47
+
48
+ type VaultedGenericCap = {
49
+ id: string;
50
+ shareType: string;
51
+ vaultId: string;
52
+ };
53
+
54
+ type VaultedReleaseCap = {
55
+ id: string;
56
+ vaultId: string;
57
+ };
58
+
59
+ function classifyWorkAdminCapType(type: string, misoPackageId: string): WorkAdminCapType | null {
60
+ let tag: ReturnType<typeof parseStructTag>;
61
+ try {
62
+ tag = parseStructTag(type);
63
+ } catch {
64
+ return null;
65
+ }
66
+ if (tag.address !== misoPackageId) return null;
67
+
68
+ if (
69
+ tag.module === "composition" &&
70
+ tag.name === "CompositionAdminCap" &&
71
+ tag.typeParams.length === 1
72
+ ) {
73
+ const share = tag.typeParams[0]!;
74
+ return {
75
+ kind: "composition",
76
+ shareType: typeof share === "string" ? share : normalizeStructTag(share),
77
+ };
78
+ }
79
+ if (
80
+ tag.module === "recording" &&
81
+ tag.name === "RecordingAdminCap" &&
82
+ tag.typeParams.length === 1
83
+ ) {
84
+ const share = tag.typeParams[0]!;
85
+ return {
86
+ kind: "recording",
87
+ shareType: typeof share === "string" ? share : normalizeStructTag(share),
88
+ };
89
+ }
90
+ if (
91
+ tag.module === "release" &&
92
+ tag.name === "ReleaseAdminCap" &&
93
+ tag.typeParams.length === 0
94
+ ) {
95
+ return { kind: "release" };
96
+ }
97
+ return null;
98
+ }
99
+
100
+ /** @internal Exact nested-type classifier used by the vault-aware catalog read. */
101
+ export function classifyVaultedWorkAdminCapType(
102
+ type: string,
103
+ vaultPackageId: string,
104
+ misoPackageId: string,
105
+ ): WorkAdminCapType | null {
106
+ let tag: ReturnType<typeof parseStructTag>;
107
+ try {
108
+ tag = parseStructTag(type);
109
+ } catch {
110
+ return null;
111
+ }
112
+ if (
113
+ tag.address !== vaultPackageId ||
114
+ tag.module !== "vault" ||
115
+ tag.name !== "VaultAdminCap" ||
116
+ tag.typeParams.length !== 1
117
+ ) {
118
+ return null;
119
+ }
120
+ const wrapped = tag.typeParams[0];
121
+ return wrapped && typeof wrapped !== "string"
122
+ ? classifyWorkAdminCapType(normalizeStructTag(wrapped), misoPackageId)
123
+ : null;
124
+ }
125
+
42
126
  // ── Records ──────────────────────────────────────────────────────────────────
43
127
 
44
128
  function coerceNumber(v: unknown): number | null {
@@ -183,20 +267,116 @@ export async function getPendingMemberships(
183
267
  * not store the work's id — only its share type.
184
268
  */
185
269
  async function ownedGenericCaps(client: MisoClient, owner: string, capType: string) {
186
- const { objects } = await client.protocol.core.listOwnedObjects({ owner, type: capType, limit: 50 });
187
270
  const caps: { id: string; shareType: string }[] = [];
188
- for (const obj of objects) {
189
- const match = /<(.+)>$/.exec(obj.type);
190
- if (match?.[1]) caps.push({ id: obj.objectId, shareType: match[1] });
271
+ let cursor: string | null = null;
272
+ for (let page = 0; page < MAX_PAGES; page++) {
273
+ const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
274
+ await client.protocol.core.listOwnedObjects({ owner, type: capType, cursor, limit: 50 });
275
+ for (const obj of res.objects) {
276
+ const match = /<(.+)>$/.exec(obj.type);
277
+ if (match?.[1]) caps.push({ id: obj.objectId, shareType: match[1] });
278
+ }
279
+ if (!res.hasNextPage) break;
280
+ cursor = res.cursor;
281
+ if (!cursor) break;
191
282
  }
192
283
  return caps;
193
284
  }
194
285
 
286
+ /**
287
+ * Discover owner-held VaultAdminCaps whose wrapped capability administers a
288
+ * catalog work. PressingAdminCap is deliberately ignored: Catalog is a work
289
+ * surface (composition / recording / release), not a sale-management surface.
290
+ */
291
+ async function ownedVaultedWorkCaps(client: MisoClient, owner: string) {
292
+ const out: {
293
+ compositions: VaultedGenericCap[];
294
+ recordings: VaultedGenericCap[];
295
+ releases: VaultedReleaseCap[];
296
+ } = { compositions: [], recordings: [], releases: [] };
297
+ const vaultPackageId = client.config.protocol.vault;
298
+ const misoPackageId = client.config.deployment.miso;
299
+ const capType = `${vaultPackageId}::vault::VaultAdminCap`;
300
+ let cursor: string | null = null;
301
+
302
+ for (let page = 0; page < MAX_PAGES; page++) {
303
+ const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
304
+ await client.protocol.core.listOwnedObjects({
305
+ owner,
306
+ type: capType,
307
+ cursor,
308
+ limit: 50,
309
+ include: { content: true },
310
+ });
311
+ for (const object of res.objects) {
312
+ if (!object.content) continue;
313
+ const work = classifyVaultedWorkAdminCapType(
314
+ object.type,
315
+ vaultPackageId,
316
+ misoPackageId,
317
+ );
318
+ if (!work) continue;
319
+ try {
320
+ const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(object.content);
321
+ if (work.kind === "composition") {
322
+ out.compositions.push({ id: object.objectId, shareType: work.shareType, vaultId });
323
+ } else if (work.kind === "recording") {
324
+ out.recordings.push({ id: object.objectId, shareType: work.shareType, vaultId });
325
+ } else {
326
+ out.releases.push({ id: object.objectId, vaultId });
327
+ }
328
+ } catch {
329
+ // A malformed object under the configured vault namespace is not usable
330
+ // authority and should not hide otherwise valid catalog entries.
331
+ }
332
+ }
333
+ if (!res.hasNextPage) break;
334
+ cursor = res.cursor;
335
+ if (!cursor) break;
336
+ }
337
+ return out;
338
+ }
339
+
340
+ /** Read the ReleaseAdminCap wrapped by each shared release vault. */
341
+ async function resolveVaultedReleaseCaps(
342
+ client: MisoClient,
343
+ caps: readonly VaultedReleaseCap[],
344
+ ): Promise<{ id: string; releaseId: string }[]> {
345
+ if (caps.length === 0) return [];
346
+ const releaseCapType = `${client.config.deployment.miso}::release::ReleaseAdminCap`;
347
+ const vaultType = normalizeStructTag(
348
+ `${client.config.protocol.vault}::vault::Vault<${releaseCapType}>`,
349
+ );
350
+ const { objects } = await client.protocol.core.getObjects({
351
+ objectIds: caps.map((cap) => cap.vaultId),
352
+ include: { content: true },
353
+ });
354
+ const releasesByVault = new Map<string, string>();
355
+ for (const object of objects) {
356
+ if (object instanceof Error || !object.content) continue;
357
+ try {
358
+ if (normalizeStructTag(object.type) !== vaultType) continue;
359
+ const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(
360
+ object.content,
361
+ );
362
+ const releaseId = vault.cap.value?.release_id;
363
+ if (releaseId) releasesByVault.set(object.objectId, releaseId);
364
+ } catch {
365
+ // Batch catalog discovery is best-effort per authority, matching the
366
+ // existing direct-cap path's treatment of unreadable work objects.
367
+ }
368
+ }
369
+ return caps.flatMap((cap) => {
370
+ const releaseId = releasesByVault.get(cap.vaultId);
371
+ return releaseId ? [{ id: cap.id, releaseId }] : [];
372
+ });
373
+ }
374
+
195
375
  /**
196
376
  * Every work the wallet administers, keyed by its ADMIN CAP id (the studio
197
377
  * catalog's routing unit — caps are what control means here).
198
378
  *
199
- * Three transports, one answer: cap discovery is gRPC; one aliased GraphQL
379
+ * Three transports, one answer: direct or vaulted cap discovery is gRPC; one aliased GraphQL
200
380
  * request maps every share type to its work address (gRPC cannot ask "which
201
381
  * object has type X"); one gRPC batch loads all the work contents. Releases skip
202
382
  * the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
@@ -205,11 +385,16 @@ async function ownedGenericCaps(client: MisoClient, owner: string, capType: stri
205
385
  export async function getOwnedWorks(client: MisoClient, owner: string): Promise<OwnedWork[]> {
206
386
  const miso = client.config.deployment.miso;
207
387
 
208
- const [compCaps, recCaps, relCaps] = await Promise.all([
388
+ const [directCompCaps, directRecCaps, directRelCaps, vaulted] = await Promise.all([
209
389
  ownedGenericCaps(client, owner, `${miso}::composition::CompositionAdminCap`),
210
390
  ownedGenericCaps(client, owner, `${miso}::recording::RecordingAdminCap`),
211
391
  getOwnedReleaseAdminCaps(client.protocol, owner, miso),
392
+ ownedVaultedWorkCaps(client, owner),
212
393
  ]);
394
+ const vaultedRelCaps = await resolveVaultedReleaseCaps(client, vaulted.releases);
395
+ const compCaps = [...directCompCaps, ...vaulted.compositions];
396
+ const recCaps = [...directRecCaps, ...vaulted.recordings];
397
+ const relCaps = [...directRelCaps, ...vaultedRelCaps];
213
398
 
214
399
  const addresses = await getWorkAddressesByShareTypes(
215
400
  client.graphql,
@@ -255,23 +440,29 @@ export async function getOwnedWorks(client: MisoClient, owner: string): Promise<
255
440
  return [...comps, ...recs, ...rels];
256
441
  }
257
442
 
258
- /** Classify a cap by its on-chain type, then resolve the work behind it. */
443
+ /** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
259
444
  export async function getWorkByCap(client: MisoClient, capId: string): Promise<WorkDetail | null> {
260
445
  const miso = client.config.deployment.miso;
261
446
 
262
447
  let type: string;
263
448
  let json: Record<string, unknown> | null;
449
+ let content: Uint8Array | undefined;
264
450
  try {
265
- const { object } = await client.protocol.core.getObject({ objectId: capId, include: { json: true } });
451
+ const { object } = await client.protocol.core.getObject({
452
+ objectId: capId,
453
+ include: { json: true, content: true },
454
+ });
266
455
  type = object.type;
267
456
  json = (object.json ?? null) as Record<string, unknown> | null;
457
+ content = object.content;
268
458
  } catch (e) {
269
459
  if (isNotFound(e)) return null;
270
460
  throw e;
271
461
  }
272
462
 
273
- if (type.startsWith(`${miso}::composition::CompositionAdminCap<`)) {
274
- const shareType = type.slice(type.indexOf("<") + 1, -1);
463
+ const direct = classifyWorkAdminCapType(type, miso);
464
+ if (direct?.kind === "composition") {
465
+ const { shareType } = direct;
275
466
  const c = await getCompositionByShareType(client.protocol, client.graphql, shareType, miso);
276
467
  return {
277
468
  capId,
@@ -284,8 +475,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
284
475
  };
285
476
  }
286
477
 
287
- if (type.startsWith(`${miso}::recording::RecordingAdminCap<`)) {
288
- const shareType = type.slice(type.indexOf("<") + 1, -1);
478
+ if (direct?.kind === "recording") {
479
+ const { shareType } = direct;
289
480
  const r = await getRecordingByShareType(client.protocol, client.graphql, shareType, miso);
290
481
  const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
291
482
  return {
@@ -298,7 +489,7 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
298
489
  };
299
490
  }
300
491
 
301
- if (type.startsWith(`${miso}::release::ReleaseAdminCap`)) {
492
+ if (direct?.kind === "release") {
302
493
  const releaseId = typeof json?.release_id === "string" ? json.release_id : null;
303
494
  if (!releaseId) throw new Error(`Release cap ${capId} carries no release id`);
304
495
  const r = await getReleaseById(client.protocol, releaseId);
@@ -313,8 +504,66 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
313
504
  };
314
505
  }
315
506
 
316
- // A real object, but not a work admin cap — "no such work", not an error.
317
- return null;
507
+ const vaulted = classifyVaultedWorkAdminCapType(
508
+ type,
509
+ client.config.protocol.vault,
510
+ miso,
511
+ );
512
+ if (!vaulted || !content) {
513
+ // A real object, but not a supported work authority — "no such work",
514
+ // not a transport failure. PressingAdminCap intentionally lands here.
515
+ return null;
516
+ }
517
+ const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(content);
518
+
519
+ if (vaulted.kind === "composition") {
520
+ const c = await getCompositionByShareType(
521
+ client.protocol,
522
+ client.graphql,
523
+ vaulted.shareType,
524
+ miso,
525
+ );
526
+ return {
527
+ capId,
528
+ kind: "composition",
529
+ workId: c.id,
530
+ title: c.title,
531
+ state: c.state.type,
532
+ royaltyRateBps: int(c.royaltyRate.value),
533
+ shareType: vaulted.shareType,
534
+ };
535
+ }
536
+
537
+ if (vaulted.kind === "recording") {
538
+ const r = await getRecordingByShareType(
539
+ client.protocol,
540
+ client.graphql,
541
+ vaulted.shareType,
542
+ miso,
543
+ );
544
+ const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
545
+ return {
546
+ capId,
547
+ kind: "recording",
548
+ workId: r.id,
549
+ title: titles[r.id] ?? "Untitled",
550
+ state: r.state.type,
551
+ shareType: vaulted.shareType,
552
+ };
553
+ }
554
+
555
+ const [releaseCap] = await resolveVaultedReleaseCaps(client, [{ id: capId, vaultId }]);
556
+ if (!releaseCap) throw new Error(`Release vault ${vaultId} carries no release admin cap`);
557
+ const r = await getReleaseById(client.protocol, releaseCap.releaseId);
558
+ return {
559
+ capId,
560
+ kind: "release",
561
+ workId: r.id,
562
+ title: r.title,
563
+ state: r.state.type,
564
+ discCount: r.tracks.length > 0 ? 1 : 0,
565
+ trackCount: r.tracks.length,
566
+ };
318
567
  }
319
568
 
320
569
  // ── Balance ──────────────────────────────────────────────────────────────────