@misofm/platform 0.0.0 → 0.18.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.
Files changed (168) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +686 -3
  3. package/dist/auth.d.ts +73 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +193 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/catalog.d.ts +48 -0
  8. package/dist/catalog.d.ts.map +1 -0
  9. package/dist/catalog.js +92 -0
  10. package/dist/catalog.js.map +1 -0
  11. package/dist/client.d.ts +462 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +788 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/contracts.d.ts +34 -0
  16. package/dist/contracts.d.ts.map +1 -0
  17. package/dist/contracts.js +49 -0
  18. package/dist/contracts.js.map +1 -0
  19. package/dist/cover.d.ts +69 -0
  20. package/dist/cover.d.ts.map +1 -0
  21. package/dist/cover.js +132 -0
  22. package/dist/cover.js.map +1 -0
  23. package/dist/credits.d.ts +200 -0
  24. package/dist/credits.d.ts.map +1 -0
  25. package/dist/credits.js +465 -0
  26. package/dist/credits.js.map +1 -0
  27. package/dist/deployments.d.ts +224 -0
  28. package/dist/deployments.d.ts.map +1 -0
  29. package/dist/deployments.js +177 -0
  30. package/dist/deployments.js.map +1 -0
  31. package/dist/execute.d.ts +30 -0
  32. package/dist/execute.d.ts.map +1 -0
  33. package/dist/execute.js +31 -0
  34. package/dist/execute.js.map +1 -0
  35. package/dist/index.d.ts +21 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +52 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/internal.d.ts +13 -0
  40. package/dist/internal.d.ts.map +1 -0
  41. package/dist/internal.js +41 -0
  42. package/dist/internal.js.map +1 -0
  43. package/dist/mix.d.ts +144 -0
  44. package/dist/mix.d.ts.map +1 -0
  45. package/dist/mix.js +656 -0
  46. package/dist/mix.js.map +1 -0
  47. package/dist/pressing.d.ts +137 -0
  48. package/dist/pressing.d.ts.map +1 -0
  49. package/dist/pressing.js +390 -0
  50. package/dist/pressing.js.map +1 -0
  51. package/dist/publication.d.ts +216 -0
  52. package/dist/publication.d.ts.map +1 -0
  53. package/dist/publication.js +872 -0
  54. package/dist/publication.js.map +1 -0
  55. package/dist/queries.d.ts +2 -0
  56. package/dist/queries.d.ts.map +1 -0
  57. package/dist/queries.js +8 -0
  58. package/dist/queries.js.map +1 -0
  59. package/dist/read/artist.d.ts +18 -0
  60. package/dist/read/artist.d.ts.map +1 -0
  61. package/dist/read/artist.js +86 -0
  62. package/dist/read/artist.js.map +1 -0
  63. package/dist/read/catalog.d.ts +93 -0
  64. package/dist/read/catalog.d.ts.map +1 -0
  65. package/dist/read/catalog.js +441 -0
  66. package/dist/read/catalog.js.map +1 -0
  67. package/dist/read/client.d.ts +37 -0
  68. package/dist/read/client.d.ts.map +1 -0
  69. package/dist/read/client.js +50 -0
  70. package/dist/read/client.js.map +1 -0
  71. package/dist/read/config.d.ts +68 -0
  72. package/dist/read/config.d.ts.map +1 -0
  73. package/dist/read/config.js +63 -0
  74. package/dist/read/config.js.map +1 -0
  75. package/dist/read/genres.d.ts +7 -0
  76. package/dist/read/genres.d.ts.map +1 -0
  77. package/dist/read/genres.js +38 -0
  78. package/dist/read/genres.js.map +1 -0
  79. package/dist/read/index.d.ts +14 -0
  80. package/dist/read/index.d.ts.map +1 -0
  81. package/dist/read/index.js +23 -0
  82. package/dist/read/index.js.map +1 -0
  83. package/dist/read/internal/scalars.d.ts +23 -0
  84. package/dist/read/internal/scalars.d.ts.map +1 -0
  85. package/dist/read/internal/scalars.js +57 -0
  86. package/dist/read/internal/scalars.js.map +1 -0
  87. package/dist/read/internal/walrus.d.ts +6 -0
  88. package/dist/read/internal/walrus.d.ts.map +1 -0
  89. package/dist/read/internal/walrus.js +29 -0
  90. package/dist/read/internal/walrus.js.map +1 -0
  91. package/dist/read/receipts.d.ts +41 -0
  92. package/dist/read/receipts.d.ts.map +1 -0
  93. package/dist/read/receipts.js +398 -0
  94. package/dist/read/receipts.js.map +1 -0
  95. package/dist/read/types.d.ts +328 -0
  96. package/dist/read/types.d.ts.map +1 -0
  97. package/dist/read/types.js +21 -0
  98. package/dist/read/types.js.map +1 -0
  99. package/dist/read/wallet.d.ts +74 -0
  100. package/dist/read/wallet.d.ts.map +1 -0
  101. package/dist/read/wallet.js +578 -0
  102. package/dist/read/wallet.js.map +1 -0
  103. package/dist/read/works.d.ts +29 -0
  104. package/dist/read/works.d.ts.map +1 -0
  105. package/dist/read/works.js +191 -0
  106. package/dist/read/works.js.map +1 -0
  107. package/dist/recording-extensions.d.ts +62 -0
  108. package/dist/recording-extensions.d.ts.map +1 -0
  109. package/dist/recording-extensions.js +159 -0
  110. package/dist/recording-extensions.js.map +1 -0
  111. package/dist/release-extensions.d.ts +93 -0
  112. package/dist/release-extensions.d.ts.map +1 -0
  113. package/dist/release-extensions.js +190 -0
  114. package/dist/release-extensions.js.map +1 -0
  115. package/dist/release-graph.d.ts +65 -0
  116. package/dist/release-graph.d.ts.map +1 -0
  117. package/dist/release-graph.js +136 -0
  118. package/dist/release-graph.js.map +1 -0
  119. package/dist/share-template.d.ts +3 -0
  120. package/dist/share-template.d.ts.map +1 -0
  121. package/dist/share-template.js +46 -0
  122. package/dist/share-template.js.map +1 -0
  123. package/dist/share.d.ts +67 -0
  124. package/dist/share.d.ts.map +1 -0
  125. package/dist/share.js +157 -0
  126. package/dist/share.js.map +1 -0
  127. package/dist/transactions.d.ts +216 -0
  128. package/dist/transactions.d.ts.map +1 -0
  129. package/dist/transactions.js +314 -0
  130. package/dist/transactions.js.map +1 -0
  131. package/dist/vault.d.ts +364 -0
  132. package/dist/vault.d.ts.map +1 -0
  133. package/dist/vault.js +507 -0
  134. package/dist/vault.js.map +1 -0
  135. package/package.json +145 -5
  136. package/src/auth.ts +275 -0
  137. package/src/catalog.ts +189 -0
  138. package/src/client.ts +1320 -0
  139. package/src/contracts.ts +54 -0
  140. package/src/cover.ts +240 -0
  141. package/src/credits.ts +906 -0
  142. package/src/deployments.ts +357 -0
  143. package/src/execute.ts +52 -0
  144. package/src/index.ts +69 -0
  145. package/src/internal.ts +46 -0
  146. package/src/mix.ts +910 -0
  147. package/src/pressing.ts +705 -0
  148. package/src/publication.ts +1214 -0
  149. package/src/queries.ts +9 -0
  150. package/src/read/artist.ts +118 -0
  151. package/src/read/catalog.ts +668 -0
  152. package/src/read/client.ts +87 -0
  153. package/src/read/config.ts +138 -0
  154. package/src/read/genres.ts +37 -0
  155. package/src/read/index.ts +85 -0
  156. package/src/read/internal/scalars.ts +59 -0
  157. package/src/read/internal/walrus.ts +42 -0
  158. package/src/read/receipts.ts +476 -0
  159. package/src/read/types.ts +415 -0
  160. package/src/read/wallet.ts +687 -0
  161. package/src/read/works.ts +297 -0
  162. package/src/recording-extensions.ts +256 -0
  163. package/src/release-extensions.ts +311 -0
  164. package/src/release-graph.ts +219 -0
  165. package/src/share-template.ts +55 -0
  166. package/src/share.ts +261 -0
  167. package/src/transactions.ts +542 -0
  168. package/src/vault.ts +1009 -0
@@ -0,0 +1,190 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { bcs } from "@mysten/sui/bcs";
4
+ import { deriveDynamicFieldID, deriveObjectID } from "@mysten/sui/utils";
5
+ import * as genre from "@misofm/protocol/contracts/genre/genre";
6
+ import * as releaseDescription from "@misofm/protocol/contracts/release_description/release_description";
7
+ import * as releaseDspLink from "@misofm/protocol/contracts/release_dsp_link/release_dsp_link";
8
+ import * as releaseGenre from "@misofm/protocol/contracts/release_genre/release_genre";
9
+ import * as releaseKind from "@misofm/protocol/contracts/release_kind/release_kind";
10
+ import { asU64, directAdminCap, invokeWithAdminCap } from "./vault.js";
11
+ function object(tx, value) {
12
+ return typeof value === "string" ? tx.object(value) : value;
13
+ }
14
+ function authority(p) {
15
+ if (p.authority !== undefined)
16
+ return p.authority;
17
+ if (p.releaseAdminCapId !== undefined)
18
+ return directAdminCap(p.releaseAdminCapId);
19
+ throw new Error("release authority is required");
20
+ }
21
+ /** Attach the release's self-declared kind (for example "EP" or "Mixtape"). */
22
+ export function setReleaseKind(p) {
23
+ const bytes = new TextEncoder().encode(p.kind).length;
24
+ if (bytes === 0)
25
+ throw new Error("setReleaseKind: kind must not be empty");
26
+ if (bytes > 32) {
27
+ throw new Error(`setReleaseKind: kind must be at most 32 UTF-8 bytes (got ${bytes})`);
28
+ }
29
+ return (tx) => {
30
+ invokeWithAdminCap(tx, authority(p), {
31
+ target: `${p.releaseKindPackageId}::release_kind::set_kind`,
32
+ arguments: [object(tx, p.releaseId), tx.pure.string(p.kind)],
33
+ adminCapIndex: 1,
34
+ });
35
+ };
36
+ }
37
+ const ReleaseKindField = bcs.struct("Field", {
38
+ id: bcs.Address,
39
+ name: releaseKind.ExtensionKey,
40
+ value: bcs.string(),
41
+ });
42
+ const RELEASE_KIND_KEY_BYTES = releaseKind.ExtensionKey.serialize([
43
+ false,
44
+ ]).toBytes();
45
+ /** Deterministic dynamic-field id for a Release's optional self-declared kind. */
46
+ export function releaseKindFieldId(releaseId, releaseKindPackageId) {
47
+ return deriveDynamicFieldID(releaseId, `${releaseKindPackageId}::release_kind::ExtensionKey`, RELEASE_KIND_KEY_BYTES);
48
+ }
49
+ /** Parse the dynamic field storing `Option<String>` as its present string. */
50
+ export function parseReleaseKindContent(content) {
51
+ return ReleaseKindField.parse(content).value;
52
+ }
53
+ /** Read a Release's self-declared kind, or `null` when the extension is absent. */
54
+ export async function getReleaseKind(client, releaseId, releaseKindPackageId) {
55
+ const { objects } = await client.core.getObjects({
56
+ objectIds: [releaseKindFieldId(releaseId, releaseKindPackageId)],
57
+ include: { content: true },
58
+ });
59
+ const object = objects[0];
60
+ if (!object || object instanceof Error || !object.content)
61
+ return null;
62
+ return parseReleaseKindContent(object.content);
63
+ }
64
+ /** Attach the release's editorial description. */
65
+ export function setReleaseDescription(p) {
66
+ const bytes = new TextEncoder().encode(p.description).length;
67
+ if (bytes === 0) {
68
+ throw new Error("setReleaseDescription: description must not be empty");
69
+ }
70
+ if (bytes > 8192) {
71
+ throw new Error(`setReleaseDescription: description must be at most 8192 UTF-8 bytes (got ${bytes})`);
72
+ }
73
+ return (tx) => {
74
+ invokeWithAdminCap(tx, authority(p), {
75
+ target: `${p.releaseDescriptionPackageId}::release_description::set_description`,
76
+ arguments: [object(tx, p.releaseId), tx.pure.string(p.description)],
77
+ adminCapIndex: 1,
78
+ });
79
+ };
80
+ }
81
+ const GENRE_NAME_RE = /^[A-Z]+(?:_[A-Z]+)*$/;
82
+ /** Validate the canonical on-chain genre vocabulary spelling. */
83
+ export function assertCanonicalGenreName(name) {
84
+ const bytes = new TextEncoder().encode(name).length;
85
+ if (bytes === 0 || bytes > 64 || !GENRE_NAME_RE.test(name)) {
86
+ throw new Error(`Genre name must be 1-64 bytes of uppercase A-Z and underscores; got ${JSON.stringify(name)}`);
87
+ }
88
+ }
89
+ /** Derive the immutable Genre object address for a canonical vocabulary name.
90
+ * `genrePackageId` must be the genre package's defining (original publish)
91
+ * address — the on-chain derivation hashes type names with defining IDs. */
92
+ export function deriveGenreAddress(genreRegistryId, genrePackageId, canonicalName) {
93
+ assertCanonicalGenreName(canonicalName);
94
+ return deriveObjectID(genreRegistryId, `${genrePackageId}::genre::GenreKey`, genre.GenreKey.serialize([canonicalName]).toBytes());
95
+ }
96
+ /** Attach primary/secondary release genres and optional per-track overrides. */
97
+ export function setReleaseGenres(p) {
98
+ return (tx) => {
99
+ invokeWithAdminCap(tx, authority(p), {
100
+ target: `${p.releaseGenrePackageId}::release_genre::set_primary_genre`,
101
+ arguments: [object(tx, p.releaseId), tx.object(p.primaryGenreId)],
102
+ adminCapIndex: 1,
103
+ });
104
+ for (const genreId of p.secondaryGenreIds ?? []) {
105
+ invokeWithAdminCap(tx, authority(p), {
106
+ target: `${p.releaseGenrePackageId}::release_genre::add_secondary_genre`,
107
+ arguments: [object(tx, p.releaseId), tx.object(genreId)],
108
+ adminCapIndex: 1,
109
+ });
110
+ }
111
+ for (const assignment of p.trackPrimaryGenres ?? []) {
112
+ invokeWithAdminCap(tx, authority(p), {
113
+ target: `${p.releaseGenrePackageId}::release_genre::set_track_primary_genre`,
114
+ arguments: [
115
+ object(tx, p.releaseId),
116
+ tx.pure.u64(asU64("trackIndex", assignment.trackIndex)),
117
+ tx.object(assignment.genreId),
118
+ ],
119
+ adminCapIndex: 1,
120
+ });
121
+ }
122
+ };
123
+ }
124
+ function buildDspLink(tx, packageId, link) {
125
+ switch (link.platform) {
126
+ case "Spotify":
127
+ return tx.add(releaseDspLink.newSpotify({ package: packageId, arguments: [link.id] }));
128
+ case "AppleMusic":
129
+ return tx.add(link.trackId === undefined
130
+ ? releaseDspLink.newAppleMusicAlbum({
131
+ package: packageId,
132
+ arguments: [link.storefront, link.albumId],
133
+ })
134
+ : releaseDspLink.newAppleMusicTrack({
135
+ package: packageId,
136
+ arguments: [link.storefront, link.albumId, link.trackId],
137
+ }));
138
+ case "AmazonMusic":
139
+ return tx.add(link.trackId === undefined
140
+ ? releaseDspLink.newAmazonMusicAlbum({
141
+ package: packageId,
142
+ arguments: [link.albumId],
143
+ })
144
+ : releaseDspLink.newAmazonMusicTrack({
145
+ package: packageId,
146
+ arguments: [link.albumId, link.trackId],
147
+ }));
148
+ case "Bandcamp":
149
+ return tx.add(releaseDspLink.newBandcamp({
150
+ package: packageId,
151
+ arguments: [link.subdomain, link.slug],
152
+ }));
153
+ case "Deezer":
154
+ return tx.add(releaseDspLink.newDeezer({ package: packageId, arguments: [link.id] }));
155
+ case "SoundCloud":
156
+ return tx.add(releaseDspLink.newSoundcloud({
157
+ package: packageId,
158
+ arguments: [link.user, link.slug],
159
+ }));
160
+ case "Tidal":
161
+ return tx.add(releaseDspLink.newTidal({ package: packageId, arguments: [link.id] }));
162
+ case "YouTubeMusic":
163
+ return tx.add(releaseDspLink.newYoutubeMusic({
164
+ package: packageId,
165
+ arguments: [link.id],
166
+ }));
167
+ }
168
+ }
169
+ /** Attach release-level and per-track DSP links. */
170
+ export function setReleaseDspLinks(p) {
171
+ return (tx) => {
172
+ for (const link of p.releaseLinks ?? []) {
173
+ const value = buildDspLink(tx, p.releaseDspLinkPackageId, link);
174
+ invokeWithAdminCap(tx, authority(p), {
175
+ target: `${p.releaseDspLinkPackageId}::release_dsp_link::set_release_link`,
176
+ arguments: [object(tx, p.releaseId), value],
177
+ adminCapIndex: 1,
178
+ });
179
+ }
180
+ for (const item of p.trackLinks ?? []) {
181
+ const value = buildDspLink(tx, p.releaseDspLinkPackageId, item.link);
182
+ invokeWithAdminCap(tx, authority(p), {
183
+ target: `${p.releaseDspLinkPackageId}::release_dsp_link::set_track_link`,
184
+ arguments: [object(tx, p.releaseId), tx.pure.u64(asU64("trackIndex", item.trackIndex)), value],
185
+ adminCapIndex: 1,
186
+ });
187
+ }
188
+ };
189
+ }
190
+ //# sourceMappingURL=release-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-extensions.js","sourceRoot":"","sources":["../src/release-extensions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { Transaction } from "@mysten/sui/transactions";
2
+ import { type AdminCustodyInput, type RecordingAuthorityInput, type ShareRecipient } from "./transactions.ts";
3
+ interface CompositionNodeBase {
4
+ shareType: string;
5
+ shareCurrencyId: string;
6
+ shareTreasuryCapId: string;
7
+ title: string;
8
+ royaltyRateBps: number;
9
+ shareRecipients: ShareRecipient[];
10
+ }
11
+ export type CompositionNode = CompositionNodeBase & AdminCustodyInput;
12
+ interface RecordingNodeBase {
13
+ shareType: string;
14
+ shareCurrencyId: string;
15
+ shareTreasuryCapId: string;
16
+ /** The parent composition's share type. */
17
+ compositionShareType: string;
18
+ shareRecipients: ShareRecipient[];
19
+ }
20
+ type RecordingParent = {
21
+ readonly parentCompositionIndex: number;
22
+ readonly parentCompositionId?: never;
23
+ } | {
24
+ readonly parentCompositionIndex?: never;
25
+ readonly parentCompositionId: string;
26
+ };
27
+ export type RecordingNode = RecordingNodeBase & RecordingParent & AdminCustodyInput;
28
+ /** A track whose recording is created in THIS PTB. */
29
+ export interface FreshTrackNode {
30
+ /** Index into `recordings[]`. */
31
+ recordingIndex: number;
32
+ splitBps: number;
33
+ }
34
+ /**
35
+ * A track over an EXISTING recording, authorized by its admin cap held by the
36
+ * sender. This can coexist with recordings created in this PTB.
37
+ */
38
+ interface CapTrackNodeBase {
39
+ recordingId: string;
40
+ recordingShareType: string;
41
+ compositionShareType: string;
42
+ splitBps: number;
43
+ }
44
+ export type CapTrackNode = CapTrackNodeBase & RecordingAuthorityInput;
45
+ export type TrackNode = FreshTrackNode | CapTrackNode;
46
+ interface ReleaseNodeBase {
47
+ title: string;
48
+ /** u256 nonce as a decimal string (deterministic release id). */
49
+ nonce: string;
50
+ releaseRegistryId: string;
51
+ /** The ordered tracklist. Display grouping (discs/sides) is extension data. */
52
+ tracks: TrackNode[];
53
+ }
54
+ export type ReleaseNode = ReleaseNodeBase & AdminCustodyInput;
55
+ export interface PublishReleaseGraphParams {
56
+ compositions: CompositionNode[];
57
+ recordings: RecordingNode[];
58
+ release?: ReleaseNode;
59
+ misoPackageId: string;
60
+ minatoPackageId: string;
61
+ }
62
+ /** Builds the entire graph in a single transaction (see file header for ordering). */
63
+ export declare function publishReleaseGraph(params: PublishReleaseGraphParams): (tx: Transaction) => void;
64
+ export {};
65
+ //# sourceMappingURL=release-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-graph.d.ts","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAA2F,KAAK,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKvM,UAAU,mBAAmB;IAC3B,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;CACnC;AACD,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAEtE,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AACD,KAAK,eAAe,GAChB;IAAE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAA;CAAE,GACjF;IAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAEpF,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;AAUtD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AACD,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE9D,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,CA4GhG"}
@@ -0,0 +1,136 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // Single-PTB publisher for a whole release graph: creates every composition and
4
+ // recording, derives the release id ON-CHAIN
5
+ // (so recordings need not be shared first), builds the tracks/release,
6
+ // then shares everything and transfers the admin caps — all in ONE transaction.
7
+ //
8
+ // Share currencies must already be published + initialized (their Currency objects
9
+ // shared on-chain); their ids/types are passed in. Ordering is load-bearing:
10
+ // 1. composition::new → recording::new(&comp) (borrow-before-share)
11
+ // 2. release::derive_target_release_id(<recording::id results>) →
12
+ // track::new(cap, &rec, derivedId, split) → release::new(registry, …)
13
+ // 3. publish (share) comps + recs + release, disperse supply, transfer caps
14
+ // Steps 1–2 borrow the works; step 3 consumes them into share_object.
15
+ //
16
+ // Release tracks come in two shapes (see TrackNode): recordings created in THIS
17
+ // PTB, and existing recordings authorized by their admin cap.
18
+ //
19
+ // This is the whole-graph orchestration half of the opinionated publish flow —
20
+ // it composes `@misofm/protocol`'s bare `composition`/`recording`/`track`/
21
+ // `release` core call bindings with its
22
+ // own `disperseShares`/`finalizeRelease` helpers into one PTB. Royalty pools are
23
+ // installed later through an admin-cap Vault plugin; the retired raw-cap helper
24
+ // is intentionally not used here.
25
+ import { Transaction } from "@mysten/sui/transactions";
26
+ import { contracts } from "@misofm/protocol";
27
+ import { custodyOf, disperseShares, finalizeRelease, recordingAuthorityOf, requiredCommandResult } from "./transactions.js";
28
+ import { disposeNewAdminCap, invokeWithAdminCap } from "./vault.js";
29
+ const { composition, recording, track } = contracts;
30
+ const isFresh = (t) => "recordingIndex" in t;
31
+ function requiredAt(items, index, description) {
32
+ const item = items[index];
33
+ if (item === undefined)
34
+ throw new Error(`${description} index ${index} is out of range`);
35
+ return item;
36
+ }
37
+ /** Builds the entire graph in a single transaction (see file header for ordering). */
38
+ export function publishReleaseGraph(params) {
39
+ const { misoPackageId: pkg, minatoPackageId } = params;
40
+ return (tx) => {
41
+ // ── 1) Create every composition, then every recording (borrow-before-share) ──
42
+ const comps = params.compositions.map((c) => {
43
+ const r = tx.add(composition._new({
44
+ package: pkg,
45
+ typeArguments: [c.shareType],
46
+ arguments: [tx.pure.string(c.title), tx.pure.u16(c.royaltyRateBps), tx.object(c.shareCurrencyId), tx.object(c.shareTreasuryCapId)],
47
+ }));
48
+ const parts = {
49
+ work: requiredCommandResult(r, 0, "composition::_new"),
50
+ adminCap: requiredCommandResult(r, 1, "composition::_new"),
51
+ balance: requiredCommandResult(r, 2, "composition::_new"),
52
+ };
53
+ return parts;
54
+ });
55
+ const recTypeArgs = (i) => {
56
+ const n = requiredAt(params.recordings, i, "recording");
57
+ return [n.shareType, n.compositionShareType];
58
+ };
59
+ const recs = params.recordings.map((rec, i) => {
60
+ const parent = rec.parentCompositionIndex !== undefined
61
+ ? requiredAt(comps, rec.parentCompositionIndex, "parent composition").work
62
+ : tx.object(rec.parentCompositionId);
63
+ const typeArgs = recTypeArgs(i);
64
+ const r = tx.add(recording._new({ package: pkg, typeArguments: typeArgs, arguments: [parent, tx.object(rec.shareCurrencyId), tx.object(rec.shareTreasuryCapId)] }));
65
+ const parts = {
66
+ work: requiredCommandResult(r, 0, "recording::_new"),
67
+ adminCap: requiredCommandResult(r, 1, "recording::_new"),
68
+ balance: requiredCommandResult(r, 2, "recording::_new"),
69
+ };
70
+ return parts;
71
+ });
72
+ // ── 2) Release: derive the id on-chain, then tracks → release ──────────
73
+ if (params.release) {
74
+ const rel = params.release;
75
+ const ordered = rel.tracks;
76
+ const idVec = tx.makeMoveVec({
77
+ type: "0x2::object::ID",
78
+ elements: ordered.map((t) => isFresh(t)
79
+ ? tx.moveCall({
80
+ target: "0x2::object::id",
81
+ typeArguments: [
82
+ `${pkg}::recording::Recording<${recTypeArgs(t.recordingIndex).join(",")}>`,
83
+ ],
84
+ arguments: [requiredAt(recs, t.recordingIndex, "fresh recording").work],
85
+ })
86
+ : tx.pure.id(t.recordingId)),
87
+ });
88
+ const splitVec = tx.makeMoveVec({ type: "u64", elements: ordered.map((t) => tx.pure.u64(t.splitBps)) });
89
+ // This returns an ID value (not an object); pass the result straight to
90
+ // `track::new` so every track consents to this exact release target.
91
+ const releaseId = tx.moveCall({
92
+ target: `${pkg}::release::derive_target_release_id`,
93
+ arguments: [tx.object(rel.releaseRegistryId), idVec, splitVec, tx.pure.u256(BigInt(rel.nonce))],
94
+ });
95
+ const trackArgs = ordered.map((t) => {
96
+ if (isFresh(t)) {
97
+ const typeArgs = recTypeArgs(t.recordingIndex);
98
+ const parts = requiredAt(recs, t.recordingIndex, "fresh recording");
99
+ return tx.add(track._new({ package: pkg, typeArguments: typeArgs, arguments: [parts.adminCap, parts.work, releaseId, tx.pure.u16(t.splitBps)] }));
100
+ }
101
+ const typeArgs = [t.recordingShareType, t.compositionShareType];
102
+ const rec = tx.object(t.recordingId);
103
+ return invokeWithAdminCap(tx, recordingAuthorityOf(t), {
104
+ target: `${pkg}::track::new`,
105
+ typeArguments: typeArgs,
106
+ arguments: [rec, releaseId, tx.pure.u16(t.splitBps)],
107
+ adminCapIndex: 0,
108
+ });
109
+ });
110
+ const trackVec = tx.makeMoveVec({ type: `${pkg}::track::Track`, elements: trackArgs });
111
+ const created = tx.moveCall({
112
+ target: `${pkg}::release::new`,
113
+ arguments: [tx.object(rel.releaseRegistryId), tx.pure.string(rel.title), trackVec, tx.pure.u256(BigInt(rel.nonce))],
114
+ });
115
+ const releaseParts = {
116
+ release: requiredCommandResult(created, 0, "release::new"),
117
+ adminCap: requiredCommandResult(created, 1, "release::new"),
118
+ };
119
+ finalizeRelease(tx, { ...releaseParts, adminCustody: custodyOf(rel), misoPackageId: pkg });
120
+ }
121
+ // ── 3) Share every work, disperse its supply, transfer admin caps ──
122
+ params.compositions.forEach((c, i) => {
123
+ const parts = requiredAt(comps, i, "composition");
124
+ disperseShares(tx, minatoPackageId, c.shareType, parts.balance, c.shareRecipients);
125
+ tx.add(composition.publish({ package: pkg, typeArguments: [c.shareType], arguments: [parts.work, parts.adminCap] }));
126
+ disposeNewAdminCap(tx, parts.adminCap, custodyOf(c));
127
+ });
128
+ params.recordings.forEach((rec, i) => {
129
+ const parts = requiredAt(recs, i, "recording");
130
+ tx.add(recording.publish({ package: pkg, typeArguments: recTypeArgs(i), arguments: [parts.work, parts.adminCap] }));
131
+ disperseShares(tx, minatoPackageId, rec.shareType, parts.balance, rec.shareRecipients);
132
+ disposeNewAdminCap(tx, parts.adminCap, custodyOf(rec));
133
+ });
134
+ };
135
+ }
136
+ //# sourceMappingURL=release-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-graph.js","sourceRoot":"","sources":["../src/release-graph.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAEtC,gFAAgF;AAChF,6CAA6C;AAC7C,uEAAuE;AACvE,gFAAgF;AAChF,EAAE;AACF,mFAAmF;AACnF,6EAA6E;AAC7E,uEAAuE;AACvE,oEAAoE;AACpE,2EAA2E;AAC3E,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,gFAAgF;AAChF,8DAA8D;AAC9D,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,wCAAwC;AACxC,iFAAiF;AACjF,gFAAgF;AAChF,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,qBAAqB,EAA6E,MAAM,mBAAmB,CAAC;AACvM,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;AA8CpD,MAAM,OAAO,GAAG,CAAC,CAAY,EAAuB,EAAE,CAAC,gBAAgB,IAAI,CAAC,CAAC;AAE7E,SAAS,UAAU,CAAI,KAAmB,EAAE,KAAa,EAAE,WAAmB;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,UAAU,KAAK,kBAAkB,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC;AACd,CAAC;AA0BD,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CAAC,MAAiC;IACnE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACvD,OAAO,CAAC,EAAE,EAAE,EAAE;QACZ,gFAAgF;QAChF,MAAM,KAAK,GAAY,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CACd,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,GAAG;gBACZ,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5B,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;aACnI,CAAC,CACH,CAAC;YACF,MAAM,KAAK,GAAU;gBACnB,IAAI,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC;gBACtD,QAAQ,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC;gBAC1D,OAAO,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC;aAC1D,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,CAAC,CAAS,EAAoB,EAAE;YAClD,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,MAAM,IAAI,GAAY,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,GAAG,CAAC,sBAAsB,KAAK,SAAS;gBACrD,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC,IAAI;gBAC1E,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CACd,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAClJ,CAAC;YACF,MAAM,KAAK,GAAU;gBACnB,IAAI,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC;gBACpD,QAAQ,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC;gBACxD,OAAO,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC;aACxD,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;YAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC;gBAC3B,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,OAAO,CAAC,CAAC,CAAC;oBACR,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;wBACV,MAAM,EAAE,iBAAiB;wBACzB,aAAa,EAAE;4BACb,GAAG,GAAG,0BAA0B,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;yBAC3E;wBACD,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC;qBACxE,CAAC;oBACJ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAC9B;aACF,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YACxG,wEAAwE;YACxE,qEAAqE;YACrE,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC;gBAC5B,MAAM,EAAE,GAAG,GAAG,qCAAqC;gBACnD,SAAS,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aAChG,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;oBACpE,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpJ,CAAC;gBACD,MAAM,QAAQ,GAAqB,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBAClF,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACrC,OAAO,kBAAkB,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE;oBACrD,MAAM,EAAE,GAAG,GAAG,cAAc;oBAC5B,aAAa,EAAE,QAAQ;oBACvB,SAAS,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACpD,aAAa,EAAE,CAAC;iBACjB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACvF,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;gBAC1B,MAAM,EAAE,GAAG,GAAG,gBAAgB;gBAC9B,SAAS,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aACpH,CAAC,CAAC;YACH,MAAM,YAAY,GAAG;gBACnB,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,CAAC,EAAE,cAAc,CAAC;gBAC1D,QAAQ,EAAE,qBAAqB,CAAC,OAAO,EAAE,CAAC,EAAE,cAAc,CAAC;aAC5D,CAAC;YACF,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,sEAAsE;QACtE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;YAClD,cAAc,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;YACnF,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACrH,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAC/C,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACpH,cAAc,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;YACvF,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PackageBytecode } from "./transactions.ts";
2
+ export declare const SHARE_TEMPLATE: PackageBytecode;
3
+ //# sourceMappingURL=share-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-template.d.ts","sourceRoot":"","sources":["../src/share-template.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAE,eA0C5B,CAAC"}
@@ -0,0 +1,46 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export const SHARE_TEMPLATE = {
4
+ "modules": [
5
+ "oRzrCwYAAAAKAQAOAg4gAy4gBE4EBVJHB5kB1QEI7gJgBs4DNwqFBAYMiwQ4ABEBEgIHAggCCQIPAhMAAggAAQMHAAMEDAEAAQQACAAEAQABAAEFBgQABgUCAAANAAEAARQFBgACCwUEAAQKCgIBAAQOCAkBCAYQAwQABAcDBwUIAQgBCAEHCAMHCAYBCwIBCAAAAQYIBgEFAQoCAQgBAQgABwcIAwIIAQgBCAEIAQcIBgILBAEJAAsCAQkAAgsEAQkABwgGDENvaW5SZWdpc3RyeRNDdXJyZW5jeUluaXRpYWxpemVyBVNoYXJlBlN0cmluZwtUcmVhc3VyeUNhcAlUeENvbnRleHQDVUlEB2FkZHJlc3MEY29pbg1jb2luX3JlZ2lzdHJ5IGZpbmFsaXplX2FuZF9kZWxldGVfbWV0YWRhdGFfY2FwCmZyb21fYnl0ZXMCaWQKaW5pdGlhbGl6ZQxuZXdfY3VycmVuY3kGb2JqZWN0BnNlbmRlcgVzaGFyZQZzdHJpbmcKdHhfY29udGV4dAR1dGY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCgIhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwgAAAAAAAAAAAoCBgVTSEFSRQACAQwIBQABAAABHAoELhEFBwARAiEECAUOCwQBCwMBBwEnCwMxBgcCEQELAAsBCwIKBDgADAULBDgBCwUCAA=="
6
+ ],
7
+ "dependencies": [
8
+ "0x0000000000000000000000000000000000000000000000000000000000000001",
9
+ "0x0000000000000000000000000000000000000000000000000000000000000002"
10
+ ],
11
+ "digest": [
12
+ 191,
13
+ 44,
14
+ 36,
15
+ 112,
16
+ 72,
17
+ 10,
18
+ 163,
19
+ 173,
20
+ 88,
21
+ 79,
22
+ 123,
23
+ 99,
24
+ 33,
25
+ 92,
26
+ 255,
27
+ 215,
28
+ 122,
29
+ 199,
30
+ 22,
31
+ 101,
32
+ 247,
33
+ 141,
34
+ 222,
35
+ 237,
36
+ 187,
37
+ 42,
38
+ 28,
39
+ 13,
40
+ 201,
41
+ 193,
42
+ 173,
43
+ 204
44
+ ]
45
+ };
46
+ //# sourceMappingURL=share-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-template.js","sourceRoot":"","sources":["../src/share-template.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAWtC,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,SAAS,EAAE;QACT,s0BAAs0B;KACv0B;IACD,cAAc,EAAE;QACd,oEAAoE;QACpE,oEAAoE;KACrE;IACD,QAAQ,EAAE;QACR,GAAG;QACH,EAAE;QACF,EAAE;QACF,GAAG;QACH,EAAE;QACF,EAAE;QACF,GAAG;QACH,GAAG;QACH,EAAE;QACF,EAAE;QACF,GAAG;QACH,EAAE;QACF,EAAE;QACF,EAAE;QACF,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,EAAE;QACF,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,EAAE;QACF,EAAE;QACF,EAAE;QACF,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;KACJ;CACF,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { ParallelTransactionExecutor } from "@mysten/sui/transactions";
2
+ import type { ClientWithCoreApi } from "@mysten/sui/client";
3
+ import type { Signer } from "@mysten/sui/cryptography";
4
+ import { type PackageBytecode } from "./transactions.ts";
5
+ export interface ShareCurrency {
6
+ /** The published share package id. */
7
+ packageId: string;
8
+ /** The `Currency<Share>` object id. */
9
+ currencyId: string;
10
+ /** The fully-qualified share type, `${packageId}::share::Share`. */
11
+ shareType: string;
12
+ /** The `TreasuryCap<Share>` object id (held by the treasury-cap recipient). */
13
+ treasuryCapId: string;
14
+ /** Net gas (MIST) attributed to this currency, if tracked per-item (else 0). */
15
+ gasUsed: number;
16
+ }
17
+ export interface ShareCurrencyMeta {
18
+ name: string;
19
+ description: string;
20
+ iconUrl?: string;
21
+ }
22
+ /**
23
+ * Patches the `INITIALIZER` constant in the share module bytecode, replacing the
24
+ * 32-byte zero-address placeholder with `initializerAddress`. The template is left
25
+ * untouched; a fresh patched copy is returned. `share::initialize` asserts the
26
+ * sender equals this address, so it must be the signer that will initialize.
27
+ */
28
+ export declare function patchInitializer(template: PackageBytecode, initializerAddress: string): PackageBytecode;
29
+ export interface CreateShareCurrencyParams {
30
+ /** The share bytecode template. Defaults to the embedded {@link SHARE_TEMPLATE}. */
31
+ template?: PackageBytecode;
32
+ name: string;
33
+ description: string;
34
+ iconUrl?: string;
35
+ /** Address baked in as INITIALIZER; must be the signer. Defaults to the signer. */
36
+ initializerAddress?: string;
37
+ /** Recipient of the minted `TreasuryCap`. Defaults to the signer. */
38
+ treasuryCapRecipient?: string;
39
+ }
40
+ /** Publishes an immutable package, then initializes a fresh share currency in a second tx. */
41
+ export declare function createShareCurrency(client: ClientWithCoreApi, signer: Signer, params: CreateShareCurrencyParams): Promise<ShareCurrency>;
42
+ /**
43
+ * Publishes `count` fresh, permanently immutable share-currency packages, batched
44
+ * at ≤5 publishes per PTB and run concurrently through the executor. Each publish
45
+ * consumes its UpgradeCap in the same PTB. Returns the published package ids
46
+ * (fungible — order is not meaningful; the caller assigns them to work slots).
47
+ */
48
+ export declare function publishShareCurrencies(executor: ParallelTransactionExecutor, initializerAddress: string, count: number, template?: PackageBytecode): Promise<{
49
+ packageIds: string[];
50
+ gasUsed: number;
51
+ }>;
52
+ /**
53
+ * Initializes each published package into a `Currency<Share>` + `TreasuryCap`,
54
+ * batched and run concurrently. `metaOf` supplies each package's display metadata,
55
+ * so a currency destined for a specific work is named for it.
56
+ *
57
+ * `share::initialize` is NON-idempotent (`coin_registry` registers one `Currency`
58
+ * per type), so a batch must never be re-run. Batches run under `Promise.allSettled`
59
+ * and `onBatch` fires for each SUCCEEDED batch as it lands — letting the caller
60
+ * persist that batch immediately. If any batch fails, the succeeded ones are already
61
+ * reported and this throws, so a resume re-initializes only the still-missing packages.
62
+ */
63
+ export declare function initializeShareCurrencies(executor: ParallelTransactionExecutor, signerAddress: string, packageIds: string[], metaOf: (packageId: string) => ShareCurrencyMeta, onBatch?: (currencies: ShareCurrency[], gasUsed: number) => void | Promise<void>): Promise<{
64
+ currencies: ShareCurrency[];
65
+ gasUsed: number;
66
+ }>;
67
+ //# sourceMappingURL=share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../src/share.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAYvD,OAAO,EAAiD,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAexG,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,GAAG,eAAe,CAcvG;AAID,MAAM,WAAW,yBAAyB;IACxC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,8FAA8F;AAC9F,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAWD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,2BAA2B,EACrC,kBAAkB,EAAE,MAAM,EAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,eAAgC,GACzC,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBpD;AAgBD;;;;;;;;;;GAUG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,2BAA2B,EACrC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,iBAAiB,EAChD,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC/E,OAAO,CAAC;IAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC3D"}