@misofm/sdk 0.15.10 → 0.16.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 +153 -56
- package/dist/client.d.ts +175 -47
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +302 -47
- package/dist/client.js.map +1 -1
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +11 -11
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -1
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +9 -9
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -1
- package/dist/contracts/miso_record/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/miso_record/deps/std/type_name.js.map +1 -0
- package/dist/contracts/miso_record/deps/sui/vec_set.d.ts +21 -0
- package/dist/contracts/miso_record/deps/sui/vec_set.d.ts.map +1 -0
- package/dist/contracts/miso_record/deps/sui/vec_set.js +20 -0
- package/dist/contracts/miso_record/deps/sui/vec_set.js.map +1 -0
- package/dist/contracts/miso_record/pressing.d.ts +327 -0
- package/dist/contracts/miso_record/pressing.d.ts.map +1 -0
- package/dist/contracts/miso_record/pressing.js +345 -0
- package/dist/contracts/miso_record/pressing.js.map +1 -0
- package/dist/contracts/miso_record/record.d.ts +190 -0
- package/dist/contracts/miso_record/record.d.ts.map +1 -0
- package/dist/contracts/miso_record/record.js +226 -0
- package/dist/contracts/miso_record/record.js.map +1 -0
- package/dist/contracts/miso_record_shop/deps/std/type_name.d.ts +18 -0
- package/dist/contracts/miso_record_shop/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/miso_record_shop/deps/std/type_name.js +20 -0
- package/dist/contracts/miso_record_shop/deps/std/type_name.js.map +1 -0
- package/dist/contracts/miso_record_shop/listing.d.ts +387 -0
- package/dist/contracts/miso_record_shop/listing.d.ts.map +1 -0
- package/dist/contracts/miso_record_shop/listing.js +380 -0
- package/dist/contracts/miso_record_shop/listing.js.map +1 -0
- package/dist/contracts/miso_record_shop/witness.d.ts +7 -0
- package/dist/contracts/miso_record_shop/witness.d.ts.map +1 -0
- package/dist/contracts/miso_record_shop/witness.js +9 -0
- package/dist/contracts/miso_record_shop/witness.js.map +1 -0
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +10 -12
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -1
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +8 -10
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -1
- package/dist/contracts/vault/vault.d.ts +149 -23
- package/dist/contracts/vault/vault.d.ts.map +1 -1
- package/dist/contracts/vault/vault.js +144 -18
- package/dist/contracts/vault/vault.js.map +1 -1
- package/dist/contracts.d.ts +3 -3
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +5 -4
- package/dist/contracts.js.map +1 -1
- package/dist/deployments.d.ts +47 -11
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +48 -9
- package/dist/deployments.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mix.d.ts +144 -0
- package/dist/mix.d.ts.map +1 -0
- package/dist/mix.js +656 -0
- package/dist/mix.js.map +1 -0
- package/dist/pressing.d.ts +72 -156
- package/dist/pressing.d.ts.map +1 -1
- package/dist/pressing.js +269 -261
- package/dist/pressing.js.map +1 -1
- package/dist/publication.d.ts +5 -2
- package/dist/publication.d.ts.map +1 -1
- package/dist/publication.js +63 -34
- package/dist/publication.js.map +1 -1
- package/dist/read/catalog.d.ts +8 -5
- package/dist/read/catalog.d.ts.map +1 -1
- package/dist/read/catalog.js +47 -35
- package/dist/read/catalog.js.map +1 -1
- package/dist/read/config.d.ts +6 -4
- package/dist/read/config.d.ts.map +1 -1
- package/dist/read/config.js +1 -2
- package/dist/read/config.js.map +1 -1
- package/dist/read/index.d.ts +1 -1
- package/dist/read/index.d.ts.map +1 -1
- package/dist/read/index.js +1 -1
- package/dist/read/index.js.map +1 -1
- package/dist/read/internal/scalars.d.ts.map +1 -1
- package/dist/read/internal/scalars.js +4 -3
- package/dist/read/internal/scalars.js.map +1 -1
- package/dist/read/internal/walrus.d.ts.map +1 -1
- package/dist/read/internal/walrus.js +2 -1
- package/dist/read/internal/walrus.js.map +1 -1
- package/dist/read/receipts.d.ts +21 -12
- package/dist/read/receipts.d.ts.map +1 -1
- package/dist/read/receipts.js +159 -56
- package/dist/read/receipts.js.map +1 -1
- package/dist/read/types.d.ts +40 -26
- package/dist/read/types.d.ts.map +1 -1
- package/dist/read/wallet.d.ts +3 -4
- package/dist/read/wallet.d.ts.map +1 -1
- package/dist/read/wallet.js +72 -53
- package/dist/read/wallet.js.map +1 -1
- package/dist/vault.d.ts +71 -15
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +135 -29
- package/dist/vault.js.map +1 -1
- package/package.json +10 -3
- package/src/client.ts +404 -69
- package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +15 -15
- package/src/contracts/miso_record/deps/sui/vec_set.ts +21 -0
- package/src/contracts/miso_record/pressing.ts +522 -0
- package/src/contracts/miso_record/record.ts +338 -0
- package/src/contracts/miso_record_shop/deps/std/type_name.ts +22 -0
- package/src/contracts/miso_record_shop/listing.ts +602 -0
- package/src/contracts/miso_record_shop/witness.ts +11 -0
- package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +14 -16
- package/src/contracts/vault/vault.ts +226 -21
- package/src/contracts.ts +5 -4
- package/src/deployments.ts +134 -38
- package/src/index.ts +2 -0
- package/src/mix.ts +910 -0
- package/src/pressing.ts +428 -423
- package/src/publication.ts +69 -36
- package/src/read/catalog.ts +49 -34
- package/src/read/config.ts +7 -7
- package/src/read/index.ts +9 -1
- package/src/read/internal/scalars.ts +4 -2
- package/src/read/internal/walrus.ts +2 -1
- package/src/read/receipts.ts +181 -66
- package/src/read/types.ts +41 -24
- package/src/read/wallet.ts +70 -57
- package/src/vault.ts +228 -41
- package/dist/contracts/miso_pressing/certificate.d.ts +0 -89
- package/dist/contracts/miso_pressing/certificate.d.ts.map +0 -1
- package/dist/contracts/miso_pressing/certificate.js +0 -108
- package/dist/contracts/miso_pressing/certificate.js.map +0 -1
- package/dist/contracts/miso_pressing/deps/std/type_name.d.ts.map +0 -1
- package/dist/contracts/miso_pressing/deps/std/type_name.js.map +0 -1
- package/dist/contracts/miso_pressing/listing.d.ts +0 -434
- package/dist/contracts/miso_pressing/listing.d.ts.map +0 -1
- package/dist/contracts/miso_pressing/listing.js +0 -401
- package/dist/contracts/miso_pressing/listing.js.map +0 -1
- package/dist/contracts/miso_pressing/pressing.d.ts +0 -334
- package/dist/contracts/miso_pressing/pressing.d.ts.map +0 -1
- package/dist/contracts/miso_pressing/pressing.js +0 -298
- package/dist/contracts/miso_pressing/pressing.js.map +0 -1
- package/src/contracts/miso_pressing/certificate.ts +0 -164
- package/src/contracts/miso_pressing/listing.ts +0 -592
- package/src/contracts/miso_pressing/pressing.ts +0 -399
- /package/dist/contracts/{miso_pressing → miso_record}/deps/std/type_name.d.ts +0 -0
- /package/dist/contracts/{miso_pressing → miso_record}/deps/std/type_name.js +0 -0
- /package/src/contracts/{miso_pressing → miso_record}/deps/std/type_name.ts +0 -0
|
@@ -6,32 +6,38 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Generic capability custody and plugin authorization.
|
|
8
8
|
*
|
|
9
|
-
* `Vault<Cap>`
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* field in the vault's
|
|
9
|
+
* `Vault<Cap>` is a permanent, deterministically addressed shell that can hold one
|
|
10
|
+
* exact capability in a Sui `Referent`. An authorized plugin receives the whole
|
|
11
|
+
* capability temporarily, paired with a hot-potato `Borrow` receipt that forces
|
|
12
|
+
* the same capability back into the same vault before the transaction can finish.
|
|
13
|
+
* Plugin authorization is represented by a typed dynamic field in the vault's
|
|
14
|
+
* `Bag`.
|
|
14
15
|
*/
|
|
15
16
|
|
|
16
|
-
import { type BcsType, bcs } from '@mysten/sui/bcs';
|
|
17
17
|
import { MoveStruct, MoveTuple, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
|
|
18
|
+
import { bcs, type BcsType } from '@mysten/sui/bcs';
|
|
18
19
|
import { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';
|
|
19
20
|
import * as borrow from './deps/sui/borrow.js';
|
|
20
21
|
import * as bag from './deps/sui/bag.js';
|
|
21
22
|
const $moduleName = '@local-pkg/vault::vault';
|
|
23
|
+
export const VaultRegistry = new MoveStruct({ name: `${$moduleName}::VaultRegistry`, fields: {
|
|
24
|
+
id: bcs.Address
|
|
25
|
+
} });
|
|
22
26
|
/**
|
|
23
27
|
* Custodies one capability and the typed authorization records for plugins.
|
|
24
28
|
*
|
|
25
|
-
* `Vault` intentionally lacks `store`: only this module can share
|
|
26
|
-
*
|
|
27
|
-
*
|
|
29
|
+
* `Vault` intentionally lacks `store`: only this module can share it, and no
|
|
30
|
+
* production API can delete it. `cap_id` permanently binds the shell to the exact
|
|
31
|
+
* capability from which its ID was derived. An empty Vault can only be restored
|
|
32
|
+
* with that same capability object.
|
|
28
33
|
*/
|
|
29
34
|
export function Vault<Cap extends BcsType<any>>(...typeParameters: [
|
|
30
35
|
Cap
|
|
31
36
|
]) {
|
|
32
37
|
return new MoveStruct({ name: `${$moduleName}::Vault<${typeParameters[0].name as Cap['name']}>`, fields: {
|
|
33
38
|
id: bcs.Address,
|
|
34
|
-
|
|
39
|
+
cap_id: bcs.Address,
|
|
40
|
+
cap: bcs.option(borrow.Referent(typeParameters[0])),
|
|
35
41
|
authorized_plugins: bag.Bag
|
|
36
42
|
} });
|
|
37
43
|
}
|
|
@@ -39,11 +45,16 @@ export const VaultAdminCap = new MoveStruct({ name: `${$moduleName}::VaultAdminC
|
|
|
39
45
|
id: bcs.Address,
|
|
40
46
|
vault_id: bcs.Address
|
|
41
47
|
} });
|
|
48
|
+
export const VaultKey = new MoveTuple({ name: `${$moduleName}::VaultKey<phantom Cap>`, fields: [bcs.Address] });
|
|
49
|
+
export const VaultAdminCapKey = new MoveTuple({ name: `${$moduleName}::VaultAdminCapKey`, fields: [bcs.bool()] });
|
|
42
50
|
export const AuthorizedPluginKey = new MoveTuple({ name: `${$moduleName}::AuthorizedPluginKey<phantom Witness>`, fields: [bcs.bool()] });
|
|
51
|
+
export const VaultRegistryCreatedEvent = new MoveStruct({ name: `${$moduleName}::VaultRegistryCreatedEvent`, fields: {
|
|
52
|
+
registry_id: bcs.Address
|
|
53
|
+
} });
|
|
43
54
|
export const VaultCreatedEvent = new MoveStruct({ name: `${$moduleName}::VaultCreatedEvent<phantom Cap>`, fields: {
|
|
44
55
|
vault_id: bcs.Address,
|
|
45
56
|
vault_admin_cap_id: bcs.Address,
|
|
46
|
-
|
|
57
|
+
cap_id: bcs.Address,
|
|
47
58
|
authorized_plugins_id: bcs.Address
|
|
48
59
|
} });
|
|
49
60
|
export const PluginAuthorizedEvent = new MoveStruct({ name: `${$moduleName}::PluginAuthorizedEvent<phantom Cap, phantom Witness>`, fields: {
|
|
@@ -52,29 +63,39 @@ export const PluginAuthorizedEvent = new MoveStruct({ name: `${$moduleName}::Plu
|
|
|
52
63
|
export const PluginRevokedEvent = new MoveStruct({ name: `${$moduleName}::PluginRevokedEvent<phantom Cap, phantom Witness>`, fields: {
|
|
53
64
|
vault_id: bcs.Address
|
|
54
65
|
} });
|
|
55
|
-
export const
|
|
66
|
+
export const VaultCapabilityWithdrawnEvent = new MoveStruct({ name: `${$moduleName}::VaultCapabilityWithdrawnEvent<phantom Cap>`, fields: {
|
|
56
67
|
vault_id: bcs.Address,
|
|
57
|
-
|
|
68
|
+
cap_id: bcs.Address
|
|
69
|
+
} });
|
|
70
|
+
export const VaultCapabilityRestoredEvent = new MoveStruct({ name: `${$moduleName}::VaultCapabilityRestoredEvent<phantom Cap>`, fields: {
|
|
71
|
+
vault_id: bcs.Address,
|
|
72
|
+
cap_id: bcs.Address
|
|
58
73
|
} });
|
|
59
74
|
export interface NewArguments<Cap extends BcsType<any>> {
|
|
75
|
+
registry: RawTransactionArgument<string>;
|
|
60
76
|
cap: RawTransactionArgument<Cap>;
|
|
61
77
|
}
|
|
62
78
|
export interface NewOptions<Cap extends BcsType<any>> {
|
|
63
79
|
package?: string;
|
|
64
80
|
arguments: NewArguments<Cap> | [
|
|
81
|
+
registry: RawTransactionArgument<string>,
|
|
65
82
|
cap: RawTransactionArgument<Cap>
|
|
66
83
|
];
|
|
67
84
|
typeArguments: [
|
|
68
85
|
string
|
|
69
86
|
];
|
|
70
87
|
}
|
|
71
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Custody `cap` in its canonical permanent Vault and create the canonical
|
|
90
|
+
* vault-specific administrator capability.
|
|
91
|
+
*/
|
|
72
92
|
export function _new<Cap extends BcsType<any>>(options: NewOptions<Cap>) {
|
|
73
93
|
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
74
94
|
const argumentsTypes = [
|
|
95
|
+
null,
|
|
75
96
|
`${options.typeArguments[0]}`
|
|
76
97
|
] satisfies (string | null)[];
|
|
77
|
-
const parameterNames = ["cap"];
|
|
98
|
+
const parameterNames = ["registry", "cap"];
|
|
78
99
|
return (tx: Transaction) => tx.moveCall({
|
|
79
100
|
package: packageAddress,
|
|
80
101
|
module: 'vault',
|
|
@@ -110,13 +131,46 @@ export function share(options: ShareOptions) {
|
|
|
110
131
|
typeArguments: options.typeArguments
|
|
111
132
|
});
|
|
112
133
|
}
|
|
113
|
-
export interface
|
|
134
|
+
export interface TransferAdminCapArguments {
|
|
135
|
+
adminCap: RawTransactionArgument<string>;
|
|
136
|
+
recipient: RawTransactionArgument<string>;
|
|
137
|
+
}
|
|
138
|
+
export interface TransferAdminCapOptions {
|
|
139
|
+
package?: string;
|
|
140
|
+
arguments: TransferAdminCapArguments | [
|
|
141
|
+
adminCap: RawTransactionArgument<string>,
|
|
142
|
+
recipient: RawTransactionArgument<string>
|
|
143
|
+
];
|
|
144
|
+
typeArguments: [
|
|
145
|
+
string
|
|
146
|
+
];
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Transfer exclusive administration without exposing public freeze, share, or
|
|
150
|
+
* wrapping operations for the VaultAdminCap.
|
|
151
|
+
*/
|
|
152
|
+
export function transferAdminCap(options: TransferAdminCapOptions) {
|
|
153
|
+
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
154
|
+
const argumentsTypes = [
|
|
155
|
+
null,
|
|
156
|
+
'address'
|
|
157
|
+
] satisfies (string | null)[];
|
|
158
|
+
const parameterNames = ["adminCap", "recipient"];
|
|
159
|
+
return (tx: Transaction) => tx.moveCall({
|
|
160
|
+
package: packageAddress,
|
|
161
|
+
module: 'vault',
|
|
162
|
+
function: 'transfer_admin_cap',
|
|
163
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
164
|
+
typeArguments: options.typeArguments
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
export interface WithdrawCapArguments {
|
|
114
168
|
self: RawTransactionArgument<string>;
|
|
115
169
|
adminCap: RawTransactionArgument<string>;
|
|
116
170
|
}
|
|
117
|
-
export interface
|
|
171
|
+
export interface WithdrawCapOptions {
|
|
118
172
|
package?: string;
|
|
119
|
-
arguments:
|
|
173
|
+
arguments: WithdrawCapArguments | [
|
|
120
174
|
self: RawTransactionArgument<string>,
|
|
121
175
|
adminCap: RawTransactionArgument<string>
|
|
122
176
|
];
|
|
@@ -124,8 +178,11 @@ export interface DestroyOptions {
|
|
|
124
178
|
string
|
|
125
179
|
];
|
|
126
180
|
}
|
|
127
|
-
/**
|
|
128
|
-
|
|
181
|
+
/**
|
|
182
|
+
* Withdraw the exact capability while leaving its canonical Vault and
|
|
183
|
+
* VaultAdminCap intact. Every plugin must be revoked first.
|
|
184
|
+
*/
|
|
185
|
+
export function withdrawCap(options: WithdrawCapOptions) {
|
|
129
186
|
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
130
187
|
const argumentsTypes = [
|
|
131
188
|
null,
|
|
@@ -135,7 +192,43 @@ export function destroy(options: DestroyOptions) {
|
|
|
135
192
|
return (tx: Transaction) => tx.moveCall({
|
|
136
193
|
package: packageAddress,
|
|
137
194
|
module: 'vault',
|
|
138
|
-
function: '
|
|
195
|
+
function: 'withdraw_cap',
|
|
196
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
197
|
+
typeArguments: options.typeArguments
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
export interface RestoreCapArguments<Cap extends BcsType<any>> {
|
|
201
|
+
self: RawTransactionArgument<string>;
|
|
202
|
+
adminCap: RawTransactionArgument<string>;
|
|
203
|
+
cap: RawTransactionArgument<Cap>;
|
|
204
|
+
}
|
|
205
|
+
export interface RestoreCapOptions<Cap extends BcsType<any>> {
|
|
206
|
+
package?: string;
|
|
207
|
+
arguments: RestoreCapArguments<Cap> | [
|
|
208
|
+
self: RawTransactionArgument<string>,
|
|
209
|
+
adminCap: RawTransactionArgument<string>,
|
|
210
|
+
cap: RawTransactionArgument<Cap>
|
|
211
|
+
];
|
|
212
|
+
typeArguments: [
|
|
213
|
+
string
|
|
214
|
+
];
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Restore the exact capability used to derive this permanent Vault. Restoring
|
|
218
|
+
* always starts from a clean plugin-authorization slate.
|
|
219
|
+
*/
|
|
220
|
+
export function restoreCap<Cap extends BcsType<any>>(options: RestoreCapOptions<Cap>) {
|
|
221
|
+
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
222
|
+
const argumentsTypes = [
|
|
223
|
+
null,
|
|
224
|
+
null,
|
|
225
|
+
`${options.typeArguments[0]}`
|
|
226
|
+
] satisfies (string | null)[];
|
|
227
|
+
const parameterNames = ["self", "adminCap", "cap"];
|
|
228
|
+
return (tx: Transaction) => tx.moveCall({
|
|
229
|
+
package: packageAddress,
|
|
230
|
+
module: 'vault',
|
|
231
|
+
function: 'restore_cap',
|
|
139
232
|
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
140
233
|
typeArguments: options.typeArguments
|
|
141
234
|
});
|
|
@@ -315,6 +408,59 @@ export function putBack<Cap extends BcsType<any>>(options: PutBackOptions<Cap>)
|
|
|
315
408
|
typeArguments: options.typeArguments
|
|
316
409
|
});
|
|
317
410
|
}
|
|
411
|
+
export interface VaultAddressArguments {
|
|
412
|
+
registry: RawTransactionArgument<string>;
|
|
413
|
+
capId: RawTransactionArgument<string>;
|
|
414
|
+
}
|
|
415
|
+
export interface VaultAddressOptions {
|
|
416
|
+
package?: string;
|
|
417
|
+
arguments: VaultAddressArguments | [
|
|
418
|
+
registry: RawTransactionArgument<string>,
|
|
419
|
+
capId: RawTransactionArgument<string>
|
|
420
|
+
];
|
|
421
|
+
typeArguments: [
|
|
422
|
+
string
|
|
423
|
+
];
|
|
424
|
+
}
|
|
425
|
+
/** Derive the canonical Vault address for `cap_id` in this registry. */
|
|
426
|
+
export function vaultAddress(options: VaultAddressOptions) {
|
|
427
|
+
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
428
|
+
const argumentsTypes = [
|
|
429
|
+
null,
|
|
430
|
+
'0x2::object::ID'
|
|
431
|
+
] satisfies (string | null)[];
|
|
432
|
+
const parameterNames = ["registry", "capId"];
|
|
433
|
+
return (tx: Transaction) => tx.moveCall({
|
|
434
|
+
package: packageAddress,
|
|
435
|
+
module: 'vault',
|
|
436
|
+
function: 'vault_address',
|
|
437
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
438
|
+
typeArguments: options.typeArguments
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
export interface VaultAdminCapAddressArguments {
|
|
442
|
+
vaultId: RawTransactionArgument<string>;
|
|
443
|
+
}
|
|
444
|
+
export interface VaultAdminCapAddressOptions {
|
|
445
|
+
package?: string;
|
|
446
|
+
arguments: VaultAdminCapAddressArguments | [
|
|
447
|
+
vaultId: RawTransactionArgument<string>
|
|
448
|
+
];
|
|
449
|
+
}
|
|
450
|
+
/** Derive the canonical VaultAdminCap address for a Vault ID. */
|
|
451
|
+
export function vaultAdminCapAddress(options: VaultAdminCapAddressOptions) {
|
|
452
|
+
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
453
|
+
const argumentsTypes = [
|
|
454
|
+
'0x2::object::ID'
|
|
455
|
+
] satisfies (string | null)[];
|
|
456
|
+
const parameterNames = ["vaultId"];
|
|
457
|
+
return (tx: Transaction) => tx.moveCall({
|
|
458
|
+
package: packageAddress,
|
|
459
|
+
module: 'vault',
|
|
460
|
+
function: 'vault_admin_cap_address',
|
|
461
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
462
|
+
});
|
|
463
|
+
}
|
|
318
464
|
export interface VaultIdArguments {
|
|
319
465
|
self: RawTransactionArgument<string>;
|
|
320
466
|
}
|
|
@@ -341,6 +487,65 @@ export function vaultId(options: VaultIdOptions) {
|
|
|
341
487
|
typeArguments: options.typeArguments
|
|
342
488
|
});
|
|
343
489
|
}
|
|
490
|
+
export interface CapIdArguments {
|
|
491
|
+
self: RawTransactionArgument<string>;
|
|
492
|
+
}
|
|
493
|
+
export interface CapIdOptions {
|
|
494
|
+
package?: string;
|
|
495
|
+
arguments: CapIdArguments | [
|
|
496
|
+
self: RawTransactionArgument<string>
|
|
497
|
+
];
|
|
498
|
+
typeArguments: [
|
|
499
|
+
string
|
|
500
|
+
];
|
|
501
|
+
}
|
|
502
|
+
/** The exact capability object permanently assigned to this Vault. */
|
|
503
|
+
export function capId(options: CapIdOptions) {
|
|
504
|
+
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
505
|
+
const argumentsTypes = [
|
|
506
|
+
null
|
|
507
|
+
] satisfies (string | null)[];
|
|
508
|
+
const parameterNames = ["self"];
|
|
509
|
+
return (tx: Transaction) => tx.moveCall({
|
|
510
|
+
package: packageAddress,
|
|
511
|
+
module: 'vault',
|
|
512
|
+
function: 'cap_id',
|
|
513
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
514
|
+
typeArguments: options.typeArguments
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
export interface IsOccupiedArguments {
|
|
518
|
+
self: RawTransactionArgument<string>;
|
|
519
|
+
}
|
|
520
|
+
export interface IsOccupiedOptions {
|
|
521
|
+
package?: string;
|
|
522
|
+
arguments: IsOccupiedArguments | [
|
|
523
|
+
self: RawTransactionArgument<string>
|
|
524
|
+
];
|
|
525
|
+
typeArguments: [
|
|
526
|
+
string
|
|
527
|
+
];
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Whether the permanent outer capability slot is occupied.
|
|
531
|
+
*
|
|
532
|
+
* This is the persistent-state custody view. It remains true during a
|
|
533
|
+
* transaction-local lease even though the inner Referent is temporarily empty.
|
|
534
|
+
*/
|
|
535
|
+
export function isOccupied(options: IsOccupiedOptions) {
|
|
536
|
+
const packageAddress = options.package ?? '@local-pkg/vault';
|
|
537
|
+
const argumentsTypes = [
|
|
538
|
+
null
|
|
539
|
+
] satisfies (string | null)[];
|
|
540
|
+
const parameterNames = ["self"];
|
|
541
|
+
return (tx: Transaction) => tx.moveCall({
|
|
542
|
+
package: packageAddress,
|
|
543
|
+
module: 'vault',
|
|
544
|
+
function: 'is_occupied',
|
|
545
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
546
|
+
typeArguments: options.typeArguments
|
|
547
|
+
});
|
|
548
|
+
}
|
|
344
549
|
export interface AuthorizedPluginsIdArguments {
|
|
345
550
|
self: RawTransactionArgument<string>;
|
|
346
551
|
}
|
package/src/contracts.ts
CHANGED
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
// re-exported from ITS `contracts` namespace — import it from there rather than
|
|
10
10
|
// mirroring it here.
|
|
11
11
|
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
export * as
|
|
15
|
-
export * as
|
|
12
|
+
// Record identity/issuance and Record Shop primary-sale mechanics. The
|
|
13
|
+
// package-restricted witness constructor is intentionally not exported here.
|
|
14
|
+
export * as record from "./contracts/miso_record/record.ts";
|
|
15
|
+
export * as pressing from "./contracts/miso_record/pressing.ts";
|
|
16
|
+
export * as listing from "./contracts/miso_record_shop/listing.ts";
|
|
16
17
|
|
|
17
18
|
// Generic royalty-pool primitive plus vault-custodied business-logic plugins.
|
|
18
19
|
export * as royaltyPool from "./contracts/royalty_pool/pool.ts";
|
package/src/deployments.ts
CHANGED
|
@@ -1,11 +1,65 @@
|
|
|
1
1
|
// Copyright (c) Miso Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import type {
|
|
5
|
-
MisoDeployment,
|
|
6
|
-
MisoNetwork,
|
|
7
|
-
} from "@misonetwork/sdk/deployments";
|
|
4
|
+
import type { MisoDeployment, MisoNetwork } from "@misonetwork/sdk/deployments";
|
|
8
5
|
import { MISO_DEPLOYMENTS } from "@misonetwork/sdk/deployments";
|
|
6
|
+
import { normalizeSuiObjectId } from "@mysten/sui/utils";
|
|
7
|
+
|
|
8
|
+
/** Primary Record sales are unavailable on legacy deployments until both new
|
|
9
|
+
* immutable packages have been freshly published and verified. */
|
|
10
|
+
export type RecordSalesDeployment =
|
|
11
|
+
| {
|
|
12
|
+
readonly status: "unavailable";
|
|
13
|
+
readonly reason: string;
|
|
14
|
+
readonly legacy?: {
|
|
15
|
+
readonly recordPackageId: string;
|
|
16
|
+
readonly pressingPackageId: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
| {
|
|
20
|
+
readonly status: "available";
|
|
21
|
+
readonly recordPackageId: string;
|
|
22
|
+
readonly recordShopPackageId: string;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export class RecordSalesUnavailableError extends Error {
|
|
26
|
+
override readonly name = "RecordSalesUnavailableError";
|
|
27
|
+
constructor(readonly reason: string) {
|
|
28
|
+
super(`@misofm/sdk: Record sales are unavailable: ${reason}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function requireRecordSalesDeployment(
|
|
33
|
+
deployment: RecordSalesDeployment | undefined,
|
|
34
|
+
): Extract<RecordSalesDeployment, { status: "available" }> {
|
|
35
|
+
if (!deployment || deployment.status === "unavailable") {
|
|
36
|
+
throw new RecordSalesUnavailableError(
|
|
37
|
+
deployment?.reason ?? "no Record sales deployment was configured",
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
const canonicalPackageId = (value: string): boolean => {
|
|
41
|
+
if (!/^0x[0-9a-f]{64}$/.test(value)) return false;
|
|
42
|
+
try {
|
|
43
|
+
return normalizeSuiObjectId(value) === value;
|
|
44
|
+
} catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
if (
|
|
49
|
+
!canonicalPackageId(deployment.recordPackageId) ||
|
|
50
|
+
!canonicalPackageId(deployment.recordShopPackageId)
|
|
51
|
+
) {
|
|
52
|
+
throw new RecordSalesUnavailableError(
|
|
53
|
+
"Record and Record Shop package IDs must be canonical 32-byte Sui object IDs",
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
if (deployment.recordPackageId === deployment.recordShopPackageId) {
|
|
57
|
+
throw new RecordSalesUnavailableError(
|
|
58
|
+
"Record and Record Shop package IDs must be distinct",
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
return deployment;
|
|
62
|
+
}
|
|
9
63
|
|
|
10
64
|
/** Complete on-chain identity used by the Miso platform SDK on one network. */
|
|
11
65
|
export interface MisoPlatformDeployment {
|
|
@@ -15,9 +69,8 @@ export interface MisoPlatformDeployment {
|
|
|
15
69
|
readonly chainIdentifier: string;
|
|
16
70
|
/** The complete protocol and Party deployment this platform build targets. */
|
|
17
71
|
readonly protocol: MisoDeployment;
|
|
72
|
+
readonly recordSales: RecordSalesDeployment;
|
|
18
73
|
readonly packages: {
|
|
19
|
-
readonly pressing: string;
|
|
20
|
-
readonly record: string;
|
|
21
74
|
readonly minato: string;
|
|
22
75
|
readonly credit: string;
|
|
23
76
|
readonly compositionCredits: string;
|
|
@@ -51,14 +104,22 @@ export interface MisoPlatformDeployment {
|
|
|
51
104
|
readonly recordingAdvisory: string;
|
|
52
105
|
readonly recordingLanguage: string;
|
|
53
106
|
readonly recordingMasterReference: string;
|
|
107
|
+
/** Canonical plaintext session pointer extension; absent before publication. */
|
|
108
|
+
readonly recordingEngineSession?: string;
|
|
109
|
+
/** Original immutable Record-gated Seal policy; absent before publication. */
|
|
110
|
+
readonly recordSealPolicy?: string;
|
|
54
111
|
readonly recordingPreview: string;
|
|
55
112
|
/** External `ori::walrus_data::WalrusData` dependency used by cover art. */
|
|
56
113
|
readonly ori: string;
|
|
57
114
|
};
|
|
58
115
|
readonly objects: {
|
|
59
116
|
readonly releaseRegistry: string;
|
|
117
|
+
/** Shared parent used to derive canonical Vault object ids. */
|
|
118
|
+
readonly vaultRegistry: string;
|
|
60
119
|
/** Shared parent used to derive canonical Genre object ids. */
|
|
61
120
|
readonly genreRegistry: string;
|
|
121
|
+
/** Frozen namespace object embedded in Recording-session Seal identities. */
|
|
122
|
+
readonly recordGate?: string;
|
|
62
123
|
};
|
|
63
124
|
readonly legacy: {
|
|
64
125
|
readonly releaseCoverArtPackages: readonly string[];
|
|
@@ -68,7 +129,7 @@ export interface MisoPlatformDeployment {
|
|
|
68
129
|
/**
|
|
69
130
|
* Platform deployments bundled with this SDK release.
|
|
70
131
|
*
|
|
71
|
-
* IDs come only from
|
|
132
|
+
* IDs come only from verified immutable deployment output.
|
|
72
133
|
* Consumers may still pass an explicit complete deployment for custom networks.
|
|
73
134
|
*/
|
|
74
135
|
export const MISO_PLATFORM_DEPLOYMENTS = {
|
|
@@ -76,46 +137,81 @@ export const MISO_PLATFORM_DEPLOYMENTS = {
|
|
|
76
137
|
network: "testnet",
|
|
77
138
|
chainIdentifier: "69WiPg3DAQiwdxfncX6wYQ2siKwAe6L9BZthQea3JNMD",
|
|
78
139
|
protocol: MISO_DEPLOYMENTS.testnet,
|
|
140
|
+
recordSales: {
|
|
141
|
+
status: "unavailable",
|
|
142
|
+
reason:
|
|
143
|
+
"the finalized immutable miso_record and miso_record_shop packages have not been deployed",
|
|
144
|
+
legacy: {
|
|
145
|
+
pressingPackageId:
|
|
146
|
+
"0x95fba53c968978f75d6ca8a5e6f0f3ba83fdc3af301bc8419be354a3990af5b9",
|
|
147
|
+
recordPackageId:
|
|
148
|
+
"0x6150c474200f63bf73072642564886e5ecb1a4c0498ede31acd7908d94dbc83b",
|
|
149
|
+
},
|
|
150
|
+
},
|
|
79
151
|
packages: {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
compositionCredits:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
152
|
+
minato:
|
|
153
|
+
"0x8466e9864c1d947888e73b0e349b035bc22805579eef18f132966f56c8efe1d2",
|
|
154
|
+
credit:
|
|
155
|
+
"0x20d8e38f49445cbae45fd66c262c2cbc4bf4cccab487b3fb443a491dc24071cd",
|
|
156
|
+
compositionCredits:
|
|
157
|
+
"0x8b376967e9c32169727ec5341890f28c66d8577d7bfcecb83aa78aec3e84dce5",
|
|
158
|
+
recordingCredits:
|
|
159
|
+
"0x7096a47b0ba12063c037d6d417bffade758665a3f313574c8ba218823cfb159a",
|
|
160
|
+
releaseCredits:
|
|
161
|
+
"0xbe293700ef758c95b69838df6cfa8377b9cad1dd59cbf933974f68b1766d87b5",
|
|
162
|
+
royaltyPool:
|
|
163
|
+
"0x8021942b5e91c5ef5e383ad481102ee96f52dd77b9b3dbcdf06bb133cd7c91ed",
|
|
164
|
+
vault:
|
|
165
|
+
"0xfe396139d500e4381adefea72da2e0157c54ee5c38cc8bdcbc4edd551d043230",
|
|
166
|
+
vaultCompositionRoyaltyPoolPlugin:
|
|
167
|
+
"0xbfd9b6c9d3e5635c0beb5472b45566b92f509ed67ae4a661bf928c359f3b438f",
|
|
168
|
+
vaultRecordingRoyaltyPoolPlugin:
|
|
169
|
+
"0x1643c188790a7e756310ce779b279159356a9bf7fe8237edf1e5b24a15422615",
|
|
170
|
+
vaultPartyWalletPlugin:
|
|
171
|
+
"0x0d869fe4291fec02821aed40c38349bac8547f0c690316f2a1a2273ac1f317ed",
|
|
172
|
+
routedStake:
|
|
173
|
+
"0x7a55b1841043efea865d65a6601e057400a79a0aa7bb11e781a25dbe622cbe5f",
|
|
174
|
+
vaultCompositionRoutedStakePlugin:
|
|
175
|
+
"0xf86994ebd0dabecda1b14efc02a2e71b3219a7c043841ad8097dc3683bd088dd",
|
|
176
|
+
coverArt:
|
|
177
|
+
"0x2dae28058b89df93224bacfb9af42fd3ab41f001c2c815fd57fd575024d9a50b",
|
|
178
|
+
releaseCoverArt:
|
|
179
|
+
"0x649b18f2bb3d94f6a611a8e4ad3a29dcf8b7bba3f684056d60897a8a5e835106",
|
|
180
|
+
genre:
|
|
181
|
+
"0x5091d30e893105abe24adf75223f587361034e90516c6e509897bb86d18d2387",
|
|
182
|
+
releaseDescription:
|
|
183
|
+
"0x3e26e4c4c5b3f51070d6d7bb1527eaa304f34ae5dfde078661e180e7594d6d28",
|
|
184
|
+
releaseDspLink:
|
|
185
|
+
"0x2b8e1d7be7a3cbc07e6167c5b5c6511059791b4a2116c1fa97d65cfd871d0bda",
|
|
186
|
+
releaseGenre:
|
|
187
|
+
"0x7882367d45efff41ef0cb9e937029a3f8a3cdf5908d83beeb5cbc0cff178d290",
|
|
188
|
+
releaseKind:
|
|
189
|
+
"0x3e74c960d9446ae2ebf228456ddc1b099d2090501c9cbcd284a999aa2e774e12",
|
|
190
|
+
vaultReleaseRevenueDistributorPlugin:
|
|
191
|
+
"0x2172dc326fbf226b6cf6eed610f217fb0ff2682d1938e8089f4d6ce21a4999b5",
|
|
192
|
+
recordingAdvisory:
|
|
193
|
+
"0x28e0e72c5b892fc888a9007afa59ebe04ed8e47f12632ddb42cd685d09c4af2e",
|
|
194
|
+
recordingLanguage:
|
|
195
|
+
"0x4b284a9435cf4f48e3785e4485d16be2fcbcef5beaa2b44b6556d9c1028e2c0d",
|
|
196
|
+
recordingMasterReference:
|
|
197
|
+
"0x2b06ab58f2d5a915b42fc5879d52241fc72e804b3da782fa752b2d2f242170c0",
|
|
198
|
+
recordingPreview:
|
|
199
|
+
"0x449aafe29707adf249df7e90355ecb19d939ea77d9e19fd3e2fdb220e73e74f0",
|
|
106
200
|
ori: "0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78",
|
|
107
201
|
},
|
|
108
202
|
objects: {
|
|
109
|
-
releaseRegistry:
|
|
110
|
-
|
|
203
|
+
releaseRegistry:
|
|
204
|
+
"0xf5941ae9640f6f24b75e921da16c95fd23d776b9e6518c275a50a5ce6337c8ba",
|
|
205
|
+
vaultRegistry:
|
|
206
|
+
"0xee17744a0c6f71bbde98d0c2b4cab58929000fd2f65e28a4676164d34758584b",
|
|
207
|
+
genreRegistry:
|
|
208
|
+
"0xa83f9c7a340b5b5b6387d1d5933019b45bcedebbae85bbb89bab855a56e90816",
|
|
111
209
|
},
|
|
112
210
|
legacy: {
|
|
113
211
|
releaseCoverArtPackages: [],
|
|
114
212
|
},
|
|
115
213
|
},
|
|
116
|
-
} as const satisfies Partial<
|
|
117
|
-
Record<MisoNetwork, MisoPlatformDeployment>
|
|
118
|
-
>;
|
|
214
|
+
} as const satisfies Partial<Record<MisoNetwork, MisoPlatformDeployment>>;
|
|
119
215
|
|
|
120
216
|
/** Resolve a bundled platform deployment, failing closed when it is unavailable. */
|
|
121
217
|
export function getMisoPlatformDeployment(
|
package/src/index.ts
CHANGED
|
@@ -46,6 +46,7 @@ export * from "./share-template.ts";
|
|
|
46
46
|
export * from "./release-graph.ts";
|
|
47
47
|
export * from "./publication.ts";
|
|
48
48
|
export * from "./catalog.ts";
|
|
49
|
+
export * from "./mix.ts";
|
|
49
50
|
|
|
50
51
|
// High-level, JSON-safe platform projections used directly by clients and by
|
|
51
52
|
// the thin HTTP read service. Namespaced because these composed view types are
|
|
@@ -58,6 +59,7 @@ export * from "./credits.ts";
|
|
|
58
59
|
export * from "./cover.ts";
|
|
59
60
|
export * from "./release-extensions.ts";
|
|
60
61
|
export * from "./recording-extensions.ts";
|
|
62
|
+
export * from "./mix.ts";
|
|
61
63
|
export * from "./vault.ts";
|
|
62
64
|
|
|
63
65
|
// Generated, ABI-bound bindings (BCS structs + type-safe Move calls).
|