@misofm/sdk 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -56
- package/dist/client.d.ts +126 -18
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +210 -44
- package/dist/client.js.map +1 -1
- package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +205 -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 +184 -0
- package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -0
- package/dist/contracts/composition_routed_stake/witness.d.ts +7 -0
- package/dist/contracts/composition_routed_stake/witness.d.ts.map +1 -0
- package/dist/contracts/composition_routed_stake/witness.js +9 -0
- package/dist/contracts/composition_routed_stake/witness.js.map +1 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +89 -28
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -1
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +84 -23
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -1
- package/dist/contracts/composition_royalty_pool/witness.d.ts +6 -0
- package/dist/contracts/composition_royalty_pool/witness.d.ts.map +1 -0
- package/dist/contracts/composition_royalty_pool/witness.js +8 -0
- package/dist/contracts/composition_royalty_pool/witness.js.map +1 -0
- package/dist/contracts/genre/genre.d.ts +96 -0
- package/dist/contracts/genre/genre.d.ts.map +1 -0
- package/dist/contracts/genre/genre.js +107 -0
- package/dist/contracts/genre/genre.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_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/walrus_data.d.ts +52 -0
- package/dist/contracts/recording_master_reference/deps/ori/walrus_data.d.ts.map +1 -0
- package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js +37 -0
- package/dist/contracts/recording_master_reference/deps/ori/walrus_data.js.map +1 -0
- package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +131 -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 +121 -0
- package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -0
- package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts +52 -0
- package/dist/contracts/recording_preview/deps/ori/walrus_data.d.ts.map +1 -0
- package/dist/contracts/recording_preview/deps/ori/walrus_data.js +37 -0
- package/dist/contracts/recording_preview/deps/ori/walrus_data.js.map +1 -0
- package/dist/contracts/recording_preview/recording_preview.d.ts +104 -0
- package/dist/contracts/recording_preview/recording_preview.d.ts.map +1 -0
- package/dist/contracts/recording_preview/recording_preview.js +94 -0
- package/dist/contracts/recording_preview/recording_preview.js.map +1 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +90 -28
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -1
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +84 -23
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -1
- package/dist/contracts/recording_royalty_pool/witness.d.ts +6 -0
- package/dist/contracts/recording_royalty_pool/witness.d.ts.map +1 -0
- package/dist/contracts/recording_royalty_pool/witness.js +8 -0
- package/dist/contracts/recording_royalty_pool/witness.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 +644 -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 +556 -0
- package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -0
- package/dist/contracts/release_genre/deps/per_track/per_track.d.ts +33 -0
- package/dist/contracts/release_genre/deps/per_track/per_track.d.ts.map +1 -0
- package/dist/contracts/release_genre/deps/per_track/per_track.js +32 -0
- package/dist/contracts/release_genre/deps/per_track/per_track.js.map +1 -0
- package/dist/contracts/release_genre/release_genre.d.ts +193 -0
- package/dist/contracts/release_genre/release_genre.d.ts.map +1 -0
- package/dist/contracts/release_genre/release_genre.js +207 -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 +106 -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 +113 -0
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -0
- package/dist/contracts/release_revenue_distributor/witness.d.ts +7 -0
- package/dist/contracts/release_revenue_distributor/witness.d.ts.map +1 -0
- package/dist/contracts/release_revenue_distributor/witness.js +9 -0
- package/dist/contracts/release_revenue_distributor/witness.js.map +1 -0
- package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.d.ts +52 -0
- package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.d.ts.map +1 -0
- package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.js +37 -0
- package/dist/contracts/release_snapshot_bundle/deps/ori/walrus_data.js.map +1 -0
- package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.d.ts +91 -0
- package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.d.ts.map +1 -0
- package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.js +91 -0
- package/dist/contracts/release_snapshot_bundle/release_snapshot_bundle.js.map +1 -0
- package/dist/contracts/routed_stake/deps/royalty_pool/stake.d.ts +54 -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 +37 -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 +356 -0
- package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -0
- package/dist/contracts/routed_stake/routed_stake.js +311 -0
- package/dist/contracts/routed_stake/routed_stake.js.map +1 -0
- package/dist/contracts/royalty_pool/pool.d.ts +27 -17
- package/dist/contracts/royalty_pool/pool.d.ts.map +1 -1
- package/dist/contracts/royalty_pool/pool.js +26 -17
- package/dist/contracts/royalty_pool/pool.js.map +1 -1
- 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 +276 -0
- package/dist/contracts/vault/vault.d.ts.map +1 -0
- package/dist/contracts/vault/vault.js +274 -0
- package/dist/contracts/vault/vault.js.map +1 -0
- package/dist/contracts.d.ts +14 -2
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +16 -7
- package/dist/contracts.js.map +1 -1
- package/dist/cover.d.ts +17 -3
- package/dist/cover.d.ts.map +1 -1
- package/dist/cover.js +43 -20
- package/dist/cover.js.map +1 -1
- package/dist/credits.d.ts +31 -12
- package/dist/credits.d.ts.map +1 -1
- package/dist/credits.js +41 -25
- package/dist/credits.js.map +1 -1
- package/dist/deployments.d.ts +31 -57
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +5 -53
- package/dist/deployments.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/pressing.d.ts +8 -7
- package/dist/pressing.d.ts.map +1 -1
- package/dist/pressing.js +91 -32
- package/dist/pressing.js.map +1 -1
- package/dist/read/artist.js +3 -3
- package/dist/read/artist.js.map +1 -1
- package/dist/read/catalog.d.ts +14 -9
- package/dist/read/catalog.d.ts.map +1 -1
- package/dist/read/catalog.js +72 -37
- package/dist/read/catalog.js.map +1 -1
- package/dist/read/client.d.ts +4 -2
- package/dist/read/client.d.ts.map +1 -1
- package/dist/read/client.js +15 -4
- package/dist/read/client.js.map +1 -1
- package/dist/read/config.d.ts +14 -11
- package/dist/read/config.d.ts.map +1 -1
- package/dist/read/config.js +10 -37
- package/dist/read/config.js.map +1 -1
- package/dist/read/index.d.ts +2 -2
- package/dist/read/index.d.ts.map +1 -1
- package/dist/read/index.js +1 -1
- package/dist/read/index.js.map +1 -1
- package/dist/read/receipts.d.ts +24 -7
- package/dist/read/receipts.d.ts.map +1 -1
- package/dist/read/receipts.js +78 -25
- package/dist/read/receipts.js.map +1 -1
- package/dist/read/types.d.ts +45 -25
- package/dist/read/types.d.ts.map +1 -1
- package/dist/read/types.js +2 -2
- package/dist/read/types.js.map +1 -1
- package/dist/read/works.d.ts.map +1 -1
- package/dist/read/works.js +6 -1
- package/dist/read/works.js.map +1 -1
- package/dist/recording-extensions.d.ts +37 -0
- package/dist/recording-extensions.d.ts.map +1 -0
- package/dist/recording-extensions.js +61 -0
- package/dist/recording-extensions.js.map +1 -0
- package/dist/release-extensions.d.ts +92 -0
- package/dist/release-extensions.d.ts.map +1 -0
- package/dist/release-extensions.js +175 -0
- package/dist/release-extensions.js.map +1 -0
- package/dist/release-graph.d.ts +17 -32
- package/dist/release-graph.d.ts.map +1 -1
- package/dist/release-graph.js +57 -57
- package/dist/release-graph.js.map +1 -1
- package/dist/transactions.d.ts +43 -26
- package/dist/transactions.d.ts.map +1 -1
- package/dist/transactions.js +50 -31
- package/dist/transactions.js.map +1 -1
- package/dist/vault.d.ts +268 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +389 -0
- package/dist/vault.js.map +1 -0
- package/package.json +21 -11
- package/src/client.ts +428 -61
- package/src/contracts/composition_routed_stake/composition_routed_stake.ts +346 -0
- package/src/contracts/composition_routed_stake/witness.ts +11 -0
- package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +151 -35
- package/src/contracts/composition_royalty_pool/witness.ts +7 -0
- package/src/contracts/genre/genre.ts +151 -0
- package/src/contracts/recording_advisory/recording_advisory.ts +315 -0
- package/src/contracts/recording_language/deps/language_code/language_code.ts +7 -0
- package/src/contracts/recording_language/recording_language.ts +237 -0
- package/src/contracts/recording_master_reference/deps/ori/walrus_data.ts +36 -0
- package/src/contracts/recording_master_reference/recording_master_reference.ts +181 -0
- package/src/contracts/recording_preview/deps/ori/walrus_data.ts +36 -0
- package/src/contracts/recording_preview/recording_preview.ts +154 -0
- package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +152 -35
- package/src/contracts/recording_royalty_pool/witness.ts +7 -0
- package/src/contracts/release_description/release_description.ts +167 -0
- package/src/contracts/release_dsp_link/release_dsp_link.ts +813 -0
- package/src/contracts/release_genre/deps/per_track/per_track.ts +36 -0
- package/src/contracts/release_genre/release_genre.ts +314 -0
- package/src/contracts/release_kind/release_kind.ts +153 -0
- package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +178 -0
- package/src/contracts/release_revenue_distributor/witness.ts +11 -0
- package/src/contracts/release_snapshot_bundle/deps/ori/walrus_data.ts +36 -0
- package/src/contracts/release_snapshot_bundle/release_snapshot_bundle.ts +124 -0
- package/src/contracts/routed_stake/deps/royalty_pool/stake.ts +39 -0
- package/src/contracts/routed_stake/deps/std/type_name.ts +22 -0
- package/src/contracts/routed_stake/deps/sui/balance.ts +17 -0
- package/src/contracts/routed_stake/deps/sui/vec_map.ts +33 -0
- package/src/contracts/routed_stake/routed_stake.ts +508 -0
- package/src/contracts/royalty_pool/pool.ts +34 -24
- package/src/contracts/vault/deps/sui/bag.ts +39 -0
- package/src/contracts/vault/deps/sui/borrow.ts +25 -0
- package/src/contracts/vault/vault.ts +454 -0
- package/src/contracts.ts +17 -9
- package/src/cover.ts +62 -37
- package/src/credits.ts +64 -51
- package/src/deployments.ts +36 -97
- package/src/index.ts +11 -5
- package/src/pressing.ts +135 -39
- package/src/read/artist.ts +3 -3
- package/src/read/catalog.ts +100 -44
- package/src/read/client.ts +20 -4
- package/src/read/config.ts +23 -49
- package/src/read/index.ts +3 -1
- package/src/read/receipts.ts +103 -26
- package/src/read/types.ts +46 -27
- package/src/read/works.ts +6 -1
- package/src/recording-extensions.ts +102 -0
- package/src/release-extensions.ts +286 -0
- package/src/release-graph.ts +70 -96
- package/src/transactions.ts +81 -59
- package/src/vault.ts +777 -0
- package/dist/contracts/miso_drop/drop.d.ts +0 -550
- package/dist/contracts/miso_drop/drop.d.ts.map +0 -1
- package/dist/contracts/miso_drop/drop.js +0 -523
- package/dist/contracts/miso_drop/drop.js.map +0 -1
- package/dist/contracts/release_registry/release_registry.d.ts +0 -114
- package/dist/contracts/release_registry/release_registry.d.ts.map +0 -1
- package/dist/contracts/release_registry/release_registry.js +0 -119
- package/dist/contracts/release_registry/release_registry.js.map +0 -1
- package/dist/drop.d.ts +0 -127
- package/dist/drop.d.ts.map +0 -1
- package/dist/drop.js +0 -202
- package/dist/drop.js.map +0 -1
- package/dist/extensions/royalty-pool.d.ts +0 -32
- package/dist/extensions/royalty-pool.d.ts.map +0 -1
- package/dist/extensions/royalty-pool.js +0 -33
- package/dist/extensions/royalty-pool.js.map +0 -1
- package/src/contracts/miso_drop/drop.ts +0 -798
- package/src/contracts/release_registry/release_registry.ts +0 -160
- package/src/drop.ts +0 -376
- package/src/extensions/royalty-pool.ts +0 -90
package/src/transactions.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// minato, publishing (sharing) the work, and transferring its admin cap is
|
|
17
17
|
// an opinion about economics;
|
|
18
18
|
// - minting a release is a platform primitive: core's `release::new` takes an
|
|
19
|
-
// unconstructible PTB `&mut UID`, so `
|
|
19
|
+
// unconstructible PTB `&mut UID`, so core `release::new(registry, …)` is the
|
|
20
20
|
// canonical client path. Choosing a track-assembly strategy, publishing
|
|
21
21
|
// (sharing) it, and picking a recipient for its `ReleaseAdminCap` is the
|
|
22
22
|
// opinion, so `finalizeRelease` / `publishRelease` live here.
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
type ShareCurrencyBinding,
|
|
43
43
|
type TxThunk,
|
|
44
44
|
} from "@misonetwork/sdk";
|
|
45
|
-
import
|
|
45
|
+
import { asU64, directAdminCap, disposeNewAdminCap, invokeWithAdminCap, type AdminCapAuthority, type AdminCapCustody, type U64Input } from "./vault.ts";
|
|
46
46
|
|
|
47
47
|
const { track, release } = contracts;
|
|
48
48
|
|
|
@@ -55,13 +55,45 @@ interface ReleaseParts {
|
|
|
55
55
|
// the same nominal shape rather than a structurally-identical twin.
|
|
56
56
|
export type { TxThunk };
|
|
57
57
|
|
|
58
|
+
/** New custody is explicit; the legacy address shape remains mutually exclusive. */
|
|
59
|
+
export type AdminCustodyInput =
|
|
60
|
+
| { readonly adminCustody: AdminCapCustody; readonly adminAddress?: never }
|
|
61
|
+
| { readonly adminCustody?: never; readonly adminAddress: string };
|
|
62
|
+
export type RecordingAuthorityInput =
|
|
63
|
+
| { readonly recordingAuthority: AdminCapAuthority; readonly recordingAdminCapId?: never }
|
|
64
|
+
| { readonly recordingAuthority?: never; readonly recordingAdminCapId: string };
|
|
65
|
+
|
|
66
|
+
export function custodyOf(input: AdminCustodyInput): AdminCapCustody {
|
|
67
|
+
if (input.adminCustody !== undefined) return input.adminCustody;
|
|
68
|
+
if (input.adminAddress !== undefined) return { kind: "direct", owner: input.adminAddress };
|
|
69
|
+
throw new Error("admin custody is required");
|
|
70
|
+
}
|
|
71
|
+
export function recordingAuthorityOf(input: RecordingAuthorityInput): AdminCapAuthority {
|
|
72
|
+
if (input.recordingAuthority !== undefined) return input.recordingAuthority;
|
|
73
|
+
if (input.recordingAdminCapId !== undefined) return directAdminCap(input.recordingAdminCapId);
|
|
74
|
+
throw new Error("recording authority is required");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Reject a malformed multi-result command before it becomes a PTB argument. */
|
|
78
|
+
export function requiredCommandResult<T>(
|
|
79
|
+
result: { readonly [index: number]: T | undefined },
|
|
80
|
+
index: number,
|
|
81
|
+
command: string,
|
|
82
|
+
): T {
|
|
83
|
+
const value = result[index];
|
|
84
|
+
if (value === undefined) {
|
|
85
|
+
throw new Error(`${command} did not return result ${index}`);
|
|
86
|
+
}
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
|
|
58
90
|
// ============================================================================
|
|
59
91
|
// Share dispersal (minato)
|
|
60
92
|
// ============================================================================
|
|
61
93
|
|
|
62
94
|
export interface ShareRecipient {
|
|
63
95
|
address: string;
|
|
64
|
-
value:
|
|
96
|
+
value: U64Input;
|
|
65
97
|
}
|
|
66
98
|
|
|
67
99
|
/**
|
|
@@ -81,7 +113,7 @@ export function disperseShares(
|
|
|
81
113
|
typeArguments: [shareType],
|
|
82
114
|
arguments: [
|
|
83
115
|
balance,
|
|
84
|
-
tx.makeMoveVec({ type: "u64", elements: recipients.map((r) => tx.pure.u64(r.value))
|
|
116
|
+
tx.makeMoveVec({ type: "u64", elements: recipients.map((r) => tx.pure.u64(asU64("share recipient value", r.value)))}),
|
|
85
117
|
tx.makeMoveVec({ type: "address", elements: recipients.map((r) => tx.pure.address(r.address)) }),
|
|
86
118
|
],
|
|
87
119
|
});
|
|
@@ -130,14 +162,14 @@ export function initializeShareCurrency(params: InitializeShareCurrencyParams):
|
|
|
130
162
|
// Composition
|
|
131
163
|
// ============================================================================
|
|
132
164
|
|
|
133
|
-
|
|
165
|
+
interface FinalizeCompositionParamsBase extends CompositionParts {
|
|
134
166
|
/** The composition's `share::Share` type. */
|
|
135
167
|
shareType: string;
|
|
136
168
|
shareRecipients: ShareRecipient[];
|
|
137
|
-
adminAddress: string;
|
|
138
169
|
misoPackageId: string;
|
|
139
170
|
minatoPackageId: string;
|
|
140
171
|
}
|
|
172
|
+
export type FinalizeCompositionParams = FinalizeCompositionParamsBase & AdminCustodyInput;
|
|
141
173
|
|
|
142
174
|
/**
|
|
143
175
|
* The opinionated finish for a composition: disperse its share supply to
|
|
@@ -148,18 +180,17 @@ export interface FinalizeCompositionParams extends CompositionParts {
|
|
|
148
180
|
export function finalizeComposition(tx: Transaction, params: FinalizeCompositionParams): void {
|
|
149
181
|
disperseShares(tx, params.minatoPackageId, params.shareType, params.balance, params.shareRecipients);
|
|
150
182
|
tx.add(contracts.composition.publish({ package: params.misoPackageId, typeArguments: [params.shareType], arguments: [params.composition, params.adminCap] }));
|
|
151
|
-
tx
|
|
183
|
+
disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
|
|
152
184
|
}
|
|
153
185
|
|
|
154
|
-
|
|
186
|
+
interface PublishCompositionParamsBase extends ShareCurrencyBinding {
|
|
155
187
|
title: string;
|
|
156
188
|
royaltyRateBps: number;
|
|
157
189
|
shareRecipients: ShareRecipient[];
|
|
158
|
-
/** Sole owner of the shares + CompositionAdminCap (the zkLogin address). */
|
|
159
|
-
adminAddress: string;
|
|
160
190
|
misoPackageId: string;
|
|
161
191
|
minatoPackageId: string;
|
|
162
192
|
}
|
|
193
|
+
export type PublishCompositionParams = PublishCompositionParamsBase & AdminCustodyInput;
|
|
163
194
|
|
|
164
195
|
/** Convenience: publish a composition end-to-end (createComposition → finalizeComposition). */
|
|
165
196
|
export function publishComposition(params: PublishCompositionParams): TxThunk {
|
|
@@ -176,7 +207,7 @@ export function publishComposition(params: PublishCompositionParams): TxThunk {
|
|
|
176
207
|
...parts,
|
|
177
208
|
shareType: params.shareType,
|
|
178
209
|
shareRecipients: params.shareRecipients,
|
|
179
|
-
|
|
210
|
+
adminCustody: custodyOf(params),
|
|
180
211
|
misoPackageId: params.misoPackageId,
|
|
181
212
|
minatoPackageId: params.minatoPackageId,
|
|
182
213
|
});
|
|
@@ -187,16 +218,16 @@ export function publishComposition(params: PublishCompositionParams): TxThunk {
|
|
|
187
218
|
// Recording
|
|
188
219
|
// ============================================================================
|
|
189
220
|
|
|
190
|
-
|
|
221
|
+
interface FinalizeRecordingParamsBase extends RecordingParts {
|
|
191
222
|
/** The recording's own `share::Share` type. */
|
|
192
223
|
recordingShareType: string;
|
|
193
224
|
/** Share type of the parent composition. */
|
|
194
225
|
compositionShareType: string;
|
|
195
226
|
shareRecipients: ShareRecipient[];
|
|
196
|
-
adminAddress: string;
|
|
197
227
|
misoPackageId: string;
|
|
198
228
|
minatoPackageId: string;
|
|
199
229
|
}
|
|
230
|
+
export type FinalizeRecordingParams = FinalizeRecordingParamsBase & AdminCustodyInput;
|
|
200
231
|
|
|
201
232
|
/**
|
|
202
233
|
* The opinionated finish for a recording: publish (share) it, disperse its
|
|
@@ -207,10 +238,10 @@ export function finalizeRecording(tx: Transaction, params: FinalizeRecordingPara
|
|
|
207
238
|
const typeArguments: [string, string] = [params.recordingShareType, params.compositionShareType];
|
|
208
239
|
tx.add(contracts.recording.publish({ package: params.misoPackageId, typeArguments, arguments: [params.recording, params.adminCap] }));
|
|
209
240
|
disperseShares(tx, params.minatoPackageId, params.recordingShareType, params.balance, params.shareRecipients);
|
|
210
|
-
tx
|
|
241
|
+
disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
|
|
211
242
|
}
|
|
212
243
|
|
|
213
|
-
|
|
244
|
+
interface PublishRecordingParamsBase extends ShareCurrencyBinding {
|
|
214
245
|
/**
|
|
215
246
|
* Parent composition, referenced as an on-chain object. Read-only at
|
|
216
247
|
* `recording::new` (only its royalty rate and id are read).
|
|
@@ -219,12 +250,10 @@ export interface PublishRecordingParams extends ShareCurrencyBinding {
|
|
|
219
250
|
/** Share type of the parent composition (the recording's `CompositionShare` phantom). */
|
|
220
251
|
compositionShareType: string;
|
|
221
252
|
shareRecipients: ShareRecipient[];
|
|
222
|
-
adminAddress: string;
|
|
223
|
-
/** Slippage guard for `recording::new` — pass the composition rate you observed (default: protocol max). */
|
|
224
|
-
maxRoyaltyRateBps?: number;
|
|
225
253
|
misoPackageId: string;
|
|
226
254
|
minatoPackageId: string;
|
|
227
255
|
}
|
|
256
|
+
export type PublishRecordingParams = PublishRecordingParamsBase & AdminCustodyInput;
|
|
228
257
|
|
|
229
258
|
/** Convenience: publish a recording against an already-on-chain composition. */
|
|
230
259
|
export function publishRecording(params: PublishRecordingParams): TxThunk {
|
|
@@ -235,7 +264,6 @@ export function publishRecording(params: PublishRecordingParams): TxThunk {
|
|
|
235
264
|
shareTreasuryCapId: params.shareTreasuryCapId,
|
|
236
265
|
compositionShareType: params.compositionShareType,
|
|
237
266
|
composition: tx.object(params.compositionId),
|
|
238
|
-
maxRoyaltyRateBps: params.maxRoyaltyRateBps,
|
|
239
267
|
misoPackageId: params.misoPackageId,
|
|
240
268
|
} satisfies CreateRecordingParams);
|
|
241
269
|
finalizeRecording(tx, {
|
|
@@ -243,7 +271,7 @@ export function publishRecording(params: PublishRecordingParams): TxThunk {
|
|
|
243
271
|
recordingShareType: params.shareType,
|
|
244
272
|
compositionShareType: params.compositionShareType,
|
|
245
273
|
shareRecipients: params.shareRecipients,
|
|
246
|
-
|
|
274
|
+
adminCustody: custodyOf(params),
|
|
247
275
|
misoPackageId: params.misoPackageId,
|
|
248
276
|
minatoPackageId: params.minatoPackageId,
|
|
249
277
|
});
|
|
@@ -258,9 +286,9 @@ export interface PublishCompositionAndRecordingParams {
|
|
|
258
286
|
title: string;
|
|
259
287
|
royaltyRateBps: number;
|
|
260
288
|
/** Share-currency binding for the composition. */
|
|
261
|
-
composition: ShareCurrencyBinding & { shareRecipients: ShareRecipient[]
|
|
289
|
+
composition: ShareCurrencyBinding & { shareRecipients: ShareRecipient[] } & AdminCustodyInput;
|
|
262
290
|
/** Share-currency binding for the recording. */
|
|
263
|
-
recording: ShareCurrencyBinding & { shareRecipients: ShareRecipient[]
|
|
291
|
+
recording: ShareCurrencyBinding & { shareRecipients: ShareRecipient[] } & AdminCustodyInput;
|
|
264
292
|
misoPackageId: string;
|
|
265
293
|
minatoPackageId: string;
|
|
266
294
|
}
|
|
@@ -287,15 +315,14 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
|
|
|
287
315
|
} satisfies CreateCompositionParams);
|
|
288
316
|
|
|
289
317
|
// Borrow the still-unshared composition into recording::new before publishing it.
|
|
290
|
-
// The composition
|
|
291
|
-
//
|
|
318
|
+
// The composition's royalty rate is immutable once set at `composition::new`,
|
|
319
|
+
// so `recording::new` reads exactly the rate this PTB just created it with.
|
|
292
320
|
const rec = createRecording(tx, {
|
|
293
321
|
shareType: params.recording.shareType,
|
|
294
322
|
shareCurrencyId: params.recording.shareCurrencyId,
|
|
295
323
|
shareTreasuryCapId: params.recording.shareTreasuryCapId,
|
|
296
324
|
compositionShareType: params.composition.shareType,
|
|
297
325
|
composition: comp.composition,
|
|
298
|
-
maxRoyaltyRateBps: params.royaltyRateBps,
|
|
299
326
|
misoPackageId: params.misoPackageId,
|
|
300
327
|
} satisfies CreateRecordingParams);
|
|
301
328
|
|
|
@@ -303,7 +330,7 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
|
|
|
303
330
|
...comp,
|
|
304
331
|
shareType: params.composition.shareType,
|
|
305
332
|
shareRecipients: params.composition.shareRecipients,
|
|
306
|
-
|
|
333
|
+
adminCustody: custodyOf(params.composition),
|
|
307
334
|
misoPackageId: params.misoPackageId,
|
|
308
335
|
minatoPackageId: params.minatoPackageId,
|
|
309
336
|
});
|
|
@@ -313,7 +340,7 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
|
|
|
313
340
|
recordingShareType: params.recording.shareType,
|
|
314
341
|
compositionShareType: params.composition.shareType,
|
|
315
342
|
shareRecipients: params.recording.shareRecipients,
|
|
316
|
-
|
|
343
|
+
adminCustody: custodyOf(params.recording),
|
|
317
344
|
misoPackageId: params.misoPackageId,
|
|
318
345
|
minatoPackageId: params.minatoPackageId,
|
|
319
346
|
});
|
|
@@ -324,17 +351,17 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
|
|
|
324
351
|
// Release
|
|
325
352
|
// ============================================================================
|
|
326
353
|
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
adminAddress: string;
|
|
354
|
+
interface FinalizeReleaseParamsBase extends ReleaseParts {
|
|
355
|
+
/** Explicit direct delivery or Vault custody for the ReleaseAdminCap. */
|
|
330
356
|
misoPackageId: string;
|
|
331
357
|
}
|
|
358
|
+
export type FinalizeReleaseParams = FinalizeReleaseParamsBase & AdminCustodyInput;
|
|
332
359
|
|
|
333
360
|
/**
|
|
334
361
|
* The opinionated finish for a release: publish (share) it and transfer its
|
|
335
362
|
* admin cap to `adminAddress`.
|
|
336
363
|
*
|
|
337
|
-
* MUST run in the same PTB as
|
|
364
|
+
* MUST run in the same PTB as `release::new(registry, …)` that produced
|
|
338
365
|
* these parts —
|
|
339
366
|
* `Release` is `key`-only with no `drop`, so an unpublished release cannot
|
|
340
367
|
* outlive its transaction. Splitting create from finalize is what lets a caller
|
|
@@ -343,31 +370,31 @@ export interface FinalizeReleaseParams extends ReleaseParts {
|
|
|
343
370
|
*/
|
|
344
371
|
export function finalizeRelease(tx: Transaction, params: FinalizeReleaseParams): void {
|
|
345
372
|
tx.add(release.publish({ package: params.misoPackageId, arguments: [params.release, params.adminCap] }));
|
|
346
|
-
tx
|
|
373
|
+
disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
|
|
347
374
|
}
|
|
348
375
|
|
|
349
|
-
|
|
376
|
+
interface TrackInputBase {
|
|
350
377
|
recordingId: string;
|
|
351
|
-
|
|
378
|
+
/** Explicit legacy direct cap or Vault custody authority for this recording. */
|
|
352
379
|
/** Share type of the recording (the track `RecordingShare` phantom). */
|
|
353
380
|
recordingShareType: string;
|
|
354
381
|
/** Share type of the parent composition (the track `CompositionShare` phantom). */
|
|
355
382
|
compositionShareType: string;
|
|
356
383
|
splitBps: number;
|
|
357
384
|
}
|
|
385
|
+
export type TrackInput = TrackInputBase & RecordingAuthorityInput;
|
|
358
386
|
|
|
359
|
-
|
|
387
|
+
interface PublishReleaseParamsBase {
|
|
360
388
|
title: string;
|
|
361
389
|
/** The ordered tracklist. Display grouping (discs/sides) is extension data. */
|
|
362
390
|
tracks: TrackInput[];
|
|
363
|
-
/** `
|
|
364
|
-
releaseRegistryPackageId: string;
|
|
391
|
+
/** Shared core `miso::release::ReleaseRegistry` object. */
|
|
365
392
|
releaseRegistryId: string;
|
|
366
393
|
releaseId: string;
|
|
367
394
|
releaseNonce: string;
|
|
368
395
|
misoPackageId: string;
|
|
369
|
-
adminAddress: string;
|
|
370
396
|
}
|
|
397
|
+
export type PublishReleaseParams = PublishReleaseParamsBase & AdminCustodyInput;
|
|
371
398
|
|
|
372
399
|
function buildTrackVec(
|
|
373
400
|
tx: Transaction,
|
|
@@ -383,29 +410,24 @@ function buildTrackVec(
|
|
|
383
410
|
*/
|
|
384
411
|
export function publishRelease(params: PublishReleaseParams): TxThunk {
|
|
385
412
|
return (tx) => {
|
|
386
|
-
const { misoPackageId
|
|
413
|
+
const { misoPackageId } = params;
|
|
387
414
|
const trackArgs = params.tracks.map((t) => {
|
|
388
415
|
const typeArguments: [string, string] = [t.recordingShareType, t.compositionShareType];
|
|
389
|
-
return tx
|
|
390
|
-
track
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
416
|
+
return invokeWithAdminCap(tx, recordingAuthorityOf(t), {
|
|
417
|
+
target: `${misoPackageId}::track::new`,
|
|
418
|
+
typeArguments,
|
|
419
|
+
arguments: [tx.object(t.recordingId), tx.pure.id(params.releaseId), tx.pure.u16(t.splitBps)],
|
|
420
|
+
adminCapIndex: 0,
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
const created = tx.moveCall({
|
|
424
|
+
target: `${misoPackageId}::release::new`,
|
|
425
|
+
arguments: [tx.object(params.releaseRegistryId), tx.pure.string(params.title), buildTrackVec(tx, misoPackageId, trackArgs), tx.pure.u256(BigInt(params.releaseNonce))],
|
|
396
426
|
});
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
tx.pure.string(params.title),
|
|
403
|
-
buildTrackVec(tx, misoPackageId, trackArgs),
|
|
404
|
-
tx.pure.u256(BigInt(params.releaseNonce)),
|
|
405
|
-
],
|
|
406
|
-
}),
|
|
407
|
-
);
|
|
408
|
-
const parts: ReleaseParts = { release: created[0]!, adminCap: created[1]! };
|
|
409
|
-
finalizeRelease(tx, { ...parts, adminAddress: params.adminAddress, misoPackageId });
|
|
427
|
+
const parts: ReleaseParts = {
|
|
428
|
+
release: requiredCommandResult(created, 0, "release::new"),
|
|
429
|
+
adminCap: requiredCommandResult(created, 1, "release::new"),
|
|
430
|
+
};
|
|
431
|
+
finalizeRelease(tx, { ...parts, ...params, misoPackageId });
|
|
410
432
|
};
|
|
411
433
|
}
|