@misofm/sdk 0.9.0 → 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 +71 -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 +43 -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/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 -26
- package/dist/release-graph.d.ts.map +1 -1
- package/dist/release-graph.js +55 -49
- package/dist/release-graph.js.map +1 -1
- package/dist/transactions.d.ts +43 -24
- package/dist/transactions.d.ts.map +1 -1
- package/dist/transactions.js +48 -27
- 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 +17 -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 +99 -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 +44 -27
- package/src/recording-extensions.ts +102 -0
- package/src/release-extensions.ts +286 -0
- package/src/release-graph.ts +68 -81
- package/src/transactions.ts +79 -53
- 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,10 +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
253
|
misoPackageId: string;
|
|
224
254
|
minatoPackageId: string;
|
|
225
255
|
}
|
|
256
|
+
export type PublishRecordingParams = PublishRecordingParamsBase & AdminCustodyInput;
|
|
226
257
|
|
|
227
258
|
/** Convenience: publish a recording against an already-on-chain composition. */
|
|
228
259
|
export function publishRecording(params: PublishRecordingParams): TxThunk {
|
|
@@ -240,7 +271,7 @@ export function publishRecording(params: PublishRecordingParams): TxThunk {
|
|
|
240
271
|
recordingShareType: params.shareType,
|
|
241
272
|
compositionShareType: params.compositionShareType,
|
|
242
273
|
shareRecipients: params.shareRecipients,
|
|
243
|
-
|
|
274
|
+
adminCustody: custodyOf(params),
|
|
244
275
|
misoPackageId: params.misoPackageId,
|
|
245
276
|
minatoPackageId: params.minatoPackageId,
|
|
246
277
|
});
|
|
@@ -255,9 +286,9 @@ export interface PublishCompositionAndRecordingParams {
|
|
|
255
286
|
title: string;
|
|
256
287
|
royaltyRateBps: number;
|
|
257
288
|
/** Share-currency binding for the composition. */
|
|
258
|
-
composition: ShareCurrencyBinding & { shareRecipients: ShareRecipient[]
|
|
289
|
+
composition: ShareCurrencyBinding & { shareRecipients: ShareRecipient[] } & AdminCustodyInput;
|
|
259
290
|
/** Share-currency binding for the recording. */
|
|
260
|
-
recording: ShareCurrencyBinding & { shareRecipients: ShareRecipient[]
|
|
291
|
+
recording: ShareCurrencyBinding & { shareRecipients: ShareRecipient[] } & AdminCustodyInput;
|
|
261
292
|
misoPackageId: string;
|
|
262
293
|
minatoPackageId: string;
|
|
263
294
|
}
|
|
@@ -299,7 +330,7 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
|
|
|
299
330
|
...comp,
|
|
300
331
|
shareType: params.composition.shareType,
|
|
301
332
|
shareRecipients: params.composition.shareRecipients,
|
|
302
|
-
|
|
333
|
+
adminCustody: custodyOf(params.composition),
|
|
303
334
|
misoPackageId: params.misoPackageId,
|
|
304
335
|
minatoPackageId: params.minatoPackageId,
|
|
305
336
|
});
|
|
@@ -309,7 +340,7 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
|
|
|
309
340
|
recordingShareType: params.recording.shareType,
|
|
310
341
|
compositionShareType: params.composition.shareType,
|
|
311
342
|
shareRecipients: params.recording.shareRecipients,
|
|
312
|
-
|
|
343
|
+
adminCustody: custodyOf(params.recording),
|
|
313
344
|
misoPackageId: params.misoPackageId,
|
|
314
345
|
minatoPackageId: params.minatoPackageId,
|
|
315
346
|
});
|
|
@@ -320,17 +351,17 @@ export function publishCompositionAndRecording(params: PublishCompositionAndReco
|
|
|
320
351
|
// Release
|
|
321
352
|
// ============================================================================
|
|
322
353
|
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
adminAddress: string;
|
|
354
|
+
interface FinalizeReleaseParamsBase extends ReleaseParts {
|
|
355
|
+
/** Explicit direct delivery or Vault custody for the ReleaseAdminCap. */
|
|
326
356
|
misoPackageId: string;
|
|
327
357
|
}
|
|
358
|
+
export type FinalizeReleaseParams = FinalizeReleaseParamsBase & AdminCustodyInput;
|
|
328
359
|
|
|
329
360
|
/**
|
|
330
361
|
* The opinionated finish for a release: publish (share) it and transfer its
|
|
331
362
|
* admin cap to `adminAddress`.
|
|
332
363
|
*
|
|
333
|
-
* MUST run in the same PTB as
|
|
364
|
+
* MUST run in the same PTB as `release::new(registry, …)` that produced
|
|
334
365
|
* these parts —
|
|
335
366
|
* `Release` is `key`-only with no `drop`, so an unpublished release cannot
|
|
336
367
|
* outlive its transaction. Splitting create from finalize is what lets a caller
|
|
@@ -339,31 +370,31 @@ export interface FinalizeReleaseParams extends ReleaseParts {
|
|
|
339
370
|
*/
|
|
340
371
|
export function finalizeRelease(tx: Transaction, params: FinalizeReleaseParams): void {
|
|
341
372
|
tx.add(release.publish({ package: params.misoPackageId, arguments: [params.release, params.adminCap] }));
|
|
342
|
-
tx
|
|
373
|
+
disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
|
|
343
374
|
}
|
|
344
375
|
|
|
345
|
-
|
|
376
|
+
interface TrackInputBase {
|
|
346
377
|
recordingId: string;
|
|
347
|
-
|
|
378
|
+
/** Explicit legacy direct cap or Vault custody authority for this recording. */
|
|
348
379
|
/** Share type of the recording (the track `RecordingShare` phantom). */
|
|
349
380
|
recordingShareType: string;
|
|
350
381
|
/** Share type of the parent composition (the track `CompositionShare` phantom). */
|
|
351
382
|
compositionShareType: string;
|
|
352
383
|
splitBps: number;
|
|
353
384
|
}
|
|
385
|
+
export type TrackInput = TrackInputBase & RecordingAuthorityInput;
|
|
354
386
|
|
|
355
|
-
|
|
387
|
+
interface PublishReleaseParamsBase {
|
|
356
388
|
title: string;
|
|
357
389
|
/** The ordered tracklist. Display grouping (discs/sides) is extension data. */
|
|
358
390
|
tracks: TrackInput[];
|
|
359
|
-
/** `
|
|
360
|
-
releaseRegistryPackageId: string;
|
|
391
|
+
/** Shared core `miso::release::ReleaseRegistry` object. */
|
|
361
392
|
releaseRegistryId: string;
|
|
362
393
|
releaseId: string;
|
|
363
394
|
releaseNonce: string;
|
|
364
395
|
misoPackageId: string;
|
|
365
|
-
adminAddress: string;
|
|
366
396
|
}
|
|
397
|
+
export type PublishReleaseParams = PublishReleaseParamsBase & AdminCustodyInput;
|
|
367
398
|
|
|
368
399
|
function buildTrackVec(
|
|
369
400
|
tx: Transaction,
|
|
@@ -379,29 +410,24 @@ function buildTrackVec(
|
|
|
379
410
|
*/
|
|
380
411
|
export function publishRelease(params: PublishReleaseParams): TxThunk {
|
|
381
412
|
return (tx) => {
|
|
382
|
-
const { misoPackageId
|
|
413
|
+
const { misoPackageId } = params;
|
|
383
414
|
const trackArgs = params.tracks.map((t) => {
|
|
384
415
|
const typeArguments: [string, string] = [t.recordingShareType, t.compositionShareType];
|
|
385
|
-
return tx
|
|
386
|
-
track
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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))],
|
|
392
426
|
});
|
|
393
|
-
const
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
tx.pure.string(params.title),
|
|
399
|
-
buildTrackVec(tx, misoPackageId, trackArgs),
|
|
400
|
-
tx.pure.u256(BigInt(params.releaseNonce)),
|
|
401
|
-
],
|
|
402
|
-
}),
|
|
403
|
-
);
|
|
404
|
-
const parts: ReleaseParts = { release: created[0]!, adminCap: created[1]! };
|
|
405
|
-
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 });
|
|
406
432
|
};
|
|
407
433
|
}
|