@misofm/musicos 0.1.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 (103) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +75 -0
  3. package/dist/client.d.ts +309 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +216 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/contracts/musicos/composition.d.ts +195 -0
  8. package/dist/contracts/musicos/composition.d.ts.map +1 -0
  9. package/dist/contracts/musicos/composition.js +195 -0
  10. package/dist/contracts/musicos/composition.js.map +1 -0
  11. package/dist/contracts/musicos/deps/bps/bps.d.ts +17 -0
  12. package/dist/contracts/musicos/deps/bps/bps.d.ts.map +1 -0
  13. package/dist/contracts/musicos/deps/bps/bps.js +19 -0
  14. package/dist/contracts/musicos/deps/bps/bps.js.map +1 -0
  15. package/dist/contracts/musicos/recording.d.ts +238 -0
  16. package/dist/contracts/musicos/recording.d.ts.map +1 -0
  17. package/dist/contracts/musicos/recording.js +232 -0
  18. package/dist/contracts/musicos/recording.js.map +1 -0
  19. package/dist/contracts/musicos/release.d.ts +298 -0
  20. package/dist/contracts/musicos/release.d.ts.map +1 -0
  21. package/dist/contracts/musicos/release.js +298 -0
  22. package/dist/contracts/musicos/release.js.map +1 -0
  23. package/dist/contracts/musicos/track.d.ts +193 -0
  24. package/dist/contracts/musicos/track.d.ts.map +1 -0
  25. package/dist/contracts/musicos/track.js +197 -0
  26. package/dist/contracts/musicos/track.js.map +1 -0
  27. package/dist/contracts/utils/index.d.ts +104 -0
  28. package/dist/contracts/utils/index.d.ts.map +1 -0
  29. package/dist/contracts/utils/index.js +272 -0
  30. package/dist/contracts/utils/index.js.map +1 -0
  31. package/dist/contracts.d.ts +9 -0
  32. package/dist/contracts.d.ts.map +1 -0
  33. package/dist/contracts.js +14 -0
  34. package/dist/contracts.js.map +1 -0
  35. package/dist/deployments.d.ts +60 -0
  36. package/dist/deployments.d.ts.map +1 -0
  37. package/dist/deployments.js +109 -0
  38. package/dist/deployments.js.map +1 -0
  39. package/dist/events.d.ts +16 -0
  40. package/dist/events.d.ts.map +1 -0
  41. package/dist/events.js +25 -0
  42. package/dist/events.js.map +1 -0
  43. package/dist/execute.d.ts +49 -0
  44. package/dist/execute.d.ts.map +1 -0
  45. package/dist/execute.js +110 -0
  46. package/dist/execute.js.map +1 -0
  47. package/dist/index.d.ts +13 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +20 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/internal.d.ts +17 -0
  52. package/dist/internal.d.ts.map +1 -0
  53. package/dist/internal.js +46 -0
  54. package/dist/internal.js.map +1 -0
  55. package/dist/numeric.d.ts +5 -0
  56. package/dist/numeric.d.ts.map +1 -0
  57. package/dist/numeric.js +21 -0
  58. package/dist/numeric.js.map +1 -0
  59. package/dist/packages.d.ts +67 -0
  60. package/dist/packages.d.ts.map +1 -0
  61. package/dist/packages.js +85 -0
  62. package/dist/packages.js.map +1 -0
  63. package/dist/parsers.d.ts +9 -0
  64. package/dist/parsers.d.ts.map +1 -0
  65. package/dist/parsers.js +40 -0
  66. package/dist/parsers.js.map +1 -0
  67. package/dist/queries.d.ts +178 -0
  68. package/dist/queries.d.ts.map +1 -0
  69. package/dist/queries.js +611 -0
  70. package/dist/queries.js.map +1 -0
  71. package/dist/transactions.d.ts +136 -0
  72. package/dist/transactions.d.ts.map +1 -0
  73. package/dist/transactions.js +145 -0
  74. package/dist/transactions.js.map +1 -0
  75. package/dist/types.d.ts +194 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +4 -0
  78. package/dist/types.js.map +1 -0
  79. package/dist/view.d.ts +22 -0
  80. package/dist/view.d.ts.map +1 -0
  81. package/dist/view.js +42 -0
  82. package/dist/view.js.map +1 -0
  83. package/package.json +119 -0
  84. package/src/client.ts +341 -0
  85. package/src/contracts/musicos/composition.ts +280 -0
  86. package/src/contracts/musicos/deps/bps/bps.ts +22 -0
  87. package/src/contracts/musicos/recording.ts +308 -0
  88. package/src/contracts/musicos/release.ts +409 -0
  89. package/src/contracts/musicos/track.ts +255 -0
  90. package/src/contracts/utils/index.ts +428 -0
  91. package/src/contracts.ts +29 -0
  92. package/src/deployments.ts +166 -0
  93. package/src/events.ts +30 -0
  94. package/src/execute.ts +137 -0
  95. package/src/index.ts +21 -0
  96. package/src/internal.ts +78 -0
  97. package/src/numeric.ts +25 -0
  98. package/src/packages.ts +117 -0
  99. package/src/parsers.ts +66 -0
  100. package/src/queries.ts +928 -0
  101. package/src/transactions.ts +305 -0
  102. package/src/types.ts +222 -0
  103. package/src/view.ts +65 -0
@@ -0,0 +1,272 @@
1
+ import { bcs, TypeTagSerializer, BcsStruct, BcsEnum, BcsTuple, } from '@mysten/sui/bcs';
2
+ import { normalizeStructTag, normalizeSuiAddress } from '@mysten/sui/utils';
3
+ import { isArgument, } from '@mysten/sui/transactions';
4
+ import {} from '@mysten/sui/client';
5
+ const MOVE_STDLIB_ADDRESS = normalizeSuiAddress('0x1');
6
+ const SUI_FRAMEWORK_ADDRESS = normalizeSuiAddress('0x2');
7
+ export function getPureBcsSchema(typeTag) {
8
+ const parsedTag = typeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag) : typeTag;
9
+ if ('u8' in parsedTag) {
10
+ return bcs.U8;
11
+ }
12
+ else if ('u16' in parsedTag) {
13
+ return bcs.U16;
14
+ }
15
+ else if ('u32' in parsedTag) {
16
+ return bcs.U32;
17
+ }
18
+ else if ('u64' in parsedTag) {
19
+ return bcs.U64;
20
+ }
21
+ else if ('u128' in parsedTag) {
22
+ return bcs.U128;
23
+ }
24
+ else if ('u256' in parsedTag) {
25
+ return bcs.U256;
26
+ }
27
+ else if ('address' in parsedTag) {
28
+ return bcs.Address;
29
+ }
30
+ else if ('bool' in parsedTag) {
31
+ return bcs.Bool;
32
+ }
33
+ else if ('vector' in parsedTag) {
34
+ const type = getPureBcsSchema(parsedTag.vector);
35
+ return type ? bcs.vector(type) : null;
36
+ }
37
+ else if ('struct' in parsedTag) {
38
+ const structTag = parsedTag.struct;
39
+ const pkg = normalizeSuiAddress(structTag.address);
40
+ if (pkg === MOVE_STDLIB_ADDRESS) {
41
+ if ((structTag.module === 'ascii' || structTag.module === 'string') &&
42
+ structTag.name === 'String') {
43
+ return bcs.String;
44
+ }
45
+ if (structTag.module === 'option' && structTag.name === 'Option') {
46
+ const inner = structTag.typeParams[0];
47
+ const type = inner ? getPureBcsSchema(inner) : null;
48
+ return type ? bcs.option(type) : null;
49
+ }
50
+ }
51
+ if (pkg === SUI_FRAMEWORK_ADDRESS &&
52
+ structTag.module === 'object' &&
53
+ (structTag.name === 'ID' || structTag.name === 'UID')) {
54
+ return bcs.Address;
55
+ }
56
+ }
57
+ return null;
58
+ }
59
+ export function normalizeMoveArguments(args, argTypes, parameterNames) {
60
+ const argLen = Array.isArray(args) ? args.length : Object.keys(args).length;
61
+ if (parameterNames && argLen !== parameterNames.length) {
62
+ throw new Error(`Invalid number of arguments, expected ${parameterNames.length}, got ${argLen}`);
63
+ }
64
+ const normalizedArgs = [];
65
+ let index = 0;
66
+ for (const argType of argTypes) {
67
+ if (argType === '0x2::clock::Clock') {
68
+ normalizedArgs.push((tx) => tx.object.clock());
69
+ continue;
70
+ }
71
+ if (argType === '0x2::random::Random') {
72
+ normalizedArgs.push((tx) => tx.object.random());
73
+ continue;
74
+ }
75
+ if (argType === '0x2::deny_list::DenyList') {
76
+ normalizedArgs.push((tx) => tx.object.denyList());
77
+ continue;
78
+ }
79
+ if (argType === '0x2::accumulator::AccumulatorRoot') {
80
+ // Chain-wide shared singleton at a fixed address (SUI_ACCUMULATOR_ROOT_OBJECT_ID).
81
+ normalizedArgs.push((tx) => tx.object('0xacc'));
82
+ continue;
83
+ }
84
+ if (argType === '0x3::sui_system::SuiSystemState') {
85
+ normalizedArgs.push((tx) => tx.object.system());
86
+ continue;
87
+ }
88
+ let arg;
89
+ if (Array.isArray(args)) {
90
+ if (index >= args.length) {
91
+ throw new Error(`Invalid number of arguments, expected at least ${index + 1}, got ${args.length}`);
92
+ }
93
+ arg = args[index];
94
+ }
95
+ else {
96
+ if (!parameterNames) {
97
+ throw new Error(`Expected arguments to be passed as an array`);
98
+ }
99
+ const name = parameterNames[index];
100
+ arg =
101
+ name !== undefined && Object.prototype.hasOwnProperty.call(args, name)
102
+ ? args[name]
103
+ : undefined;
104
+ if (arg === undefined) {
105
+ throw new Error(`Parameter ${name} is required`);
106
+ }
107
+ }
108
+ index += 1;
109
+ if (typeof arg === 'function' || isArgument(arg)) {
110
+ normalizedArgs.push(arg);
111
+ continue;
112
+ }
113
+ const bcsType = argType === null ? null : getPureBcsSchema(argType);
114
+ if (bcsType) {
115
+ const bytes = bcsType.serialize(arg);
116
+ normalizedArgs.push((tx) => tx.pure(bytes));
117
+ continue;
118
+ }
119
+ if (typeof arg === 'string') {
120
+ normalizedArgs.push((tx) => tx.object(arg));
121
+ continue;
122
+ }
123
+ throw new Error(`Invalid argument ${stringify(arg)} for type ${argType}`);
124
+ }
125
+ return normalizedArgs;
126
+ }
127
+ const HAS_PHANTOM_REGEX = /phantom [A-Za-z_$][A-Za-z0-9_$]*/;
128
+ function splitTopLevelTypeArgs(inner) {
129
+ const parts = [];
130
+ let depth = 0;
131
+ let current = '';
132
+ for (const char of inner) {
133
+ if (char === ',' && depth === 0) {
134
+ parts.push(current.trim());
135
+ current = '';
136
+ continue;
137
+ }
138
+ if (char === '<')
139
+ depth++;
140
+ if (char === '>')
141
+ depth--;
142
+ current += char;
143
+ }
144
+ if (current)
145
+ parts.push(current.trim());
146
+ return parts;
147
+ }
148
+ function buildTypeTag(name, options) {
149
+ const lt = name.indexOf('<');
150
+ const base = lt === -1 ? name : name.slice(0, lt);
151
+ if (base.split('::').length !== 3) {
152
+ throw new Error(`${name} is not a top-level Move type`);
153
+ }
154
+ let result = name;
155
+ if (options?.typeArguments) {
156
+ const baked = lt === -1 ? [] : splitTopLevelTypeArgs(name.slice(lt + 1, -1));
157
+ const supplied = options.typeArguments.map((arg) => {
158
+ if (typeof arg === 'string') {
159
+ return arg;
160
+ }
161
+ if (arg && typeof arg.serialize === 'function' && typeof arg.name === 'string') {
162
+ return arg.name;
163
+ }
164
+ throw new Error(`Invalid type argument ${stringify(arg)}`);
165
+ });
166
+ if (supplied.length !== baked.length) {
167
+ throw new Error(`Expected ${baked.length} type arguments for ${base}, got ${supplied.length}`);
168
+ }
169
+ result = supplied.length === 0 ? base : `${base}<${supplied.join(', ')}>`;
170
+ }
171
+ if (HAS_PHANTOM_REGEX.test(result)) {
172
+ throw new Error(options?.typeArguments
173
+ ? `A type argument contains an unfilled phantom parameter in ${result}`
174
+ : `Missing type arguments for ${result}`);
175
+ }
176
+ if (options?.package) {
177
+ const [, ...rest] = result.split('::');
178
+ result = [options.package, ...rest].join('::');
179
+ }
180
+ // fully validate address-only tags (MVR names can't be parsed as type tags)
181
+ if (!HAS_PHANTOM_REGEX.test(result) && !/[@/]/.test(result)) {
182
+ TypeTagSerializer.parseFromStr(result);
183
+ }
184
+ return result;
185
+ }
186
+ async function resolveBuiltTypeTag(name, options) {
187
+ const { client, ...rest } = options;
188
+ const { type } = await client.core.mvr.resolveType({
189
+ type: buildTypeTag(name, rest),
190
+ });
191
+ return normalizeStructTag(type);
192
+ }
193
+ export class MoveStruct extends BcsStruct {
194
+ /**
195
+ * Build the type tag for this struct.
196
+ *
197
+ * `typeArguments` is the full positional list, in Move declaration order, and
198
+ * is required when the struct has unfilled phantom parameters. The result may
199
+ * contain MVR names: those are valid in transaction `typeArguments`, but for
200
+ * queries or comparisons against on-chain data use `resolveTypeTag` instead.
201
+ */
202
+ typeTag(...args) {
203
+ return buildTypeTag(this.name, args[0]);
204
+ }
205
+ /**
206
+ * Build the type tag for this struct, then resolve any MVR names through the
207
+ * client (using its configured overrides and the MVR API) and return the
208
+ * normalized, address-only form suitable for queries and comparisons against
209
+ * on-chain data.
210
+ */
211
+ async resolveTypeTag(options) {
212
+ return resolveBuiltTypeTag(this.name, options);
213
+ }
214
+ async get({ objectId, ...options }) {
215
+ const [res] = await this.getMany({
216
+ ...options,
217
+ objectIds: [objectId],
218
+ });
219
+ if (!res) {
220
+ throw new Error(`No object found for id ${objectId}`);
221
+ }
222
+ return res;
223
+ }
224
+ async getMany({ client, ...options }) {
225
+ const response = (await client.core.getObjects({
226
+ ...options,
227
+ include: {
228
+ ...options.include,
229
+ content: true,
230
+ },
231
+ }));
232
+ return response.objects.map((obj) => {
233
+ if (obj instanceof Error) {
234
+ throw obj;
235
+ }
236
+ return {
237
+ ...obj,
238
+ json: this.parse(obj.content),
239
+ };
240
+ });
241
+ }
242
+ }
243
+ export class MoveEnum extends BcsEnum {
244
+ /** Build the type tag for this enum. See `MoveStruct.typeTag` for semantics. */
245
+ typeTag(...args) {
246
+ return buildTypeTag(this.name, args[0]);
247
+ }
248
+ /** Build and resolve the type tag for this enum. See `MoveStruct.resolveTypeTag`. */
249
+ async resolveTypeTag(options) {
250
+ return resolveBuiltTypeTag(this.name, options);
251
+ }
252
+ }
253
+ export class MoveTuple extends BcsTuple {
254
+ /** Build the type tag for this struct. See `MoveStruct.typeTag` for semantics. */
255
+ typeTag(...args) {
256
+ return buildTypeTag(this.name, args[0]);
257
+ }
258
+ /** Build and resolve the type tag for this struct. See `MoveStruct.resolveTypeTag`. */
259
+ async resolveTypeTag(options) {
260
+ return resolveBuiltTypeTag(this.name, options);
261
+ }
262
+ }
263
+ function stringify(val) {
264
+ if (typeof val === 'object') {
265
+ return JSON.stringify(val, (_key, value) => typeof value === 'bigint' ? value.toString() : value);
266
+ }
267
+ if (typeof val === 'bigint') {
268
+ return val.toString();
269
+ }
270
+ return val;
271
+ }
272
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/utils/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ type PublicModule<M extends object, K extends readonly (keyof M)[]> = Omit<M, K[number]>;
2
+ import * as rawComposition from "./contracts/musicos/composition.ts";
3
+ import * as rawRecording from "./contracts/musicos/recording.ts";
4
+ import * as rawRelease from "./contracts/musicos/release.ts";
5
+ export declare const composition: PublicModule<typeof rawComposition, readonly ["title", "uid", "uidMut"]>;
6
+ export declare const recording: PublicModule<typeof rawRecording, readonly ["uid", "uidMut"]>;
7
+ export declare const release: PublicModule<typeof rawRelease, readonly ["title", "tracks", "uid", "uidMut"]>;
8
+ export * as track from "./contracts/musicos/track.ts";
9
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAYA,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAQzF,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,YAAY,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAG7D,eAAO,MAAM,WAAW,0EAA0E,CAAC;AACnG,eAAO,MAAM,SAAS,+DAA+D,CAAC;AACtF,eAAO,MAAM,OAAO,gFAAgF,CAAC;AACrG,OAAO,KAAK,KAAK,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,14 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ function withoutUnsafeCalls(module, keys) {
4
+ return Object.fromEntries(Object.entries(module).filter(([key]) => !keys.includes(key)));
5
+ }
6
+ import * as rawComposition from "./contracts/musicos/composition.js";
7
+ import * as rawRecording from "./contracts/musicos/recording.js";
8
+ import * as rawRelease from "./contracts/musicos/release.js";
9
+ // Object model core (BCS codecs remain available; PTB-inaccessible references do not).
10
+ export const composition = withoutUnsafeCalls(rawComposition, ["title", "uid", "uidMut"]);
11
+ export const recording = withoutUnsafeCalls(rawRecording, ["uid", "uidMut"]);
12
+ export const release = withoutUnsafeCalls(rawRelease, ["title", "tracks", "uid", "uidMut"]);
13
+ export * as track from "./contracts/musicos/track.js";
14
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAYtC,SAAS,kBAAkB,CACzB,MAAS,EACT,IAAO;IAEP,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAc,CAAC,CAAC,CAAuB,CAAC;AAC5H,CAAC;AAED,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,YAAY,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAE7D,uFAAuF;AACvF,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAU,CAAC,CAAC;AACnG,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAU,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAU,CAAC,CAAC;AACrG,OAAO,KAAK,KAAK,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,60 @@
1
+ /** Sui networks for which this SDK may bundle a verified deployment. */
2
+ export type MisoNetwork = "mainnet" | "testnet";
3
+ /**
4
+ * The single independently published package required by this SDK surface:
5
+ * the `musicos` object-model package (modules composition, recording,
6
+ * release, track).
7
+ *
8
+ * This name is a stable deployment-manifest key, not a Move module name. Its
9
+ * value is never inferred from a source label or a previous publish.
10
+ */
11
+ declare const CANONICAL_MISO_PACKAGE_NAMES: readonly ["musicos"];
12
+ /** Public immutable copy; validation always uses the private canonical tuple. */
13
+ export declare const MISO_PACKAGE_NAMES: readonly [...typeof CANONICAL_MISO_PACKAGE_NAMES];
14
+ export type MisoPackageName = (typeof CANONICAL_MISO_PACKAGE_NAMES)[number];
15
+ /**
16
+ * Exact package address from one compatible publish.
17
+ *
18
+ * A complete manifest is intentional: a caller cannot accidentally combine
19
+ * generated bindings for a fresh ABI with a stale package ID. Fill this only
20
+ * from the verified immutable `admin-cli` publish record after the
21
+ * dependency-ordered release is complete.
22
+ */
23
+ export type MisoDeployment = Readonly<Record<MisoPackageName, string>>;
24
+ /** A minimal core-only deployment, retained for callers that use only `miso()`. */
25
+ export interface MisoProtocolDeployment {
26
+ /** The published `musicos` package used for calls, types, and derived IDs. */
27
+ readonly packageId: string;
28
+ }
29
+ /** Validate and freeze a core-only package binding at a client boundary. */
30
+ export declare function normalizeMisoProtocolDeployment(deployment: unknown): MisoProtocolDeployment;
31
+ /** Verified immutable deployments bundled with this SDK release. */
32
+ export declare const MISO_DEPLOYMENTS: Readonly<{
33
+ readonly testnet: Readonly<{
34
+ readonly musicos: "0x95bb43d650fe582caba27d4ead2c3f9939c38125943f8716c5baf5af528bc671";
35
+ }>;
36
+ }>;
37
+ /**
38
+ * @deprecated Use `MISO_DEPLOYMENTS`. This alias preserves source compatibility
39
+ * for callers that still use the former protocol-only constant name.
40
+ */
41
+ export declare const MISO_PROTOCOL_DEPLOYMENTS: Readonly<{
42
+ readonly testnet: Readonly<{
43
+ readonly musicos: "0x95bb43d650fe582caba27d4ead2c3f9939c38125943f8716c5baf5af528bc671";
44
+ }>;
45
+ }>;
46
+ /** Resolve a verified full manifest, failing closed for unbundled networks. */
47
+ export declare function getMisoDeployment(network: string): MisoDeployment;
48
+ /** Extract the core package identity from a complete deployment manifest. */
49
+ export declare function protocolDeployment(deployment: MisoDeployment): MisoProtocolDeployment;
50
+ /** Resolve the core package only, preserving the established `miso()` default API. */
51
+ export declare function getMisoProtocolDeployment(network: string): MisoProtocolDeployment;
52
+ /**
53
+ * Validates an explicit manifest before any Move target is constructed. This is
54
+ * useful at configuration boundaries such as environment-file loading.
55
+ */
56
+ export declare function assertMisoDeployment(deployment: unknown): asserts deployment is MisoDeployment;
57
+ /** Validate and snapshot an untrusted manifest so later caller mutation is inert. */
58
+ export declare function normalizeMisoDeployment(deployment: unknown): MisoDeployment;
59
+ export {};
60
+ //# sourceMappingURL=deployments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"AAKA,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhD;;;;;;;GAOG;AACH,QAAA,MAAM,4BAA4B,YAAI,SAAS,CAAU,CAAC;AAE1D,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,EAEzB,SAAS,CAAC,GAAG,OAAO,4BAA4B,CAAC,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvE,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,4EAA4E;AAC5E,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,OAAO,GAClB,sBAAsB,CAoBxB;AAED,oEAAoE;AACpE,eAAO,MAAM,gBAAgB;;0BAEhB,oEAAoE;;EAIhF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;0BAVzB,oEAAoE;;EAUxB,CAAC;AAE1D,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAWjE;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,cAAc,GACzB,sBAAsB,CAExB;AAED,sFAAsF;AACtF,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GACd,sBAAsB,CAExB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,UAAU,IAAI,cAAc,CA0CtC;AAED,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,OAAO,GAAG,cAAc,CAK3E"}
@@ -0,0 +1,109 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { normalizeSuiAddress } from "@mysten/sui/utils";
4
+ /**
5
+ * The single independently published package required by this SDK surface:
6
+ * the `musicos` object-model package (modules composition, recording,
7
+ * release, track).
8
+ *
9
+ * This name is a stable deployment-manifest key, not a Move module name. Its
10
+ * value is never inferred from a source label or a previous publish.
11
+ */
12
+ const CANONICAL_MISO_PACKAGE_NAMES = ["musicos"];
13
+ /** Public immutable copy; validation always uses the private canonical tuple. */
14
+ export const MISO_PACKAGE_NAMES = Object.freeze([
15
+ ...CANONICAL_MISO_PACKAGE_NAMES,
16
+ ]);
17
+ /** Validate and freeze a core-only package binding at a client boundary. */
18
+ export function normalizeMisoProtocolDeployment(deployment) {
19
+ if (!deployment || typeof deployment !== "object" || Array.isArray(deployment)) {
20
+ throw new Error("@misofm/musicos: core deployment must be an object with a normalized Miso package ID.");
21
+ }
22
+ const packageId = deployment.packageId;
23
+ if (typeof packageId !== "string") {
24
+ throw new Error("@misofm/musicos: core deployment is missing a Miso package ID.");
25
+ }
26
+ let normalized;
27
+ try {
28
+ normalized = normalizeSuiAddress(packageId);
29
+ }
30
+ catch {
31
+ throw new Error("@misofm/musicos: core deployment package ID is not a valid Sui address.");
32
+ }
33
+ if (packageId !== normalized) {
34
+ throw new Error(`@misofm/musicos: core deployment package ID must be normalized (${normalized}).`);
35
+ }
36
+ return Object.freeze({ packageId });
37
+ }
38
+ /** Verified immutable deployments bundled with this SDK release. */
39
+ export const MISO_DEPLOYMENTS = Object.freeze({
40
+ testnet: Object.freeze({
41
+ musicos: "0x95bb43d650fe582caba27d4ead2c3f9939c38125943f8716c5baf5af528bc671",
42
+ }),
43
+ });
44
+ /**
45
+ * @deprecated Use `MISO_DEPLOYMENTS`. This alias preserves source compatibility
46
+ * for callers that still use the former protocol-only constant name.
47
+ */
48
+ export const MISO_PROTOCOL_DEPLOYMENTS = MISO_DEPLOYMENTS;
49
+ /** Resolve a verified full manifest, failing closed for unbundled networks. */
50
+ export function getMisoDeployment(network) {
51
+ const deployment = MISO_DEPLOYMENTS[network];
52
+ if (!deployment) {
53
+ throw new Error(`@misofm/musicos: no verified Miso deployment is bundled for network "${network}". ` +
54
+ "Inject the exact post-publish manifest or pass an explicit deployment; historic package IDs are rejected.");
55
+ }
56
+ return normalizeMisoDeployment(deployment);
57
+ }
58
+ /** Extract the core package identity from a complete deployment manifest. */
59
+ export function protocolDeployment(deployment) {
60
+ return normalizeMisoProtocolDeployment({ packageId: normalizeMisoDeployment(deployment).musicos });
61
+ }
62
+ /** Resolve the core package only, preserving the established `miso()` default API. */
63
+ export function getMisoProtocolDeployment(network) {
64
+ return protocolDeployment(getMisoDeployment(network));
65
+ }
66
+ /**
67
+ * Validates an explicit manifest before any Move target is constructed. This is
68
+ * useful at configuration boundaries such as environment-file loading.
69
+ */
70
+ export function assertMisoDeployment(deployment) {
71
+ if (!deployment || typeof deployment !== "object" || Array.isArray(deployment)) {
72
+ throw new Error(`@misofm/musicos: deployment must be an object with exactly ${CANONICAL_MISO_PACKAGE_NAMES.length} Miso package IDs.`);
73
+ }
74
+ const entries = deployment;
75
+ const keys = Object.keys(entries);
76
+ const unexpected = keys.filter((key) => !CANONICAL_MISO_PACKAGE_NAMES.includes(key));
77
+ if (unexpected.length > 0 || keys.length !== CANONICAL_MISO_PACKAGE_NAMES.length) {
78
+ throw new Error(`@misofm/musicos: deployment must contain exactly these package IDs: ${CANONICAL_MISO_PACKAGE_NAMES.join(", ")}.`);
79
+ }
80
+ const seenPackageIds = new Set();
81
+ for (const name of CANONICAL_MISO_PACKAGE_NAMES) {
82
+ const packageId = entries[name];
83
+ if (typeof packageId !== "string") {
84
+ throw new Error(`@misofm/musicos: deployment is missing package ID for "${name}". ` +
85
+ "Use a complete manifest from the fresh verified immutable admin-cli publish record.");
86
+ }
87
+ let normalized;
88
+ try {
89
+ normalized = normalizeSuiAddress(packageId);
90
+ }
91
+ catch {
92
+ throw new Error(`@misofm/musicos: deployment package ID for "${name}" is not a valid Sui address.`);
93
+ }
94
+ if (packageId !== normalized) {
95
+ throw new Error(`@misofm/musicos: deployment package ID for "${name}" must be normalized (${normalized}).`);
96
+ }
97
+ if (seenPackageIds.has(packageId)) {
98
+ throw new Error(`@misofm/musicos: deployment package ID for "${name}" duplicates another package. ` +
99
+ "A publish manifest must bind every package to its own address.");
100
+ }
101
+ seenPackageIds.add(packageId);
102
+ }
103
+ }
104
+ /** Validate and snapshot an untrusted manifest so later caller mutation is inert. */
105
+ export function normalizeMisoDeployment(deployment) {
106
+ assertMisoDeployment(deployment);
107
+ return Object.freeze(Object.fromEntries(CANONICAL_MISO_PACKAGE_NAMES.map((name) => [name, deployment[name]])));
108
+ }
109
+ //# sourceMappingURL=deployments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { BcsParser } from "./queries.ts";
2
+ /** Decode raw event BCS with the corresponding generated codec. */
3
+ export declare function decodeEvent<T>(codec: BcsParser<T>, bytes: Uint8Array): T;
4
+ /**
5
+ * Event decoder registry grouped by package responsibility. Core publication
6
+ * events retain camel-case wrappers in `parsers.ts`.
7
+ */
8
+ export declare const eventParsers: {
9
+ readonly core: {
10
+ readonly releaseRegistryCreated: (bytes: Uint8Array) => {
11
+ registry_id: string;
12
+ created_by: string;
13
+ };
14
+ };
15
+ };
16
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,CAExE;AAMD;;;GAGG;AACH,eAAO,MAAM,YAAY;aACvB,IAAI;iBACF,sBAAsB,UATT,UAAU;;;;;CAWjB,CAAC"}
package/dist/events.js ADDED
@@ -0,0 +1,25 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * BCS decoders for object-model execution events outside the legacy core
5
+ * convenience parsers. Each decoder preserves the generated Move field names
6
+ * and nested layouts exactly, which is the safe indexer boundary.
7
+ */
8
+ import * as release from "./contracts/musicos/release.js";
9
+ /** Decode raw event BCS with the corresponding generated codec. */
10
+ export function decodeEvent(codec, bytes) {
11
+ return codec.parse(bytes);
12
+ }
13
+ function decoder(codec) {
14
+ return (bytes) => decodeEvent(codec, bytes);
15
+ }
16
+ /**
17
+ * Event decoder registry grouped by package responsibility. Core publication
18
+ * events retain camel-case wrappers in `parsers.ts`.
19
+ */
20
+ export const eventParsers = {
21
+ core: {
22
+ releaseRegistryCreated: decoder(release.ReleaseRegistryCreatedEvent),
23
+ },
24
+ };
25
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAEtC;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,gCAAgC,CAAC;AAG1D,mEAAmE;AACnE,MAAM,UAAU,WAAW,CAAI,KAAmB,EAAE,KAAiB;IACnE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,OAAO,CAAI,KAAmB;IACrC,OAAO,CAAC,KAAiB,EAAK,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE;QACJ,sBAAsB,EAAE,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;KACrE;CACO,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { Transaction } from "@mysten/sui/transactions";
2
+ import type { ClientWithCoreApi, SuiClientTypes } from "@mysten/sui/client";
3
+ import type { Signer } from "@mysten/sui/cryptography";
4
+ import type { TxThunk } from "./transactions.ts";
5
+ /** The effect fields every submit path requests, so extraction is uniform. */
6
+ export declare const FULL_INCLUDE: {
7
+ readonly effects: true;
8
+ readonly objectTypes: true;
9
+ readonly balanceChanges: true;
10
+ };
11
+ type FullInclude = typeof FULL_INCLUDE;
12
+ export interface ExecResult {
13
+ digest: string;
14
+ /** Objects created/mutated/deleted by the transaction. */
15
+ changedObjects: SuiClientTypes.ChangedObject[];
16
+ /** Map of changed objectId → fully-qualified type. */
17
+ objectTypes: Record<string, string>;
18
+ /** Net coin balance deltas by address. */
19
+ balanceChanges: SuiClientTypes.BalanceChange[];
20
+ /** Net gas cost in MIST (computation + storage − rebate). */
21
+ gasUsed: number;
22
+ }
23
+ /** Builds a fresh Transaction from one or more thunks (awaiting async ones). */
24
+ export declare function buildTx(...thunks: TxThunk[]): Promise<Transaction>;
25
+ /** Normalizes the `{ $kind }` transaction-result envelope into an {@link ExecResult}. */
26
+ export declare function toExecResult(res: SuiClientTypes.TransactionResult<FullInclude>): ExecResult;
27
+ /** Signs, executes, and waits for a transaction; returns changes, types, gas. */
28
+ export declare function signAndExecute(client: ClientWithCoreApi, signer: Signer, tx: Transaction): Promise<ExecResult>;
29
+ /** Convenience: build from thunks, then sign+execute in one call. */
30
+ export declare function execThunks(client: ClientWithCoreApi, signer: Signer, ...thunks: TxThunk[]): Promise<ExecResult>;
31
+ /** The package id from the (single) newly-published package. */
32
+ export declare function publishedPackageId(r: ExecResult): string;
33
+ /** All package ids newly published by the transaction (up to 5 per PTB). */
34
+ export declare function allPublishedPackageIds(r: ExecResult): string[];
35
+ /** The first newly-created object whose type contains `substr`. */
36
+ export declare function createdByType(r: ExecResult, substr: string): string;
37
+ /** Like {@link createdByType} but returns undefined instead of throwing. */
38
+ export declare function maybeCreatedByType(r: ExecResult, substr: string): string | undefined;
39
+ /** The first newly-created object whose type is EXACTLY `type` (for non-generic types). */
40
+ export declare function createdByExactType(r: ExecResult, type: string): string;
41
+ /** All newly-created objects whose type contains `substr`. */
42
+ export declare function allCreatedByType(r: ExecResult, substr: string): {
43
+ objectId: string;
44
+ objectType: string;
45
+ }[];
46
+ /** The signed balance delta for `address` in `coinType`, or "0" if absent. */
47
+ export declare function balanceDelta(r: ExecResult, address: string, coinType: string): string;
48
+ export {};
49
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,8EAA8E;AAC9E,eAAO,MAAM,YAAY;aAAK,OAAO;aAAQ,WAAW;aAAQ,cAAc;CAAiB,CAAC;AAChG,KAAK,WAAW,GAAG,OAAO,YAAY,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,cAAc,EAAE,cAAc,CAAC,aAAa,EAAE,CAAC;IAC/C,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,0CAA0C;IAC1C,cAAc,EAAE,cAAc,CAAC,aAAa,EAAE,CAAC;IAC/C,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gFAAgF;AAChF,wBAAsB,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAIxE;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,UAAU,CAqB3F;AAED,iFAAiF;AACjF,wBAAsB,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAKpH;AAED,qEAAqE;AACrE,wBAAsB,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAErH;AAID,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAIxD;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAI9D;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKpF;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAO1G;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrF"}