@mysten/sui 1.26.0 → 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 (129) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/bcs/bcs.d.ts +28 -0
  3. package/dist/cjs/bcs/bcs.js +15 -0
  4. package/dist/cjs/bcs/bcs.js.map +2 -2
  5. package/dist/cjs/bcs/effects.d.ts +84 -6
  6. package/dist/cjs/bcs/effects.js +6 -14
  7. package/dist/cjs/bcs/effects.js.map +2 -2
  8. package/dist/cjs/bcs/index.d.ts +551 -445
  9. package/dist/cjs/bcs/index.js +5 -4
  10. package/dist/cjs/bcs/index.js.map +2 -2
  11. package/dist/cjs/client/client.d.ts +40 -17
  12. package/dist/cjs/client/client.js +142 -62
  13. package/dist/cjs/client/client.js.map +2 -2
  14. package/dist/cjs/client/http-transport.d.ts +2 -0
  15. package/dist/cjs/client/http-transport.js +7 -0
  16. package/dist/cjs/client/http-transport.js.map +2 -2
  17. package/dist/cjs/client/rpc-websocket-client.d.ts +2 -1
  18. package/dist/cjs/client/rpc-websocket-client.js +7 -2
  19. package/dist/cjs/client/rpc-websocket-client.js.map +2 -2
  20. package/dist/cjs/client/types/generated.d.ts +1 -0
  21. package/dist/cjs/client/types/generated.js.map +1 -1
  22. package/dist/cjs/client/types/params.d.ts +56 -0
  23. package/dist/cjs/client/types/params.js.map +1 -1
  24. package/dist/cjs/experimental/cache.d.ts +11 -0
  25. package/dist/cjs/experimental/cache.js +79 -0
  26. package/dist/cjs/experimental/cache.js.map +7 -0
  27. package/dist/cjs/experimental/client.d.ts +4 -2
  28. package/dist/cjs/experimental/client.js +4 -2
  29. package/dist/cjs/experimental/client.js.map +2 -2
  30. package/dist/cjs/experimental/core.d.ts +10 -2
  31. package/dist/cjs/experimental/core.js +59 -1
  32. package/dist/cjs/experimental/core.js.map +2 -2
  33. package/dist/cjs/experimental/index.d.ts +5 -0
  34. package/dist/cjs/experimental/index.js +29 -0
  35. package/dist/cjs/experimental/index.js.map +7 -0
  36. package/dist/cjs/experimental/transports/jsonRPC.d.ts +19 -5
  37. package/dist/cjs/experimental/transports/jsonRPC.js +270 -12
  38. package/dist/cjs/experimental/transports/jsonRPC.js.map +2 -2
  39. package/dist/cjs/experimental/types.d.ts +84 -41
  40. package/dist/cjs/experimental/types.js.map +1 -1
  41. package/dist/cjs/keypairs/secp256k1/keypair.js +1 -1
  42. package/dist/cjs/keypairs/secp256k1/keypair.js.map +2 -2
  43. package/dist/cjs/keypairs/secp256r1/keypair.js +1 -1
  44. package/dist/cjs/keypairs/secp256r1/keypair.js.map +2 -2
  45. package/dist/cjs/multisig/publickey.js +5 -5
  46. package/dist/cjs/multisig/publickey.js.map +2 -2
  47. package/dist/cjs/multisig/signer.js +2 -2
  48. package/dist/cjs/multisig/signer.js.map +2 -2
  49. package/dist/cjs/transactions/Transaction.d.ts +3 -2
  50. package/dist/cjs/transactions/plugins/utils.js +2 -2
  51. package/dist/cjs/transactions/plugins/utils.js.map +2 -2
  52. package/dist/cjs/version.d.ts +1 -1
  53. package/dist/cjs/version.js +1 -1
  54. package/dist/cjs/version.js.map +1 -1
  55. package/dist/esm/bcs/bcs.d.ts +28 -0
  56. package/dist/esm/bcs/bcs.js +15 -0
  57. package/dist/esm/bcs/bcs.js.map +2 -2
  58. package/dist/esm/bcs/effects.d.ts +84 -6
  59. package/dist/esm/bcs/effects.js +1 -9
  60. package/dist/esm/bcs/effects.js.map +2 -2
  61. package/dist/esm/bcs/index.d.ts +551 -445
  62. package/dist/esm/bcs/index.js +6 -4
  63. package/dist/esm/bcs/index.js.map +2 -2
  64. package/dist/esm/client/client.d.ts +40 -17
  65. package/dist/esm/client/client.js +143 -63
  66. package/dist/esm/client/client.js.map +2 -2
  67. package/dist/esm/client/http-transport.d.ts +2 -0
  68. package/dist/esm/client/http-transport.js +7 -0
  69. package/dist/esm/client/http-transport.js.map +2 -2
  70. package/dist/esm/client/rpc-websocket-client.d.ts +2 -1
  71. package/dist/esm/client/rpc-websocket-client.js +7 -2
  72. package/dist/esm/client/rpc-websocket-client.js.map +2 -2
  73. package/dist/esm/client/types/generated.d.ts +1 -0
  74. package/dist/esm/client/types/params.d.ts +56 -0
  75. package/dist/esm/experimental/cache.d.ts +11 -0
  76. package/dist/esm/experimental/cache.js +59 -0
  77. package/dist/esm/experimental/cache.js.map +7 -0
  78. package/dist/esm/experimental/client.d.ts +4 -2
  79. package/dist/esm/experimental/client.js +4 -2
  80. package/dist/esm/experimental/client.js.map +2 -2
  81. package/dist/esm/experimental/core.d.ts +10 -2
  82. package/dist/esm/experimental/core.js +60 -2
  83. package/dist/esm/experimental/core.js.map +2 -2
  84. package/dist/esm/experimental/index.d.ts +5 -0
  85. package/dist/esm/experimental/index.js +9 -0
  86. package/dist/esm/experimental/index.js.map +7 -0
  87. package/dist/esm/experimental/transports/jsonRPC.d.ts +19 -5
  88. package/dist/esm/experimental/transports/jsonRPC.js +270 -12
  89. package/dist/esm/experimental/transports/jsonRPC.js.map +2 -2
  90. package/dist/esm/experimental/types.d.ts +84 -41
  91. package/dist/esm/keypairs/secp256k1/keypair.js +1 -1
  92. package/dist/esm/keypairs/secp256k1/keypair.js.map +2 -2
  93. package/dist/esm/keypairs/secp256r1/keypair.js +1 -1
  94. package/dist/esm/keypairs/secp256r1/keypair.js.map +2 -2
  95. package/dist/esm/multisig/publickey.js +5 -5
  96. package/dist/esm/multisig/publickey.js.map +2 -2
  97. package/dist/esm/multisig/signer.js +2 -2
  98. package/dist/esm/multisig/signer.js.map +2 -2
  99. package/dist/esm/transactions/Transaction.d.ts +3 -2
  100. package/dist/esm/transactions/plugins/utils.js +2 -2
  101. package/dist/esm/transactions/plugins/utils.js.map +2 -2
  102. package/dist/esm/version.d.ts +1 -1
  103. package/dist/esm/version.js +1 -1
  104. package/dist/esm/version.js.map +1 -1
  105. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  106. package/dist/tsconfig.tsbuildinfo +1 -1
  107. package/experimental/package.json +6 -0
  108. package/package.json +23 -18
  109. package/src/bcs/bcs.ts +15 -0
  110. package/src/bcs/effects.ts +1 -10
  111. package/src/bcs/index.ts +5 -3
  112. package/src/client/client.ts +119 -26
  113. package/src/client/http-transport.ts +10 -0
  114. package/src/client/rpc-websocket-client.ts +8 -1
  115. package/src/client/types/generated.ts +1 -0
  116. package/src/client/types/params.ts +68 -6
  117. package/src/experimental/cache.ts +64 -0
  118. package/src/experimental/client.ts +4 -2
  119. package/src/experimental/core.ts +89 -2
  120. package/src/experimental/index.ts +20 -0
  121. package/src/experimental/transports/jsonRPC.ts +319 -9
  122. package/src/experimental/types.ts +92 -48
  123. package/src/keypairs/secp256k1/keypair.ts +1 -1
  124. package/src/keypairs/secp256r1/keypair.ts +1 -1
  125. package/src/multisig/publickey.ts +5 -5
  126. package/src/multisig/signer.ts +2 -2
  127. package/src/transactions/__tests__/bcs.test.ts +2 -2
  128. package/src/transactions/plugins/utils.ts +2 -2
  129. package/src/version.ts +1 -1
@@ -0,0 +1,6 @@
1
+ {
2
+ "private": true,
3
+ "import": "../dist/esm/experimental/index.js",
4
+ "main": "../dist/cjs/experimental/index.js",
5
+ "sideEffects": false
6
+ }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "Mysten Labs <build@mystenlabs.com>",
4
4
  "description": "Sui TypeScript API(Work in Progress)",
5
5
  "homepage": "https://sdk.mystenlabs.com",
6
- "version": "1.26.0",
6
+ "version": "1.27.0",
7
7
  "license": "Apache-2.0",
8
8
  "sideEffects": false,
9
9
  "files": [
@@ -15,6 +15,7 @@
15
15
  "client",
16
16
  "cryptography",
17
17
  "dist",
18
+ "experimental",
18
19
  "faucet",
19
20
  "graphql",
20
21
  "keypairs",
@@ -42,6 +43,10 @@
42
43
  "import": "./dist/esm/cryptography/index.js",
43
44
  "require": "./dist/cjs/cryptography/index.js"
44
45
  },
46
+ "./experimental": {
47
+ "import": "./dist/esm/experimental/index.js",
48
+ "require": "./dist/cjs/experimental/index.js"
49
+ },
45
50
  "./faucet": {
46
51
  "import": "./dist/esm/faucet/index.js",
47
52
  "require": "./dist/cjs/faucet/index.js"
@@ -108,39 +113,39 @@
108
113
  "devDependencies": {
109
114
  "@0no-co/graphqlsp": "^1.12.11",
110
115
  "@graphql-codegen/add": "^5.0.3",
111
- "@graphql-codegen/cli": "^5.0.2",
112
- "@graphql-codegen/typed-document-node": "^5.0.9",
113
- "@graphql-codegen/typescript": "4.1.2",
114
- "@graphql-codegen/typescript-operations": "^4.2.3",
116
+ "@graphql-codegen/cli": "^5.0.5",
117
+ "@graphql-codegen/typed-document-node": "^5.1.1",
118
+ "@graphql-codegen/typescript": "4.1.6",
119
+ "@graphql-codegen/typescript-operations": "^4.6.0",
115
120
  "@iarna/toml": "^2.2.5",
116
- "@types/node": "^22.10.5",
121
+ "@types/node": "^22.13.17",
117
122
  "@types/tmp": "^0.2.6",
118
- "@types/ws": "^8.5.10",
123
+ "@types/ws": "^8.18.1",
119
124
  "cross-env": "^7.0.3",
120
125
  "graphql-config": "^5.0.3",
121
- "msw": "^2.3.1",
126
+ "msw": "^2.7.3",
122
127
  "tmp": "^0.2.3",
123
128
  "ts-retry-promise": "^0.8.1",
124
- "typescript": "^5.7.2",
125
- "vite": "^6.0.7",
129
+ "typescript": "^5.8.2",
130
+ "vite": "^6.2.5",
126
131
  "vite-tsconfig-paths": "^5.1.4",
127
- "vitest": "^2.1.8",
128
- "wait-on": "^8.0.1",
129
- "ws": "^8.18.0",
132
+ "vitest": "^3.1.1",
133
+ "wait-on": "^8.0.3",
134
+ "ws": "^8.18.1",
130
135
  "@mysten/build-scripts": "^0.0.0"
131
136
  },
132
137
  "dependencies": {
133
138
  "@graphql-typed-document-node/core": "^3.2.0",
134
- "@noble/curves": "^1.4.2",
135
- "@noble/hashes": "^1.4.0",
139
+ "@noble/curves": "^1.8.1",
140
+ "@noble/hashes": "^1.7.1",
136
141
  "@scure/base": "^1.2.4",
137
- "@scure/bip32": "^1.4.0",
138
- "@scure/bip39": "^1.3.0",
142
+ "@scure/bip32": "^1.6.2",
143
+ "@scure/bip39": "^1.5.4",
139
144
  "gql.tada": "^1.8.2",
140
145
  "graphql": "^16.9.0",
141
146
  "poseidon-lite": "^0.2.0",
142
147
  "valibot": "^0.36.0",
143
- "@mysten/bcs": "1.5.0"
148
+ "@mysten/bcs": "1.6.0"
144
149
  },
145
150
  "scripts": {
146
151
  "clean": "rm -rf tsconfig.tsbuildinfo ./dist",
package/src/bcs/bcs.ts CHANGED
@@ -68,6 +68,21 @@ export const ObjectArg = bcs.enum('ObjectArg', {
68
68
  Receiving: SuiObjectRef,
69
69
  });
70
70
 
71
+ export const Owner = bcs.enum('Owner', {
72
+ AddressOwner: Address,
73
+ ObjectOwner: Address,
74
+ Shared: bcs.struct('Shared', {
75
+ initialSharedVersion: bcs.u64(),
76
+ }),
77
+ Immutable: null,
78
+ ConsensusV2: bcs.struct('ConsensusV2', {
79
+ authenticator: bcs.enum('Authenticator', {
80
+ SingleOwner: Address,
81
+ }),
82
+ startVersion: bcs.u64(),
83
+ }),
84
+ });
85
+
71
86
  export const CallArg = bcs.enum('CallArg', {
72
87
  Pure: bcs.struct('Pure', {
73
88
  bytes: bcs.vector(bcs.u8()).transform({
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { bcs } from '@mysten/bcs';
5
5
 
6
- import { Address, ObjectDigest, SuiObjectRef } from './bcs.js';
6
+ import { Address, ObjectDigest, Owner, SuiObjectRef } from './bcs.js';
7
7
 
8
8
  const PackageUpgradeError = bcs.enum('PackageUpgradeError', {
9
9
  UnableToFetchPackage: bcs.struct('UnableToFetchPackage', { packageId: Address }),
@@ -134,15 +134,6 @@ const GasCostSummary = bcs.struct('GasCostSummary', {
134
134
  nonRefundableStorageFee: bcs.u64(),
135
135
  });
136
136
 
137
- const Owner = bcs.enum('Owner', {
138
- AddressOwner: Address,
139
- ObjectOwner: Address,
140
- Shared: bcs.struct('Shared', {
141
- initialSharedVersion: bcs.u64(),
142
- }),
143
- Immutable: null,
144
- });
145
-
146
137
  const TransactionEffectsV1 = bcs.struct('TransactionEffectsV1', {
147
138
  status: ExecutionStatus,
148
139
  executedEpoch: bcs.u64(),
package/src/bcs/index.ts CHANGED
@@ -20,6 +20,7 @@ import {
20
20
  MultiSigPublicKey,
21
21
  ObjectArg,
22
22
  ObjectDigest,
23
+ Owner,
23
24
  PasskeyAuthenticator,
24
25
  ProgrammableMoveCall,
25
26
  ProgrammableTransaction,
@@ -57,6 +58,7 @@ const suiBcs = {
57
58
  AppId,
58
59
  Argument,
59
60
  CallArg,
61
+ Command,
60
62
  CompressedSignature,
61
63
  GasData,
62
64
  Intent,
@@ -68,6 +70,8 @@ const suiBcs = {
68
70
  MultiSigPublicKey,
69
71
  ObjectArg,
70
72
  ObjectDigest,
73
+ Owner,
74
+ PasskeyAuthenticator,
71
75
  ProgrammableMoveCall,
72
76
  ProgrammableTransaction,
73
77
  PublicKey,
@@ -76,14 +80,12 @@ const suiBcs = {
76
80
  SharedObjectRef,
77
81
  StructTag,
78
82
  SuiObjectRef,
79
- Command,
80
83
  TransactionData,
81
84
  TransactionDataV1,
85
+ TransactionEffects,
82
86
  TransactionExpiration,
83
87
  TransactionKind,
84
88
  TypeTag,
85
- TransactionEffects,
86
- PasskeyAuthenticator,
87
89
  };
88
90
  export {
89
91
  pureBcsSchemaFromTypeName,
@@ -3,7 +3,7 @@
3
3
  import { fromBase58, toBase64, toHex } from '@mysten/bcs';
4
4
 
5
5
  import type { Signer } from '../cryptography/index.js';
6
- import { Experimental_SuiClient } from '../experimental/client.js';
6
+ import { Experimental_BaseClient } from '../experimental/client.js';
7
7
  import { JSONRpcTransport } from '../experimental/transports/jsonRPC.js';
8
8
  import type {
9
9
  Experimental_SuiClientTypes,
@@ -50,6 +50,8 @@ import type {
50
50
  GetCommitteeInfoParams,
51
51
  GetDynamicFieldObjectParams,
52
52
  GetDynamicFieldsParams,
53
+ GetLatestCheckpointSequenceNumberParams,
54
+ GetLatestSuiSystemStateParams,
53
55
  GetMoveFunctionArgTypesParams,
54
56
  GetNormalizedMoveFunctionParams,
55
57
  GetNormalizedMoveModuleParams,
@@ -58,6 +60,7 @@ import type {
58
60
  GetObjectParams,
59
61
  GetOwnedObjectsParams,
60
62
  GetProtocolConfigParams,
63
+ GetReferenceGasPriceParams,
61
64
  GetStakesByIdsParams,
62
65
  GetStakesParams,
63
66
  GetTotalSupplyParams,
@@ -134,8 +137,9 @@ export function isSuiClient(client: unknown): client is SuiClient {
134
137
  );
135
138
  }
136
139
 
137
- export class SuiClient extends Experimental_SuiClient implements SelfRegisteringClientExtension {
140
+ export class SuiClient extends Experimental_BaseClient implements SelfRegisteringClientExtension {
138
141
  core: JSONRpcTransport = new JSONRpcTransport(this);
142
+ jsonRpc = this;
139
143
  protected transport: SuiTransport;
140
144
 
141
145
  get [SUI_CLIENT_BRAND]() {
@@ -152,10 +156,11 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
152
156
  this.transport = options.transport ?? new SuiHTTPTransport({ url: options.url });
153
157
  }
154
158
 
155
- async getRpcApiVersion(): Promise<string | undefined> {
159
+ async getRpcApiVersion({ signal }: { signal?: AbortSignal } = {}): Promise<string | undefined> {
156
160
  const resp = await this.transport.request<{ info: { version: string } }>({
157
161
  method: 'rpc.discover',
158
162
  params: [],
163
+ signal,
159
164
  });
160
165
 
161
166
  return resp.info.version;
@@ -172,6 +177,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
172
177
  return await this.transport.request({
173
178
  method: 'suix_getCoins',
174
179
  params: [input.owner, input.coinType, input.cursor, input.limit],
180
+ signal: input.signal,
175
181
  });
176
182
  }
177
183
 
@@ -186,6 +192,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
186
192
  return await this.transport.request({
187
193
  method: 'suix_getAllCoins',
188
194
  params: [input.owner, input.cursor, input.limit],
195
+ signal: input.signal,
189
196
  });
190
197
  }
191
198
 
@@ -199,6 +206,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
199
206
  return await this.transport.request({
200
207
  method: 'suix_getBalance',
201
208
  params: [input.owner, input.coinType],
209
+ signal: input.signal,
202
210
  });
203
211
  }
204
212
 
@@ -209,7 +217,11 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
209
217
  if (!input.owner || !isValidSuiAddress(normalizeSuiAddress(input.owner))) {
210
218
  throw new Error('Invalid Sui address');
211
219
  }
212
- return await this.transport.request({ method: 'suix_getAllBalances', params: [input.owner] });
220
+ return await this.transport.request({
221
+ method: 'suix_getAllBalances',
222
+ params: [input.owner],
223
+ signal: input.signal,
224
+ });
213
225
  }
214
226
 
215
227
  /**
@@ -219,6 +231,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
219
231
  return await this.transport.request({
220
232
  method: 'suix_getCoinMetadata',
221
233
  params: [input.coinType],
234
+ signal: input.signal,
222
235
  });
223
236
  }
224
237
 
@@ -229,6 +242,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
229
242
  return await this.transport.request({
230
243
  method: 'suix_getTotalSupply',
231
244
  params: [input.coinType],
245
+ signal: input.signal,
232
246
  });
233
247
  }
234
248
 
@@ -237,8 +251,12 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
237
251
  * @param method the method to be invoked
238
252
  * @param args the arguments to be passed to the RPC request
239
253
  */
240
- async call<T = unknown>(method: string, params: unknown[]): Promise<T> {
241
- return await this.transport.request({ method, params });
254
+ async call<T = unknown>(
255
+ method: string,
256
+ params: unknown[],
257
+ { signal }: { signal?: AbortSignal } = {},
258
+ ): Promise<T> {
259
+ return await this.transport.request({ method, params, signal });
242
260
  }
243
261
 
244
262
  /**
@@ -250,6 +268,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
250
268
  return await this.transport.request({
251
269
  method: 'sui_getMoveFunctionArgTypes',
252
270
  params: [input.package, input.module, input.function],
271
+ signal: input.signal,
253
272
  });
254
273
  }
255
274
 
@@ -263,6 +282,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
263
282
  return await this.transport.request({
264
283
  method: 'sui_getNormalizedMoveModulesByPackage',
265
284
  params: [input.package],
285
+ signal: input.signal,
266
286
  });
267
287
  }
268
288
 
@@ -275,6 +295,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
275
295
  return await this.transport.request({
276
296
  method: 'sui_getNormalizedMoveModule',
277
297
  params: [input.package, input.module],
298
+ signal: input.signal,
278
299
  });
279
300
  }
280
301
 
@@ -287,6 +308,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
287
308
  return await this.transport.request({
288
309
  method: 'sui_getNormalizedMoveFunction',
289
310
  params: [input.package, input.module, input.function],
311
+ signal: input.signal,
290
312
  });
291
313
  }
292
314
 
@@ -299,6 +321,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
299
321
  return await this.transport.request({
300
322
  method: 'sui_getNormalizedMoveStruct',
301
323
  params: [input.package, input.module, input.struct],
324
+ signal: input.signal,
302
325
  });
303
326
  }
304
327
 
@@ -321,6 +344,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
321
344
  input.cursor,
322
345
  input.limit,
323
346
  ],
347
+ signal: input.signal,
324
348
  });
325
349
  }
326
350
 
@@ -334,6 +358,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
334
358
  return await this.transport.request({
335
359
  method: 'sui_getObject',
336
360
  params: [input.id, input.options],
361
+ signal: input.signal,
337
362
  });
338
363
  }
339
364
 
@@ -341,6 +366,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
341
366
  return await this.transport.request({
342
367
  method: 'sui_tryGetPastObject',
343
368
  params: [input.id, input.version, input.options],
369
+ signal: input.signal,
344
370
  });
345
371
  }
346
372
 
@@ -361,6 +387,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
361
387
  return await this.transport.request({
362
388
  method: 'sui_multiGetObjects',
363
389
  params: [input.ids, input.options],
390
+ signal: input.signal,
364
391
  });
365
392
  }
366
393
 
@@ -381,6 +408,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
381
408
  input.limit,
382
409
  (input.order || 'descending') === 'descending',
383
410
  ],
411
+ signal: input.signal,
384
412
  });
385
413
  }
386
414
 
@@ -393,6 +421,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
393
421
  return await this.transport.request({
394
422
  method: 'sui_getTransactionBlock',
395
423
  params: [input.digest, input.options],
424
+ signal: input.signal,
396
425
  });
397
426
  }
398
427
 
@@ -413,6 +442,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
413
442
  return await this.transport.request({
414
443
  method: 'sui_multiGetTransactionBlocks',
415
444
  params: [input.digests, input.options],
445
+ signal: input.signal,
416
446
  });
417
447
  }
418
448
 
@@ -421,6 +451,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
421
451
  signature,
422
452
  options,
423
453
  requestType,
454
+ signal,
424
455
  }: ExecuteTransactionBlockParams): Promise<SuiTransactionBlockResponse> {
425
456
  const result: SuiTransactionBlockResponse = await this.transport.request({
426
457
  method: 'sui_executeTransactionBlock',
@@ -429,6 +460,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
429
460
  Array.isArray(signature) ? signature : [signature],
430
461
  options,
431
462
  ],
463
+ signal,
432
464
  });
433
465
 
434
466
  if (requestType === 'WaitForLocalExecution') {
@@ -477,10 +509,11 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
477
509
  * Get total number of transactions
478
510
  */
479
511
 
480
- async getTotalTransactionBlocks(): Promise<bigint> {
512
+ async getTotalTransactionBlocks({ signal }: { signal?: AbortSignal } = {}): Promise<bigint> {
481
513
  const resp = await this.transport.request<string>({
482
514
  method: 'sui_getTotalTransactionBlocks',
483
515
  params: [],
516
+ signal,
484
517
  });
485
518
  return BigInt(resp);
486
519
  }
@@ -488,10 +521,11 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
488
521
  /**
489
522
  * Getting the reference gas price for the network
490
523
  */
491
- async getReferenceGasPrice(): Promise<bigint> {
524
+ async getReferenceGasPrice({ signal }: GetReferenceGasPriceParams = {}): Promise<bigint> {
492
525
  const resp = await this.transport.request<string>({
493
526
  method: 'suix_getReferenceGasPrice',
494
527
  params: [],
528
+ signal,
495
529
  });
496
530
  return BigInt(resp);
497
531
  }
@@ -503,7 +537,11 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
503
537
  if (!input.owner || !isValidSuiAddress(normalizeSuiAddress(input.owner))) {
504
538
  throw new Error('Invalid Sui address');
505
539
  }
506
- return await this.transport.request({ method: 'suix_getStakes', params: [input.owner] });
540
+ return await this.transport.request({
541
+ method: 'suix_getStakes',
542
+ params: [input.owner],
543
+ signal: input.signal,
544
+ });
507
545
  }
508
546
 
509
547
  /**
@@ -518,14 +556,21 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
518
556
  return await this.transport.request({
519
557
  method: 'suix_getStakesByIds',
520
558
  params: [input.stakedSuiIds],
559
+ signal: input.signal,
521
560
  });
522
561
  }
523
562
 
524
563
  /**
525
564
  * Return the latest system state content.
526
565
  */
527
- async getLatestSuiSystemState(): Promise<SuiSystemStateSummary> {
528
- return await this.transport.request({ method: 'suix_getLatestSuiSystemState', params: [] });
566
+ async getLatestSuiSystemState({
567
+ signal,
568
+ }: GetLatestSuiSystemStateParams = {}): Promise<SuiSystemStateSummary> {
569
+ return await this.transport.request({
570
+ method: 'suix_getLatestSuiSystemState',
571
+ params: [],
572
+ signal,
573
+ });
529
574
  }
530
575
 
531
576
  /**
@@ -540,6 +585,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
540
585
  input.limit,
541
586
  (input.order || 'descending') === 'descending',
542
587
  ],
588
+ signal: input.signal,
543
589
  });
544
590
  }
545
591
 
@@ -559,6 +605,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
559
605
  unsubscribe: 'suix_unsubscribeEvent',
560
606
  params: [input.filter],
561
607
  onMessage: input.onMessage,
608
+ signal: input.signal,
562
609
  });
563
610
  }
564
611
 
@@ -576,6 +623,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
576
623
  unsubscribe: 'suix_unsubscribeTransaction',
577
624
  params: [input.filter],
578
625
  onMessage: input.onMessage,
626
+ signal: input.signal,
579
627
  });
580
628
  }
581
629
 
@@ -604,9 +652,12 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
604
652
  throw new Error('Unknown transaction block format.');
605
653
  }
606
654
 
655
+ input.signal?.throwIfAborted();
656
+
607
657
  return await this.transport.request({
608
658
  method: 'sui_devInspectTransactionBlock',
609
659
  params: [input.sender, devInspectTxBytes, input.gasPrice?.toString(), input.epoch],
660
+ signal: input.signal,
610
661
  });
611
662
  }
612
663
 
@@ -636,6 +687,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
636
687
  return await this.transport.request({
637
688
  method: 'suix_getDynamicFields',
638
689
  params: [input.parentId, input.cursor, input.limit],
690
+ signal: input.signal,
639
691
  });
640
692
  }
641
693
 
@@ -646,16 +698,20 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
646
698
  return await this.transport.request({
647
699
  method: 'suix_getDynamicFieldObject',
648
700
  params: [input.parentId, input.name],
701
+ signal: input.signal,
649
702
  });
650
703
  }
651
704
 
652
705
  /**
653
706
  * Get the sequence number of the latest checkpoint that has been executed
654
707
  */
655
- async getLatestCheckpointSequenceNumber(): Promise<string> {
708
+ async getLatestCheckpointSequenceNumber({
709
+ signal,
710
+ }: GetLatestCheckpointSequenceNumberParams = {}): Promise<string> {
656
711
  const resp = await this.transport.request({
657
712
  method: 'sui_getLatestCheckpointSequenceNumber',
658
713
  params: [],
714
+ signal,
659
715
  });
660
716
  return String(resp);
661
717
  }
@@ -664,7 +720,11 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
664
720
  * Returns information about a given checkpoint
665
721
  */
666
722
  async getCheckpoint(input: GetCheckpointParams): Promise<Checkpoint> {
667
- return await this.transport.request({ method: 'sui_getCheckpoint', params: [input.id] });
723
+ return await this.transport.request({
724
+ method: 'sui_getCheckpoint',
725
+ params: [input.id],
726
+ signal: input.signal,
727
+ });
668
728
  }
669
729
 
670
730
  /**
@@ -676,6 +736,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
676
736
  return await this.transport.request({
677
737
  method: 'sui_getCheckpoints',
678
738
  params: [input.cursor, input?.limit, input.descendingOrder],
739
+ signal: input.signal,
679
740
  });
680
741
  }
681
742
 
@@ -686,32 +747,47 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
686
747
  return await this.transport.request({
687
748
  method: 'suix_getCommitteeInfo',
688
749
  params: [input?.epoch],
750
+ signal: input?.signal,
689
751
  });
690
752
  }
691
753
 
692
- async getNetworkMetrics(): Promise<NetworkMetrics> {
693
- return await this.transport.request({ method: 'suix_getNetworkMetrics', params: [] });
754
+ async getNetworkMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<NetworkMetrics> {
755
+ return await this.transport.request({
756
+ method: 'suix_getNetworkMetrics',
757
+ params: [],
758
+ signal,
759
+ });
694
760
  }
695
761
 
696
- async getAddressMetrics(): Promise<AddressMetrics> {
697
- return await this.transport.request({ method: 'suix_getLatestAddressMetrics', params: [] });
762
+ async getAddressMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<AddressMetrics> {
763
+ return await this.transport.request({
764
+ method: 'suix_getLatestAddressMetrics',
765
+ params: [],
766
+ signal,
767
+ });
698
768
  }
699
769
 
700
770
  async getEpochMetrics(
701
- input?: { descendingOrder?: boolean } & PaginationArguments<EpochMetricsPage['nextCursor']>,
771
+ input?: {
772
+ descendingOrder?: boolean;
773
+ signal?: AbortSignal;
774
+ } & PaginationArguments<EpochMetricsPage['nextCursor']>,
702
775
  ): Promise<EpochMetricsPage> {
703
776
  return await this.transport.request({
704
777
  method: 'suix_getEpochMetrics',
705
778
  params: [input?.cursor, input?.limit, input?.descendingOrder],
779
+ signal: input?.signal,
706
780
  });
707
781
  }
708
782
 
709
783
  async getAllEpochAddressMetrics(input?: {
710
784
  descendingOrder?: boolean;
785
+ signal?: AbortSignal;
711
786
  }): Promise<AllEpochsAddressMetrics> {
712
787
  return await this.transport.request({
713
788
  method: 'suix_getAllEpochAddressMetrics',
714
789
  params: [input?.descendingOrder],
790
+ signal: input?.signal,
715
791
  });
716
792
  }
717
793
 
@@ -721,38 +797,52 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
721
797
  async getEpochs(
722
798
  input?: {
723
799
  descendingOrder?: boolean;
800
+ signal?: AbortSignal;
724
801
  } & PaginationArguments<EpochPage['nextCursor']>,
725
802
  ): Promise<EpochPage> {
726
803
  return await this.transport.request({
727
804
  method: 'suix_getEpochs',
728
805
  params: [input?.cursor, input?.limit, input?.descendingOrder],
806
+ signal: input?.signal,
729
807
  });
730
808
  }
731
809
 
732
810
  /**
733
811
  * Returns list of top move calls by usage
734
812
  */
735
- async getMoveCallMetrics(): Promise<MoveCallMetrics> {
736
- return await this.transport.request({ method: 'suix_getMoveCallMetrics', params: [] });
813
+ async getMoveCallMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<MoveCallMetrics> {
814
+ return await this.transport.request({
815
+ method: 'suix_getMoveCallMetrics',
816
+ params: [],
817
+ signal,
818
+ });
737
819
  }
738
820
 
739
821
  /**
740
822
  * Return the committee information for the asked epoch
741
823
  */
742
- async getCurrentEpoch(): Promise<EpochInfo> {
743
- return await this.transport.request({ method: 'suix_getCurrentEpoch', params: [] });
824
+ async getCurrentEpoch({ signal }: { signal?: AbortSignal } = {}): Promise<EpochInfo> {
825
+ return await this.transport.request({
826
+ method: 'suix_getCurrentEpoch',
827
+ params: [],
828
+ signal,
829
+ });
744
830
  }
745
831
 
746
832
  /**
747
833
  * Return the Validators APYs
748
834
  */
749
- async getValidatorsApy(): Promise<ValidatorsApy> {
750
- return await this.transport.request({ method: 'suix_getValidatorsApy', params: [] });
835
+ async getValidatorsApy({ signal }: { signal?: AbortSignal } = {}): Promise<ValidatorsApy> {
836
+ return await this.transport.request({
837
+ method: 'suix_getValidatorsApy',
838
+ params: [],
839
+ signal,
840
+ });
751
841
  }
752
842
 
753
843
  // TODO: Migrate this to `sui_getChainIdentifier` once it is widely available.
754
- async getChainIdentifier(): Promise<string> {
755
- const checkpoint = await this.getCheckpoint({ id: '0' });
844
+ async getChainIdentifier({ signal }: { signal?: AbortSignal } = {}): Promise<string> {
845
+ const checkpoint = await this.getCheckpoint({ id: '0', signal });
756
846
  const bytes = fromBase58(checkpoint.digest);
757
847
  return toHex(bytes.slice(0, 4));
758
848
  }
@@ -761,6 +851,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
761
851
  return await this.transport.request({
762
852
  method: 'suix_resolveNameServiceAddress',
763
853
  params: [input.name],
854
+ signal: input.signal,
764
855
  });
765
856
  }
766
857
 
@@ -774,6 +865,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
774
865
  await this.transport.request({
775
866
  method: 'suix_resolveNameServiceNames',
776
867
  params: [input.address, input.cursor, input.limit],
868
+ signal: input.signal,
777
869
  });
778
870
 
779
871
  return {
@@ -787,6 +879,7 @@ export class SuiClient extends Experimental_SuiClient implements SelfRegistering
787
879
  return await this.transport.request({
788
880
  method: 'sui_getProtocolConfig',
789
881
  params: [input?.version],
882
+ signal: input?.signal,
790
883
  });
791
884
  }
792
885