@mysten/sui 1.26.1 → 1.27.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/CHANGELOG.md +7 -0
- package/dist/cjs/bcs/bcs.d.ts +3 -2
- package/dist/cjs/bcs/bcs.js +3 -3
- package/dist/cjs/bcs/bcs.js.map +2 -2
- package/dist/cjs/bcs/effects.d.ts +18 -12
- package/dist/cjs/bcs/index.d.ts +460 -453
- package/dist/cjs/bcs/index.js +4 -4
- package/dist/cjs/bcs/index.js.map +1 -1
- package/dist/cjs/client/client.d.ts +38 -16
- package/dist/cjs/client/client.js +142 -62
- package/dist/cjs/client/client.js.map +2 -2
- package/dist/cjs/client/http-transport.d.ts +2 -0
- package/dist/cjs/client/http-transport.js +7 -0
- package/dist/cjs/client/http-transport.js.map +2 -2
- package/dist/cjs/client/rpc-websocket-client.d.ts +2 -1
- package/dist/cjs/client/rpc-websocket-client.js +7 -2
- package/dist/cjs/client/rpc-websocket-client.js.map +2 -2
- package/dist/cjs/client/types/generated.d.ts +1 -0
- package/dist/cjs/client/types/generated.js.map +1 -1
- package/dist/cjs/client/types/params.d.ts +56 -0
- package/dist/cjs/client/types/params.js.map +1 -1
- package/dist/cjs/experimental/cache.d.ts +11 -0
- package/dist/cjs/experimental/cache.js +79 -0
- package/dist/cjs/experimental/cache.js.map +7 -0
- package/dist/cjs/experimental/client.d.ts +4 -2
- package/dist/cjs/experimental/client.js +4 -2
- package/dist/cjs/experimental/client.js.map +2 -2
- package/dist/cjs/experimental/core.d.ts +10 -2
- package/dist/cjs/experimental/core.js +59 -1
- package/dist/cjs/experimental/core.js.map +2 -2
- package/dist/cjs/experimental/index.d.ts +5 -0
- package/dist/cjs/experimental/index.js +29 -0
- package/dist/cjs/experimental/index.js.map +7 -0
- package/dist/cjs/experimental/transports/jsonRPC.d.ts +19 -5
- package/dist/cjs/experimental/transports/jsonRPC.js +270 -12
- package/dist/cjs/experimental/transports/jsonRPC.js.map +2 -2
- package/dist/cjs/experimental/types.d.ts +84 -41
- package/dist/cjs/experimental/types.js.map +1 -1
- package/dist/cjs/keypairs/secp256k1/keypair.js +1 -1
- package/dist/cjs/keypairs/secp256k1/keypair.js.map +2 -2
- package/dist/cjs/keypairs/secp256r1/keypair.js +1 -1
- package/dist/cjs/keypairs/secp256r1/keypair.js.map +2 -2
- package/dist/cjs/multisig/publickey.js +5 -5
- package/dist/cjs/multisig/publickey.js.map +2 -2
- package/dist/cjs/multisig/signer.js +2 -2
- package/dist/cjs/multisig/signer.js.map +2 -2
- package/dist/cjs/transactions/plugins/utils.js +2 -2
- package/dist/cjs/transactions/plugins/utils.js.map +2 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/bcs/bcs.d.ts +3 -2
- package/dist/esm/bcs/bcs.js +3 -3
- package/dist/esm/bcs/bcs.js.map +2 -2
- package/dist/esm/bcs/effects.d.ts +18 -12
- package/dist/esm/bcs/index.d.ts +460 -453
- package/dist/esm/bcs/index.js +4 -4
- package/dist/esm/bcs/index.js.map +1 -1
- package/dist/esm/client/client.d.ts +38 -16
- package/dist/esm/client/client.js +143 -63
- package/dist/esm/client/client.js.map +2 -2
- package/dist/esm/client/http-transport.d.ts +2 -0
- package/dist/esm/client/http-transport.js +7 -0
- package/dist/esm/client/http-transport.js.map +2 -2
- package/dist/esm/client/rpc-websocket-client.d.ts +2 -1
- package/dist/esm/client/rpc-websocket-client.js +7 -2
- package/dist/esm/client/rpc-websocket-client.js.map +2 -2
- package/dist/esm/client/types/generated.d.ts +1 -0
- package/dist/esm/client/types/params.d.ts +56 -0
- package/dist/esm/experimental/cache.d.ts +11 -0
- package/dist/esm/experimental/cache.js +59 -0
- package/dist/esm/experimental/cache.js.map +7 -0
- package/dist/esm/experimental/client.d.ts +4 -2
- package/dist/esm/experimental/client.js +4 -2
- package/dist/esm/experimental/client.js.map +2 -2
- package/dist/esm/experimental/core.d.ts +10 -2
- package/dist/esm/experimental/core.js +60 -2
- package/dist/esm/experimental/core.js.map +2 -2
- package/dist/esm/experimental/index.d.ts +5 -0
- package/dist/esm/experimental/index.js +9 -0
- package/dist/esm/experimental/index.js.map +7 -0
- package/dist/esm/experimental/transports/jsonRPC.d.ts +19 -5
- package/dist/esm/experimental/transports/jsonRPC.js +270 -12
- package/dist/esm/experimental/transports/jsonRPC.js.map +2 -2
- package/dist/esm/experimental/types.d.ts +84 -41
- package/dist/esm/keypairs/secp256k1/keypair.js +1 -1
- package/dist/esm/keypairs/secp256k1/keypair.js.map +2 -2
- package/dist/esm/keypairs/secp256r1/keypair.js +1 -1
- package/dist/esm/keypairs/secp256r1/keypair.js.map +2 -2
- package/dist/esm/multisig/publickey.js +5 -5
- package/dist/esm/multisig/publickey.js.map +2 -2
- package/dist/esm/multisig/signer.js +2 -2
- package/dist/esm/multisig/signer.js.map +2 -2
- package/dist/esm/transactions/plugins/utils.js +2 -2
- package/dist/esm/transactions/plugins/utils.js.map +2 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/experimental/package.json +6 -0
- package/package.json +7 -2
- package/src/bcs/bcs.ts +3 -3
- package/src/bcs/index.ts +3 -3
- package/src/client/client.ts +119 -26
- package/src/client/http-transport.ts +10 -0
- package/src/client/rpc-websocket-client.ts +8 -1
- package/src/client/types/generated.ts +1 -0
- package/src/client/types/params.ts +68 -6
- package/src/experimental/cache.ts +64 -0
- package/src/experimental/client.ts +4 -2
- package/src/experimental/core.ts +89 -2
- package/src/experimental/index.ts +20 -0
- package/src/experimental/transports/jsonRPC.ts +319 -9
- package/src/experimental/types.ts +92 -48
- package/src/keypairs/secp256k1/keypair.ts +1 -1
- package/src/keypairs/secp256r1/keypair.ts +1 -1
- package/src/multisig/publickey.ts +5 -5
- package/src/multisig/signer.ts +2 -2
- package/src/transactions/__tests__/bcs.test.ts +2 -2
- package/src/transactions/plugins/utils.ts +2 -2
- package/src/version.ts +1 -1
|
@@ -7,11 +7,14 @@ import { bcs } from '../../bcs/index.js';
|
|
|
7
7
|
import type {
|
|
8
8
|
ObjectOwner,
|
|
9
9
|
SuiClient,
|
|
10
|
+
SuiObjectChange,
|
|
10
11
|
SuiObjectData,
|
|
11
12
|
SuiTransactionBlockResponse,
|
|
13
|
+
TransactionEffects,
|
|
12
14
|
} from '../../client/index.js';
|
|
13
15
|
import { batch } from '../../transactions/plugins/utils.js';
|
|
14
16
|
import { Transaction } from '../../transactions/Transaction.js';
|
|
17
|
+
import { normalizeStructTag } from '../../utils/sui-types.js';
|
|
15
18
|
import { Experimental_CoreClient } from '../core.js';
|
|
16
19
|
import { ObjectError } from '../errors.js';
|
|
17
20
|
import type { Experimental_SuiClientTypes } from '../types.js';
|
|
@@ -34,6 +37,7 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
34
37
|
options: {
|
|
35
38
|
showOwner: true,
|
|
36
39
|
showType: true,
|
|
40
|
+
showBcs: true,
|
|
37
41
|
},
|
|
38
42
|
});
|
|
39
43
|
|
|
@@ -55,6 +59,11 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
55
59
|
owner: options.address,
|
|
56
60
|
limit: options.limit,
|
|
57
61
|
cursor: options.cursor,
|
|
62
|
+
options: {
|
|
63
|
+
showOwner: true,
|
|
64
|
+
showType: true,
|
|
65
|
+
showBcs: true,
|
|
66
|
+
},
|
|
58
67
|
});
|
|
59
68
|
|
|
60
69
|
return {
|
|
@@ -82,7 +91,7 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
82
91
|
id: coin.coinObjectId,
|
|
83
92
|
version: coin.version,
|
|
84
93
|
digest: coin.digest,
|
|
85
|
-
balance:
|
|
94
|
+
balance: coin.balance,
|
|
86
95
|
type: `0x2::coin::Coin<${coin.coinType}>`,
|
|
87
96
|
content: Coin.serialize({
|
|
88
97
|
id: coin.coinObjectId,
|
|
@@ -110,7 +119,7 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
110
119
|
return {
|
|
111
120
|
balance: {
|
|
112
121
|
coinType: balance.coinType,
|
|
113
|
-
balance:
|
|
122
|
+
balance: balance.totalBalance,
|
|
114
123
|
},
|
|
115
124
|
};
|
|
116
125
|
}
|
|
@@ -122,7 +131,7 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
122
131
|
return {
|
|
123
132
|
balances: balances.map((balance) => ({
|
|
124
133
|
coinType: balance.coinType,
|
|
125
|
-
balance:
|
|
134
|
+
balance: balance.totalBalance,
|
|
126
135
|
})),
|
|
127
136
|
hasNextPage: false,
|
|
128
137
|
cursor: null,
|
|
@@ -148,8 +157,10 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
148
157
|
transactionBlock: options.transaction,
|
|
149
158
|
signature: options.signatures,
|
|
150
159
|
options: {
|
|
151
|
-
|
|
160
|
+
showRawEffects: true,
|
|
152
161
|
showEvents: true,
|
|
162
|
+
showObjectChanges: true,
|
|
163
|
+
showRawInput: true,
|
|
153
164
|
},
|
|
154
165
|
});
|
|
155
166
|
|
|
@@ -166,8 +177,10 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
166
177
|
return {
|
|
167
178
|
transaction: {
|
|
168
179
|
digest: await tx.getDigest(),
|
|
169
|
-
|
|
170
|
-
|
|
180
|
+
effects: parseTransactionEffectsJson({
|
|
181
|
+
effects: result.effects,
|
|
182
|
+
objectChanges: result.objectChanges,
|
|
183
|
+
}),
|
|
171
184
|
signatures: [],
|
|
172
185
|
bcs: options.transaction,
|
|
173
186
|
},
|
|
@@ -176,7 +189,30 @@ export class JSONRpcTransport extends Experimental_CoreClient {
|
|
|
176
189
|
async getReferenceGasPrice() {
|
|
177
190
|
const referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice();
|
|
178
191
|
return {
|
|
179
|
-
referenceGasPrice,
|
|
192
|
+
referenceGasPrice: String(referenceGasPrice),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
async getDynamicFields(options: Experimental_SuiClientTypes.GetDynamicFieldsOptions) {
|
|
197
|
+
const dynamicFields = await this.#jsonRpcClient.getDynamicFields({
|
|
198
|
+
parentId: options.parentId,
|
|
199
|
+
limit: options.limit,
|
|
200
|
+
cursor: options.cursor,
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
return {
|
|
204
|
+
dynamicFields: dynamicFields.data.map((dynamicField) => ({
|
|
205
|
+
id: dynamicField.objectId,
|
|
206
|
+
version: dynamicField.version,
|
|
207
|
+
digest: dynamicField.digest,
|
|
208
|
+
type: dynamicField.objectType,
|
|
209
|
+
name: {
|
|
210
|
+
type: dynamicField.name.type,
|
|
211
|
+
bcs: fromBase64(dynamicField.bcsName),
|
|
212
|
+
},
|
|
213
|
+
})),
|
|
214
|
+
hasNextPage: dynamicFields.hasNextPage,
|
|
215
|
+
cursor: dynamicFields.nextCursor,
|
|
180
216
|
};
|
|
181
217
|
}
|
|
182
218
|
}
|
|
@@ -204,7 +240,7 @@ function parseOwner(owner: ObjectOwner): Experimental_SuiClientTypes.ObjectOwner
|
|
|
204
240
|
if ('ConsensusV2' in owner) {
|
|
205
241
|
return {
|
|
206
242
|
$kind: 'ConsensusV2',
|
|
207
|
-
|
|
243
|
+
ConsensusV2: {
|
|
208
244
|
authenticator: {
|
|
209
245
|
$kind: 'SingleOwner',
|
|
210
246
|
SingleOwner: owner.ConsensusV2.authenticator.SingleOwner,
|
|
@@ -247,12 +283,286 @@ function parseTransaction(
|
|
|
247
283
|
|
|
248
284
|
return {
|
|
249
285
|
digest: transaction.digest,
|
|
250
|
-
effects:
|
|
286
|
+
effects: parseTransactionEffects({
|
|
287
|
+
effects: new Uint8Array(transaction.rawEffects!),
|
|
288
|
+
objectChanges: transaction.objectChanges ?? null,
|
|
289
|
+
}),
|
|
251
290
|
bcs: bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes(),
|
|
252
291
|
signatures: parsedTx.txSignatures,
|
|
253
292
|
};
|
|
254
293
|
}
|
|
255
294
|
|
|
295
|
+
function parseTransactionEffects({
|
|
296
|
+
effects,
|
|
297
|
+
epoch,
|
|
298
|
+
objectChanges,
|
|
299
|
+
}: {
|
|
300
|
+
effects: Uint8Array;
|
|
301
|
+
objectChanges: SuiObjectChange[] | null;
|
|
302
|
+
epoch?: string | null;
|
|
303
|
+
}): Experimental_SuiClientTypes.TransactionEffects {
|
|
304
|
+
const parsed = bcs.TransactionEffects.parse(effects);
|
|
305
|
+
const objectTypes: Record<string, string> = {};
|
|
306
|
+
|
|
307
|
+
objectChanges?.forEach((change) => {
|
|
308
|
+
if (change.type !== 'published') {
|
|
309
|
+
objectTypes[change.objectId] = change.objectType;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
switch (parsed.$kind) {
|
|
314
|
+
case 'V1':
|
|
315
|
+
return parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1, epoch, objectTypes });
|
|
316
|
+
case 'V2':
|
|
317
|
+
return parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2, epoch, objectTypes });
|
|
318
|
+
default:
|
|
319
|
+
throw new Error(
|
|
320
|
+
`Unknown transaction effects version: ${(parsed as { $kind: string }).$kind}`,
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function parseTransactionEffectsV1(_: {
|
|
326
|
+
bytes: Uint8Array;
|
|
327
|
+
effects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V1']>;
|
|
328
|
+
epoch?: string | null;
|
|
329
|
+
objectTypes: Record<string, string>;
|
|
330
|
+
}): Experimental_SuiClientTypes.TransactionEffects {
|
|
331
|
+
throw new Error('V1 effects are not supported yet');
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
function parseTransactionEffectsV2({
|
|
335
|
+
bytes,
|
|
336
|
+
effects,
|
|
337
|
+
epoch,
|
|
338
|
+
objectTypes,
|
|
339
|
+
}: {
|
|
340
|
+
bytes: Uint8Array;
|
|
341
|
+
effects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V2']>;
|
|
342
|
+
epoch?: string | null;
|
|
343
|
+
objectTypes: Record<string, string>;
|
|
344
|
+
}): Experimental_SuiClientTypes.TransactionEffects {
|
|
345
|
+
const changedObjects = effects.changedObjects.map(
|
|
346
|
+
([id, change]): Experimental_SuiClientTypes.ChangedObject => {
|
|
347
|
+
return {
|
|
348
|
+
id,
|
|
349
|
+
inputState: change.inputState.$kind === 'Exist' ? 'Exists' : 'DoesNotExist',
|
|
350
|
+
inputVersion: change.inputState.Exist?.[0][0] ?? null,
|
|
351
|
+
inputDigest: change.inputState.Exist?.[0][1] ?? null,
|
|
352
|
+
inputOwner: change.inputState.Exist?.[1] ?? null,
|
|
353
|
+
outputState:
|
|
354
|
+
change.outputState.$kind === 'NotExist' ? 'DoesNotExist' : change.outputState.$kind,
|
|
355
|
+
outputVersion:
|
|
356
|
+
change.outputState.$kind === 'PackageWrite'
|
|
357
|
+
? change.outputState.PackageWrite?.[0]
|
|
358
|
+
: change.outputState.ObjectWrite
|
|
359
|
+
? effects.lamportVersion
|
|
360
|
+
: null,
|
|
361
|
+
outputDigest:
|
|
362
|
+
change.outputState.$kind === 'PackageWrite'
|
|
363
|
+
? change.outputState.PackageWrite?.[1]
|
|
364
|
+
: (change.outputState.ObjectWrite?.[0] ?? null),
|
|
365
|
+
outputOwner: change.outputState.ObjectWrite ? change.outputState.ObjectWrite[1] : null,
|
|
366
|
+
idOperation: change.idOperation.$kind,
|
|
367
|
+
objectType: objectTypes[id] ?? null,
|
|
368
|
+
};
|
|
369
|
+
},
|
|
370
|
+
);
|
|
371
|
+
|
|
372
|
+
return {
|
|
373
|
+
bcs: bytes,
|
|
374
|
+
digest: effects.transactionDigest,
|
|
375
|
+
version: 2,
|
|
376
|
+
status:
|
|
377
|
+
effects.status.$kind === 'Success'
|
|
378
|
+
? {
|
|
379
|
+
success: true,
|
|
380
|
+
error: null,
|
|
381
|
+
}
|
|
382
|
+
: {
|
|
383
|
+
success: false,
|
|
384
|
+
// TODO: add command
|
|
385
|
+
error: effects.status.Failed.error.$kind,
|
|
386
|
+
},
|
|
387
|
+
epoch: epoch ?? null,
|
|
388
|
+
gasUsed: effects.gasUsed,
|
|
389
|
+
transactionDigest: effects.transactionDigest,
|
|
390
|
+
gasObject:
|
|
391
|
+
effects.gasObjectIndex === null ? null : (changedObjects[effects.gasObjectIndex] ?? null),
|
|
392
|
+
eventsDigest: effects.eventsDigest,
|
|
393
|
+
dependencies: effects.dependencies,
|
|
394
|
+
lamportVersion: effects.lamportVersion,
|
|
395
|
+
changedObjects,
|
|
396
|
+
unchangedSharedObjects: effects.unchangedSharedObjects.map(
|
|
397
|
+
([objectId, object]): Experimental_SuiClientTypes.UnchangedSharedObject => {
|
|
398
|
+
return {
|
|
399
|
+
kind: object.$kind,
|
|
400
|
+
objectId: objectId,
|
|
401
|
+
version:
|
|
402
|
+
object.$kind === 'ReadOnlyRoot'
|
|
403
|
+
? object.ReadOnlyRoot[0]
|
|
404
|
+
: (object[object.$kind] as string | null),
|
|
405
|
+
digest: object.$kind === 'ReadOnlyRoot' ? object.ReadOnlyRoot[1] : null,
|
|
406
|
+
objectType: objectTypes[objectId] ?? null,
|
|
407
|
+
};
|
|
408
|
+
},
|
|
409
|
+
),
|
|
410
|
+
auxiliaryDataDigest: effects.auxDataDigest,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
function parseTransactionEffectsJson({
|
|
415
|
+
bytes,
|
|
416
|
+
effects,
|
|
417
|
+
epoch,
|
|
418
|
+
objectChanges,
|
|
419
|
+
}: {
|
|
420
|
+
bytes?: Uint8Array;
|
|
421
|
+
effects: TransactionEffects;
|
|
422
|
+
epoch?: string | null;
|
|
423
|
+
objectChanges: SuiObjectChange[] | null;
|
|
424
|
+
}): Experimental_SuiClientTypes.TransactionEffects {
|
|
425
|
+
const changedObjects: Experimental_SuiClientTypes.ChangedObject[] = [];
|
|
426
|
+
const unchangedSharedObjects: Experimental_SuiClientTypes.UnchangedSharedObject[] = [];
|
|
427
|
+
|
|
428
|
+
objectChanges?.forEach((change) => {
|
|
429
|
+
switch (change.type) {
|
|
430
|
+
case 'published':
|
|
431
|
+
changedObjects.push({
|
|
432
|
+
id: change.packageId,
|
|
433
|
+
inputState: 'DoesNotExist',
|
|
434
|
+
inputVersion: null,
|
|
435
|
+
inputDigest: null,
|
|
436
|
+
inputOwner: null,
|
|
437
|
+
outputState: 'PackageWrite',
|
|
438
|
+
outputVersion: change.version,
|
|
439
|
+
outputDigest: change.digest,
|
|
440
|
+
outputOwner: null,
|
|
441
|
+
idOperation: 'Created',
|
|
442
|
+
objectType: null,
|
|
443
|
+
});
|
|
444
|
+
break;
|
|
445
|
+
case 'transferred':
|
|
446
|
+
changedObjects.push({
|
|
447
|
+
id: change.objectId,
|
|
448
|
+
inputState: 'Exists',
|
|
449
|
+
inputVersion: change.version,
|
|
450
|
+
inputDigest: change.digest,
|
|
451
|
+
inputOwner: {
|
|
452
|
+
$kind: 'AddressOwner' as const,
|
|
453
|
+
AddressOwner: change.sender,
|
|
454
|
+
},
|
|
455
|
+
outputState: 'ObjectWrite',
|
|
456
|
+
outputVersion: change.version,
|
|
457
|
+
outputDigest: change.digest,
|
|
458
|
+
outputOwner: parseOwner(change.recipient),
|
|
459
|
+
idOperation: 'None',
|
|
460
|
+
objectType: change.objectType,
|
|
461
|
+
});
|
|
462
|
+
break;
|
|
463
|
+
case 'mutated':
|
|
464
|
+
changedObjects.push({
|
|
465
|
+
id: change.objectId,
|
|
466
|
+
inputState: 'Exists',
|
|
467
|
+
inputVersion: change.previousVersion,
|
|
468
|
+
inputDigest: null,
|
|
469
|
+
inputOwner: parseOwner(change.owner),
|
|
470
|
+
outputState: 'ObjectWrite',
|
|
471
|
+
outputVersion: change.version,
|
|
472
|
+
outputDigest: change.digest,
|
|
473
|
+
outputOwner: parseOwner(change.owner),
|
|
474
|
+
idOperation: 'None',
|
|
475
|
+
objectType: change.objectType,
|
|
476
|
+
});
|
|
477
|
+
break;
|
|
478
|
+
case 'deleted':
|
|
479
|
+
changedObjects.push({
|
|
480
|
+
id: change.objectId,
|
|
481
|
+
inputState: 'Exists',
|
|
482
|
+
inputVersion: change.version,
|
|
483
|
+
inputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,
|
|
484
|
+
inputOwner: null,
|
|
485
|
+
outputState: 'DoesNotExist',
|
|
486
|
+
outputVersion: null,
|
|
487
|
+
outputDigest: null,
|
|
488
|
+
outputOwner: null,
|
|
489
|
+
idOperation: 'Deleted',
|
|
490
|
+
objectType: change.objectType,
|
|
491
|
+
});
|
|
492
|
+
break;
|
|
493
|
+
case 'wrapped':
|
|
494
|
+
changedObjects.push({
|
|
495
|
+
id: change.objectId,
|
|
496
|
+
inputState: 'Exists',
|
|
497
|
+
inputVersion: change.version,
|
|
498
|
+
inputDigest: null,
|
|
499
|
+
inputOwner: {
|
|
500
|
+
$kind: 'AddressOwner' as const,
|
|
501
|
+
AddressOwner: change.sender,
|
|
502
|
+
},
|
|
503
|
+
outputState: 'ObjectWrite',
|
|
504
|
+
outputVersion: change.version,
|
|
505
|
+
outputDigest:
|
|
506
|
+
effects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,
|
|
507
|
+
outputOwner: {
|
|
508
|
+
$kind: 'ObjectOwner' as const,
|
|
509
|
+
ObjectOwner: change.sender,
|
|
510
|
+
},
|
|
511
|
+
idOperation: 'None',
|
|
512
|
+
objectType: change.objectType,
|
|
513
|
+
});
|
|
514
|
+
break;
|
|
515
|
+
case 'created':
|
|
516
|
+
changedObjects.push({
|
|
517
|
+
id: change.objectId,
|
|
518
|
+
inputState: 'DoesNotExist',
|
|
519
|
+
inputVersion: null,
|
|
520
|
+
inputDigest: null,
|
|
521
|
+
inputOwner: null,
|
|
522
|
+
outputState: 'ObjectWrite',
|
|
523
|
+
outputVersion: change.version,
|
|
524
|
+
outputDigest: change.digest,
|
|
525
|
+
outputOwner: parseOwner(change.owner),
|
|
526
|
+
idOperation: 'Created',
|
|
527
|
+
objectType: change.objectType,
|
|
528
|
+
});
|
|
529
|
+
break;
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
|
|
533
|
+
return {
|
|
534
|
+
bcs: bytes ?? null,
|
|
535
|
+
digest: effects.transactionDigest,
|
|
536
|
+
version: 2,
|
|
537
|
+
status:
|
|
538
|
+
effects.status.status === 'success'
|
|
539
|
+
? { success: true, error: null }
|
|
540
|
+
: { success: false, error: effects.status.error! },
|
|
541
|
+
epoch: epoch ?? null,
|
|
542
|
+
gasUsed: effects.gasUsed,
|
|
543
|
+
transactionDigest: effects.transactionDigest,
|
|
544
|
+
gasObject: {
|
|
545
|
+
id: effects.gasObject?.reference.objectId,
|
|
546
|
+
inputState: 'Exists',
|
|
547
|
+
inputVersion: null,
|
|
548
|
+
inputDigest: null,
|
|
549
|
+
inputOwner: null,
|
|
550
|
+
outputState: 'ObjectWrite',
|
|
551
|
+
outputVersion: effects.gasObject.reference.version,
|
|
552
|
+
outputDigest: effects.gasObject.reference.digest,
|
|
553
|
+
outputOwner: parseOwner(effects.gasObject.owner),
|
|
554
|
+
idOperation: 'None',
|
|
555
|
+
objectType: normalizeStructTag('0x2::coin::Coin<0x2::sui::SUI>'),
|
|
556
|
+
},
|
|
557
|
+
eventsDigest: effects.eventsDigest ?? null,
|
|
558
|
+
dependencies: effects.dependencies ?? [],
|
|
559
|
+
lamportVersion: effects.gasObject.reference.version,
|
|
560
|
+
changedObjects,
|
|
561
|
+
unchangedSharedObjects,
|
|
562
|
+
auxiliaryDataDigest: null,
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
|
|
256
566
|
const Balance = bcs.struct('Balance', {
|
|
257
567
|
value: bcs.u64(),
|
|
258
568
|
});
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
4
4
|
|
|
5
|
-
import type {
|
|
5
|
+
import type { Experimental_BaseClient } from './client.js';
|
|
6
6
|
|
|
7
7
|
export type SuiClientRegistration<
|
|
8
|
-
T extends
|
|
8
|
+
T extends Experimental_BaseClient = Experimental_BaseClient,
|
|
9
9
|
Name extends string = string,
|
|
10
10
|
Extension = unknown,
|
|
11
11
|
> =
|
|
@@ -16,7 +16,7 @@ export type SuiClientRegistration<
|
|
|
16
16
|
| SelfRegisteringClientExtension<T, Name, Extension>;
|
|
17
17
|
|
|
18
18
|
export interface SelfRegisteringClientExtension<
|
|
19
|
-
T extends
|
|
19
|
+
T extends Experimental_BaseClient = Experimental_BaseClient,
|
|
20
20
|
Name extends string = string,
|
|
21
21
|
Extension = unknown,
|
|
22
22
|
> {
|
|
@@ -36,7 +36,7 @@ export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) ex
|
|
|
36
36
|
? I
|
|
37
37
|
: never;
|
|
38
38
|
|
|
39
|
-
export type ClientWithExtensions<T> =
|
|
39
|
+
export type ClientWithExtensions<T> = Experimental_BaseClient & T;
|
|
40
40
|
|
|
41
41
|
export namespace Experimental_SuiClientTypes {
|
|
42
42
|
export type Network = 'mainnet' | 'testnet' | 'devnet' | 'localnet' | (string & {});
|
|
@@ -44,29 +44,47 @@ export namespace Experimental_SuiClientTypes {
|
|
|
44
44
|
export interface SuiClientOptions {
|
|
45
45
|
network: Network;
|
|
46
46
|
}
|
|
47
|
+
|
|
48
|
+
export interface CoreClientMethodOptions {
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
}
|
|
51
|
+
|
|
47
52
|
/** Object methods */
|
|
48
53
|
export interface TransportMethods {
|
|
49
|
-
getObjects
|
|
50
|
-
getOwnedObjects
|
|
51
|
-
getCoins
|
|
54
|
+
getObjects: (options: GetObjectsOptions) => Promise<GetObjectsResponse>;
|
|
55
|
+
getOwnedObjects: (options: GetOwnedObjectsOptions) => Promise<GetOwnedObjectsResponse>;
|
|
56
|
+
getCoins: (options: GetCoinsOptions) => Promise<GetCoinsResponse>;
|
|
57
|
+
getDynamicFields: (options: GetDynamicFieldsOptions) => Promise<GetDynamicFieldsResponse>;
|
|
58
|
+
getDynamicField: (options: GetDynamicFieldOptions) => Promise<GetDynamicFieldResponse>;
|
|
52
59
|
}
|
|
53
60
|
|
|
54
|
-
export interface GetObjectsOptions {
|
|
61
|
+
export interface GetObjectsOptions extends CoreClientMethodOptions {
|
|
55
62
|
objectIds: string[];
|
|
56
63
|
}
|
|
57
64
|
|
|
58
|
-
export interface GetOwnedObjectsOptions {
|
|
65
|
+
export interface GetOwnedObjectsOptions extends CoreClientMethodOptions {
|
|
59
66
|
address: string;
|
|
60
67
|
limit?: number;
|
|
61
68
|
cursor?: string | null;
|
|
62
69
|
type?: string;
|
|
63
70
|
}
|
|
64
71
|
|
|
65
|
-
export interface GetCoinsOptions {
|
|
72
|
+
export interface GetCoinsOptions extends CoreClientMethodOptions {
|
|
66
73
|
address: string;
|
|
67
74
|
coinType: string;
|
|
68
75
|
}
|
|
69
76
|
|
|
77
|
+
export interface GetDynamicFieldsOptions extends CoreClientMethodOptions {
|
|
78
|
+
parentId: string;
|
|
79
|
+
limit?: number;
|
|
80
|
+
cursor?: string | null;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface GetDynamicFieldOptions extends CoreClientMethodOptions {
|
|
84
|
+
parentId: string;
|
|
85
|
+
name: DynamicFieldName;
|
|
86
|
+
}
|
|
87
|
+
|
|
70
88
|
export interface GetObjectsResponse {
|
|
71
89
|
objects: (ObjectResponse | Error)[];
|
|
72
90
|
}
|
|
@@ -93,30 +111,63 @@ export namespace Experimental_SuiClientTypes {
|
|
|
93
111
|
}
|
|
94
112
|
|
|
95
113
|
export interface CoinResponse extends ObjectResponse {
|
|
96
|
-
balance:
|
|
114
|
+
balance: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface GetDynamicFieldsResponse {
|
|
118
|
+
hasNextPage: boolean;
|
|
119
|
+
cursor: string | null;
|
|
120
|
+
dynamicFields: {
|
|
121
|
+
name: DynamicFieldName;
|
|
122
|
+
id: string;
|
|
123
|
+
version: string;
|
|
124
|
+
digest: string;
|
|
125
|
+
type: string;
|
|
126
|
+
}[];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface GetDynamicFieldResponse {
|
|
130
|
+
dynamicField: {
|
|
131
|
+
name: DynamicFieldName;
|
|
132
|
+
value: DynamicFieldValue;
|
|
133
|
+
id: string;
|
|
134
|
+
version: string;
|
|
135
|
+
digest: string;
|
|
136
|
+
type: string;
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export interface DynamicFieldName {
|
|
141
|
+
type: string;
|
|
142
|
+
bcs: Uint8Array;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface DynamicFieldValue {
|
|
146
|
+
type: string;
|
|
147
|
+
bcs: Uint8Array;
|
|
97
148
|
}
|
|
98
149
|
|
|
99
150
|
/** Balance methods */
|
|
100
151
|
export interface TransportMethods {
|
|
101
|
-
getBalance
|
|
102
|
-
getAllBalances
|
|
152
|
+
getBalance: (options: GetBalanceOptions) => Promise<GetBalanceResponse>;
|
|
153
|
+
getAllBalances: (options: GetAllBalancesOptions) => Promise<GetAllBalancesResponse>;
|
|
103
154
|
}
|
|
104
155
|
|
|
105
|
-
export interface GetBalanceOptions {
|
|
156
|
+
export interface GetBalanceOptions extends CoreClientMethodOptions {
|
|
106
157
|
address: string;
|
|
107
158
|
coinType: string;
|
|
108
159
|
}
|
|
109
160
|
|
|
110
161
|
export interface CoinBalance {
|
|
111
162
|
coinType: string;
|
|
112
|
-
balance:
|
|
163
|
+
balance: string;
|
|
113
164
|
}
|
|
114
165
|
|
|
115
166
|
export interface GetBalanceResponse {
|
|
116
167
|
balance: CoinBalance;
|
|
117
168
|
}
|
|
118
169
|
|
|
119
|
-
export interface GetAllBalancesOptions {
|
|
170
|
+
export interface GetAllBalancesOptions extends CoreClientMethodOptions {
|
|
120
171
|
address: string;
|
|
121
172
|
limit?: number;
|
|
122
173
|
cursor?: string | null;
|
|
@@ -130,11 +181,9 @@ export namespace Experimental_SuiClientTypes {
|
|
|
130
181
|
|
|
131
182
|
/** Transaction methods */
|
|
132
183
|
export interface TransportMethods {
|
|
133
|
-
getTransaction
|
|
134
|
-
executeTransaction
|
|
135
|
-
|
|
136
|
-
) => Promise<ExecuteTransactionResponse>;
|
|
137
|
-
dryRunTransaction?: (options: DryRunTransactionOptions) => Promise<DryRunTransactionResponse>;
|
|
184
|
+
getTransaction: (options: GetTransactionOptions) => Promise<GetTransactionResponse>;
|
|
185
|
+
executeTransaction: (options: ExecuteTransactionOptions) => Promise<ExecuteTransactionResponse>;
|
|
186
|
+
dryRunTransaction: (options: DryRunTransactionOptions) => Promise<DryRunTransactionResponse>;
|
|
138
187
|
}
|
|
139
188
|
|
|
140
189
|
export interface TransactionResponse {
|
|
@@ -143,11 +192,11 @@ export namespace Experimental_SuiClientTypes {
|
|
|
143
192
|
// TODO: Return parsed data:
|
|
144
193
|
// We need structured representations of effects, events, and transaction data
|
|
145
194
|
bcs: Uint8Array;
|
|
146
|
-
effects:
|
|
195
|
+
effects: TransactionEffects;
|
|
147
196
|
events?: Uint8Array;
|
|
148
197
|
}
|
|
149
198
|
|
|
150
|
-
export interface GetTransactionOptions {
|
|
199
|
+
export interface GetTransactionOptions extends CoreClientMethodOptions {
|
|
151
200
|
digest: string;
|
|
152
201
|
}
|
|
153
202
|
|
|
@@ -155,12 +204,12 @@ export namespace Experimental_SuiClientTypes {
|
|
|
155
204
|
transaction: TransactionResponse;
|
|
156
205
|
}
|
|
157
206
|
|
|
158
|
-
export interface ExecuteTransactionOptions {
|
|
207
|
+
export interface ExecuteTransactionOptions extends CoreClientMethodOptions {
|
|
159
208
|
transaction: Uint8Array;
|
|
160
209
|
signatures: string[];
|
|
161
210
|
}
|
|
162
211
|
|
|
163
|
-
export interface DryRunTransactionOptions {
|
|
212
|
+
export interface DryRunTransactionOptions extends CoreClientMethodOptions {
|
|
164
213
|
transaction: Uint8Array;
|
|
165
214
|
}
|
|
166
215
|
|
|
@@ -177,7 +226,7 @@ export namespace Experimental_SuiClientTypes {
|
|
|
177
226
|
}
|
|
178
227
|
|
|
179
228
|
export interface GetReferenceGasPriceResponse {
|
|
180
|
-
referenceGasPrice:
|
|
229
|
+
referenceGasPrice: string;
|
|
181
230
|
}
|
|
182
231
|
|
|
183
232
|
/** ObjectOwner types */
|
|
@@ -204,9 +253,9 @@ export namespace Experimental_SuiClientTypes {
|
|
|
204
253
|
Immutable: true;
|
|
205
254
|
}
|
|
206
255
|
|
|
207
|
-
export interface
|
|
256
|
+
export interface ConsensusV2 {
|
|
208
257
|
$kind: 'ConsensusV2';
|
|
209
|
-
|
|
258
|
+
ConsensusV2: {
|
|
210
259
|
authenticator: ConsensusV2Authenticator;
|
|
211
260
|
startVersion: string;
|
|
212
261
|
};
|
|
@@ -219,27 +268,22 @@ export namespace Experimental_SuiClientTypes {
|
|
|
219
268
|
|
|
220
269
|
export type ConsensusV2Authenticator = SingleOwnerAuthenticator;
|
|
221
270
|
|
|
222
|
-
export type ObjectOwner =
|
|
223
|
-
| AddressOwner
|
|
224
|
-
| ParentOwner
|
|
225
|
-
| SharedOwner
|
|
226
|
-
| ImmutableOwner
|
|
227
|
-
| ConsensusV2Owner;
|
|
271
|
+
export type ObjectOwner = AddressOwner | ParentOwner | SharedOwner | ImmutableOwner | ConsensusV2;
|
|
228
272
|
|
|
229
273
|
/** Effects */
|
|
230
274
|
|
|
231
275
|
export interface TransactionEffects {
|
|
232
|
-
bcs: Uint8Array;
|
|
276
|
+
bcs: Uint8Array | null;
|
|
233
277
|
digest: string;
|
|
234
278
|
version: number;
|
|
235
279
|
status: ExecutionStatus;
|
|
236
|
-
epoch:
|
|
280
|
+
epoch: string | null;
|
|
237
281
|
gasUsed: GasCostSummary;
|
|
238
282
|
transactionDigest: string;
|
|
239
|
-
gasObject: ChangedObject;
|
|
283
|
+
gasObject: ChangedObject | null;
|
|
240
284
|
eventsDigest: string | null;
|
|
241
285
|
dependencies: string[];
|
|
242
|
-
lamportVersion:
|
|
286
|
+
lamportVersion: string | null;
|
|
243
287
|
changedObjects: ChangedObject[];
|
|
244
288
|
unchangedSharedObjects: UnchangedSharedObject[];
|
|
245
289
|
auxiliaryDataDigest: string | null;
|
|
@@ -248,11 +292,11 @@ export namespace Experimental_SuiClientTypes {
|
|
|
248
292
|
export interface ChangedObject {
|
|
249
293
|
id: string;
|
|
250
294
|
inputState: 'Unknown' | 'DoesNotExist' | 'Exists';
|
|
251
|
-
inputVersion:
|
|
295
|
+
inputVersion: string | null;
|
|
252
296
|
inputDigest: string | null;
|
|
253
297
|
inputOwner: ObjectOwner | null;
|
|
254
298
|
outputState: 'Unknown' | 'DoesNotExist' | 'ObjectWrite' | 'PackageWrite';
|
|
255
|
-
outputVersion:
|
|
299
|
+
outputVersion: string | null;
|
|
256
300
|
outputDigest: string | null;
|
|
257
301
|
outputOwner: ObjectOwner | null;
|
|
258
302
|
idOperation: 'Unknown' | 'None' | 'Created' | 'Deleted';
|
|
@@ -260,10 +304,10 @@ export namespace Experimental_SuiClientTypes {
|
|
|
260
304
|
}
|
|
261
305
|
|
|
262
306
|
export interface GasCostSummary {
|
|
263
|
-
computationCost:
|
|
264
|
-
storageCost:
|
|
265
|
-
storageRebate:
|
|
266
|
-
nonRefundableStorageFee:
|
|
307
|
+
computationCost: string;
|
|
308
|
+
storageCost: string;
|
|
309
|
+
storageRebate: string;
|
|
310
|
+
nonRefundableStorageFee: string;
|
|
267
311
|
}
|
|
268
312
|
|
|
269
313
|
export type ExecutionStatus =
|
|
@@ -283,11 +327,11 @@ export namespace Experimental_SuiClientTypes {
|
|
|
283
327
|
| 'ReadOnlyRoot'
|
|
284
328
|
| 'MutateDeleted'
|
|
285
329
|
| 'ReadDeleted'
|
|
286
|
-
| '
|
|
330
|
+
| 'Cancelled'
|
|
287
331
|
| 'PerEpochConfig';
|
|
288
332
|
objectId: string;
|
|
289
|
-
version:
|
|
290
|
-
digest: string;
|
|
291
|
-
objectType: string;
|
|
333
|
+
version: string | null;
|
|
334
|
+
digest: string | null;
|
|
335
|
+
objectType: string | null;
|
|
292
336
|
}
|
|
293
337
|
}
|