@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.
Files changed (122) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/bcs/bcs.d.ts +3 -2
  3. package/dist/cjs/bcs/bcs.js +3 -3
  4. package/dist/cjs/bcs/bcs.js.map +2 -2
  5. package/dist/cjs/bcs/effects.d.ts +18 -12
  6. package/dist/cjs/bcs/index.d.ts +460 -453
  7. package/dist/cjs/bcs/index.js +4 -4
  8. package/dist/cjs/bcs/index.js.map +1 -1
  9. package/dist/cjs/client/client.d.ts +38 -16
  10. package/dist/cjs/client/client.js +142 -62
  11. package/dist/cjs/client/client.js.map +2 -2
  12. package/dist/cjs/client/http-transport.d.ts +2 -0
  13. package/dist/cjs/client/http-transport.js +7 -0
  14. package/dist/cjs/client/http-transport.js.map +2 -2
  15. package/dist/cjs/client/rpc-websocket-client.d.ts +2 -1
  16. package/dist/cjs/client/rpc-websocket-client.js +7 -2
  17. package/dist/cjs/client/rpc-websocket-client.js.map +2 -2
  18. package/dist/cjs/client/types/generated.d.ts +1 -0
  19. package/dist/cjs/client/types/generated.js.map +1 -1
  20. package/dist/cjs/client/types/params.d.ts +56 -0
  21. package/dist/cjs/client/types/params.js.map +1 -1
  22. package/dist/cjs/experimental/cache.d.ts +11 -0
  23. package/dist/cjs/experimental/cache.js +79 -0
  24. package/dist/cjs/experimental/cache.js.map +7 -0
  25. package/dist/cjs/experimental/client.d.ts +4 -2
  26. package/dist/cjs/experimental/client.js +4 -2
  27. package/dist/cjs/experimental/client.js.map +2 -2
  28. package/dist/cjs/experimental/core.d.ts +10 -2
  29. package/dist/cjs/experimental/core.js +59 -1
  30. package/dist/cjs/experimental/core.js.map +2 -2
  31. package/dist/cjs/experimental/index.d.ts +5 -0
  32. package/dist/cjs/experimental/index.js +29 -0
  33. package/dist/cjs/experimental/index.js.map +7 -0
  34. package/dist/cjs/experimental/transports/jsonRPC.d.ts +19 -5
  35. package/dist/cjs/experimental/transports/jsonRPC.js +270 -12
  36. package/dist/cjs/experimental/transports/jsonRPC.js.map +2 -2
  37. package/dist/cjs/experimental/types.d.ts +84 -41
  38. package/dist/cjs/experimental/types.js.map +1 -1
  39. package/dist/cjs/keypairs/secp256k1/keypair.js +1 -1
  40. package/dist/cjs/keypairs/secp256k1/keypair.js.map +2 -2
  41. package/dist/cjs/keypairs/secp256r1/keypair.js +1 -1
  42. package/dist/cjs/keypairs/secp256r1/keypair.js.map +2 -2
  43. package/dist/cjs/multisig/publickey.js +5 -5
  44. package/dist/cjs/multisig/publickey.js.map +2 -2
  45. package/dist/cjs/multisig/signer.js +2 -2
  46. package/dist/cjs/multisig/signer.js.map +2 -2
  47. package/dist/cjs/transactions/plugins/utils.js +2 -2
  48. package/dist/cjs/transactions/plugins/utils.js.map +2 -2
  49. package/dist/cjs/version.d.ts +1 -1
  50. package/dist/cjs/version.js +1 -1
  51. package/dist/cjs/version.js.map +1 -1
  52. package/dist/esm/bcs/bcs.d.ts +3 -2
  53. package/dist/esm/bcs/bcs.js +3 -3
  54. package/dist/esm/bcs/bcs.js.map +2 -2
  55. package/dist/esm/bcs/effects.d.ts +18 -12
  56. package/dist/esm/bcs/index.d.ts +460 -453
  57. package/dist/esm/bcs/index.js +4 -4
  58. package/dist/esm/bcs/index.js.map +1 -1
  59. package/dist/esm/client/client.d.ts +38 -16
  60. package/dist/esm/client/client.js +143 -63
  61. package/dist/esm/client/client.js.map +2 -2
  62. package/dist/esm/client/http-transport.d.ts +2 -0
  63. package/dist/esm/client/http-transport.js +7 -0
  64. package/dist/esm/client/http-transport.js.map +2 -2
  65. package/dist/esm/client/rpc-websocket-client.d.ts +2 -1
  66. package/dist/esm/client/rpc-websocket-client.js +7 -2
  67. package/dist/esm/client/rpc-websocket-client.js.map +2 -2
  68. package/dist/esm/client/types/generated.d.ts +1 -0
  69. package/dist/esm/client/types/params.d.ts +56 -0
  70. package/dist/esm/experimental/cache.d.ts +11 -0
  71. package/dist/esm/experimental/cache.js +59 -0
  72. package/dist/esm/experimental/cache.js.map +7 -0
  73. package/dist/esm/experimental/client.d.ts +4 -2
  74. package/dist/esm/experimental/client.js +4 -2
  75. package/dist/esm/experimental/client.js.map +2 -2
  76. package/dist/esm/experimental/core.d.ts +10 -2
  77. package/dist/esm/experimental/core.js +60 -2
  78. package/dist/esm/experimental/core.js.map +2 -2
  79. package/dist/esm/experimental/index.d.ts +5 -0
  80. package/dist/esm/experimental/index.js +9 -0
  81. package/dist/esm/experimental/index.js.map +7 -0
  82. package/dist/esm/experimental/transports/jsonRPC.d.ts +19 -5
  83. package/dist/esm/experimental/transports/jsonRPC.js +270 -12
  84. package/dist/esm/experimental/transports/jsonRPC.js.map +2 -2
  85. package/dist/esm/experimental/types.d.ts +84 -41
  86. package/dist/esm/keypairs/secp256k1/keypair.js +1 -1
  87. package/dist/esm/keypairs/secp256k1/keypair.js.map +2 -2
  88. package/dist/esm/keypairs/secp256r1/keypair.js +1 -1
  89. package/dist/esm/keypairs/secp256r1/keypair.js.map +2 -2
  90. package/dist/esm/multisig/publickey.js +5 -5
  91. package/dist/esm/multisig/publickey.js.map +2 -2
  92. package/dist/esm/multisig/signer.js +2 -2
  93. package/dist/esm/multisig/signer.js.map +2 -2
  94. package/dist/esm/transactions/plugins/utils.js +2 -2
  95. package/dist/esm/transactions/plugins/utils.js.map +2 -2
  96. package/dist/esm/version.d.ts +1 -1
  97. package/dist/esm/version.js +1 -1
  98. package/dist/esm/version.js.map +1 -1
  99. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  100. package/dist/tsconfig.tsbuildinfo +1 -1
  101. package/experimental/package.json +6 -0
  102. package/package.json +7 -2
  103. package/src/bcs/bcs.ts +3 -3
  104. package/src/bcs/index.ts +3 -3
  105. package/src/client/client.ts +119 -26
  106. package/src/client/http-transport.ts +10 -0
  107. package/src/client/rpc-websocket-client.ts +8 -1
  108. package/src/client/types/generated.ts +1 -0
  109. package/src/client/types/params.ts +68 -6
  110. package/src/experimental/cache.ts +64 -0
  111. package/src/experimental/client.ts +4 -2
  112. package/src/experimental/core.ts +89 -2
  113. package/src/experimental/index.ts +20 -0
  114. package/src/experimental/transports/jsonRPC.ts +319 -9
  115. package/src/experimental/types.ts +92 -48
  116. package/src/keypairs/secp256k1/keypair.ts +1 -1
  117. package/src/keypairs/secp256r1/keypair.ts +1 -1
  118. package/src/multisig/publickey.ts +5 -5
  119. package/src/multisig/signer.ts +2 -2
  120. package/src/transactions/__tests__/bcs.test.ts +2 -2
  121. package/src/transactions/plugins/utils.ts +2 -2
  122. 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: BigInt(coin.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: BigInt(balance.totalBalance),
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: BigInt(balance.totalBalance),
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
- showEffects: true,
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
- // TODO: Effects aren't returned as bcs from dryRun, once we define structured effects we can return those instead
170
- effects: result.effects as never,
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
- ConsensusV2Owner: {
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: new Uint8Array(transaction.rawEffects!),
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 { Experimental_SuiClient } from './client.js';
5
+ import type { Experimental_BaseClient } from './client.js';
6
6
 
7
7
  export type SuiClientRegistration<
8
- T extends Experimental_SuiClient = Experimental_SuiClient,
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 Experimental_SuiClient = Experimental_SuiClient,
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> = Experimental_SuiClient & 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?: (options: GetObjectsOptions) => Promise<GetObjectsResponse>;
50
- getOwnedObjects?: (options: GetOwnedObjectsOptions) => Promise<GetOwnedObjectsResponse>;
51
- getCoins?: (options: GetCoinsOptions) => Promise<GetCoinsResponse>;
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: bigint;
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?: (options: GetBalanceOptions) => Promise<GetBalanceResponse>;
102
- getAllBalances?: (options: GetAllBalancesOptions) => Promise<GetAllBalancesResponse>;
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: bigint;
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?: (options: GetTransactionOptions) => Promise<GetTransactionResponse>;
134
- executeTransaction?: (
135
- options: ExecuteTransactionOptions,
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: Uint8Array;
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: bigint;
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 ConsensusV2Owner {
256
+ export interface ConsensusV2 {
208
257
  $kind: 'ConsensusV2';
209
- ConsensusV2Owner: {
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: bigint | null;
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: bigint | null;
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: bigint | null;
295
+ inputVersion: string | null;
252
296
  inputDigest: string | null;
253
297
  inputOwner: ObjectOwner | null;
254
298
  outputState: 'Unknown' | 'DoesNotExist' | 'ObjectWrite' | 'PackageWrite';
255
- outputVersion: bigint | null;
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: bigint;
264
- storageCost: bigint;
265
- storageRebate: bigint;
266
- nonRefundableStorageFee: bigint;
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
- | 'Canceled'
330
+ | 'Cancelled'
287
331
  | 'PerEpochConfig';
288
332
  objectId: string;
289
- version: bigint;
290
- digest: string;
291
- objectType: string;
333
+ version: string | null;
334
+ digest: string | null;
335
+ objectType: string | null;
292
336
  }
293
337
  }