@haneullabs/haneul 2.4.0 → 2.5.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 (82) hide show
  1. package/dist/bcs/bcs.mjs +1 -1
  2. package/dist/bcs/bcs.mjs.map +1 -1
  3. package/dist/bcs/index.d.mts +4 -4
  4. package/dist/client/core-resolver.mjs +2 -2
  5. package/dist/client/core-resolver.mjs.map +1 -1
  6. package/dist/client/core.mjs +1 -1
  7. package/dist/client/core.mjs.map +1 -1
  8. package/dist/cryptography/keypair.d.mts +1 -1
  9. package/dist/cryptography/keypair.mjs +3 -3
  10. package/dist/cryptography/keypair.mjs.map +1 -1
  11. package/dist/cryptography/publickey.d.mts +1 -1
  12. package/dist/cryptography/publickey.mjs +2 -2
  13. package/dist/cryptography/publickey.mjs.map +1 -1
  14. package/dist/cryptography/signature.d.mts +6 -6
  15. package/dist/grpc/proto/haneul/rpc/v2/ledger_service.client.d.mts +4 -4
  16. package/dist/grpc/proto/haneul/rpc/v2/move_package_service.client.d.mts +4 -4
  17. package/dist/grpc/proto/haneul/rpc/v2/state_service.client.d.mts +4 -4
  18. package/dist/grpc/proto/haneul/rpc/v2/subscription_service.client.d.mts +4 -4
  19. package/dist/grpc/proto/haneul/rpc/v2/system_state.d.mts +2 -2
  20. package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs +1 -1
  21. package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs.map +1 -1
  22. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.client.d.mts +4 -4
  23. package/dist/jsonRpc/client.d.mts +5 -5
  24. package/dist/jsonRpc/client.d.mts.map +1 -1
  25. package/dist/jsonRpc/client.mjs +56 -56
  26. package/dist/jsonRpc/client.mjs.map +1 -1
  27. package/dist/jsonRpc/core.mjs +6 -6
  28. package/dist/jsonRpc/core.mjs.map +1 -1
  29. package/dist/jsonRpc/index.d.mts +4 -4
  30. package/dist/jsonRpc/index.mjs +2 -2
  31. package/dist/jsonRpc/types/generated.d.mts +14 -14
  32. package/dist/jsonRpc/types/generated.d.mts.map +1 -1
  33. package/dist/jsonRpc/types/index.d.mts +2 -2
  34. package/dist/jsonRpc/types/params.d.mts +8 -8
  35. package/dist/jsonRpc/types/params.d.mts.map +1 -1
  36. package/dist/multisig/publickey.d.mts +1 -1
  37. package/dist/multisig/publickey.mjs +1 -1
  38. package/dist/multisig/publickey.mjs.map +1 -1
  39. package/dist/multisig/signer.mjs +2 -2
  40. package/dist/multisig/signer.mjs.map +1 -1
  41. package/dist/transactions/Commands.mjs +3 -3
  42. package/dist/transactions/Commands.mjs.map +1 -1
  43. package/dist/transactions/executor/caching.mjs +1 -1
  44. package/dist/transactions/executor/caching.mjs.map +1 -1
  45. package/dist/transactions/executor/parallel.mjs +3 -3
  46. package/dist/transactions/executor/parallel.mjs.map +1 -1
  47. package/dist/transactions/executor/serial.mjs +1 -1
  48. package/dist/transactions/executor/serial.mjs.map +1 -1
  49. package/dist/utils/haneul-types.d.mts +2 -2
  50. package/dist/utils/haneul-types.d.mts.map +1 -1
  51. package/dist/utils/haneul-types.mjs +2 -2
  52. package/dist/utils/haneul-types.mjs.map +1 -1
  53. package/dist/utils/index.d.mts +2 -2
  54. package/dist/utils/index.mjs +2 -2
  55. package/dist/verify/verify.mjs +1 -1
  56. package/dist/verify/verify.mjs.map +1 -1
  57. package/dist/zklogin/publickey.d.mts +1 -1
  58. package/dist/zklogin/publickey.d.mts.map +1 -1
  59. package/dist/zklogin/publickey.mjs +9 -9
  60. package/dist/zklogin/publickey.mjs.map +1 -1
  61. package/package.json +199 -199
  62. package/src/bcs/bcs.ts +1 -1
  63. package/src/client/core-resolver.ts +2 -2
  64. package/src/client/core.ts +1 -1
  65. package/src/cryptography/keypair.ts +3 -3
  66. package/src/cryptography/publickey.ts +2 -2
  67. package/src/grpc/proto/haneul/rpc/v2/system_state.ts +3 -3
  68. package/src/jsonRpc/client.ts +57 -57
  69. package/src/jsonRpc/core.ts +7 -7
  70. package/src/jsonRpc/index.ts +1 -1
  71. package/src/jsonRpc/types/generated.ts +13 -13
  72. package/src/jsonRpc/types/params.ts +7 -7
  73. package/src/multisig/publickey.ts +1 -1
  74. package/src/multisig/signer.ts +2 -2
  75. package/src/transactions/Commands.ts +3 -3
  76. package/src/transactions/executor/caching.ts +1 -1
  77. package/src/transactions/executor/parallel.ts +3 -3
  78. package/src/transactions/executor/serial.ts +1 -1
  79. package/src/utils/haneul-types.ts +1 -1
  80. package/src/utils/index.ts +1 -1
  81. package/src/verify/verify.ts +1 -1
  82. package/src/zklogin/publickey.ts +9 -9
@@ -1,6 +1,6 @@
1
1
  import { normalizeHaneulNSName } from "../utils/haneulns.mjs";
2
2
  import { isValidNamedPackage } from "../utils/move-registry.mjs";
3
- import { isValidHaneulAddress, isValidHaneulObjectId, isValidTransactionDigest, normalizeHaneulAddress, normalizeSuiObjectId } from "../utils/haneul-types.mjs";
3
+ import { isValidHaneulAddress, isValidHaneulObjectId, isValidTransactionDigest, normalizeHaneulAddress, normalizeHaneulObjectId } from "../utils/haneul-types.mjs";
4
4
  import { BaseClient } from "../client/client.mjs";
5
5
  import { hasMvrName } from "../client/mvr.mjs";
6
6
  import { JsonRpcHTTPTransport } from "./http-transport.mjs";
@@ -40,7 +40,7 @@ const COIN_RESERVATION_MAGIC = new Uint8Array([
40
40
  function isCoinReservationDigest(digestBase58) {
41
41
  return fromBase58(digestBase58).slice(12, 32).every((byte, i) => byte === COIN_RESERVATION_MAGIC[i]);
42
42
  }
43
- function isSuiJsonRpcClient(client) {
43
+ function isHaneulJsonRpcClient(client) {
44
44
  return typeof client === "object" && client !== null && client[SUI_CLIENT_BRAND] === true;
45
45
  }
46
46
  var HaneulJsonRpcClient = class extends BaseClient {
@@ -75,7 +75,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
75
75
  if (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) throw new Error("Invalid Haneul address");
76
76
  if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
77
77
  const result = await this.transport.request({
78
- method: "suix_getCoins",
78
+ method: "haneulx_getCoins",
79
79
  params: [
80
80
  owner,
81
81
  coinType,
@@ -95,7 +95,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
95
95
  async getAllCoins(input) {
96
96
  if (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) throw new Error("Invalid Haneul address");
97
97
  const result = await this.transport.request({
98
- method: "suix_getAllCoins",
98
+ method: "haneulx_getAllCoins",
99
99
  params: [
100
100
  input.owner,
101
101
  input.cursor,
@@ -115,7 +115,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
115
115
  if (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) throw new Error("Invalid Haneul address");
116
116
  if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
117
117
  return await this.transport.request({
118
- method: "suix_getBalance",
118
+ method: "haneulx_getBalance",
119
119
  params: [owner, coinType],
120
120
  signal
121
121
  });
@@ -126,7 +126,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
126
126
  async getAllBalances(input) {
127
127
  if (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) throw new Error("Invalid Haneul address");
128
128
  return await this.transport.request({
129
- method: "suix_getAllBalances",
129
+ method: "haneulx_getAllBalances",
130
130
  params: [input.owner],
131
131
  signal: input.signal
132
132
  });
@@ -137,7 +137,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
137
137
  async getCoinMetadata({ coinType, signal }) {
138
138
  if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
139
139
  return await this.transport.request({
140
- method: "suix_getCoinMetadata",
140
+ method: "haneulx_getCoinMetadata",
141
141
  params: [coinType],
142
142
  signal
143
143
  });
@@ -148,7 +148,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
148
148
  async getTotalSupply({ coinType, signal }) {
149
149
  if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
150
150
  return await this.transport.request({
151
- method: "suix_getTotalSupply",
151
+ method: "haneulx_getTotalSupply",
152
152
  params: [coinType],
153
153
  signal
154
154
  });
@@ -171,7 +171,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
171
171
  async getMoveFunctionArgTypes({ package: pkg, module, function: fn, signal }) {
172
172
  if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
173
173
  return await this.transport.request({
174
- method: "sui_getMoveFunctionArgTypes",
174
+ method: "haneul_getMoveFunctionArgTypes",
175
175
  params: [
176
176
  pkg,
177
177
  module,
@@ -187,7 +187,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
187
187
  async getNormalizedMoveModulesByPackage({ package: pkg, signal }) {
188
188
  if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
189
189
  return await this.transport.request({
190
- method: "sui_getNormalizedMoveModulesByPackage",
190
+ method: "haneul_getNormalizedMoveModulesByPackage",
191
191
  params: [pkg],
192
192
  signal
193
193
  });
@@ -198,7 +198,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
198
198
  async getNormalizedMoveModule({ package: pkg, module, signal }) {
199
199
  if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
200
200
  return await this.transport.request({
201
- method: "sui_getNormalizedMoveModule",
201
+ method: "haneul_getNormalizedMoveModule",
202
202
  params: [pkg, module],
203
203
  signal
204
204
  });
@@ -209,7 +209,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
209
209
  async getNormalizedMoveFunction({ package: pkg, module, function: fn, signal }) {
210
210
  if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
211
211
  return await this.transport.request({
212
- method: "sui_getNormalizedMoveFunction",
212
+ method: "haneul_getNormalizedMoveFunction",
213
213
  params: [
214
214
  pkg,
215
215
  module,
@@ -224,7 +224,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
224
224
  async getNormalizedMoveStruct({ package: pkg, module, struct, signal }) {
225
225
  if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
226
226
  return await this.transport.request({
227
- method: "sui_getNormalizedMoveStruct",
227
+ method: "haneul_getNormalizedMoveStruct",
228
228
  params: [
229
229
  pkg,
230
230
  module,
@@ -245,7 +245,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
245
245
  };
246
246
  else if (filter && "StructType" in filter && hasMvrName(filter.StructType)) filter.StructType = (await this.core.mvr.resolveType({ type: filter.StructType })).type;
247
247
  return await this.transport.request({
248
- method: "suix_getOwnedObjects",
248
+ method: "haneulx_getOwnedObjects",
249
249
  params: [
250
250
  input.owner,
251
251
  {
@@ -262,16 +262,16 @@ var HaneulJsonRpcClient = class extends BaseClient {
262
262
  * Get details about an object
263
263
  */
264
264
  async getObject(input) {
265
- if (!input.id || !isValidHaneulObjectId(normalizeSuiObjectId(input.id))) throw new Error("Invalid Haneul Object id");
265
+ if (!input.id || !isValidHaneulObjectId(normalizeHaneulObjectId(input.id))) throw new Error("Invalid Haneul Object id");
266
266
  return await this.transport.request({
267
- method: "sui_getObject",
267
+ method: "haneul_getObject",
268
268
  params: [input.id, input.options],
269
269
  signal: input.signal
270
270
  });
271
271
  }
272
272
  async tryGetPastObject(input) {
273
273
  return await this.transport.request({
274
- method: "sui_tryGetPastObject",
274
+ method: "haneul_tryGetPastObject",
275
275
  params: [
276
276
  input.id,
277
277
  input.version,
@@ -285,11 +285,11 @@ var HaneulJsonRpcClient = class extends BaseClient {
285
285
  */
286
286
  async multiGetObjects(input) {
287
287
  input.ids.forEach((id) => {
288
- if (!id || !isValidHaneulObjectId(normalizeSuiObjectId(id))) throw new Error(`Invalid Haneul Object id ${id}`);
288
+ if (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) throw new Error(`Invalid Haneul Object id ${id}`);
289
289
  });
290
290
  if (input.ids.length !== new Set(input.ids).size) throw new Error(`Duplicate object ids in batch call ${input.ids}`);
291
291
  return await this.transport.request({
292
- method: "sui_multiGetObjects",
292
+ method: "haneul_multiGetObjects",
293
293
  params: [input.ids, input.options],
294
294
  signal: input.signal
295
295
  });
@@ -303,7 +303,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
303
303
  MoveFunction: { package: (await this.core.mvr.resolvePackage({ package: filter.MoveFunction.package })).package }
304
304
  };
305
305
  return await this.transport.request({
306
- method: "suix_queryTransactionBlocks",
306
+ method: "haneulx_queryTransactionBlocks",
307
307
  params: [
308
308
  {
309
309
  filter,
@@ -319,7 +319,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
319
319
  async getTransactionBlock(input) {
320
320
  if (!isValidTransactionDigest(input.digest)) throw new Error("Invalid Transaction digest");
321
321
  return await this.transport.request({
322
- method: "sui_getTransactionBlock",
322
+ method: "haneul_getTransactionBlock",
323
323
  params: [input.digest, input.options],
324
324
  signal: input.signal
325
325
  });
@@ -330,14 +330,14 @@ var HaneulJsonRpcClient = class extends BaseClient {
330
330
  });
331
331
  if (input.digests.length !== new Set(input.digests).size) throw new Error(`Duplicate digests in batch call ${input.digests}`);
332
332
  return await this.transport.request({
333
- method: "sui_multiGetTransactionBlocks",
333
+ method: "haneul_multiGetTransactionBlocks",
334
334
  params: [input.digests, input.options],
335
335
  signal: input.signal
336
336
  });
337
337
  }
338
338
  async executeTransactionBlock({ transactionBlock, signature, options, signal }) {
339
339
  return await this.transport.request({
340
- method: "sui_executeTransactionBlock",
340
+ method: "haneul_executeTransactionBlock",
341
341
  params: [
342
342
  typeof transactionBlock === "string" ? transactionBlock : toBase64(transactionBlock),
343
343
  Array.isArray(signature) ? signature : [signature],
@@ -350,7 +350,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
350
350
  let transactionBytes;
351
351
  if (transaction instanceof Uint8Array) transactionBytes = transaction;
352
352
  else {
353
- transaction.setSenderIfNotSet(signer.toSuiAddress());
353
+ transaction.setSenderIfNotSet(signer.toHaneulAddress());
354
354
  transactionBytes = await transaction.build({ client: this });
355
355
  }
356
356
  const { signature, bytes } = await signer.signTransaction(transactionBytes);
@@ -365,7 +365,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
365
365
  */
366
366
  async getTotalTransactionBlocks({ signal } = {}) {
367
367
  const resp = await this.transport.request({
368
- method: "sui_getTotalTransactionBlocks",
368
+ method: "haneul_getTotalTransactionBlocks",
369
369
  params: [],
370
370
  signal
371
371
  });
@@ -376,7 +376,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
376
376
  */
377
377
  async getReferenceGasPrice({ signal } = {}) {
378
378
  const resp = await this.transport.request({
379
- method: "suix_getReferenceGasPrice",
379
+ method: "haneulx_getReferenceGasPrice",
380
380
  params: [],
381
381
  signal
382
382
  });
@@ -388,7 +388,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
388
388
  async getStakes(input) {
389
389
  if (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) throw new Error("Invalid Haneul address");
390
390
  return await this.transport.request({
391
- method: "suix_getStakes",
391
+ method: "haneulx_getStakes",
392
392
  params: [input.owner],
393
393
  signal: input.signal
394
394
  });
@@ -397,21 +397,21 @@ var HaneulJsonRpcClient = class extends BaseClient {
397
397
  * Return the delegated stakes queried by id.
398
398
  */
399
399
  async getStakesByIds(input) {
400
- input.stakedSuiIds.forEach((id) => {
401
- if (!id || !isValidHaneulObjectId(normalizeSuiObjectId(id))) throw new Error(`Invalid Haneul Stake id ${id}`);
400
+ input.stakedHaneulIds.forEach((id) => {
401
+ if (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) throw new Error(`Invalid Haneul Stake id ${id}`);
402
402
  });
403
403
  return await this.transport.request({
404
- method: "suix_getStakesByIds",
405
- params: [input.stakedSuiIds],
404
+ method: "haneulx_getStakesByIds",
405
+ params: [input.stakedHaneulIds],
406
406
  signal: input.signal
407
407
  });
408
408
  }
409
409
  /**
410
410
  * Return the latest system state content.
411
411
  */
412
- async getLatestSuiSystemState({ signal } = {}) {
412
+ async getLatestHaneulSystemState({ signal } = {}) {
413
413
  return await this.transport.request({
414
- method: "suix_getLatestSuiSystemState",
414
+ method: "haneulx_getLatestHaneulSystemState",
415
415
  params: [],
416
416
  signal
417
417
  });
@@ -439,7 +439,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
439
439
  }
440
440
  };
441
441
  return await this.transport.request({
442
- method: "suix_queryEvents",
442
+ method: "haneulx_queryEvents",
443
443
  params: [
444
444
  query,
445
445
  cursor,
@@ -467,7 +467,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
467
467
  else throw new Error("Unknown transaction block format.");
468
468
  input.signal?.throwIfAborted();
469
469
  return await this.transport.request({
470
- method: "sui_devInspectTransactionBlock",
470
+ method: "haneul_devInspectTransactionBlock",
471
471
  params: [
472
472
  input.sender,
473
473
  devInspectTxBytes,
@@ -482,7 +482,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
482
482
  */
483
483
  async dryRunTransactionBlock(input) {
484
484
  return await this.transport.request({
485
- method: "sui_dryRunTransactionBlock",
485
+ method: "haneul_dryRunTransactionBlock",
486
486
  params: [typeof input.transactionBlock === "string" ? input.transactionBlock : toBase64(input.transactionBlock)]
487
487
  });
488
488
  }
@@ -490,9 +490,9 @@ var HaneulJsonRpcClient = class extends BaseClient {
490
490
  * Return the list of dynamic field objects owned by an object
491
491
  */
492
492
  async getDynamicFields(input) {
493
- if (!input.parentId || !isValidHaneulObjectId(normalizeSuiObjectId(input.parentId))) throw new Error("Invalid Haneul Object id");
493
+ if (!input.parentId || !isValidHaneulObjectId(normalizeHaneulObjectId(input.parentId))) throw new Error("Invalid Haneul Object id");
494
494
  return await this.transport.request({
495
- method: "suix_getDynamicFields",
495
+ method: "haneulx_getDynamicFields",
496
496
  params: [
497
497
  input.parentId,
498
498
  input.cursor,
@@ -506,7 +506,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
506
506
  */
507
507
  async getDynamicFieldObject(input) {
508
508
  return await this.transport.request({
509
- method: "suix_getDynamicFieldObject",
509
+ method: "haneulx_getDynamicFieldObject",
510
510
  params: [input.parentId, input.name],
511
511
  signal: input.signal
512
512
  });
@@ -516,7 +516,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
516
516
  */
517
517
  async getLatestCheckpointSequenceNumber({ signal } = {}) {
518
518
  const resp = await this.transport.request({
519
- method: "sui_getLatestCheckpointSequenceNumber",
519
+ method: "haneul_getLatestCheckpointSequenceNumber",
520
520
  params: [],
521
521
  signal
522
522
  });
@@ -527,7 +527,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
527
527
  */
528
528
  async getCheckpoint(input) {
529
529
  return await this.transport.request({
530
- method: "sui_getCheckpoint",
530
+ method: "haneul_getCheckpoint",
531
531
  params: [input.id],
532
532
  signal: input.signal
533
533
  });
@@ -537,7 +537,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
537
537
  */
538
538
  async getCheckpoints(input) {
539
539
  return await this.transport.request({
540
- method: "sui_getCheckpoints",
540
+ method: "haneul_getCheckpoints",
541
541
  params: [
542
542
  input.cursor,
543
543
  input?.limit,
@@ -551,28 +551,28 @@ var HaneulJsonRpcClient = class extends BaseClient {
551
551
  */
552
552
  async getCommitteeInfo(input) {
553
553
  return await this.transport.request({
554
- method: "suix_getCommitteeInfo",
554
+ method: "haneulx_getCommitteeInfo",
555
555
  params: [input?.epoch],
556
556
  signal: input?.signal
557
557
  });
558
558
  }
559
559
  async getNetworkMetrics({ signal } = {}) {
560
560
  return await this.transport.request({
561
- method: "suix_getNetworkMetrics",
561
+ method: "haneulx_getNetworkMetrics",
562
562
  params: [],
563
563
  signal
564
564
  });
565
565
  }
566
566
  async getAddressMetrics({ signal } = {}) {
567
567
  return await this.transport.request({
568
- method: "suix_getLatestAddressMetrics",
568
+ method: "haneulx_getLatestAddressMetrics",
569
569
  params: [],
570
570
  signal
571
571
  });
572
572
  }
573
573
  async getEpochMetrics(input) {
574
574
  return await this.transport.request({
575
- method: "suix_getEpochMetrics",
575
+ method: "haneulx_getEpochMetrics",
576
576
  params: [
577
577
  input?.cursor,
578
578
  input?.limit,
@@ -583,7 +583,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
583
583
  }
584
584
  async getAllEpochAddressMetrics(input) {
585
585
  return await this.transport.request({
586
- method: "suix_getAllEpochAddressMetrics",
586
+ method: "haneulx_getAllEpochAddressMetrics",
587
587
  params: [input?.descendingOrder],
588
588
  signal: input?.signal
589
589
  });
@@ -593,7 +593,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
593
593
  */
594
594
  async getEpochs(input) {
595
595
  return await this.transport.request({
596
- method: "suix_getEpochs",
596
+ method: "haneulx_getEpochs",
597
597
  params: [
598
598
  input?.cursor,
599
599
  input?.limit,
@@ -607,7 +607,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
607
607
  */
608
608
  async getMoveCallMetrics({ signal } = {}) {
609
609
  return await this.transport.request({
610
- method: "suix_getMoveCallMetrics",
610
+ method: "haneulx_getMoveCallMetrics",
611
611
  params: [],
612
612
  signal
613
613
  });
@@ -617,7 +617,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
617
617
  */
618
618
  async getCurrentEpoch({ signal } = {}) {
619
619
  return await this.transport.request({
620
- method: "suix_getCurrentEpoch",
620
+ method: "haneulx_getCurrentEpoch",
621
621
  params: [],
622
622
  signal
623
623
  });
@@ -627,7 +627,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
627
627
  */
628
628
  async getValidatorsApy({ signal } = {}) {
629
629
  return await this.transport.request({
630
- method: "suix_getValidatorsApy",
630
+ method: "haneulx_getValidatorsApy",
631
631
  params: [],
632
632
  signal
633
633
  });
@@ -640,14 +640,14 @@ var HaneulJsonRpcClient = class extends BaseClient {
640
640
  }
641
641
  async resolveNameServiceAddress(input) {
642
642
  return await this.transport.request({
643
- method: "suix_resolveNameServiceAddress",
643
+ method: "haneulx_resolveNameServiceAddress",
644
644
  params: [input.name],
645
645
  signal: input.signal
646
646
  });
647
647
  }
648
648
  async resolveNameServiceNames({ format = "dot", ...input }) {
649
649
  const { nextCursor, hasNextPage, data } = await this.transport.request({
650
- method: "suix_resolveNameServiceNames",
650
+ method: "haneulx_resolveNameServiceNames",
651
651
  params: [
652
652
  input.address,
653
653
  input.cursor,
@@ -663,14 +663,14 @@ var HaneulJsonRpcClient = class extends BaseClient {
663
663
  }
664
664
  async getProtocolConfig(input) {
665
665
  return await this.transport.request({
666
- method: "sui_getProtocolConfig",
666
+ method: "haneul_getProtocolConfig",
667
667
  params: [input?.version],
668
668
  signal: input?.signal
669
669
  });
670
670
  }
671
671
  async verifyZkLoginSignature(input) {
672
672
  return await this.transport.request({
673
- method: "sui_verifyZkLoginSignature",
673
+ method: "haneul_verifyZkLoginSignature",
674
674
  params: [
675
675
  input.bytes,
676
676
  input.signature,
@@ -706,5 +706,5 @@ var HaneulJsonRpcClient = class extends BaseClient {
706
706
  };
707
707
 
708
708
  //#endregion
709
- export { HaneulJsonRpcClient, isSuiJsonRpcClient };
709
+ export { HaneulJsonRpcClient, isHaneulJsonRpcClient };
710
710
  //# sourceMappingURL=client.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.mjs","names":[],"sources":["../../src/jsonRpc/client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport { fromBase58, toBase64, toHex } from '@haneullabs/bcs';\n\nimport type { Signer } from '../cryptography/index.js';\nimport { BaseClient } from '../client/client.js';\nimport type { HaneulClientTypes } from '../client/types.js';\nimport type { Transaction } from '../transactions/Transaction.js';\nimport { isTransaction } from '../transactions/Transaction.js';\nimport {\n\tisValidHaneulAddress,\n\tisValidHaneulObjectId,\n\tisValidTransactionDigest,\n\tnormalizeHaneulAddress,\n\tnormalizeSuiObjectId,\n} from '../utils/haneul-types.js';\nimport { normalizeHaneulNSName } from '../utils/haneulns.js';\nimport { JsonRpcHTTPTransport } from './http-transport.js';\nimport type { JsonRpcTransport } from './http-transport.js';\nimport type {\n\tAddressMetrics,\n\tAllEpochsAddressMetrics,\n\tCheckpoint,\n\tCheckpointPage,\n\tCoinBalance,\n\tCoinMetadata,\n\tCoinSupply,\n\tCommitteeInfo,\n\tDelegatedStake,\n\tDevInspectResults,\n\tDevInspectTransactionBlockParams,\n\tDryRunTransactionBlockParams,\n\tDryRunTransactionBlockResponse,\n\tDynamicFieldPage,\n\tEpochInfo,\n\tEpochMetricsPage,\n\tEpochPage,\n\tExecuteTransactionBlockParams,\n\tGetAllBalancesParams,\n\tGetAllCoinsParams,\n\tGetBalanceParams,\n\tGetCheckpointParams,\n\tGetCheckpointsParams,\n\tGetCoinMetadataParams,\n\tGetCoinsParams,\n\tGetCommitteeInfoParams,\n\tGetDynamicFieldObjectParams,\n\tGetDynamicFieldsParams,\n\tGetLatestCheckpointSequenceNumberParams,\n\tGetLatestSuiSystemStateParams,\n\tGetMoveFunctionArgTypesParams,\n\tGetNormalizedMoveFunctionParams,\n\tGetNormalizedMoveModuleParams,\n\tGetNormalizedMoveModulesByPackageParams,\n\tGetNormalizedMoveStructParams,\n\tGetObjectParams,\n\tGetOwnedObjectsParams,\n\tGetProtocolConfigParams,\n\tGetReferenceGasPriceParams,\n\tGetStakesByIdsParams,\n\tGetStakesParams,\n\tGetTotalSupplyParams,\n\tGetTransactionBlockParams,\n\tMoveCallMetrics,\n\tMultiGetObjectsParams,\n\tMultiGetTransactionBlocksParams,\n\tNetworkMetrics,\n\tObjectRead,\n\tOrder,\n\tPaginatedCoins,\n\tPaginatedEvents,\n\tPaginatedObjectsResponse,\n\tPaginatedTransactionResponse,\n\tProtocolConfig,\n\tQueryEventsParams,\n\tQueryTransactionBlocksParams,\n\tResolvedNameServiceNames,\n\tResolveNameServiceAddressParams,\n\tResolveNameServiceNamesParams,\n\tHaneulMoveFunctionArgType,\n\tHaneulMoveNormalizedFunction,\n\tHaneulMoveNormalizedModule,\n\tHaneulMoveNormalizedModules,\n\tHaneulMoveNormalizedStruct,\n\tHaneulObjectResponse,\n\tHaneulObjectResponseQuery,\n\tHaneulSystemStateSummary,\n\tHaneulTransactionBlockResponse,\n\tHaneulTransactionBlockResponseQuery,\n\tTryGetPastObjectParams,\n\tValidatorsApy,\n\tVerifyZkLoginSignatureParams,\n\tZkLoginVerifyResult,\n} from './types/index.js';\nimport { isValidNamedPackage } from '../utils/move-registry.js';\nimport { hasMvrName } from '../client/mvr.js';\nimport { JSONRpcCoreClient } from './core.js';\n\nexport interface PaginationArguments<Cursor> {\n\t/** Optional paging cursor */\n\tcursor?: Cursor;\n\t/** Maximum item returned per page */\n\tlimit?: number | null;\n}\n\nexport interface OrderArguments {\n\torder?: Order | null;\n}\n\n/**\n * Configuration options for the HaneulJsonRpcClient\n * You must provide either a `url` or a `transport`\n */\nexport type HaneulJsonRpcClientOptions = NetworkOrTransport & {\n\tnetwork: HaneulClientTypes.Network;\n\tmvr?: HaneulClientTypes.MvrOptions;\n};\n\ntype NetworkOrTransport =\n\t| {\n\t\t\turl: string;\n\t\t\ttransport?: never;\n\t }\n\t| {\n\t\t\ttransport: JsonRpcTransport;\n\t\t\turl?: never;\n\t };\n\nconst SUI_CLIENT_BRAND = Symbol.for('@haneullabs/HaneulJsonRpcClient') as never;\n\n// Magic number used to identify fake address balance coins (last 20 bytes of the digest)\n// See: haneul/crate./haneul-types/src/coin_reservation.rs\nconst COIN_RESERVATION_MAGIC = new Uint8Array([\n\t0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,\n\t0xac, 0xac, 0xac, 0xac,\n]);\n\n/**\n * Checks if a digest indicates a fake address balance coin.\n * These \"coins\" are created by the JSON RPC to represent address balances\n * and should be filtered out from coin listings.\n */\nfunction isCoinReservationDigest(digestBase58: string): boolean {\n\tconst digestBytes = fromBase58(digestBase58);\n\t// Check if the last 20 bytes match the magic number\n\tconst last20Bytes = digestBytes.slice(12, 32);\n\treturn last20Bytes.every((byte, i) => byte === COIN_RESERVATION_MAGIC[i]);\n}\n\nexport function isSuiJsonRpcClient(client: unknown): client is HaneulJsonRpcClient {\n\treturn (\n\t\ttypeof client === 'object' && client !== null && (client as any)[SUI_CLIENT_BRAND] === true\n\t);\n}\n\nexport class HaneulJsonRpcClient extends BaseClient {\n\tcore: JSONRpcCoreClient;\n\tjsonRpc = this;\n\tprotected transport: JsonRpcTransport;\n\n\tget [SUI_CLIENT_BRAND]() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Establish a connection to a Haneul RPC endpoint\n\t *\n\t * @param options configuration options for the API Client\n\t */\n\tconstructor(options: HaneulJsonRpcClientOptions) {\n\t\tsuper({ network: options.network });\n\t\tthis.transport = options.transport ?? new JsonRpcHTTPTransport({ url: options.url });\n\t\tthis.core = new JSONRpcCoreClient({\n\t\t\tjsonRpcClient: this,\n\t\t\tmvr: options.mvr,\n\t\t});\n\t}\n\n\tasync getRpcApiVersion({ signal }: { signal?: AbortSignal } = {}): Promise<string | undefined> {\n\t\tconst resp = await this.transport.request<{ info: { version: string } }>({\n\t\t\tmethod: 'rpc.discover',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn resp.info.version;\n\t}\n\n\t/**\n\t * Get all Coin<`coin_type`> objects owned by an address.\n\t */\n\tasync getCoins({\n\t\tcoinType,\n\t\towner,\n\t\tcursor,\n\t\tlimit,\n\t\tsignal,\n\t}: GetCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'suix_getCoins',\n\t\t\tparams: [owner, coinType, cursor, limit],\n\t\t\tsignal: signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get all Coin objects owned by an address.\n\t */\n\tasync getAllCoins(input: GetAllCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'suix_getAllCoins',\n\t\t\tparams: [input.owner, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get the total coin balance for one coin type, owned by the address owner.\n\t */\n\tasync getBalance({ owner, coinType, signal }: GetBalanceParams): Promise<CoinBalance> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getBalance',\n\t\t\tparams: [owner, coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the total coin balance for all coin types, owned by the address owner.\n\t */\n\tasync getAllBalances(input: GetAllBalancesParams): Promise<CoinBalance[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getAllBalances',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch CoinMetadata for a given coin type\n\t */\n\tasync getCoinMetadata({ coinType, signal }: GetCoinMetadataParams): Promise<CoinMetadata | null> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getCoinMetadata',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch total supply for a coin\n\t */\n\tasync getTotalSupply({ coinType, signal }: GetTotalSupplyParams): Promise<CoinSupply> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getTotalSupply',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Invoke any RPC method\n\t * @param method the method to be invoked\n\t * @param args the arguments to be passed to the RPC request\n\t */\n\tasync call<T = unknown>(\n\t\tmethod: string,\n\t\tparams: unknown[],\n\t\t{ signal }: { signal?: AbortSignal } = {},\n\t): Promise<T> {\n\t\treturn await this.transport.request({ method, params, signal });\n\t}\n\n\t/**\n\t * Get Move function argument types like read, write and full access\n\t */\n\tasync getMoveFunctionArgTypes({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetMoveFunctionArgTypesParams): Promise<HaneulMoveFunctionArgType[]> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getMoveFunctionArgTypes',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a map from module name to\n\t * structured representations of Move modules\n\t */\n\tasync getNormalizedMoveModulesByPackage({\n\t\tpackage: pkg,\n\t\tsignal,\n\t}: GetNormalizedMoveModulesByPackageParams): Promise<HaneulMoveNormalizedModules> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveModulesByPackage',\n\t\t\tparams: [pkg],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move module\n\t */\n\tasync getNormalizedMoveModule({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tsignal,\n\t}: GetNormalizedMoveModuleParams): Promise<HaneulMoveNormalizedModule> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveModule',\n\t\t\tparams: [pkg, module],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move function\n\t */\n\tasync getNormalizedMoveFunction({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetNormalizedMoveFunctionParams): Promise<HaneulMoveNormalizedFunction> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveFunction',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move struct\n\t */\n\tasync getNormalizedMoveStruct({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tstruct,\n\t\tsignal,\n\t}: GetNormalizedMoveStructParams): Promise<HaneulMoveNormalizedStruct> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveStruct',\n\t\t\tparams: [pkg, module, struct],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get all objects owned by an address\n\t */\n\tasync getOwnedObjects(input: GetOwnedObjectsParams): Promise<PaginatedObjectsResponse> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst filter = input.filter\n\t\t\t? {\n\t\t\t\t\t...input.filter,\n\t\t\t\t}\n\t\t\t: undefined;\n\n\t\tif (filter && 'MoveModule' in filter && isValidNamedPackage(filter.MoveModule.package)) {\n\t\t\tfilter.MoveModule = {\n\t\t\t\tmodule: filter.MoveModule.module,\n\t\t\t\tpackage: (\n\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\tpackage: filter.MoveModule.package,\n\t\t\t\t\t})\n\t\t\t\t).package,\n\t\t\t};\n\t\t} else if (filter && 'StructType' in filter && hasMvrName(filter.StructType)) {\n\t\t\tfilter.StructType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: filter.StructType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getOwnedObjects',\n\t\t\tparams: [\n\t\t\t\tinput.owner,\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions: input.options,\n\t\t\t\t} as HaneulObjectResponseQuery,\n\t\t\t\tinput.cursor,\n\t\t\t\tinput.limit,\n\t\t\t],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get details about an object\n\t */\n\tasync getObject(input: GetObjectParams): Promise<HaneulObjectResponse> {\n\t\tif (!input.id || !isValidHaneulObjectId(normalizeSuiObjectId(input.id))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getObject',\n\t\t\tparams: [input.id, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync tryGetPastObject(input: TryGetPastObjectParams): Promise<ObjectRead> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_tryGetPastObject',\n\t\t\tparams: [input.id, input.version, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Batch get details about a list of objects. If any of the object ids are duplicates the call will fail\n\t */\n\tasync multiGetObjects(input: MultiGetObjectsParams): Promise<HaneulObjectResponse[]> {\n\t\tinput.ids.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeSuiObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Object id ${id}`);\n\t\t\t}\n\t\t});\n\t\tconst hasDuplicates = input.ids.length !== new Set(input.ids).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate object ids in batch call ${input.ids}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_multiGetObjects',\n\t\t\tparams: [input.ids, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get transaction blocks for a given query criteria\n\t */\n\tasync queryTransactionBlocks({\n\t\tfilter,\n\t\toptions,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryTransactionBlocksParams): Promise<PaginatedTransactionResponse> {\n\t\tif (filter && 'MoveFunction' in filter && isValidNamedPackage(filter.MoveFunction.package)) {\n\t\t\tfilter = {\n\t\t\t\t...filter,\n\t\t\t\tMoveFunction: {\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: filter.MoveFunction.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_queryTransactionBlocks',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions,\n\t\t\t\t} as HaneulTransactionBlockResponseQuery,\n\t\t\t\tcursor,\n\t\t\t\tlimit,\n\t\t\t\t(order || 'descending') === 'descending',\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getTransactionBlock(\n\t\tinput: GetTransactionBlockParams,\n\t): Promise<HaneulTransactionBlockResponse> {\n\t\tif (!isValidTransactionDigest(input.digest)) {\n\t\t\tthrow new Error('Invalid Transaction digest');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getTransactionBlock',\n\t\t\tparams: [input.digest, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync multiGetTransactionBlocks(\n\t\tinput: MultiGetTransactionBlocksParams,\n\t): Promise<HaneulTransactionBlockResponse[]> {\n\t\tinput.digests.forEach((d) => {\n\t\t\tif (!isValidTransactionDigest(d)) {\n\t\t\t\tthrow new Error(`Invalid Transaction digest ${d}`);\n\t\t\t}\n\t\t});\n\n\t\tconst hasDuplicates = input.digests.length !== new Set(input.digests).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate digests in batch call ${input.digests}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_multiGetTransactionBlocks',\n\t\t\tparams: [input.digests, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync executeTransactionBlock({\n\t\ttransactionBlock,\n\t\tsignature,\n\t\toptions,\n\t\tsignal,\n\t}: ExecuteTransactionBlockParams): Promise<HaneulTransactionBlockResponse> {\n\t\tconst result: HaneulTransactionBlockResponse = await this.transport.request({\n\t\t\tmethod: 'sui_executeTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof transactionBlock === 'string' ? transactionBlock : toBase64(transactionBlock),\n\t\t\t\tArray.isArray(signature) ? signature : [signature],\n\t\t\t\toptions,\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tasync signAndExecuteTransaction({\n\t\ttransaction,\n\t\tsigner,\n\t\t...input\n\t}: {\n\t\ttransaction: Uint8Array | Transaction;\n\t\tsigner: Signer;\n\t} & Omit<\n\t\tExecuteTransactionBlockParams,\n\t\t'transactionBlock' | 'signature'\n\t>): Promise<HaneulTransactionBlockResponse> {\n\t\tlet transactionBytes;\n\n\t\tif (transaction instanceof Uint8Array) {\n\t\t\ttransactionBytes = transaction;\n\t\t} else {\n\t\t\ttransaction.setSenderIfNotSet(signer.toSuiAddress());\n\t\t\ttransactionBytes = await transaction.build({ client: this });\n\t\t}\n\n\t\tconst { signature, bytes } = await signer.signTransaction(transactionBytes);\n\n\t\treturn this.executeTransactionBlock({\n\t\t\ttransactionBlock: bytes,\n\t\t\tsignature,\n\t\t\t...input,\n\t\t});\n\t}\n\n\t/**\n\t * Get total number of transactions\n\t */\n\n\tasync getTotalTransactionBlocks({ signal }: { signal?: AbortSignal } = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'sui_getTotalTransactionBlocks',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Getting the reference gas price for the network\n\t */\n\tasync getReferenceGasPrice({ signal }: GetReferenceGasPriceParams = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'suix_getReferenceGasPrice',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Return the delegated stakes for an address\n\t */\n\tasync getStakes(input: GetStakesParams): Promise<DelegatedStake[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getStakes',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the delegated stakes queried by id.\n\t */\n\tasync getStakesByIds(input: GetStakesByIdsParams): Promise<DelegatedStake[]> {\n\t\tinput.stakedSuiIds.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeSuiObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Stake id ${id}`);\n\t\t\t}\n\t\t});\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getStakesByIds',\n\t\t\tparams: [input.stakedSuiIds],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the latest system state content.\n\t */\n\tasync getLatestSuiSystemState({\n\t\tsignal,\n\t}: GetLatestSuiSystemStateParams = {}): Promise<HaneulSystemStateSummary> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getLatestSuiSystemState',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Get events for a given query criteria\n\t */\n\tasync queryEvents({\n\t\tquery,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryEventsParams): Promise<PaginatedEvents> {\n\t\tif (query && 'MoveEventType' in query && hasMvrName(query.MoveEventType)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventType: (\n\t\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\t\ttype: query.MoveEventType,\n\t\t\t\t\t})\n\t\t\t\t).type,\n\t\t\t};\n\t\t}\n\n\t\tif (query && 'MoveEventModule' in query && isValidNamedPackage(query.MoveEventModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventModule: {\n\t\t\t\t\tmodule: query.MoveEventModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveEventModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif ('MoveModule' in query && isValidNamedPackage(query.MoveModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveModule: {\n\t\t\t\t\tmodule: query.MoveModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_queryEvents',\n\t\t\tparams: [query, cursor, limit, (order || 'descending') === 'descending'],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Runs the transaction block in dev-inspect mode. Which allows for nearly any\n\t * transaction (or Move call) with any arguments. Detailed results are\n\t * provided, including both the transaction effects and any return values.\n\t */\n\tasync devInspectTransactionBlock(\n\t\tinput: DevInspectTransactionBlockParams,\n\t): Promise<DevInspectResults> {\n\t\tlet devInspectTxBytes;\n\t\tif (isTransaction(input.transactionBlock)) {\n\t\t\tinput.transactionBlock.setSenderIfNotSet(input.sender);\n\t\t\tdevInspectTxBytes = toBase64(\n\t\t\t\tawait input.transactionBlock.build({\n\t\t\t\t\tclient: this,\n\t\t\t\t\tonlyTransactionKind: true,\n\t\t\t\t}),\n\t\t\t);\n\t\t} else if (typeof input.transactionBlock === 'string') {\n\t\t\tdevInspectTxBytes = input.transactionBlock;\n\t\t} else if (input.transactionBlock instanceof Uint8Array) {\n\t\t\tdevInspectTxBytes = toBase64(input.transactionBlock);\n\t\t} else {\n\t\t\tthrow new Error('Unknown transaction block format.');\n\t\t}\n\n\t\tinput.signal?.throwIfAborted();\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_devInspectTransactionBlock',\n\t\t\tparams: [input.sender, devInspectTxBytes, input.gasPrice?.toString(), input.epoch],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Dry run a transaction block and return the result.\n\t */\n\tasync dryRunTransactionBlock(\n\t\tinput: DryRunTransactionBlockParams,\n\t): Promise<DryRunTransactionBlockResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_dryRunTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof input.transactionBlock === 'string'\n\t\t\t\t\t? input.transactionBlock\n\t\t\t\t\t: toBase64(input.transactionBlock),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Return the list of dynamic field objects owned by an object\n\t */\n\tasync getDynamicFields(input: GetDynamicFieldsParams): Promise<DynamicFieldPage> {\n\t\tif (!input.parentId || !isValidHaneulObjectId(normalizeSuiObjectId(input.parentId))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getDynamicFields',\n\t\t\tparams: [input.parentId, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the dynamic field object information for a specified object\n\t */\n\tasync getDynamicFieldObject(input: GetDynamicFieldObjectParams): Promise<HaneulObjectResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getDynamicFieldObject',\n\t\t\tparams: [input.parentId, input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the sequence number of the latest checkpoint that has been executed\n\t */\n\tasync getLatestCheckpointSequenceNumber({\n\t\tsignal,\n\t}: GetLatestCheckpointSequenceNumberParams = {}): Promise<string> {\n\t\tconst resp = await this.transport.request({\n\t\t\tmethod: 'sui_getLatestCheckpointSequenceNumber',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn String(resp);\n\t}\n\n\t/**\n\t * Returns information about a given checkpoint\n\t */\n\tasync getCheckpoint(input: GetCheckpointParams): Promise<Checkpoint> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getCheckpoint',\n\t\t\tparams: [input.id],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns historical checkpoints paginated\n\t */\n\tasync getCheckpoints(\n\t\tinput: PaginationArguments<CheckpointPage['nextCursor']> & GetCheckpointsParams,\n\t): Promise<CheckpointPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getCheckpoints',\n\t\t\tparams: [input.cursor, input?.limit, input.descendingOrder],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCommitteeInfo(input?: GetCommitteeInfoParams): Promise<CommitteeInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getCommitteeInfo',\n\t\t\tparams: [input?.epoch],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getNetworkMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<NetworkMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getNetworkMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getAddressMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<AddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getLatestAddressMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getEpochMetrics(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochMetricsPage['nextCursor']>,\n\t): Promise<EpochMetricsPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getEpochMetrics',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getAllEpochAddressMetrics(input?: {\n\t\tdescendingOrder?: boolean;\n\t\tsignal?: AbortSignal;\n\t}): Promise<AllEpochsAddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getAllEpochAddressMetrics',\n\t\t\tparams: [input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getEpochs(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochPage['nextCursor']>,\n\t): Promise<EpochPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getEpochs',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns list of top move calls by usage\n\t */\n\tasync getMoveCallMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<MoveCallMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getMoveCallMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCurrentEpoch({ signal }: { signal?: AbortSignal } = {}): Promise<EpochInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getCurrentEpoch',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the Validators APYs\n\t */\n\tasync getValidatorsApy({ signal }: { signal?: AbortSignal } = {}): Promise<ValidatorsApy> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getValidatorsApy',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t// TODO: Migrate this to `sui_getChainIdentifier` once it is widely available.\n\tasync getChainIdentifier({ signal }: { signal?: AbortSignal } = {}): Promise<string> {\n\t\tconst checkpoint = await this.getCheckpoint({ id: '0', signal });\n\t\tconst bytes = fromBase58(checkpoint.digest);\n\t\treturn toHex(bytes.slice(0, 4));\n\t}\n\n\tasync resolveNameServiceAddress(input: ResolveNameServiceAddressParams): Promise<string | null> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_resolveNameServiceAddress',\n\t\t\tparams: [input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync resolveNameServiceNames({\n\t\tformat = 'dot',\n\t\t...input\n\t}: ResolveNameServiceNamesParams & {\n\t\tformat?: 'at' | 'dot';\n\t}): Promise<ResolvedNameServiceNames> {\n\t\tconst { nextCursor, hasNextPage, data }: ResolvedNameServiceNames =\n\t\t\tawait this.transport.request({\n\t\t\t\tmethod: 'suix_resolveNameServiceNames',\n\t\t\t\tparams: [input.address, input.cursor, input.limit],\n\t\t\t\tsignal: input.signal,\n\t\t\t});\n\n\t\treturn {\n\t\t\thasNextPage,\n\t\t\tnextCursor,\n\t\t\tdata: data.map((name) => normalizeHaneulNSName(name, format)),\n\t\t};\n\t}\n\n\tasync getProtocolConfig(input?: GetProtocolConfigParams): Promise<ProtocolConfig> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getProtocolConfig',\n\t\t\tparams: [input?.version],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync verifyZkLoginSignature(input: VerifyZkLoginSignatureParams): Promise<ZkLoginVerifyResult> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_verifyZkLoginSignature',\n\t\t\tparams: [input.bytes, input.signature, input.intentScope, input.author],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Wait for a transaction block result to be available over the API.\n\t * This can be used in conjunction with `executeTransactionBlock` to wait for the transaction to\n\t * be available via the API.\n\t * This currently polls the `getTransactionBlock` API to check for the transaction.\n\t */\n\tasync waitForTransaction({\n\t\tsignal,\n\t\ttimeout = 60 * 1000,\n\t\tpollInterval = 2 * 1000,\n\t\t...input\n\t}: {\n\t\t/** An optional abort signal that can be used to cancel */\n\t\tsignal?: AbortSignal;\n\t\t/** The amount of time to wait for a transaction block. Defaults to one minute. */\n\t\ttimeout?: number;\n\t\t/** The amount of time to wait between checks for the transaction block. Defaults to 2 seconds. */\n\t\tpollInterval?: number;\n\t} & Parameters<\n\t\tHaneulJsonRpcClient['getTransactionBlock']\n\t>[0]): Promise<HaneulTransactionBlockResponse> {\n\t\tconst timeoutSignal = AbortSignal.timeout(timeout);\n\t\tconst timeoutPromise = new Promise((_, reject) => {\n\t\t\ttimeoutSignal.addEventListener('abort', () => reject(timeoutSignal.reason));\n\t\t});\n\n\t\ttimeoutPromise.catch(() => {\n\t\t\t// Swallow unhandled rejections that might be thrown after early return\n\t\t});\n\n\t\twhile (!timeoutSignal.aborted) {\n\t\t\tsignal?.throwIfAborted();\n\t\t\ttry {\n\t\t\t\treturn await this.getTransactionBlock(input);\n\t\t\t} catch {\n\t\t\t\t// Wait for either the next poll interval, or the timeout.\n\t\t\t\tawait Promise.race([\n\t\t\t\t\tnew Promise((resolve) => setTimeout(resolve, pollInterval)),\n\t\t\t\t\ttimeoutPromise,\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\n\t\ttimeoutSignal.throwIfAborted();\n\n\t\t// This should never happen, because the above case should always throw, but just adding it in the event that something goes horribly wrong.\n\t\tthrow new Error('Unexpected error while waiting for transaction block.');\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.mjs","names":[],"sources":["../../src/jsonRpc/client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport { fromBase58, toBase64, toHex } from '@haneullabs/bcs';\n\nimport type { Signer } from '../cryptography/index.js';\nimport { BaseClient } from '../client/client.js';\nimport type { HaneulClientTypes } from '../client/types.js';\nimport type { Transaction } from '../transactions/Transaction.js';\nimport { isTransaction } from '../transactions/Transaction.js';\nimport {\n\tisValidHaneulAddress,\n\tisValidHaneulObjectId,\n\tisValidTransactionDigest,\n\tnormalizeHaneulAddress,\n\tnormalizeHaneulObjectId,\n} from '../utils/haneul-types.js';\nimport { normalizeHaneulNSName } from '../utils/haneulns.js';\nimport { JsonRpcHTTPTransport } from './http-transport.js';\nimport type { JsonRpcTransport } from './http-transport.js';\nimport type {\n\tAddressMetrics,\n\tAllEpochsAddressMetrics,\n\tCheckpoint,\n\tCheckpointPage,\n\tCoinBalance,\n\tCoinMetadata,\n\tCoinSupply,\n\tCommitteeInfo,\n\tDelegatedStake,\n\tDevInspectResults,\n\tDevInspectTransactionBlockParams,\n\tDryRunTransactionBlockParams,\n\tDryRunTransactionBlockResponse,\n\tDynamicFieldPage,\n\tEpochInfo,\n\tEpochMetricsPage,\n\tEpochPage,\n\tExecuteTransactionBlockParams,\n\tGetAllBalancesParams,\n\tGetAllCoinsParams,\n\tGetBalanceParams,\n\tGetCheckpointParams,\n\tGetCheckpointsParams,\n\tGetCoinMetadataParams,\n\tGetCoinsParams,\n\tGetCommitteeInfoParams,\n\tGetDynamicFieldObjectParams,\n\tGetDynamicFieldsParams,\n\tGetLatestCheckpointSequenceNumberParams,\n\tGetLatestHaneulSystemStateParams,\n\tGetMoveFunctionArgTypesParams,\n\tGetNormalizedMoveFunctionParams,\n\tGetNormalizedMoveModuleParams,\n\tGetNormalizedMoveModulesByPackageParams,\n\tGetNormalizedMoveStructParams,\n\tGetObjectParams,\n\tGetOwnedObjectsParams,\n\tGetProtocolConfigParams,\n\tGetReferenceGasPriceParams,\n\tGetStakesByIdsParams,\n\tGetStakesParams,\n\tGetTotalSupplyParams,\n\tGetTransactionBlockParams,\n\tMoveCallMetrics,\n\tMultiGetObjectsParams,\n\tMultiGetTransactionBlocksParams,\n\tNetworkMetrics,\n\tObjectRead,\n\tOrder,\n\tPaginatedCoins,\n\tPaginatedEvents,\n\tPaginatedObjectsResponse,\n\tPaginatedTransactionResponse,\n\tProtocolConfig,\n\tQueryEventsParams,\n\tQueryTransactionBlocksParams,\n\tResolvedNameServiceNames,\n\tResolveNameServiceAddressParams,\n\tResolveNameServiceNamesParams,\n\tHaneulMoveFunctionArgType,\n\tHaneulMoveNormalizedFunction,\n\tHaneulMoveNormalizedModule,\n\tHaneulMoveNormalizedModules,\n\tHaneulMoveNormalizedStruct,\n\tHaneulObjectResponse,\n\tHaneulObjectResponseQuery,\n\tHaneulSystemStateSummary,\n\tHaneulTransactionBlockResponse,\n\tHaneulTransactionBlockResponseQuery,\n\tTryGetPastObjectParams,\n\tValidatorsApy,\n\tVerifyZkLoginSignatureParams,\n\tZkLoginVerifyResult,\n} from './types/index.js';\nimport { isValidNamedPackage } from '../utils/move-registry.js';\nimport { hasMvrName } from '../client/mvr.js';\nimport { JSONRpcCoreClient } from './core.js';\n\nexport interface PaginationArguments<Cursor> {\n\t/** Optional paging cursor */\n\tcursor?: Cursor;\n\t/** Maximum item returned per page */\n\tlimit?: number | null;\n}\n\nexport interface OrderArguments {\n\torder?: Order | null;\n}\n\n/**\n * Configuration options for the HaneulJsonRpcClient\n * You must provide either a `url` or a `transport`\n */\nexport type HaneulJsonRpcClientOptions = NetworkOrTransport & {\n\tnetwork: HaneulClientTypes.Network;\n\tmvr?: HaneulClientTypes.MvrOptions;\n};\n\ntype NetworkOrTransport =\n\t| {\n\t\t\turl: string;\n\t\t\ttransport?: never;\n\t }\n\t| {\n\t\t\ttransport: JsonRpcTransport;\n\t\t\turl?: never;\n\t };\n\nconst SUI_CLIENT_BRAND = Symbol.for('@haneullabs/HaneulJsonRpcClient') as never;\n\n// Magic number used to identify fake address balance coins (last 20 bytes of the digest)\n// See: haneul/crate./haneul-types/src/coin_reservation.rs\nconst COIN_RESERVATION_MAGIC = new Uint8Array([\n\t0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,\n\t0xac, 0xac, 0xac, 0xac,\n]);\n\n/**\n * Checks if a digest indicates a fake address balance coin.\n * These \"coins\" are created by the JSON RPC to represent address balances\n * and should be filtered out from coin listings.\n */\nfunction isCoinReservationDigest(digestBase58: string): boolean {\n\tconst digestBytes = fromBase58(digestBase58);\n\t// Check if the last 20 bytes match the magic number\n\tconst last20Bytes = digestBytes.slice(12, 32);\n\treturn last20Bytes.every((byte, i) => byte === COIN_RESERVATION_MAGIC[i]);\n}\n\nexport function isHaneulJsonRpcClient(client: unknown): client is HaneulJsonRpcClient {\n\treturn (\n\t\ttypeof client === 'object' && client !== null && (client as any)[SUI_CLIENT_BRAND] === true\n\t);\n}\n\nexport class HaneulJsonRpcClient extends BaseClient {\n\tcore: JSONRpcCoreClient;\n\tjsonRpc = this;\n\tprotected transport: JsonRpcTransport;\n\n\tget [SUI_CLIENT_BRAND]() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Establish a connection to a Haneul RPC endpoint\n\t *\n\t * @param options configuration options for the API Client\n\t */\n\tconstructor(options: HaneulJsonRpcClientOptions) {\n\t\tsuper({ network: options.network });\n\t\tthis.transport = options.transport ?? new JsonRpcHTTPTransport({ url: options.url });\n\t\tthis.core = new JSONRpcCoreClient({\n\t\t\tjsonRpcClient: this,\n\t\t\tmvr: options.mvr,\n\t\t});\n\t}\n\n\tasync getRpcApiVersion({ signal }: { signal?: AbortSignal } = {}): Promise<string | undefined> {\n\t\tconst resp = await this.transport.request<{ info: { version: string } }>({\n\t\t\tmethod: 'rpc.discover',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn resp.info.version;\n\t}\n\n\t/**\n\t * Get all Coin<`coin_type`> objects owned by an address.\n\t */\n\tasync getCoins({\n\t\tcoinType,\n\t\towner,\n\t\tcursor,\n\t\tlimit,\n\t\tsignal,\n\t}: GetCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'haneulx_getCoins',\n\t\t\tparams: [owner, coinType, cursor, limit],\n\t\t\tsignal: signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get all Coin objects owned by an address.\n\t */\n\tasync getAllCoins(input: GetAllCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'haneulx_getAllCoins',\n\t\t\tparams: [input.owner, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get the total coin balance for one coin type, owned by the address owner.\n\t */\n\tasync getBalance({ owner, coinType, signal }: GetBalanceParams): Promise<CoinBalance> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getBalance',\n\t\t\tparams: [owner, coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the total coin balance for all coin types, owned by the address owner.\n\t */\n\tasync getAllBalances(input: GetAllBalancesParams): Promise<CoinBalance[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getAllBalances',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch CoinMetadata for a given coin type\n\t */\n\tasync getCoinMetadata({ coinType, signal }: GetCoinMetadataParams): Promise<CoinMetadata | null> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getCoinMetadata',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch total supply for a coin\n\t */\n\tasync getTotalSupply({ coinType, signal }: GetTotalSupplyParams): Promise<CoinSupply> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getTotalSupply',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Invoke any RPC method\n\t * @param method the method to be invoked\n\t * @param args the arguments to be passed to the RPC request\n\t */\n\tasync call<T = unknown>(\n\t\tmethod: string,\n\t\tparams: unknown[],\n\t\t{ signal }: { signal?: AbortSignal } = {},\n\t): Promise<T> {\n\t\treturn await this.transport.request({ method, params, signal });\n\t}\n\n\t/**\n\t * Get Move function argument types like read, write and full access\n\t */\n\tasync getMoveFunctionArgTypes({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetMoveFunctionArgTypesParams): Promise<HaneulMoveFunctionArgType[]> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getMoveFunctionArgTypes',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a map from module name to\n\t * structured representations of Move modules\n\t */\n\tasync getNormalizedMoveModulesByPackage({\n\t\tpackage: pkg,\n\t\tsignal,\n\t}: GetNormalizedMoveModulesByPackageParams): Promise<HaneulMoveNormalizedModules> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveModulesByPackage',\n\t\t\tparams: [pkg],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move module\n\t */\n\tasync getNormalizedMoveModule({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tsignal,\n\t}: GetNormalizedMoveModuleParams): Promise<HaneulMoveNormalizedModule> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveModule',\n\t\t\tparams: [pkg, module],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move function\n\t */\n\tasync getNormalizedMoveFunction({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetNormalizedMoveFunctionParams): Promise<HaneulMoveNormalizedFunction> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveFunction',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move struct\n\t */\n\tasync getNormalizedMoveStruct({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tstruct,\n\t\tsignal,\n\t}: GetNormalizedMoveStructParams): Promise<HaneulMoveNormalizedStruct> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveStruct',\n\t\t\tparams: [pkg, module, struct],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get all objects owned by an address\n\t */\n\tasync getOwnedObjects(input: GetOwnedObjectsParams): Promise<PaginatedObjectsResponse> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst filter = input.filter\n\t\t\t? {\n\t\t\t\t\t...input.filter,\n\t\t\t\t}\n\t\t\t: undefined;\n\n\t\tif (filter && 'MoveModule' in filter && isValidNamedPackage(filter.MoveModule.package)) {\n\t\t\tfilter.MoveModule = {\n\t\t\t\tmodule: filter.MoveModule.module,\n\t\t\t\tpackage: (\n\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\tpackage: filter.MoveModule.package,\n\t\t\t\t\t})\n\t\t\t\t).package,\n\t\t\t};\n\t\t} else if (filter && 'StructType' in filter && hasMvrName(filter.StructType)) {\n\t\t\tfilter.StructType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: filter.StructType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getOwnedObjects',\n\t\t\tparams: [\n\t\t\t\tinput.owner,\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions: input.options,\n\t\t\t\t} as HaneulObjectResponseQuery,\n\t\t\t\tinput.cursor,\n\t\t\t\tinput.limit,\n\t\t\t],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get details about an object\n\t */\n\tasync getObject(input: GetObjectParams): Promise<HaneulObjectResponse> {\n\t\tif (!input.id || !isValidHaneulObjectId(normalizeHaneulObjectId(input.id))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getObject',\n\t\t\tparams: [input.id, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync tryGetPastObject(input: TryGetPastObjectParams): Promise<ObjectRead> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_tryGetPastObject',\n\t\t\tparams: [input.id, input.version, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Batch get details about a list of objects. If any of the object ids are duplicates the call will fail\n\t */\n\tasync multiGetObjects(input: MultiGetObjectsParams): Promise<HaneulObjectResponse[]> {\n\t\tinput.ids.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Object id ${id}`);\n\t\t\t}\n\t\t});\n\t\tconst hasDuplicates = input.ids.length !== new Set(input.ids).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate object ids in batch call ${input.ids}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_multiGetObjects',\n\t\t\tparams: [input.ids, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get transaction blocks for a given query criteria\n\t */\n\tasync queryTransactionBlocks({\n\t\tfilter,\n\t\toptions,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryTransactionBlocksParams): Promise<PaginatedTransactionResponse> {\n\t\tif (filter && 'MoveFunction' in filter && isValidNamedPackage(filter.MoveFunction.package)) {\n\t\t\tfilter = {\n\t\t\t\t...filter,\n\t\t\t\tMoveFunction: {\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: filter.MoveFunction.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_queryTransactionBlocks',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions,\n\t\t\t\t} as HaneulTransactionBlockResponseQuery,\n\t\t\t\tcursor,\n\t\t\t\tlimit,\n\t\t\t\t(order || 'descending') === 'descending',\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getTransactionBlock(\n\t\tinput: GetTransactionBlockParams,\n\t): Promise<HaneulTransactionBlockResponse> {\n\t\tif (!isValidTransactionDigest(input.digest)) {\n\t\t\tthrow new Error('Invalid Transaction digest');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getTransactionBlock',\n\t\t\tparams: [input.digest, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync multiGetTransactionBlocks(\n\t\tinput: MultiGetTransactionBlocksParams,\n\t): Promise<HaneulTransactionBlockResponse[]> {\n\t\tinput.digests.forEach((d) => {\n\t\t\tif (!isValidTransactionDigest(d)) {\n\t\t\t\tthrow new Error(`Invalid Transaction digest ${d}`);\n\t\t\t}\n\t\t});\n\n\t\tconst hasDuplicates = input.digests.length !== new Set(input.digests).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate digests in batch call ${input.digests}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_multiGetTransactionBlocks',\n\t\t\tparams: [input.digests, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync executeTransactionBlock({\n\t\ttransactionBlock,\n\t\tsignature,\n\t\toptions,\n\t\tsignal,\n\t}: ExecuteTransactionBlockParams): Promise<HaneulTransactionBlockResponse> {\n\t\tconst result: HaneulTransactionBlockResponse = await this.transport.request({\n\t\t\tmethod: 'haneul_executeTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof transactionBlock === 'string' ? transactionBlock : toBase64(transactionBlock),\n\t\t\t\tArray.isArray(signature) ? signature : [signature],\n\t\t\t\toptions,\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tasync signAndExecuteTransaction({\n\t\ttransaction,\n\t\tsigner,\n\t\t...input\n\t}: {\n\t\ttransaction: Uint8Array | Transaction;\n\t\tsigner: Signer;\n\t} & Omit<\n\t\tExecuteTransactionBlockParams,\n\t\t'transactionBlock' | 'signature'\n\t>): Promise<HaneulTransactionBlockResponse> {\n\t\tlet transactionBytes;\n\n\t\tif (transaction instanceof Uint8Array) {\n\t\t\ttransactionBytes = transaction;\n\t\t} else {\n\t\t\ttransaction.setSenderIfNotSet(signer.toHaneulAddress());\n\t\t\ttransactionBytes = await transaction.build({ client: this });\n\t\t}\n\n\t\tconst { signature, bytes } = await signer.signTransaction(transactionBytes);\n\n\t\treturn this.executeTransactionBlock({\n\t\t\ttransactionBlock: bytes,\n\t\t\tsignature,\n\t\t\t...input,\n\t\t});\n\t}\n\n\t/**\n\t * Get total number of transactions\n\t */\n\n\tasync getTotalTransactionBlocks({ signal }: { signal?: AbortSignal } = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'haneul_getTotalTransactionBlocks',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Getting the reference gas price for the network\n\t */\n\tasync getReferenceGasPrice({ signal }: GetReferenceGasPriceParams = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'haneulx_getReferenceGasPrice',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Return the delegated stakes for an address\n\t */\n\tasync getStakes(input: GetStakesParams): Promise<DelegatedStake[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getStakes',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the delegated stakes queried by id.\n\t */\n\tasync getStakesByIds(input: GetStakesByIdsParams): Promise<DelegatedStake[]> {\n\t\tinput.stakedHaneulIds.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Stake id ${id}`);\n\t\t\t}\n\t\t});\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getStakesByIds',\n\t\t\tparams: [input.stakedHaneulIds],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the latest system state content.\n\t */\n\tasync getLatestHaneulSystemState({\n\t\tsignal,\n\t}: GetLatestHaneulSystemStateParams = {}): Promise<HaneulSystemStateSummary> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getLatestHaneulSystemState',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Get events for a given query criteria\n\t */\n\tasync queryEvents({\n\t\tquery,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryEventsParams): Promise<PaginatedEvents> {\n\t\tif (query && 'MoveEventType' in query && hasMvrName(query.MoveEventType)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventType: (\n\t\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\t\ttype: query.MoveEventType,\n\t\t\t\t\t})\n\t\t\t\t).type,\n\t\t\t};\n\t\t}\n\n\t\tif (query && 'MoveEventModule' in query && isValidNamedPackage(query.MoveEventModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventModule: {\n\t\t\t\t\tmodule: query.MoveEventModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveEventModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif ('MoveModule' in query && isValidNamedPackage(query.MoveModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveModule: {\n\t\t\t\t\tmodule: query.MoveModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_queryEvents',\n\t\t\tparams: [query, cursor, limit, (order || 'descending') === 'descending'],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Runs the transaction block in dev-inspect mode. Which allows for nearly any\n\t * transaction (or Move call) with any arguments. Detailed results are\n\t * provided, including both the transaction effects and any return values.\n\t */\n\tasync devInspectTransactionBlock(\n\t\tinput: DevInspectTransactionBlockParams,\n\t): Promise<DevInspectResults> {\n\t\tlet devInspectTxBytes;\n\t\tif (isTransaction(input.transactionBlock)) {\n\t\t\tinput.transactionBlock.setSenderIfNotSet(input.sender);\n\t\t\tdevInspectTxBytes = toBase64(\n\t\t\t\tawait input.transactionBlock.build({\n\t\t\t\t\tclient: this,\n\t\t\t\t\tonlyTransactionKind: true,\n\t\t\t\t}),\n\t\t\t);\n\t\t} else if (typeof input.transactionBlock === 'string') {\n\t\t\tdevInspectTxBytes = input.transactionBlock;\n\t\t} else if (input.transactionBlock instanceof Uint8Array) {\n\t\t\tdevInspectTxBytes = toBase64(input.transactionBlock);\n\t\t} else {\n\t\t\tthrow new Error('Unknown transaction block format.');\n\t\t}\n\n\t\tinput.signal?.throwIfAborted();\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_devInspectTransactionBlock',\n\t\t\tparams: [input.sender, devInspectTxBytes, input.gasPrice?.toString(), input.epoch],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Dry run a transaction block and return the result.\n\t */\n\tasync dryRunTransactionBlock(\n\t\tinput: DryRunTransactionBlockParams,\n\t): Promise<DryRunTransactionBlockResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_dryRunTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof input.transactionBlock === 'string'\n\t\t\t\t\t? input.transactionBlock\n\t\t\t\t\t: toBase64(input.transactionBlock),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Return the list of dynamic field objects owned by an object\n\t */\n\tasync getDynamicFields(input: GetDynamicFieldsParams): Promise<DynamicFieldPage> {\n\t\tif (!input.parentId || !isValidHaneulObjectId(normalizeHaneulObjectId(input.parentId))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getDynamicFields',\n\t\t\tparams: [input.parentId, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the dynamic field object information for a specified object\n\t */\n\tasync getDynamicFieldObject(input: GetDynamicFieldObjectParams): Promise<HaneulObjectResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getDynamicFieldObject',\n\t\t\tparams: [input.parentId, input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the sequence number of the latest checkpoint that has been executed\n\t */\n\tasync getLatestCheckpointSequenceNumber({\n\t\tsignal,\n\t}: GetLatestCheckpointSequenceNumberParams = {}): Promise<string> {\n\t\tconst resp = await this.transport.request({\n\t\t\tmethod: 'haneul_getLatestCheckpointSequenceNumber',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn String(resp);\n\t}\n\n\t/**\n\t * Returns information about a given checkpoint\n\t */\n\tasync getCheckpoint(input: GetCheckpointParams): Promise<Checkpoint> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getCheckpoint',\n\t\t\tparams: [input.id],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns historical checkpoints paginated\n\t */\n\tasync getCheckpoints(\n\t\tinput: PaginationArguments<CheckpointPage['nextCursor']> & GetCheckpointsParams,\n\t): Promise<CheckpointPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getCheckpoints',\n\t\t\tparams: [input.cursor, input?.limit, input.descendingOrder],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCommitteeInfo(input?: GetCommitteeInfoParams): Promise<CommitteeInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getCommitteeInfo',\n\t\t\tparams: [input?.epoch],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getNetworkMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<NetworkMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getNetworkMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getAddressMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<AddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getLatestAddressMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getEpochMetrics(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochMetricsPage['nextCursor']>,\n\t): Promise<EpochMetricsPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getEpochMetrics',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getAllEpochAddressMetrics(input?: {\n\t\tdescendingOrder?: boolean;\n\t\tsignal?: AbortSignal;\n\t}): Promise<AllEpochsAddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getAllEpochAddressMetrics',\n\t\t\tparams: [input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getEpochs(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochPage['nextCursor']>,\n\t): Promise<EpochPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getEpochs',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns list of top move calls by usage\n\t */\n\tasync getMoveCallMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<MoveCallMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getMoveCallMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCurrentEpoch({ signal }: { signal?: AbortSignal } = {}): Promise<EpochInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getCurrentEpoch',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the Validators APYs\n\t */\n\tasync getValidatorsApy({ signal }: { signal?: AbortSignal } = {}): Promise<ValidatorsApy> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getValidatorsApy',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t// TODO: Migrate this to `sui_getChainIdentifier` once it is widely available.\n\tasync getChainIdentifier({ signal }: { signal?: AbortSignal } = {}): Promise<string> {\n\t\tconst checkpoint = await this.getCheckpoint({ id: '0', signal });\n\t\tconst bytes = fromBase58(checkpoint.digest);\n\t\treturn toHex(bytes.slice(0, 4));\n\t}\n\n\tasync resolveNameServiceAddress(input: ResolveNameServiceAddressParams): Promise<string | null> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_resolveNameServiceAddress',\n\t\t\tparams: [input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync resolveNameServiceNames({\n\t\tformat = 'dot',\n\t\t...input\n\t}: ResolveNameServiceNamesParams & {\n\t\tformat?: 'at' | 'dot';\n\t}): Promise<ResolvedNameServiceNames> {\n\t\tconst { nextCursor, hasNextPage, data }: ResolvedNameServiceNames =\n\t\t\tawait this.transport.request({\n\t\t\t\tmethod: 'haneulx_resolveNameServiceNames',\n\t\t\t\tparams: [input.address, input.cursor, input.limit],\n\t\t\t\tsignal: input.signal,\n\t\t\t});\n\n\t\treturn {\n\t\t\thasNextPage,\n\t\t\tnextCursor,\n\t\t\tdata: data.map((name) => normalizeHaneulNSName(name, format)),\n\t\t};\n\t}\n\n\tasync getProtocolConfig(input?: GetProtocolConfigParams): Promise<ProtocolConfig> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getProtocolConfig',\n\t\t\tparams: [input?.version],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync verifyZkLoginSignature(input: VerifyZkLoginSignatureParams): Promise<ZkLoginVerifyResult> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_verifyZkLoginSignature',\n\t\t\tparams: [input.bytes, input.signature, input.intentScope, input.author],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Wait for a transaction block result to be available over the API.\n\t * This can be used in conjunction with `executeTransactionBlock` to wait for the transaction to\n\t * be available via the API.\n\t * This currently polls the `getTransactionBlock` API to check for the transaction.\n\t */\n\tasync waitForTransaction({\n\t\tsignal,\n\t\ttimeout = 60 * 1000,\n\t\tpollInterval = 2 * 1000,\n\t\t...input\n\t}: {\n\t\t/** An optional abort signal that can be used to cancel */\n\t\tsignal?: AbortSignal;\n\t\t/** The amount of time to wait for a transaction block. Defaults to one minute. */\n\t\ttimeout?: number;\n\t\t/** The amount of time to wait between checks for the transaction block. Defaults to 2 seconds. */\n\t\tpollInterval?: number;\n\t} & Parameters<\n\t\tHaneulJsonRpcClient['getTransactionBlock']\n\t>[0]): Promise<HaneulTransactionBlockResponse> {\n\t\tconst timeoutSignal = AbortSignal.timeout(timeout);\n\t\tconst timeoutPromise = new Promise((_, reject) => {\n\t\t\ttimeoutSignal.addEventListener('abort', () => reject(timeoutSignal.reason));\n\t\t});\n\n\t\ttimeoutPromise.catch(() => {\n\t\t\t// Swallow unhandled rejections that might be thrown after early return\n\t\t});\n\n\t\twhile (!timeoutSignal.aborted) {\n\t\t\tsignal?.throwIfAborted();\n\t\t\ttry {\n\t\t\t\treturn await this.getTransactionBlock(input);\n\t\t\t} catch {\n\t\t\t\t// Wait for either the next poll interval, or the timeout.\n\t\t\t\tawait Promise.race([\n\t\t\t\t\tnew Promise((resolve) => setTimeout(resolve, pollInterval)),\n\t\t\t\t\ttimeoutPromise,\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\n\t\ttimeoutSignal.throwIfAborted();\n\n\t\t// This should never happen, because the above case should always throw, but just adding it in the event that something goes horribly wrong.\n\t\tthrow new Error('Unexpected error while waiting for transaction block.');\n\t}\n}\n"],"mappings":"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"}