@misofm/sdk 0.1.0 → 0.2.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 +138 -10
- package/dist/contracts/composition_credits/composition_credits.d.ts +181 -0
- package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -0
- package/dist/contracts/composition_credits/composition_credits.js +109 -0
- package/dist/contracts/composition_credits/composition_credits.js.map +1 -0
- package/dist/contracts/composition_credits/composition_party_role.d.ts +119 -0
- package/dist/contracts/composition_credits/composition_party_role.d.ts.map +1 -0
- package/dist/contracts/composition_credits/composition_party_role.js +139 -0
- package/dist/contracts/composition_credits/composition_party_role.js.map +1 -0
- package/dist/contracts/composition_credits/deps/miso_credit/credit.d.ts +24 -0
- package/dist/contracts/composition_credits/deps/miso_credit/credit.d.ts.map +1 -0
- package/dist/contracts/composition_credits/deps/miso_credit/credit.js +23 -0
- package/dist/contracts/composition_credits/deps/miso_credit/credit.js.map +1 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.js +28 -0
- package/dist/contracts/composition_credits/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +87 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +80 -0
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -0
- package/dist/contracts/cover_art/cover_art.d.ts +85 -0
- package/dist/contracts/cover_art/cover_art.d.ts.map +1 -0
- package/dist/contracts/cover_art/cover_art.js +68 -0
- package/dist/contracts/cover_art/cover_art.js.map +1 -0
- package/dist/contracts/cover_art/deps/ori/walrus_data.d.ts +52 -0
- package/dist/contracts/cover_art/deps/ori/walrus_data.d.ts.map +1 -0
- package/dist/contracts/cover_art/deps/ori/walrus_data.js +37 -0
- package/dist/contracts/cover_art/deps/ori/walrus_data.js.map +1 -0
- package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts +24 -0
- package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts.map +1 -0
- package/dist/contracts/recording_credits/deps/miso_credit/credit.js +23 -0
- package/dist/contracts/recording_credits/deps/miso_credit/credit.js.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.js +28 -0
- package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts +21 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.js +20 -0
- package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -0
- package/dist/contracts/recording_credits/recording_credits.d.ts +2313 -0
- package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -0
- package/dist/contracts/recording_credits/recording_credits.js +270 -0
- package/dist/contracts/recording_credits/recording_credits.js.map +1 -0
- package/dist/contracts/recording_credits/recording_party_role.d.ts +1174 -0
- package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -0
- package/dist/contracts/recording_credits/recording_party_role.js +692 -0
- package/dist/contracts/recording_credits/recording_party_role.js.map +1 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +90 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +80 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -0
- package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts +52 -0
- package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js +37 -0
- package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js.map +1 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +46 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +21 -0
- package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts +33 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.js +32 -0
- package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -0
- package/dist/contracts/release_cover_art/release_cover_art.d.ts +300 -0
- package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -0
- package/dist/contracts/release_cover_art/release_cover_art.js +168 -0
- package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -0
- package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts +24 -0
- package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts.map +1 -0
- package/dist/contracts/release_credits/deps/miso_credit/credit.js +23 -0
- package/dist/contracts/release_credits/deps/miso_credit/credit.js.map +1 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.js +28 -0
- package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/release_credits/release_credits.d.ts +142 -0
- package/dist/contracts/release_credits/release_credits.d.ts.map +1 -0
- package/dist/contracts/release_credits/release_credits.js +108 -0
- package/dist/contracts/release_credits/release_credits.js.map +1 -0
- package/dist/contracts/release_credits/release_party_role.d.ts +58 -0
- package/dist/contracts/release_credits/release_party_role.d.ts.map +1 -0
- package/dist/contracts/release_credits/release_party_role.js +66 -0
- package/dist/contracts/release_credits/release_party_role.js.map +1 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +18 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.js +20 -0
- package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +13 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.js +15 -0
- package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts +37 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.js +28 -0
- package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -0
- package/dist/contracts/royalty_pool/pool.d.ts +358 -0
- package/dist/contracts/royalty_pool/pool.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/pool.js +352 -0
- package/dist/contracts/royalty_pool/pool.js.map +1 -0
- package/dist/contracts/royalty_pool/stake.d.ts +202 -0
- package/dist/contracts/royalty_pool/stake.d.ts.map +1 -0
- package/dist/contracts/royalty_pool/stake.js +197 -0
- package/dist/contracts/royalty_pool/stake.js.map +1 -0
- package/dist/contracts.d.ts +16 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +29 -0
- package/dist/contracts.js.map +1 -0
- package/dist/cover.d.ts +48 -0
- package/dist/cover.d.ts.map +1 -0
- package/dist/cover.js +68 -0
- package/dist/cover.js.map +1 -0
- package/dist/credits.d.ts +171 -0
- package/dist/credits.d.ts.map +1 -0
- package/dist/credits.js +360 -0
- package/dist/credits.js.map +1 -0
- package/dist/extensions/royalty-pool.d.ts +32 -0
- package/dist/extensions/royalty-pool.d.ts.map +1 -0
- package/dist/extensions/royalty-pool.js +33 -0
- package/dist/extensions/royalty-pool.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +4 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +18 -0
- package/dist/internal.js.map +1 -0
- package/dist/release-graph.d.ts.map +1 -1
- package/dist/release-graph.js +5 -4
- package/dist/release-graph.js.map +1 -1
- package/package.json +14 -2
- package/src/contracts/composition_credits/composition_credits.ts +169 -0
- package/src/contracts/composition_credits/composition_party_role.ts +189 -0
- package/src/contracts/composition_credits/deps/miso_credit/credit.ts +27 -0
- package/src/contracts/composition_credits/deps/sui/vec_map.ts +33 -0
- package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +135 -0
- package/src/contracts/cover_art/cover_art.ts +99 -0
- package/src/contracts/cover_art/deps/ori/walrus_data.ts +36 -0
- package/src/contracts/recording_credits/deps/miso_credit/credit.ts +27 -0
- package/src/contracts/recording_credits/deps/sui/vec_map.ts +33 -0
- package/src/contracts/recording_credits/deps/sui/vec_set.ts +21 -0
- package/src/contracts/recording_credits/recording_credits.ts +458 -0
- package/src/contracts/recording_credits/recording_party_role.ts +1041 -0
- package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +138 -0
- package/src/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.ts +36 -0
- package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +23 -0
- package/src/contracts/release_cover_art/deps/per_track/per_track.ts +36 -0
- package/src/contracts/release_cover_art/release_cover_art.ts +251 -0
- package/src/contracts/release_credits/deps/miso_credit/credit.ts +27 -0
- package/src/contracts/release_credits/deps/sui/vec_map.ts +33 -0
- package/src/contracts/release_credits/release_credits.ts +156 -0
- package/src/contracts/release_credits/release_party_role.ts +87 -0
- package/src/contracts/royalty_pool/deps/std/type_name.ts +22 -0
- package/src/contracts/royalty_pool/deps/sui/balance.ts +17 -0
- package/src/contracts/royalty_pool/deps/sui/vec_map.ts +33 -0
- package/src/contracts/royalty_pool/pool.ts +577 -0
- package/src/contracts/royalty_pool/stake.ts +317 -0
- package/src/contracts.ts +33 -0
- package/src/cover.ts +140 -0
- package/src/credits.ts +651 -0
- package/src/extensions/royalty-pool.ts +90 -0
- package/src/index.ts +19 -3
- package/src/internal.ts +19 -0
- package/src/release-graph.ts +5 -10
package/dist/credits.js
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
4
|
+
import { deriveDynamicFieldID } from "@mysten/sui/utils";
|
|
5
|
+
import { OPTION_NONE, OPTION_SOME } from "./internal.js";
|
|
6
|
+
import { isNotFound } from "./queries.js";
|
|
7
|
+
import * as compositionCredits from "./contracts/composition_credits/composition_credits.js";
|
|
8
|
+
import * as compositionPartyRole from "./contracts/composition_credits/composition_party_role.js";
|
|
9
|
+
import * as recordingCredits from "./contracts/recording_credits/recording_credits.js";
|
|
10
|
+
import * as recordingPartyRole from "./contracts/recording_credits/recording_party_role.js";
|
|
11
|
+
import * as releaseCredits from "./contracts/release_credits/release_credits.js";
|
|
12
|
+
import * as releasePartyRole from "./contracts/release_credits/release_party_role.js";
|
|
13
|
+
const COMPOSITION_ROLE_CTOR = {
|
|
14
|
+
Adapter: compositionPartyRole.newAdapterRole,
|
|
15
|
+
Arranger: compositionPartyRole.newArrangerRole,
|
|
16
|
+
Composer: compositionPartyRole.newComposerRole,
|
|
17
|
+
Lyricist: compositionPartyRole.newLyricistRole,
|
|
18
|
+
Songwriter: compositionPartyRole.newSongwriterRole,
|
|
19
|
+
Translator: compositionPartyRole.newTranslatorRole,
|
|
20
|
+
};
|
|
21
|
+
const RECORDING_LEVEL_CTOR = {
|
|
22
|
+
Additional: recordingPartyRole.newAdditionalRoleLevel,
|
|
23
|
+
Assistant: recordingPartyRole.newAssistantRoleLevel,
|
|
24
|
+
Associate: recordingPartyRole.newAssociateRoleLevel,
|
|
25
|
+
Backing: recordingPartyRole.newBackingRoleLevel,
|
|
26
|
+
Executive: recordingPartyRole.newExecutiveRoleLevel,
|
|
27
|
+
Featured: recordingPartyRole.newFeaturedRoleLevel,
|
|
28
|
+
Lead: recordingPartyRole.newLeadRoleLevel,
|
|
29
|
+
Primary: recordingPartyRole.newPrimaryRoleLevel,
|
|
30
|
+
Principal: recordingPartyRole.newPrincipalRoleLevel,
|
|
31
|
+
};
|
|
32
|
+
const RECORDING_LEVELED_ROLE_CTOR = {
|
|
33
|
+
Actor: recordingPartyRole.newActorRole,
|
|
34
|
+
Arranger: recordingPartyRole.newArrangerRole,
|
|
35
|
+
BandLeader: recordingPartyRole.newBandLeaderRole,
|
|
36
|
+
Choir: recordingPartyRole.newChoirRole,
|
|
37
|
+
ChoirMaster: recordingPartyRole.newChoirMasterRole,
|
|
38
|
+
ConcertMaster: recordingPartyRole.newConcertMasterRole,
|
|
39
|
+
Conductor: recordingPartyRole.newConductorRole,
|
|
40
|
+
Contractor: recordingPartyRole.newContractorRole,
|
|
41
|
+
DJ: recordingPartyRole.newDjRole,
|
|
42
|
+
Editor: recordingPartyRole.newEditorRole,
|
|
43
|
+
Engineer: recordingPartyRole.newEngineerRole,
|
|
44
|
+
Ensemble: recordingPartyRole.newEnsembleRole,
|
|
45
|
+
MasteringEngineer: recordingPartyRole.newMasteringEngineerRole,
|
|
46
|
+
MixingEngineer: recordingPartyRole.newMixingEngineerRole,
|
|
47
|
+
MusicDirector: recordingPartyRole.newMusicDirectorRole,
|
|
48
|
+
MusicSupervisor: recordingPartyRole.newMusicSupervisorRole,
|
|
49
|
+
Narrator: recordingPartyRole.newNarratorRole,
|
|
50
|
+
Orchestra: recordingPartyRole.newOrchestraRole,
|
|
51
|
+
Orchestrator: recordingPartyRole.newOrchestratorRole,
|
|
52
|
+
Performer: recordingPartyRole.newPerformerRole,
|
|
53
|
+
Producer: recordingPartyRole.newProducerRole,
|
|
54
|
+
Programmer: recordingPartyRole.newProgrammerRole,
|
|
55
|
+
RecordingEngineer: recordingPartyRole.newRecordingEngineerRole,
|
|
56
|
+
RemixingEngineer: recordingPartyRole.newRemixingEngineerRole,
|
|
57
|
+
Soloist: recordingPartyRole.newSoloistRole,
|
|
58
|
+
SoundDesigner: recordingPartyRole.newSoundDesignerRole,
|
|
59
|
+
Speaker: recordingPartyRole.newSpeakerRole,
|
|
60
|
+
Vocalist: recordingPartyRole.newVocalistRole,
|
|
61
|
+
};
|
|
62
|
+
/** Builds an `Option<RecordingPartyRoleLevel>` argument for a role constructor. */
|
|
63
|
+
function levelOption(tx, pkg, level) {
|
|
64
|
+
const levelType = `${pkg}::recording_party_role::RecordingPartyRoleLevel`;
|
|
65
|
+
if (!level)
|
|
66
|
+
return tx.moveCall({ target: OPTION_NONE, typeArguments: [levelType] });
|
|
67
|
+
const lvl = tx.add(RECORDING_LEVEL_CTOR[level]({ package: pkg }));
|
|
68
|
+
return tx.moveCall({ target: OPTION_SOME, typeArguments: [levelType], arguments: [lvl] });
|
|
69
|
+
}
|
|
70
|
+
/** Builds one `CompositionPartyRole` value in the PTB. */
|
|
71
|
+
function buildCompositionRole(tx, pkg, role) {
|
|
72
|
+
if (role.type === "Custom") {
|
|
73
|
+
return tx.add(compositionPartyRole.newCustomRole({ package: pkg, arguments: [role.name] }));
|
|
74
|
+
}
|
|
75
|
+
return tx.add(COMPOSITION_ROLE_CTOR[role.type]({ package: pkg }));
|
|
76
|
+
}
|
|
77
|
+
/** Builds one `RecordingPartyRole` value in the PTB. */
|
|
78
|
+
function buildRecordingRole(tx, pkg, role) {
|
|
79
|
+
switch (role.type) {
|
|
80
|
+
case "ArtistsAndRepertoire":
|
|
81
|
+
return tx.add(recordingPartyRole.newArtistsAndRepertoireRole({ package: pkg }));
|
|
82
|
+
case "Copyist":
|
|
83
|
+
return tx.add(recordingPartyRole.newCopyistRole({ package: pkg }));
|
|
84
|
+
case "Instrumentalist":
|
|
85
|
+
return tx.add(recordingPartyRole.newInstrumentalistRole({
|
|
86
|
+
package: pkg,
|
|
87
|
+
arguments: [role.instrument, levelOption(tx, pkg, role.level)],
|
|
88
|
+
}));
|
|
89
|
+
case "Custom":
|
|
90
|
+
return tx.add(recordingPartyRole.newCustomRole({
|
|
91
|
+
package: pkg,
|
|
92
|
+
arguments: [role.name, levelOption(tx, pkg, role.level)],
|
|
93
|
+
}));
|
|
94
|
+
default:
|
|
95
|
+
return tx.add(RECORDING_LEVELED_ROLE_CTOR[role.type]({
|
|
96
|
+
package: pkg,
|
|
97
|
+
arguments: [levelOption(tx, pkg, role.level)],
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** Builds one `ReleasePartyRole` value in the PTB. */
|
|
102
|
+
function buildReleaseRole(tx, pkg, role) {
|
|
103
|
+
const ctor = role === "Primary" ? releasePartyRole.newPrimaryRole : releasePartyRole.newFeaturedRole;
|
|
104
|
+
return tx.add(ctor({ package: pkg }));
|
|
105
|
+
}
|
|
106
|
+
// ── Client-side validation ────────────────────────────────────────────────────
|
|
107
|
+
//
|
|
108
|
+
// Mirrors the Move aborts so bad params fail fast (and readably) at the writer
|
|
109
|
+
// call site instead of as an on-chain abort code:
|
|
110
|
+
// - miso_credit::credit::new — EEmptyString / EMaxDisplayNameLengthExceeded
|
|
111
|
+
// (display name non-empty, ≤200 BYTES of UTF-8) and ENoRoles / EDuplicateRoles.
|
|
112
|
+
// - composition_credits::add_credit — EMinRolesNotMet / EExceedsMaxRoles (1–5).
|
|
113
|
+
// - recording_credits::add_credit — EMinRolesNotMet / EExceedsMaxRoles (1–10).
|
|
114
|
+
const MAX_DISPLAY_NAME_BYTES = 200;
|
|
115
|
+
const MAX_COMPOSITION_ROLES = 5;
|
|
116
|
+
const MAX_RECORDING_ROLES = 10;
|
|
117
|
+
function assertDisplayName(fn, displayName) {
|
|
118
|
+
if (displayName.length === 0)
|
|
119
|
+
throw new Error(`${fn}: displayName must not be empty`);
|
|
120
|
+
const byteLength = new TextEncoder().encode(displayName).length;
|
|
121
|
+
if (byteLength > MAX_DISPLAY_NAME_BYTES) {
|
|
122
|
+
throw new Error(`${fn}: displayName must be at most ${MAX_DISPLAY_NAME_BYTES} bytes of UTF-8 (got ${byteLength})`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Move rejects duplicates by full struct equality, so the duplicate key is the
|
|
126
|
+
// role's complete identity: type + instrument + custom name + level.
|
|
127
|
+
function roleKey(role) {
|
|
128
|
+
return JSON.stringify([
|
|
129
|
+
role.type,
|
|
130
|
+
"instrument" in role ? role.instrument : null,
|
|
131
|
+
"name" in role ? role.name : null,
|
|
132
|
+
"level" in role && role.level !== undefined ? role.level : null,
|
|
133
|
+
]);
|
|
134
|
+
}
|
|
135
|
+
function assertRoles(fn, roles, max) {
|
|
136
|
+
if (roles.length < 1)
|
|
137
|
+
throw new Error(`${fn}: at least one role is required`);
|
|
138
|
+
if (roles.length > max)
|
|
139
|
+
throw new Error(`${fn}: at most ${max} roles are allowed (got ${roles.length})`);
|
|
140
|
+
const seen = new Set();
|
|
141
|
+
for (const role of roles) {
|
|
142
|
+
const key = roleKey(role);
|
|
143
|
+
if (seen.has(key))
|
|
144
|
+
throw new Error(`${fn}: duplicate role ${key}`);
|
|
145
|
+
seen.add(key);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/** Wraps built role values in a `miso_credit::credit::Credit<Role>`. */
|
|
149
|
+
function buildCredit(tx, misoCreditPackageId, roleType, displayName, roleArgs) {
|
|
150
|
+
const roles = tx.makeMoveVec({ type: roleType, elements: roleArgs });
|
|
151
|
+
return tx.moveCall({
|
|
152
|
+
target: `${misoCreditPackageId}::credit::new`,
|
|
153
|
+
typeArguments: [roleType],
|
|
154
|
+
arguments: [tx.pure.string(displayName), roles],
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Adds a writing credit for a party on a composition. Throws (client-side,
|
|
159
|
+
* mirroring the Move aborts) when `displayName` is empty or over 200 UTF-8
|
|
160
|
+
* bytes, or `roles` is empty, has more than 5 entries, or contains duplicates.
|
|
161
|
+
*/
|
|
162
|
+
export function attachCompositionCredit(p) {
|
|
163
|
+
assertDisplayName("attachCompositionCredit", p.displayName);
|
|
164
|
+
assertRoles("attachCompositionCredit", p.roles, MAX_COMPOSITION_ROLES);
|
|
165
|
+
return (tx) => {
|
|
166
|
+
const roleType = `${p.compositionCreditsPackageId}::composition_party_role::CompositionPartyRole`;
|
|
167
|
+
const roleArgs = p.roles.map((r) => buildCompositionRole(tx, p.compositionCreditsPackageId, r));
|
|
168
|
+
const credit = buildCredit(tx, p.misoCreditPackageId, roleType, p.displayName, roleArgs);
|
|
169
|
+
tx.add(compositionCredits.addCredit({
|
|
170
|
+
package: p.compositionCreditsPackageId,
|
|
171
|
+
typeArguments: [p.compositionShareType],
|
|
172
|
+
arguments: [p.compositionId, p.compositionAdminCapId, p.partyId, credit],
|
|
173
|
+
}));
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Adds a production/performance credit for a party on a recording. Throws
|
|
178
|
+
* (client-side, mirroring the Move aborts) when `displayName` is empty or over
|
|
179
|
+
* 200 UTF-8 bytes, or `roles` is empty, has more than 10 entries, or contains
|
|
180
|
+
* duplicates (same type + instrument + custom name + level).
|
|
181
|
+
*/
|
|
182
|
+
export function attachRecordingCredit(p) {
|
|
183
|
+
assertDisplayName("attachRecordingCredit", p.displayName);
|
|
184
|
+
assertRoles("attachRecordingCredit", p.roles, MAX_RECORDING_ROLES);
|
|
185
|
+
return (tx) => {
|
|
186
|
+
const roleType = `${p.recordingCreditsPackageId}::recording_party_role::RecordingPartyRole`;
|
|
187
|
+
const roleArgs = p.roles.map((r) => buildRecordingRole(tx, p.recordingCreditsPackageId, r));
|
|
188
|
+
const credit = buildCredit(tx, p.misoCreditPackageId, roleType, p.displayName, roleArgs);
|
|
189
|
+
tx.add(recordingCredits.addCredit({
|
|
190
|
+
package: p.recordingCreditsPackageId,
|
|
191
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
192
|
+
arguments: [p.recordingId, p.recordingAdminCapId, p.partyId, credit],
|
|
193
|
+
}));
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Designates an already-credited party as a primary artist on a recording. The
|
|
198
|
+
* party must be credited first (via `attachRecordingCredit`) and not already a
|
|
199
|
+
* primary or featured artist.
|
|
200
|
+
*/
|
|
201
|
+
export function addRecordingPrimaryArtist(p) {
|
|
202
|
+
return (tx) => {
|
|
203
|
+
tx.add(recordingCredits.addPrimaryArtist({
|
|
204
|
+
package: p.recordingCreditsPackageId,
|
|
205
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
206
|
+
arguments: [p.recordingId, p.recordingAdminCapId, p.partyId],
|
|
207
|
+
}));
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Designates an already-credited party as a featured artist on a recording. The
|
|
212
|
+
* party must be credited first (via `attachRecordingCredit`) and not already a
|
|
213
|
+
* primary or featured artist.
|
|
214
|
+
*/
|
|
215
|
+
export function addRecordingFeaturedArtist(p) {
|
|
216
|
+
return (tx) => {
|
|
217
|
+
tx.add(recordingCredits.addFeaturedArtist({
|
|
218
|
+
package: p.recordingCreditsPackageId,
|
|
219
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
220
|
+
arguments: [p.recordingId, p.recordingAdminCapId, p.partyId],
|
|
221
|
+
}));
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Adds a top-line billing credit (a single role) for a party on a release.
|
|
226
|
+
* Throws (client-side, mirroring the Move aborts) when `displayName` is empty
|
|
227
|
+
* or over 200 UTF-8 bytes. The single role is structural, so no role checks.
|
|
228
|
+
*/
|
|
229
|
+
export function addReleaseCredit(p) {
|
|
230
|
+
assertDisplayName("addReleaseCredit", p.displayName);
|
|
231
|
+
return (tx) => {
|
|
232
|
+
const roleType = `${p.releaseCreditsPackageId}::release_party_role::ReleasePartyRole`;
|
|
233
|
+
const roleArg = buildReleaseRole(tx, p.releaseCreditsPackageId, p.role);
|
|
234
|
+
const credit = buildCredit(tx, p.misoCreditPackageId, roleType, p.displayName, [roleArg]);
|
|
235
|
+
tx.add(releaseCredits.addCredit({
|
|
236
|
+
package: p.releaseCreditsPackageId,
|
|
237
|
+
arguments: [p.releaseId, p.releaseAdminCapId, p.partyId, credit],
|
|
238
|
+
}));
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
// Credits are stored as a dynamic field on the work's UID under the extension's
|
|
242
|
+
// `ExtensionKey()` — a positional struct with no fields, so Move's implicit
|
|
243
|
+
// `dummy_field: bool` serializes to a single `false` byte. The stored object is a
|
|
244
|
+
// `Field { id, name: <Key>, value: <Credits> }`.
|
|
245
|
+
const CompositionCreditsField = bcs.struct("Field", {
|
|
246
|
+
id: bcs.Address,
|
|
247
|
+
name: compositionCredits.ExtensionKey,
|
|
248
|
+
value: compositionCredits.CompositionCredits,
|
|
249
|
+
});
|
|
250
|
+
const RecordingCreditsField = bcs.struct("Field", {
|
|
251
|
+
id: bcs.Address,
|
|
252
|
+
name: recordingCredits.ExtensionKey,
|
|
253
|
+
value: recordingCredits.RecordingCredits,
|
|
254
|
+
});
|
|
255
|
+
const ReleaseCreditsField = bcs.struct("Field", {
|
|
256
|
+
id: bcs.Address,
|
|
257
|
+
name: releaseCredits.ExtensionKey,
|
|
258
|
+
value: releaseCredits.ReleaseCredits,
|
|
259
|
+
});
|
|
260
|
+
const COMPOSITION_CREDITS_KEY_BYTES = compositionCredits.ExtensionKey.serialize([false]).toBytes();
|
|
261
|
+
const RECORDING_CREDITS_KEY_BYTES = recordingCredits.ExtensionKey.serialize([false]).toBytes();
|
|
262
|
+
const RELEASE_CREDITS_KEY_BYTES = releaseCredits.ExtensionKey.serialize([false]).toBytes();
|
|
263
|
+
/** Fetches the BCS content of a work's credits dynamic field, or `null` if none. */
|
|
264
|
+
async function fetchCreditsField(client, workId, keyType, keyBytes) {
|
|
265
|
+
const fieldId = deriveDynamicFieldID(workId, keyType, keyBytes);
|
|
266
|
+
try {
|
|
267
|
+
const { object } = await client.core.getObject({ objectId: fieldId, include: { content: true } });
|
|
268
|
+
return object?.content ?? null;
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
if (isNotFound(e))
|
|
272
|
+
return null;
|
|
273
|
+
throw e;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function creditViews(credits, roleLabel) {
|
|
277
|
+
return credits.contents.map((entry) => ({
|
|
278
|
+
partyId: entry.key,
|
|
279
|
+
displayName: entry.value.display_name,
|
|
280
|
+
roles: entry.value.roles.map(roleLabel),
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
// `name()` semantics: the `$kind` is the canonical PascalCase token; `Custom`
|
|
284
|
+
// carries the user-supplied name in its payload.
|
|
285
|
+
function compositionRoleLabel(role) {
|
|
286
|
+
return role.$kind === "Custom" ? role.Custom : role.$kind;
|
|
287
|
+
}
|
|
288
|
+
function releaseRoleLabel(role) {
|
|
289
|
+
return role.$kind;
|
|
290
|
+
}
|
|
291
|
+
// `name()` semantics plus the recording extras: the instrument (for
|
|
292
|
+
// `Instrumentalist`) and the optional level, both surfaced into the label.
|
|
293
|
+
function recordingRoleLabel(role) {
|
|
294
|
+
let base;
|
|
295
|
+
let level = null;
|
|
296
|
+
switch (role.$kind) {
|
|
297
|
+
case "Instrumentalist": {
|
|
298
|
+
const [instrument, lvl] = role.Instrumentalist;
|
|
299
|
+
base = `Instrumentalist: ${instrument}`;
|
|
300
|
+
level = lvl;
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
case "Custom": {
|
|
304
|
+
const [name, lvl] = role.Custom;
|
|
305
|
+
base = name;
|
|
306
|
+
level = lvl;
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
case "ArtistsAndRepertoire":
|
|
310
|
+
case "Copyist":
|
|
311
|
+
base = role.$kind;
|
|
312
|
+
break;
|
|
313
|
+
default: {
|
|
314
|
+
// A leveled variant's payload is `Option<Level>`: `None` parses to `true`
|
|
315
|
+
// (the unit-payload convention), `Some(level)` to the level enum object.
|
|
316
|
+
base = role.$kind;
|
|
317
|
+
const payload = role[role.$kind];
|
|
318
|
+
level =
|
|
319
|
+
payload && typeof payload === "object" && "$kind" in payload ? payload : null;
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return level ? `${base} (${level.$kind})` : base;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Reads a composition's writing credits (the `composition_credits` extension), or
|
|
327
|
+
* `null` if no credits field is attached.
|
|
328
|
+
*/
|
|
329
|
+
export async function getCompositionCredits(client, compositionId, compositionCreditsPackageId) {
|
|
330
|
+
const content = await fetchCreditsField(client, compositionId, `${compositionCreditsPackageId}::composition_credits::ExtensionKey`, COMPOSITION_CREDITS_KEY_BYTES);
|
|
331
|
+
if (!content)
|
|
332
|
+
return null;
|
|
333
|
+
return creditViews(CompositionCreditsField.parse(content).value.credits, compositionRoleLabel);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Reads a recording's credits plus its primary/featured artist party ids (the
|
|
337
|
+
* `recording_credits` extension), or `null` if no credits field is attached.
|
|
338
|
+
*/
|
|
339
|
+
export async function getRecordingCredits(client, recordingId, recordingCreditsPackageId) {
|
|
340
|
+
const content = await fetchCreditsField(client, recordingId, `${recordingCreditsPackageId}::recording_credits::ExtensionKey`, RECORDING_CREDITS_KEY_BYTES);
|
|
341
|
+
if (!content)
|
|
342
|
+
return null;
|
|
343
|
+
const value = RecordingCreditsField.parse(content).value;
|
|
344
|
+
return {
|
|
345
|
+
credits: creditViews(value.credits, recordingRoleLabel),
|
|
346
|
+
primaryArtistIds: value.primary_artist_ids.contents,
|
|
347
|
+
featuredArtistIds: value.featured_artist_ids.contents,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Reads a release's top-line billing credits (the `release_credits` extension), or
|
|
352
|
+
* `null` if no credits field is attached. Each credit has exactly one role.
|
|
353
|
+
*/
|
|
354
|
+
export async function getReleaseCredits(client, releaseId, releaseCreditsPackageId) {
|
|
355
|
+
const content = await fetchCreditsField(client, releaseId, `${releaseCreditsPackageId}::release_credits::ExtensionKey`, RELEASE_CREDITS_KEY_BYTES);
|
|
356
|
+
if (!content)
|
|
357
|
+
return null;
|
|
358
|
+
return creditViews(ReleaseCreditsField.parse(content).value.credits, releaseRoleLabel);
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=credits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credits.js","sourceRoot":"","sources":["../src/credits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
2
|
+
export interface AttachCompositionRoyaltyPoolParams {
|
|
3
|
+
/** The Composition — an in-PTB `createComposition` result, borrowed `&mut`. */
|
|
4
|
+
composition: TransactionObjectArgument;
|
|
5
|
+
/** The CompositionAdminCap, borrowed `&`. */
|
|
6
|
+
adminCap: TransactionObjectArgument;
|
|
7
|
+
/** The composition's share type (the pool's `Share` phantom = CompositionShare). */
|
|
8
|
+
compositionShareType: string;
|
|
9
|
+
/** Fully-qualified coin type the pool accumulates (the `Currency` phantom). */
|
|
10
|
+
currency: string;
|
|
11
|
+
compositionRoyaltyPoolPackageId: string;
|
|
12
|
+
royaltyPoolPackageId: string;
|
|
13
|
+
}
|
|
14
|
+
/** Creates a royalty pool for a composition and shares it, appending to `tx`. */
|
|
15
|
+
export declare function attachCompositionRoyaltyPool(tx: Transaction, params: AttachCompositionRoyaltyPoolParams): void;
|
|
16
|
+
export interface AttachRecordingRoyaltyPoolParams {
|
|
17
|
+
/** The Recording — an in-PTB `createRecording` result, borrowed `&mut`. */
|
|
18
|
+
recording: TransactionObjectArgument;
|
|
19
|
+
/** The RecordingAdminCap, borrowed `&`. */
|
|
20
|
+
adminCap: TransactionObjectArgument;
|
|
21
|
+
/** The recording's own share type (the pool's `Share` phantom = RecordingShare). */
|
|
22
|
+
recordingShareType: string;
|
|
23
|
+
/** The parent composition's share type (the recording's `CompositionShare` phantom). */
|
|
24
|
+
compositionShareType: string;
|
|
25
|
+
/** Fully-qualified coin type the pool accumulates (the `Currency` phantom). */
|
|
26
|
+
currency: string;
|
|
27
|
+
recordingRoyaltyPoolPackageId: string;
|
|
28
|
+
royaltyPoolPackageId: string;
|
|
29
|
+
}
|
|
30
|
+
/** Creates a royalty pool for a recording and shares it, appending to `tx`. */
|
|
31
|
+
export declare function attachRecordingRoyaltyPool(tx: Transaction, params: AttachRecordingRoyaltyPoolParams): void;
|
|
32
|
+
//# sourceMappingURL=royalty-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"royalty-pool.d.ts","sourceRoot":"","sources":["../../src/extensions/royalty-pool.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAKvF,MAAM,WAAW,kCAAkC;IACjD,+EAA+E;IAC/E,WAAW,EAAE,yBAAyB,CAAC;IACvC,6CAA6C;IAC7C,QAAQ,EAAE,yBAAyB,CAAC;IACpC,oFAAoF;IACpF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B,EAAE,MAAM,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,iFAAiF;AACjF,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,kCAAkC,GAAG,IAAI,CAe9G;AAED,MAAM,WAAW,gCAAgC;IAC/C,2EAA2E;IAC3E,SAAS,EAAE,yBAAyB,CAAC;IACrC,2CAA2C;IAC3C,QAAQ,EAAE,yBAAyB,CAAC;IACpC,oFAAoF;IACpF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wFAAwF;IACxF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B,EAAE,MAAM,CAAC;IACtC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,gCAAgC,GAAG,IAAI,CAgB1G"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import * as compositionRoyaltyPool from "../contracts/composition_royalty_pool/composition_royalty_pool.js";
|
|
4
|
+
import * as recordingRoyaltyPool from "../contracts/recording_royalty_pool/recording_royalty_pool.js";
|
|
5
|
+
import * as pool from "../contracts/royalty_pool/pool.js";
|
|
6
|
+
/** Creates a royalty pool for a composition and shares it, appending to `tx`. */
|
|
7
|
+
export function attachCompositionRoyaltyPool(tx, params) {
|
|
8
|
+
const created = tx.add(compositionRoyaltyPool.initializePool({
|
|
9
|
+
package: params.compositionRoyaltyPoolPackageId,
|
|
10
|
+
typeArguments: [params.compositionShareType, params.currency],
|
|
11
|
+
arguments: [params.composition, params.adminCap],
|
|
12
|
+
}));
|
|
13
|
+
tx.add(pool.share({
|
|
14
|
+
package: params.royaltyPoolPackageId,
|
|
15
|
+
typeArguments: [params.compositionShareType, params.currency],
|
|
16
|
+
arguments: [created],
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
/** Creates a royalty pool for a recording and shares it, appending to `tx`. */
|
|
20
|
+
export function attachRecordingRoyaltyPool(tx, params) {
|
|
21
|
+
const created = tx.add(recordingRoyaltyPool.initializePool({
|
|
22
|
+
package: params.recordingRoyaltyPoolPackageId,
|
|
23
|
+
typeArguments: [params.recordingShareType, params.compositionShareType, params.currency],
|
|
24
|
+
arguments: [params.recording, params.adminCap],
|
|
25
|
+
}));
|
|
26
|
+
// The pool is RoyaltyPool<RecordingShare, Currency> — Share is the recording's own share type.
|
|
27
|
+
tx.add(pool.share({
|
|
28
|
+
package: params.royaltyPoolPackageId,
|
|
29
|
+
typeArguments: [params.recordingShareType, params.currency],
|
|
30
|
+
arguments: [created],
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=royalty-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"royalty-pool.js","sourceRoot":"","sources":["../../src/extensions/royalty-pool.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAqBtC,OAAO,KAAK,sBAAsB,MAAM,mEAAmE,CAAC;AAC5G,OAAO,KAAK,oBAAoB,MAAM,+DAA+D,CAAC;AACtG,OAAO,KAAK,IAAI,MAAM,mCAAmC,CAAC;AAe1D,iFAAiF;AACjF,MAAM,UAAU,4BAA4B,CAAC,EAAe,EAAE,MAA0C;IACtG,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CACpB,sBAAsB,CAAC,cAAc,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,+BAA+B;QAC/C,aAAa,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC7D,SAAS,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;KACjD,CAAC,CACH,CAAC;IACF,EAAE,CAAC,GAAG,CACJ,IAAI,CAAC,KAAK,CAAC;QACT,OAAO,EAAE,MAAM,CAAC,oBAAoB;QACpC,aAAa,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC7D,SAAS,EAAE,CAAC,OAAO,CAAC;KACrB,CAAC,CACH,CAAC;AACJ,CAAC;AAiBD,+EAA+E;AAC/E,MAAM,UAAU,0BAA0B,CAAC,EAAe,EAAE,MAAwC;IAClG,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CACpB,oBAAoB,CAAC,cAAc,CAAC;QAClC,OAAO,EAAE,MAAM,CAAC,6BAA6B;QAC7C,aAAa,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC;QACxF,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;KAC/C,CAAC,CACH,CAAC;IACF,+FAA+F;IAC/F,EAAE,CAAC,GAAG,CACJ,IAAI,CAAC,KAAK,CAAC;QACT,OAAO,EAAE,MAAM,CAAC,oBAAoB;QACpC,aAAa,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC3D,SAAS,EAAE,CAAC,OAAO,CAAC;KACrB,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,4 +7,8 @@ export * from "./share.ts";
|
|
|
7
7
|
export * from "./share-template.ts";
|
|
8
8
|
export * from "./release-graph.ts";
|
|
9
9
|
export * from "./catalog.ts";
|
|
10
|
+
export * from "./credits.ts";
|
|
11
|
+
export * from "./cover.ts";
|
|
12
|
+
export * from "./extensions/royalty-pool.ts";
|
|
13
|
+
export * as contracts from "./contracts.ts";
|
|
10
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAI7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAG7C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,13 +7,20 @@
|
|
|
7
7
|
//
|
|
8
8
|
// @misonetwork/* PROTOCOL — Composition, Recording, Release. The open layer
|
|
9
9
|
// anyone can build on, and nobody needs Miso's permission to use.
|
|
10
|
-
// @misofm/* PLATFORM — Pressing, Listing, Record
|
|
11
|
-
//
|
|
12
|
-
// a
|
|
10
|
+
// @misofm/* PLATFORM — Pressing, Listing, Record, and the first-party
|
|
11
|
+
// EXTENSIONS. How MISO sells copies of a release, and the
|
|
12
|
+
// opinions it attaches to a work along the way.
|
|
13
13
|
//
|
|
14
14
|
// A release is protocol. Pressing a record off it and selling that record is
|
|
15
15
|
// platform. Keeping the split at the package boundary is what stops the protocol
|
|
16
16
|
// from quietly growing a storefront.
|
|
17
|
+
//
|
|
18
|
+
// Extensions live on this side of the line for the same reason. An extension is
|
|
19
|
+
// not part of what a Composition or Recording IS — it is a choice Miso makes
|
|
20
|
+
// about how to describe one (who gets credited and in what vocabulary, what the
|
|
21
|
+
// cover looks like, whether royalties accumulate in a pool). The protocol gives
|
|
22
|
+
// extensions a `&mut UID` hook and stops there; every opinion about what to hang
|
|
23
|
+
// off it is business logic, and business logic ships from the platform package.
|
|
17
24
|
// The recommended entry point is the client extension (see ./client.ts); the bare
|
|
18
25
|
// builders and readers stay exported for callers that hold ids themselves.
|
|
19
26
|
export { misoPlatform, MisoPlatformClient } from "./client.js";
|
|
@@ -24,4 +31,11 @@ export * from "./share.js";
|
|
|
24
31
|
export * from "./share-template.js";
|
|
25
32
|
export * from "./release-graph.js";
|
|
26
33
|
export * from "./catalog.js";
|
|
34
|
+
// First-party extensions — attached to a protocol work via its cap-gated
|
|
35
|
+
// `uid_mut` hook.
|
|
36
|
+
export * from "./credits.js";
|
|
37
|
+
export * from "./cover.js";
|
|
38
|
+
export * from "./extensions/royalty-pool.js";
|
|
39
|
+
// Generated, ABI-bound bindings (BCS structs + type-safe Move calls).
|
|
40
|
+
export * as contracts from "./contracts.js";
|
|
27
41
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAEtC,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,EAAE;AACF,+EAA+E;AAC/E,oFAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAEtC,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,EAAE;AACF,+EAA+E;AAC/E,oFAAoF;AACpF,8EAA8E;AAC9E,4EAA4E;AAC5E,kEAAkE;AAClE,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,qCAAqC;AACrC,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAEhF,kFAAkF;AAClF,2EAA2E;AAC3E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/D,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAE7B,yEAAyE;AACzE,kBAAkB;AAClB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAE7C,sEAAsE;AACtE,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAgBA,kEAAkE;AAClE,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,WAAW,sBAAsB,CAAC"}
|
package/dist/internal.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// Internal shared helpers (deliberately NOT exported from the package root).
|
|
4
|
+
//
|
|
5
|
+
// PTB building blocks — the `0x1::option` move-call targets used when a generated
|
|
6
|
+
// call needs an `Option` argument built inline. Consumed by `./cover` and
|
|
7
|
+
// `./credits`.
|
|
8
|
+
//
|
|
9
|
+
// These came over from `@misonetwork/sdk`'s own private `internal.ts` when the
|
|
10
|
+
// extension surface moved here. They were NOT promoted to that package's public
|
|
11
|
+
// API to make them reachable: they are two literal Move function targets from the
|
|
12
|
+
// standard library, so re-deriving them costs nothing, whereas exporting them
|
|
13
|
+
// would widen the protocol SDK's public surface — and therefore its compatibility
|
|
14
|
+
// promise — for no benefit.
|
|
15
|
+
/** `0x1::option::none` / `0x1::option::some` moveCall targets. */
|
|
16
|
+
export const OPTION_NONE = "0x1::option::none";
|
|
17
|
+
export const OPTION_SOME = "0x1::option::some";
|
|
18
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAEtC,6EAA6E;AAC7E,EAAE;AACF,kFAAkF;AAClF,0EAA0E;AAC1E,eAAe;AACf,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,kFAAkF;AAClF,8EAA8E;AAC9E,kFAAkF;AAClF,4BAA4B;AAE5B,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-graph.d.ts","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"release-graph.d.ts","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIzF,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,CAAC;AAKtE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAQD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAmIhG"}
|
package/dist/release-graph.js
CHANGED
|
@@ -21,11 +21,12 @@
|
|
|
21
21
|
//
|
|
22
22
|
// This is the whole-graph orchestration half of the opinionated publish flow —
|
|
23
23
|
// it composes `@misonetwork/sdk`'s bare `composition`/`recording`/`deal`/`track`/
|
|
24
|
-
// `release` call bindings
|
|
25
|
-
// `
|
|
26
|
-
//
|
|
24
|
+
// `release` call bindings and its `createRelease` primitive with this package's
|
|
25
|
+
// own `disperseShares`/`finalizeRelease` and royalty-pool extension helpers, into
|
|
26
|
+
// one PTB.
|
|
27
27
|
import { Transaction } from "@mysten/sui/transactions";
|
|
28
|
-
import { contracts,
|
|
28
|
+
import { contracts, createRelease, PROTOCOL_MAX_ROYALTY_RATE_BPS } from "@misonetwork/sdk";
|
|
29
|
+
import { attachCompositionRoyaltyPool, attachRecordingRoyaltyPool } from "./extensions/royalty-pool.js";
|
|
29
30
|
import { disperseShares, finalizeRelease } from "./transactions.js";
|
|
30
31
|
const { composition, recording, deal, track, release } = contracts;
|
|
31
32
|
const isFresh = (t) => "recordingIndex" in t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-graph.js","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAEtC,gFAAgF;AAChF,gFAAgF;AAChF,6EAA6E;AAC7E,gFAAgF;AAChF,EAAE;AACF,mFAAmF;AACnF,6EAA6E;AAC7E,qFAAqF;AACrF,kFAAkF;AAClF,qDAAqD;AACrD,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,uEAAuE;AACvE,sDAAsD;AACtD,EAAE;AACF,+EAA+E;AAC/E,kFAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"release-graph.js","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"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"}
|