@misofm/platform 0.0.0 → 0.19.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/LICENSE +201 -0
- package/README.md +686 -3
- package/dist/auth.d.ts +73 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +193 -0
- package/dist/auth.js.map +1 -0
- package/dist/catalog.d.ts +48 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +92 -0
- package/dist/catalog.js.map +1 -0
- package/dist/client.d.ts +459 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +783 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts.d.ts +33 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +48 -0
- package/dist/contracts.js.map +1 -0
- package/dist/cover.d.ts +69 -0
- package/dist/cover.d.ts.map +1 -0
- package/dist/cover.js +132 -0
- package/dist/cover.js.map +1 -0
- package/dist/credits.d.ts +200 -0
- package/dist/credits.d.ts.map +1 -0
- package/dist/credits.js +465 -0
- package/dist/credits.js.map +1 -0
- package/dist/deployments.d.ts +221 -0
- package/dist/deployments.d.ts.map +1 -0
- package/dist/deployments.js +176 -0
- package/dist/deployments.js.map +1 -0
- package/dist/execute.d.ts +30 -0
- package/dist/execute.d.ts.map +1 -0
- package/dist/execute.js +31 -0
- package/dist/execute.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +13 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +41 -0
- package/dist/internal.js.map +1 -0
- package/dist/mix.d.ts +144 -0
- package/dist/mix.d.ts.map +1 -0
- package/dist/mix.js +656 -0
- package/dist/mix.js.map +1 -0
- package/dist/pressing.d.ts +137 -0
- package/dist/pressing.d.ts.map +1 -0
- package/dist/pressing.js +390 -0
- package/dist/pressing.js.map +1 -0
- package/dist/publication.d.ts +215 -0
- package/dist/publication.d.ts.map +1 -0
- package/dist/publication.js +864 -0
- package/dist/publication.js.map +1 -0
- package/dist/queries.d.ts +2 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +8 -0
- package/dist/queries.js.map +1 -0
- package/dist/read/artist.d.ts +18 -0
- package/dist/read/artist.d.ts.map +1 -0
- package/dist/read/artist.js +86 -0
- package/dist/read/artist.js.map +1 -0
- package/dist/read/catalog.d.ts +93 -0
- package/dist/read/catalog.d.ts.map +1 -0
- package/dist/read/catalog.js +441 -0
- package/dist/read/catalog.js.map +1 -0
- package/dist/read/client.d.ts +37 -0
- package/dist/read/client.d.ts.map +1 -0
- package/dist/read/client.js +50 -0
- package/dist/read/client.js.map +1 -0
- package/dist/read/config.d.ts +68 -0
- package/dist/read/config.d.ts.map +1 -0
- package/dist/read/config.js +63 -0
- package/dist/read/config.js.map +1 -0
- package/dist/read/genres.d.ts +7 -0
- package/dist/read/genres.d.ts.map +1 -0
- package/dist/read/genres.js +38 -0
- package/dist/read/genres.js.map +1 -0
- package/dist/read/index.d.ts +14 -0
- package/dist/read/index.d.ts.map +1 -0
- package/dist/read/index.js +23 -0
- package/dist/read/index.js.map +1 -0
- package/dist/read/internal/scalars.d.ts +23 -0
- package/dist/read/internal/scalars.d.ts.map +1 -0
- package/dist/read/internal/scalars.js +57 -0
- package/dist/read/internal/scalars.js.map +1 -0
- package/dist/read/internal/walrus.d.ts +6 -0
- package/dist/read/internal/walrus.d.ts.map +1 -0
- package/dist/read/internal/walrus.js +29 -0
- package/dist/read/internal/walrus.js.map +1 -0
- package/dist/read/receipts.d.ts +41 -0
- package/dist/read/receipts.d.ts.map +1 -0
- package/dist/read/receipts.js +398 -0
- package/dist/read/receipts.js.map +1 -0
- package/dist/read/types.d.ts +328 -0
- package/dist/read/types.d.ts.map +1 -0
- package/dist/read/types.js +21 -0
- package/dist/read/types.js.map +1 -0
- package/dist/read/wallet.d.ts +74 -0
- package/dist/read/wallet.d.ts.map +1 -0
- package/dist/read/wallet.js +578 -0
- package/dist/read/wallet.js.map +1 -0
- package/dist/read/works.d.ts +29 -0
- package/dist/read/works.d.ts.map +1 -0
- package/dist/read/works.js +191 -0
- package/dist/read/works.js.map +1 -0
- package/dist/recording-extensions.d.ts +58 -0
- package/dist/recording-extensions.d.ts.map +1 -0
- package/dist/recording-extensions.js +148 -0
- package/dist/recording-extensions.js.map +1 -0
- package/dist/release-extensions.d.ts +93 -0
- package/dist/release-extensions.d.ts.map +1 -0
- package/dist/release-extensions.js +190 -0
- package/dist/release-extensions.js.map +1 -0
- package/dist/release-graph.d.ts +65 -0
- package/dist/release-graph.d.ts.map +1 -0
- package/dist/release-graph.js +136 -0
- package/dist/release-graph.js.map +1 -0
- package/dist/share-template.d.ts +3 -0
- package/dist/share-template.d.ts.map +1 -0
- package/dist/share-template.js +46 -0
- package/dist/share-template.js.map +1 -0
- package/dist/share.d.ts +67 -0
- package/dist/share.d.ts.map +1 -0
- package/dist/share.js +157 -0
- package/dist/share.js.map +1 -0
- package/dist/transactions.d.ts +216 -0
- package/dist/transactions.d.ts.map +1 -0
- package/dist/transactions.js +314 -0
- package/dist/transactions.js.map +1 -0
- package/dist/vault.d.ts +364 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +507 -0
- package/dist/vault.js.map +1 -0
- package/package.json +145 -5
- package/src/auth.ts +275 -0
- package/src/catalog.ts +189 -0
- package/src/client.ts +1310 -0
- package/src/contracts.ts +53 -0
- package/src/cover.ts +240 -0
- package/src/credits.ts +906 -0
- package/src/deployments.ts +354 -0
- package/src/execute.ts +52 -0
- package/src/index.ts +69 -0
- package/src/internal.ts +46 -0
- package/src/mix.ts +910 -0
- package/src/pressing.ts +705 -0
- package/src/publication.ts +1205 -0
- package/src/queries.ts +9 -0
- package/src/read/artist.ts +118 -0
- package/src/read/catalog.ts +668 -0
- package/src/read/client.ts +87 -0
- package/src/read/config.ts +138 -0
- package/src/read/genres.ts +37 -0
- package/src/read/index.ts +85 -0
- package/src/read/internal/scalars.ts +59 -0
- package/src/read/internal/walrus.ts +42 -0
- package/src/read/receipts.ts +476 -0
- package/src/read/types.ts +415 -0
- package/src/read/wallet.ts +687 -0
- package/src/read/works.ts +297 -0
- package/src/recording-extensions.ts +241 -0
- package/src/release-extensions.ts +311 -0
- package/src/release-graph.ts +219 -0
- package/src/share-template.ts +55 -0
- package/src/share.ts +261 -0
- package/src/transactions.ts +542 -0
- package/src/vault.ts +1009 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// Transaction builders follow the Sui SDK thunk pattern: a builder returns a
|
|
4
|
+
// `(tx: Transaction) => …` thunk that adds commands to a caller-owned
|
|
5
|
+
// `Transaction`, so a platform call composes with protocol calls and anything
|
|
6
|
+
// else in the same PTB.
|
|
7
|
+
//
|
|
8
|
+
// This module holds the OPINIONATED publish flows. `@misofm/protocol` does the
|
|
9
|
+
// minimum the Move semantics FORCE and returns anything a caller could
|
|
10
|
+
// legitimately route elsewhere; deciding where those values GO is the
|
|
11
|
+
// platform-layer call that lives here:
|
|
12
|
+
//
|
|
13
|
+
// - minting a work's share supply is a protocol primitive
|
|
14
|
+
// (`createComposition`/`createRecording`) — allocating it to raw address
|
|
15
|
+
// balances or composable Stake objects, publishing (sharing) the work, and
|
|
16
|
+
// transferring its admin cap is an opinion about economics;
|
|
17
|
+
// - minting a release is a platform primitive: core's `release::new` takes an
|
|
18
|
+
// unconstructible PTB `&mut UID`, so core `release::new(registry, …)` is the
|
|
19
|
+
// canonical client path. Choosing a track-assembly strategy, publishing
|
|
20
|
+
// (sharing) it, and picking a recipient for its `ReleaseAdminCap` is the
|
|
21
|
+
// opinion, so `finalizeRelease` / `publishRelease` live here.
|
|
22
|
+
//
|
|
23
|
+
// Every `finalize*` here MUST run in the same PTB as the `create*` that produced
|
|
24
|
+
// its parts — `Composition`, `Recording`, and `Release` are all `key`-only with
|
|
25
|
+
// no `drop`, so none can outlive its creating transaction. That is a same-PTB
|
|
26
|
+
// constraint, not a same-function one, which is exactly what makes this split
|
|
27
|
+
// possible.
|
|
28
|
+
//
|
|
29
|
+
// Composes with `@misofm/protocol`'s calls in the same PTB (the
|
|
30
|
+
// transaction-thunk composition pattern, just crossing a package boundary now).
|
|
31
|
+
import { Transaction } from "@mysten/sui/transactions";
|
|
32
|
+
import { contracts, createComposition, createRecording, } from "@misofm/protocol";
|
|
33
|
+
import { asU64, directAdminCap, disposeNewAdminCap, invokeWithAdminCap } from "./vault.js";
|
|
34
|
+
import * as royaltyPool from "@misofm/protocol/contracts/royalty_pool/pool";
|
|
35
|
+
import * as royaltyPoolStake from "@misofm/protocol/contracts/royalty_pool/stake";
|
|
36
|
+
const { track, release } = contracts;
|
|
37
|
+
export function custodyOf(input) {
|
|
38
|
+
if (input.adminCustody !== undefined)
|
|
39
|
+
return input.adminCustody;
|
|
40
|
+
if (input.adminAddress !== undefined)
|
|
41
|
+
return { kind: "direct", owner: input.adminAddress };
|
|
42
|
+
throw new Error("admin custody is required");
|
|
43
|
+
}
|
|
44
|
+
export function recordingAuthorityOf(input) {
|
|
45
|
+
if (input.recordingAuthority !== undefined)
|
|
46
|
+
return input.recordingAuthority;
|
|
47
|
+
if (input.recordingAdminCapId !== undefined)
|
|
48
|
+
return directAdminCap(input.recordingAdminCapId);
|
|
49
|
+
throw new Error("recording authority is required");
|
|
50
|
+
}
|
|
51
|
+
/** Reject a malformed multi-result command before it becomes a PTB argument. */
|
|
52
|
+
export function requiredCommandResult(result, index, command) {
|
|
53
|
+
const value = result[index];
|
|
54
|
+
if (value === undefined) {
|
|
55
|
+
throw new Error(`${command} did not return result ${index}`);
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
/** Split shares from a Balance and return a fresh, unregistered Stake object. */
|
|
60
|
+
export function createShareStake(tx, params) {
|
|
61
|
+
const value = asU64("share stake value", params.value);
|
|
62
|
+
if (value === 0n)
|
|
63
|
+
throw new Error("share stake value must be greater than zero");
|
|
64
|
+
const stakeBalance = tx.moveCall({
|
|
65
|
+
target: "0x2::balance::split",
|
|
66
|
+
typeArguments: [params.shareType],
|
|
67
|
+
arguments: [params.balance, tx.pure.u64(value)],
|
|
68
|
+
});
|
|
69
|
+
return tx.add(royaltyPoolStake._new({
|
|
70
|
+
package: params.royaltyPoolPackageId,
|
|
71
|
+
typeArguments: [params.shareType],
|
|
72
|
+
arguments: [stakeBalance],
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
/** Register an existing Stake with one RoyaltyPool. */
|
|
76
|
+
export function registerShareStake(tx, params) {
|
|
77
|
+
tx.add(royaltyPool.registerStake({
|
|
78
|
+
package: params.royaltyPoolPackageId,
|
|
79
|
+
typeArguments: [params.shareType, params.currencyType],
|
|
80
|
+
arguments: [params.pool, params.stake],
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Convert an entire share Balance into one unregistered Stake per recipient.
|
|
85
|
+
* The emptied Balance is destroyed, so recipient values must consume it exactly.
|
|
86
|
+
* Returned stakes remain caller-controlled for optional registration and transfer.
|
|
87
|
+
*/
|
|
88
|
+
export function createShareStakes(tx, params) {
|
|
89
|
+
if (params.recipients.length === 0) {
|
|
90
|
+
throw new Error("share stake recipients must not be empty");
|
|
91
|
+
}
|
|
92
|
+
const values = params.recipients.map((recipient) => {
|
|
93
|
+
const value = asU64("share stake value", recipient.value);
|
|
94
|
+
if (value === 0n)
|
|
95
|
+
throw new Error("share stake value must be greater than zero");
|
|
96
|
+
return value;
|
|
97
|
+
});
|
|
98
|
+
const stakes = params.recipients.map((recipient, index) => createShareStake(tx, {
|
|
99
|
+
balance: params.balance,
|
|
100
|
+
shareType: params.shareType,
|
|
101
|
+
value: values[index],
|
|
102
|
+
royaltyPoolPackageId: params.royaltyPoolPackageId,
|
|
103
|
+
}));
|
|
104
|
+
tx.moveCall({
|
|
105
|
+
target: "0x2::balance::destroy_zero",
|
|
106
|
+
typeArguments: [params.shareType],
|
|
107
|
+
arguments: [params.balance],
|
|
108
|
+
});
|
|
109
|
+
return stakes;
|
|
110
|
+
}
|
|
111
|
+
/** Consume an unshared RoyaltyPool and make it globally accessible. */
|
|
112
|
+
export function shareRoyaltyPool(tx, params) {
|
|
113
|
+
tx.add(royaltyPool.share({
|
|
114
|
+
package: params.royaltyPoolPackageId,
|
|
115
|
+
typeArguments: [params.shareType, params.currencyType],
|
|
116
|
+
arguments: [params.pool],
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Splits a share `Balance` across `recipients` via `minato::disperse_balance`, then
|
|
121
|
+
* destroys the emptied balance. Exposed for consumers assembling custom share
|
|
122
|
+
* distributions in their own PTBs.
|
|
123
|
+
*/
|
|
124
|
+
export function disperseShares(tx, minatoPackageId, shareType, balance, recipients) {
|
|
125
|
+
tx.moveCall({
|
|
126
|
+
target: `${minatoPackageId}::minato::disperse_balance`,
|
|
127
|
+
typeArguments: [shareType],
|
|
128
|
+
arguments: [
|
|
129
|
+
balance,
|
|
130
|
+
tx.makeMoveVec({ type: "u64", elements: recipients.map((r) => tx.pure.u64(asU64("share recipient value", r.value))) }),
|
|
131
|
+
tx.makeMoveVec({ type: "address", elements: recipients.map((r) => tx.pure.address(r.address)) }),
|
|
132
|
+
],
|
|
133
|
+
});
|
|
134
|
+
tx.moveCall({ target: "0x2::balance::destroy_zero", typeArguments: [shareType], arguments: [balance] });
|
|
135
|
+
}
|
|
136
|
+
/** Publish a share package and permanently destroy its UpgradeCap in the same PTB. */
|
|
137
|
+
export function publishShareCurrency(bytecode) {
|
|
138
|
+
return (tx) => {
|
|
139
|
+
const upgradeCap = tx.publish(bytecode);
|
|
140
|
+
tx.moveCall({ target: "0x2::package::make_immutable", arguments: [upgradeCap] });
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const SUI_COIN_REGISTRY_ID = "0xc";
|
|
144
|
+
export function initializeShareCurrency(params) {
|
|
145
|
+
const { shareCurrencyPackageId, name, description, iconUrl, treasuryCapRecipient } = params;
|
|
146
|
+
return (tx) => {
|
|
147
|
+
const treasuryCap = tx.moveCall({
|
|
148
|
+
target: `${shareCurrencyPackageId}::share::initialize`,
|
|
149
|
+
arguments: [tx.pure.string(name), tx.pure.string(description), tx.pure.string(iconUrl), tx.object(SUI_COIN_REGISTRY_ID)],
|
|
150
|
+
});
|
|
151
|
+
tx.transferObjects([treasuryCap], treasuryCapRecipient);
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The opinionated finish for a composition: disperse its share supply to
|
|
156
|
+
* `shareRecipients`, publish (share) it, and transfer its admin cap to
|
|
157
|
+
* `adminAddress`. Consumers that want different economics skip this and act on
|
|
158
|
+
* the `CompositionParts` from `@misofm/protocol`'s `createComposition` directly.
|
|
159
|
+
*/
|
|
160
|
+
export function finalizeComposition(tx, params) {
|
|
161
|
+
disperseShares(tx, params.minatoPackageId, params.shareType, params.balance, params.shareRecipients);
|
|
162
|
+
tx.add(contracts.composition.publish({ package: params.misoPackageId, typeArguments: [params.shareType], arguments: [params.composition, params.adminCap] }));
|
|
163
|
+
disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
|
|
164
|
+
}
|
|
165
|
+
/** Convenience: publish a composition end-to-end (createComposition → finalizeComposition). */
|
|
166
|
+
export function publishComposition(params) {
|
|
167
|
+
return (tx) => {
|
|
168
|
+
const parts = createComposition(tx, {
|
|
169
|
+
shareType: params.shareType,
|
|
170
|
+
shareCurrencyId: params.shareCurrencyId,
|
|
171
|
+
shareTreasuryCapId: params.shareTreasuryCapId,
|
|
172
|
+
title: params.title,
|
|
173
|
+
royaltyRateBps: params.royaltyRateBps,
|
|
174
|
+
misoPackageId: params.misoPackageId,
|
|
175
|
+
});
|
|
176
|
+
finalizeComposition(tx, {
|
|
177
|
+
...parts,
|
|
178
|
+
shareType: params.shareType,
|
|
179
|
+
shareRecipients: params.shareRecipients,
|
|
180
|
+
adminCustody: custodyOf(params),
|
|
181
|
+
misoPackageId: params.misoPackageId,
|
|
182
|
+
minatoPackageId: params.minatoPackageId,
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* The opinionated finish for a recording: publish (share) it, disperse its
|
|
188
|
+
* share supply, and transfer its admin cap to `adminAddress`. A recording has
|
|
189
|
+
* no embedded metadata to set — naming lives in the metadata extension.
|
|
190
|
+
*/
|
|
191
|
+
export function finalizeRecording(tx, params) {
|
|
192
|
+
const typeArguments = [params.recordingShareType, params.compositionShareType];
|
|
193
|
+
tx.add(contracts.recording.publish({ package: params.misoPackageId, typeArguments, arguments: [params.recording, params.adminCap] }));
|
|
194
|
+
disperseShares(tx, params.minatoPackageId, params.recordingShareType, params.balance, params.shareRecipients);
|
|
195
|
+
disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
|
|
196
|
+
}
|
|
197
|
+
/** Convenience: publish a recording against an already-on-chain composition. */
|
|
198
|
+
export function publishRecording(params) {
|
|
199
|
+
return (tx) => {
|
|
200
|
+
const parts = createRecording(tx, {
|
|
201
|
+
shareType: params.shareType,
|
|
202
|
+
shareCurrencyId: params.shareCurrencyId,
|
|
203
|
+
shareTreasuryCapId: params.shareTreasuryCapId,
|
|
204
|
+
compositionShareType: params.compositionShareType,
|
|
205
|
+
composition: tx.object(params.compositionId),
|
|
206
|
+
misoPackageId: params.misoPackageId,
|
|
207
|
+
});
|
|
208
|
+
finalizeRecording(tx, {
|
|
209
|
+
...parts,
|
|
210
|
+
recordingShareType: params.shareType,
|
|
211
|
+
compositionShareType: params.compositionShareType,
|
|
212
|
+
shareRecipients: params.shareRecipients,
|
|
213
|
+
adminCustody: custodyOf(params),
|
|
214
|
+
misoPackageId: params.misoPackageId,
|
|
215
|
+
minatoPackageId: params.minatoPackageId,
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Publishes a composition and its recording in a single atomic PTB.
|
|
221
|
+
*
|
|
222
|
+
* The ordering is load-bearing: `recording::new` borrows the composition by
|
|
223
|
+
* immutable reference, so it must run while the composition is still an unshared,
|
|
224
|
+
* transaction-local value — i.e. AFTER `composition::new` but BEFORE
|
|
225
|
+
* `composition::publish` (which moves the composition into `share_object`). Hence:
|
|
226
|
+
* `composition::new` → `recording::new(&comp)` → finalize composition (publish) →
|
|
227
|
+
* finalize recording (publish).
|
|
228
|
+
*/
|
|
229
|
+
export function publishCompositionAndRecording(params) {
|
|
230
|
+
return (tx) => {
|
|
231
|
+
const comp = createComposition(tx, {
|
|
232
|
+
shareType: params.composition.shareType,
|
|
233
|
+
shareCurrencyId: params.composition.shareCurrencyId,
|
|
234
|
+
shareTreasuryCapId: params.composition.shareTreasuryCapId,
|
|
235
|
+
title: params.title,
|
|
236
|
+
royaltyRateBps: params.royaltyRateBps,
|
|
237
|
+
misoPackageId: params.misoPackageId,
|
|
238
|
+
});
|
|
239
|
+
// Borrow the still-unshared composition into recording::new before publishing it.
|
|
240
|
+
// The composition's royalty rate is immutable once set at `composition::new`,
|
|
241
|
+
// so `recording::new` reads exactly the rate this PTB just created it with.
|
|
242
|
+
const rec = createRecording(tx, {
|
|
243
|
+
shareType: params.recording.shareType,
|
|
244
|
+
shareCurrencyId: params.recording.shareCurrencyId,
|
|
245
|
+
shareTreasuryCapId: params.recording.shareTreasuryCapId,
|
|
246
|
+
compositionShareType: params.composition.shareType,
|
|
247
|
+
composition: comp.composition,
|
|
248
|
+
misoPackageId: params.misoPackageId,
|
|
249
|
+
});
|
|
250
|
+
finalizeComposition(tx, {
|
|
251
|
+
...comp,
|
|
252
|
+
shareType: params.composition.shareType,
|
|
253
|
+
shareRecipients: params.composition.shareRecipients,
|
|
254
|
+
adminCustody: custodyOf(params.composition),
|
|
255
|
+
misoPackageId: params.misoPackageId,
|
|
256
|
+
minatoPackageId: params.minatoPackageId,
|
|
257
|
+
});
|
|
258
|
+
finalizeRecording(tx, {
|
|
259
|
+
...rec,
|
|
260
|
+
recordingShareType: params.recording.shareType,
|
|
261
|
+
compositionShareType: params.composition.shareType,
|
|
262
|
+
shareRecipients: params.recording.shareRecipients,
|
|
263
|
+
adminCustody: custodyOf(params.recording),
|
|
264
|
+
misoPackageId: params.misoPackageId,
|
|
265
|
+
minatoPackageId: params.minatoPackageId,
|
|
266
|
+
});
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* The opinionated finish for a release: publish (share) it and transfer its
|
|
271
|
+
* admin cap to `adminAddress`.
|
|
272
|
+
*
|
|
273
|
+
* MUST run in the same PTB as `release::new(registry, …)` that produced
|
|
274
|
+
* these parts —
|
|
275
|
+
* `Release` is `key`-only with no `drop`, so an unpublished release cannot
|
|
276
|
+
* outlive its transaction. Splitting create from finalize is what lets a caller
|
|
277
|
+
* do something else with the cap (route it to a vault, hand it to another
|
|
278
|
+
* package, keep it for later commands) instead of a plain address transfer.
|
|
279
|
+
*/
|
|
280
|
+
export function finalizeRelease(tx, params) {
|
|
281
|
+
tx.add(release.publish({ package: params.misoPackageId, arguments: [params.release, params.adminCap] }));
|
|
282
|
+
disposeNewAdminCap(tx, params.adminCap, custodyOf(params));
|
|
283
|
+
}
|
|
284
|
+
function buildTrackVec(tx, misoPackageId, trackArgs) {
|
|
285
|
+
return tx.makeMoveVec({ type: `${misoPackageId}::track::Track`, elements: trackArgs });
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Convenience: publish a release end-to-end, assembling its tracklist from
|
|
289
|
+
* recording admin caps held by the sender.
|
|
290
|
+
*/
|
|
291
|
+
export function publishRelease(params) {
|
|
292
|
+
return (tx) => {
|
|
293
|
+
const { misoPackageId } = params;
|
|
294
|
+
const trackArgs = params.tracks.map((t) => {
|
|
295
|
+
const typeArguments = [t.recordingShareType, t.compositionShareType];
|
|
296
|
+
return invokeWithAdminCap(tx, recordingAuthorityOf(t), {
|
|
297
|
+
target: `${misoPackageId}::track::new`,
|
|
298
|
+
typeArguments,
|
|
299
|
+
arguments: [tx.object(t.recordingId), tx.pure.id(params.releaseId), tx.pure.u16(t.splitBps)],
|
|
300
|
+
adminCapIndex: 0,
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
const created = tx.moveCall({
|
|
304
|
+
target: `${misoPackageId}::release::new`,
|
|
305
|
+
arguments: [tx.object(params.releaseRegistryId), tx.pure.string(params.title), buildTrackVec(tx, misoPackageId, trackArgs), tx.pure.u256(BigInt(params.releaseNonce))],
|
|
306
|
+
});
|
|
307
|
+
const parts = {
|
|
308
|
+
release: requiredCommandResult(created, 0, "release::new"),
|
|
309
|
+
adminCap: requiredCommandResult(created, 1, "release::new"),
|
|
310
|
+
};
|
|
311
|
+
finalizeRelease(tx, { ...parts, ...params, misoPackageId });
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=transactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
|