@mysten/sui 2.24.0 → 2.26.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 (77) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/bcs/bcs.d.mts +6 -6
  3. package/dist/client/core.d.mts.map +1 -1
  4. package/dist/client/core.mjs +4 -1
  5. package/dist/client/core.mjs.map +1 -1
  6. package/dist/client/errors.d.mts +31 -2
  7. package/dist/client/errors.d.mts.map +1 -1
  8. package/dist/client/errors.mjs +15 -13
  9. package/dist/client/errors.mjs.map +1 -1
  10. package/dist/client/index.d.mts +2 -2
  11. package/dist/client/index.mjs +2 -2
  12. package/dist/client/mvr.d.mts.map +1 -1
  13. package/dist/client/mvr.mjs +1 -0
  14. package/dist/client/mvr.mjs.map +1 -1
  15. package/dist/cryptography/signature.d.mts +6 -6
  16. package/dist/graphql/client.d.mts +5 -1
  17. package/dist/graphql/client.d.mts.map +1 -1
  18. package/dist/graphql/client.mjs +15 -2
  19. package/dist/graphql/client.mjs.map +1 -1
  20. package/dist/graphql/core.d.mts +4 -4
  21. package/dist/graphql/core.d.mts.map +1 -1
  22. package/dist/graphql/core.mjs +61 -18
  23. package/dist/graphql/core.mjs.map +1 -1
  24. package/dist/graphql/generated/tada-env.d.mts +16 -0
  25. package/dist/grpc/client.d.mts +5 -1
  26. package/dist/grpc/client.d.mts.map +1 -1
  27. package/dist/grpc/client.mjs +14 -2
  28. package/dist/grpc/client.mjs.map +1 -1
  29. package/dist/grpc/core.d.mts.map +1 -1
  30. package/dist/grpc/core.mjs +29 -12
  31. package/dist/grpc/core.mjs.map +1 -1
  32. package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.d.mts +4 -4
  33. package/dist/grpc/proto/sui/rpc/v2/name_service.client.d.mts +4 -4
  34. package/dist/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.mts +4 -4
  35. package/dist/grpc/proto/sui/rpc/v2/state_service.client.d.mts +4 -4
  36. package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.d.mts +4 -4
  37. package/dist/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.mts +4 -4
  38. package/dist/jsonRpc/client.d.mts.map +1 -1
  39. package/dist/jsonRpc/client.mjs +60 -15
  40. package/dist/jsonRpc/client.mjs.map +1 -1
  41. package/dist/jsonRpc/core.d.mts +1 -1
  42. package/dist/jsonRpc/core.d.mts.map +1 -1
  43. package/dist/jsonRpc/core.mjs +73 -22
  44. package/dist/jsonRpc/core.mjs.map +1 -1
  45. package/dist/transactions/Transaction.d.mts +6 -6
  46. package/dist/transactions/data/v1.d.mts +220 -220
  47. package/dist/transactions/data/v1.d.mts.map +1 -1
  48. package/dist/transactions/data/v2.d.mts +16 -16
  49. package/dist/transactions/data/v2.d.mts.map +1 -1
  50. package/dist/version.mjs +1 -1
  51. package/dist/version.mjs.map +1 -1
  52. package/dist/zklogin/bcs.d.mts +14 -14
  53. package/docs/bcs.md +2 -2
  54. package/docs/clients/core.md +150 -710
  55. package/docs/clients/executing.md +113 -0
  56. package/docs/clients/graphql.md +80 -70
  57. package/docs/clients/grpc.md +223 -208
  58. package/docs/clients/index.md +56 -67
  59. package/docs/clients/querying.md +539 -0
  60. package/docs/llms-index.md +6 -5
  61. package/docs/migrations/sui-2.0/json-rpc-migration.md +3 -1
  62. package/docs/transactions/signing-and-execution.md +8 -28
  63. package/package.json +1 -1
  64. package/src/client/core.ts +1 -0
  65. package/src/client/errors.ts +39 -23
  66. package/src/client/index.ts +9 -1
  67. package/src/client/mvr.ts +6 -0
  68. package/src/graphql/client.ts +29 -2
  69. package/src/graphql/core.ts +53 -16
  70. package/src/graphql/generated/schema.graphql +11 -1
  71. package/src/graphql/generated/tada-env.ts +20 -0
  72. package/src/grpc/client.ts +28 -2
  73. package/src/grpc/core.ts +90 -65
  74. package/src/jsonRpc/client.ts +15 -0
  75. package/src/jsonRpc/core.ts +102 -24
  76. package/src/version.ts +1 -1
  77. package/docs/clients/json-rpc.md +0 -243
@@ -2,12 +2,14 @@ import { normalizeStructTag, normalizeSuiAddress } from "../utils/sui-types.mjs"
2
2
  import { TypeTagSerializer } from "../bcs/type-tag-serializer.mjs";
3
3
  import { bcs as suiBcs } from "../bcs/index.mjs";
4
4
  import { deriveDynamicFieldID } from "../utils/dynamic-fields.mjs";
5
+ import { raceSignal } from "../client/mvr.mjs";
5
6
  import { CoreClient } from "../client/core.mjs";
6
7
  import { TransactionDataBuilder } from "../transactions/TransactionData.mjs";
7
8
  import { formatMoveAbortMessage, parseTransactionBcs, parseTransactionEffectsBcs } from "../client/utils.mjs";
8
- import { ObjectError } from "../client/errors.mjs";
9
+ import { ObjectError, TransactionError } from "../client/errors.mjs";
9
10
  import { SUI_FRAMEWORK_ADDRESS, SUI_SYSTEM_ADDRESS } from "../utils/constants.mjs";
10
11
  import { resolveEventFilter, resolvePagination, resolveTransactionFilter, validateTransactionQuery } from "../client/query-filters.mjs";
12
+ import { JsonRpcError } from "./errors.mjs";
11
13
  import { computeGasBudget, coreClientResolveTransactionPlugin } from "../client/core-resolver.mjs";
12
14
  import { Transaction } from "../transactions/Transaction.mjs";
13
15
  import { fromBase58, fromBase64 } from "@mysten/bcs";
@@ -15,6 +17,40 @@ import { chunk } from "@mysten/utils";
15
17
 
16
18
  //#region src/jsonRpc/core.ts
17
19
  const MAX_GAS = 5e10;
20
+ function mapJsonRpcObjectError(response, requestedObjectId) {
21
+ switch (response.code) {
22
+ case "notExists": return new ObjectError(response.code, `Object ${response.object_id} does not exist`, {
23
+ cause: response,
24
+ reason: "notFound",
25
+ objectId: requestedObjectId ?? response.object_id
26
+ });
27
+ case "dynamicFieldNotFound": return new ObjectError(response.code, `Dynamic field not found for object ${response.parent_object_id}`, {
28
+ cause: response,
29
+ reason: "notFound",
30
+ objectId: requestedObjectId ?? response.parent_object_id
31
+ });
32
+ case "deleted": return new ObjectError(response.code, `Object ${response.object_id} has been deleted`, {
33
+ cause: response,
34
+ reason: "deleted",
35
+ objectId: requestedObjectId ?? response.object_id
36
+ });
37
+ case "displayError": return new ObjectError(response.code, `Display error: ${response.error}`, {
38
+ cause: response,
39
+ reason: "unknown",
40
+ objectId: requestedObjectId
41
+ });
42
+ case "unknown":
43
+ default: return new ObjectError(response.code, `Unknown error while loading object${requestedObjectId ? ` ${requestedObjectId}` : ""}`, {
44
+ cause: response,
45
+ reason: "unknown",
46
+ objectId: requestedObjectId
47
+ });
48
+ }
49
+ }
50
+ function isJsonRpcTransactionNotFound(error, digest) {
51
+ if (!(error instanceof JsonRpcError) || error.code !== -32602) return false;
52
+ return error.message === `Invalid Params: Transaction ${digest} not found` || error.message === `Could not find the referenced transaction [TransactionDigest(${digest})].`;
53
+ }
18
54
  function parseJsonRpcExecutionStatus(status, abortError) {
19
55
  if (status.status === "success") return {
20
56
  success: true,
@@ -105,7 +141,7 @@ var JSONRpcCoreClient = class extends CoreClient {
105
141
  },
106
142
  signal: options.signal
107
143
  });
108
- for (const [idx, object] of objects.entries()) if (object.error) results.push(ObjectError.fromResponse(object.error, batch[idx]));
144
+ for (const [idx, object] of objects.entries()) if (object.error) results.push(mapJsonRpcObjectError(object.error, batch[idx]));
109
145
  else results.push(parseObject(object.data, options.include));
110
146
  }
111
147
  return { objects: results };
@@ -143,7 +179,7 @@ var JSONRpcCoreClient = class extends CoreClient {
143
179
  });
144
180
  return {
145
181
  objects: objects.data.map((result) => {
146
- if (result.error) throw ObjectError.fromResponse(result.error);
182
+ if (result.error) throw mapJsonRpcObjectError(result.error);
147
183
  return parseObject(result.data, options.include);
148
184
  }),
149
185
  hasNextPage: objects.hasNextPage,
@@ -202,7 +238,10 @@ var JSONRpcCoreClient = class extends CoreClient {
202
238
  * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.
203
239
  */
204
240
  async getCoinMetadata(options) {
205
- const coinType = (await this.mvr.resolveType({ type: options.coinType })).type;
241
+ const coinType = (await this.mvr.resolveType({
242
+ type: options.coinType,
243
+ signal: options.signal
244
+ })).type;
206
245
  const result = await this.#jsonRpcClient.getCoinMetadata({
207
246
  coinType,
208
247
  signal: options.signal
@@ -245,18 +284,23 @@ var JSONRpcCoreClient = class extends CoreClient {
245
284
  * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.
246
285
  */
247
286
  async getTransaction(options) {
248
- return parseTransaction(await this.#jsonRpcClient.getTransactionBlock({
249
- digest: options.digest,
250
- options: {
251
- showRawInput: true,
252
- showEffects: true,
253
- showObjectChanges: options.include?.objectTypes ?? false,
254
- showRawEffects: options.include?.effects ?? false,
255
- showEvents: options.include?.events ?? false,
256
- showBalanceChanges: options.include?.balanceChanges ?? false
257
- },
258
- signal: options.signal
259
- }), options.include);
287
+ try {
288
+ return parseTransaction(await this.#jsonRpcClient.getTransactionBlock({
289
+ digest: options.digest,
290
+ options: {
291
+ showRawInput: true,
292
+ showEffects: true,
293
+ showObjectChanges: options.include?.objectTypes ?? false,
294
+ showRawEffects: options.include?.effects ?? false,
295
+ showEvents: options.include?.events ?? false,
296
+ showBalanceChanges: options.include?.balanceChanges ?? false
297
+ },
298
+ signal: options.signal
299
+ }), options.include);
300
+ } catch (error) {
301
+ if (isJsonRpcTransactionNotFound(error, options.digest)) throw new TransactionError("notFound", options.digest, { cause: error });
302
+ throw error;
303
+ }
260
304
  }
261
305
  /**
262
306
  * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`
@@ -290,7 +334,7 @@ var JSONRpcCoreClient = class extends CoreClient {
290
334
  const data = options.transaction instanceof Uint8Array ? null : TransactionDataBuilder.restore(options.transaction.getData());
291
335
  const transactionBytes = data ? data.build({ overrides: { gasData: {
292
336
  budget: data.gasData.budget ?? String(MAX_GAS),
293
- price: data.gasData.price ?? String(await this.#jsonRpcClient.getReferenceGasPrice()),
337
+ price: data.gasData.price ?? String(await this.#jsonRpcClient.getReferenceGasPrice({ signal: options.signal })),
294
338
  payment: data.gasData.payment ?? []
295
339
  } } }) : options.transaction;
296
340
  const sender = tx.getData().sender ?? normalizeSuiAddress("0x0");
@@ -441,7 +485,8 @@ var JSONRpcCoreClient = class extends CoreClient {
441
485
  const dynamicFields = await this.#jsonRpcClient.getDynamicFields({
442
486
  parentId: options.parentId,
443
487
  limit: options.limit,
444
- cursor: options.cursor
488
+ cursor: options.cursor,
489
+ signal: options.signal
445
490
  });
446
491
  return {
447
492
  dynamicFields: dynamicFields.data.map((dynamicField) => {
@@ -544,6 +589,7 @@ var JSONRpcCoreClient = class extends CoreClient {
544
589
  */
545
590
  async verifyZkLoginSignature(options) {
546
591
  const result = await this.#jsonRpcClient.verifyZkLoginSignature({
592
+ signal: options.signal,
547
593
  bytes: options.bytes,
548
594
  signature: options.signature,
549
595
  intentScope: options.intentScope,
@@ -580,11 +626,15 @@ var JSONRpcCoreClient = class extends CoreClient {
580
626
  * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.
581
627
  */
582
628
  async getMoveFunction(options) {
583
- const resolvedPackageId = (await this.mvr.resolvePackage({ package: options.packageId })).package;
629
+ const resolvedPackageId = (await this.mvr.resolvePackage({
630
+ package: options.packageId,
631
+ signal: options.signal
632
+ })).package;
584
633
  const result = await this.#jsonRpcClient.getNormalizedMoveFunction({
585
634
  package: resolvedPackageId,
586
635
  module: options.moduleName,
587
- function: options.name
636
+ function: options.name,
637
+ signal: options.signal
588
638
  });
589
639
  return { function: {
590
640
  packageId: normalizeSuiAddress(resolvedPackageId),
@@ -604,10 +654,11 @@ var JSONRpcCoreClient = class extends CoreClient {
604
654
  * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`
605
655
  * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.
606
656
  */
607
- async getChainIdentifier(_options) {
608
- return this.cache.read(["chainIdentifier"], async () => {
657
+ async getChainIdentifier(options) {
658
+ const cached = this.cache.read(["chainIdentifier"], async () => {
609
659
  return { chainIdentifier: (await this.#jsonRpcClient.getCheckpoint({ id: "0" })).digest };
610
660
  });
661
+ return raceSignal(Promise.resolve(cached), options?.signal);
611
662
  }
612
663
  };
613
664
  function serializeObjectToBcs(object) {
@@ -1 +1 @@
1
- {"version":3,"file":"core.mjs","names":["#jsonRpcClient","bcs"],"sources":["../../src/jsonRpc/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase58, fromBase64, type InferBcsInput } from '@mysten/bcs';\n\nimport { bcs, TypeTagSerializer } from '../bcs/index.js';\nimport type {\n\tDevInspectResults,\n\tDryRunTransactionBlockResponse,\n\tEventId,\n\tExecutionStatus as JsonRpcExecutionStatus,\n\tObjectOwner,\n\tSuiMoveAbilitySet,\n\tSuiMoveAbort,\n\tSuiMoveNormalizedType,\n\tSuiMoveVisibility,\n\tSuiObjectChange,\n\tSuiObjectData,\n\tSuiObjectDataFilter,\n\tSuiTransactionBlockResponse,\n\tTransactionEffects,\n} from './types/index.js';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { Transaction } from '../transactions/Transaction.js';\nimport { computeGasBudget, coreClientResolveTransactionPlugin } from '../client/core-resolver.js';\nimport { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport { normalizeSuiAddress, normalizeStructTag } from '../utils/sui-types.js';\nimport { deriveDynamicFieldID } from '../utils/dynamic-fields.js';\nimport { SUI_FRAMEWORK_ADDRESS, SUI_SYSTEM_ADDRESS } from '../utils/constants.js';\nimport { CoreClient } from '../client/core.js';\nimport type { SuiClientTypes } from '../client/types.js';\nimport { ObjectError } from '../client/errors.js';\nimport {\n\tformatMoveAbortMessage,\n\tparseTransactionBcs,\n\tparseTransactionEffectsBcs,\n} from '../client/index.js';\nimport type { SuiJsonRpcClient } from './client.js';\n\nconst MAX_GAS = 50_000_000_000;\n\nfunction parseJsonRpcExecutionStatus(\n\tstatus: JsonRpcExecutionStatus,\n\tabortError?: SuiMoveAbort | null,\n): SuiClientTypes.ExecutionStatus {\n\tif (status.status === 'success') {\n\t\treturn { success: true, error: null };\n\t}\n\n\tconst rawMessage = status.error ?? 'Unknown';\n\n\tif (abortError) {\n\t\tconst commandMatch = rawMessage.match(/in command (\\d+)/);\n\t\tconst command = commandMatch ? parseInt(commandMatch[1], 10) : undefined;\n\n\t\tconst instructionMatch = rawMessage.match(/instruction:\\s*(\\d+)/);\n\t\tconst instruction = instructionMatch ? parseInt(instructionMatch[1], 10) : undefined;\n\n\t\tconst moduleParts = abortError.module_id?.split('::') ?? [];\n\t\tconst pkg = moduleParts[0] ? normalizeSuiAddress(moduleParts[0]) : undefined;\n\t\tconst module = moduleParts[1];\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation:\n\t\t\t\t\t\tpkg && module\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tpackage: pkg,\n\t\t\t\t\t\t\t\t\tmodule,\n\t\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tcleverError: abortError.line != null ? { lineNumber: abortError.line } : undefined,\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: {\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tlocation: abortError.module_id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpackage: normalizeSuiAddress(abortError.module_id.split('::')[0] ?? ''),\n\t\t\t\t\t\t\t\tmodule: abortError.module_id.split('::')[1] ?? '',\n\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: {\n\t\t\t$kind: 'Unknown',\n\t\t\tmessage: rawMessage,\n\t\t\tUnknown: null,\n\t\t},\n\t};\n}\n\n/**\n * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n */\nexport class JSONRpcCoreClient extends CoreClient {\n\t#jsonRpcClient: SuiJsonRpcClient;\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tconstructor({\n\t\tjsonRpcClient,\n\t\tmvr,\n\t}: {\n\t\tjsonRpcClient: SuiJsonRpcClient;\n\t\tmvr?: SuiClientTypes.MvrOptions;\n\t}) {\n\t\tsuper({ network: jsonRpcClient.network, base: jsonRpcClient, mvr });\n\t\tthis.#jsonRpcClient = jsonRpcClient;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t) {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\t\tfor (const batch of batches) {\n\t\t\tconst objects = await this.#jsonRpcClient.multiGetObjects({\n\t\t\t\tids: batch,\n\t\t\t\toptions: {\n\t\t\t\t\tshowOwner: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\tfor (const [idx, object] of objects.entries()) {\n\t\t\t\tif (object.error) {\n\t\t\t\t\tresults.push(ObjectError.fromResponse(object.error, batch[idx]));\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(parseObject(object.data!, options.include));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t) {\n\t\tlet filter: SuiObjectDataFilter | null = null;\n\t\tif (options.type) {\n\t\t\tconst parts = options.type.split('::');\n\t\t\tif (parts.length === 1) {\n\t\t\t\tfilter = { Package: options.type };\n\t\t\t} else if (parts.length === 2) {\n\t\t\t\tfilter = { MoveModule: { package: parts[0], module: parts[1] } };\n\t\t\t} else {\n\t\t\t\tfilter = { StructType: options.type };\n\t\t\t}\n\t\t}\n\n\t\tconst objects = await this.#jsonRpcClient.getOwnedObjects({\n\t\t\towner: options.owner,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\toptions: {\n\t\t\t\tshowOwner: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t},\n\t\t\tfilter,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: objects.data.map((result) => {\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthrow ObjectError.fromResponse(result.error);\n\t\t\t\t}\n\n\t\t\t\treturn parseObject(result.data!, options.include);\n\t\t\t}),\n\t\t\thasNextPage: objects.hasNextPage,\n\t\t\tcursor: objects.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listCoins(options: SuiClientTypes.ListCoinsOptions) {\n\t\tconst coins = await this.#jsonRpcClient.getCoins({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: coins.data.map(\n\t\t\t\t(coin): SuiClientTypes.Coin => ({\n\t\t\t\t\tobjectId: coin.coinObjectId,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tbalance: coin.balance,\n\t\t\t\t\ttype: normalizeStructTag(`0x2::coin::Coin<${coin.coinType}>`),\n\t\t\t\t\towner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: options.owner,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\thasNextPage: coins.hasNextPage,\n\t\t\tcursor: coins.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getBalance(options: SuiClientTypes.GetBalanceOptions) {\n\t\tconst balance = await this.#jsonRpcClient.getBalance({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\tcoinBalance,\n\t\t\t\taddressBalance,\n\t\t\t},\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCoinMetadata(\n\t\toptions: SuiClientTypes.GetCoinMetadataOptions,\n\t): Promise<SuiClientTypes.GetCoinMetadataResponse> {\n\t\tconst coinType = (await this.mvr.resolveType({ type: options.coinType })).type;\n\n\t\tconst result = await this.#jsonRpcClient.getCoinMetadata({\n\t\t\tcoinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tif (!result) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: result.id ?? null,\n\t\t\t\tdecimals: result.decimals,\n\t\t\t\tname: result.name,\n\t\t\t\tsymbol: result.symbol,\n\t\t\t\tdescription: result.description,\n\t\t\t\ticonUrl: result.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listBalances(options: SuiClientTypes.ListBalancesOptions) {\n\t\tconst balances = await this.#jsonRpcClient.getAllBalances({\n\t\t\towner: options.owner,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tbalances: balances.map((balance) => {\n\t\t\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\t\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\t\t\t\treturn {\n\t\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\t\tcoinBalance,\n\t\t\t\t\taddressBalance,\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: false,\n\t\t\tcursor: null,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst transaction = await this.#jsonRpcClient.getTransactionBlock({\n\t\t\tdigest: options.digest,\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn parseTransaction(transaction, options.include);\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst transaction = await this.#jsonRpcClient.executeTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignature: options.signatures,\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn parseTransaction(transaction, options.include);\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.build({ client: this, onlyTransactionKind: true });\n\t\t}\n\n\t\tconst tx = Transaction.from(options.transaction);\n\n\t\tconst data =\n\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t? null\n\t\t\t\t: TransactionDataBuilder.restore(options.transaction.getData());\n\n\t\tconst transactionBytes = data\n\t\t\t? data.build({\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\tgasData: {\n\t\t\t\t\t\t\tbudget: data.gasData.budget ?? String(MAX_GAS),\n\t\t\t\t\t\t\tprice: data.gasData.price ?? String(await this.#jsonRpcClient.getReferenceGasPrice()),\n\t\t\t\t\t\t\tpayment: data.gasData.payment ?? [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t: (options.transaction as Uint8Array);\n\n\t\tconst sender = tx.getData().sender ?? normalizeSuiAddress('0x0');\n\t\tconst checksDisabled = options.checksEnabled === false;\n\n\t\tlet dryRunResult: DryRunTransactionBlockResponse | null = null;\n\t\ttry {\n\t\t\tdryRunResult = await this.#jsonRpcClient.dryRunTransactionBlock({\n\t\t\t\ttransactionBlock: transactionBytes,\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tif (!checksDisabled) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tlet devInspectResult: DevInspectResults | null = null;\n\t\tif (options.include?.commandResults || checksDisabled) {\n\t\t\ttry {\n\t\t\t\tdevInspectResult = await this.#jsonRpcClient.devInspectTransactionBlock({\n\t\t\t\t\tsender,\n\t\t\t\t\ttransactionBlock: tx,\n\t\t\t\t\tsignal: options.signal,\n\t\t\t\t});\n\t\t\t} catch {}\n\t\t}\n\n\t\tconst dryRunFailed = !dryRunResult || dryRunResult.effects.status.status !== 'success';\n\t\tconst effectsSource =\n\t\t\tchecksDisabled && dryRunFailed && devInspectResult\n\t\t\t\t? devInspectResult\n\t\t\t\t: (dryRunResult ?? devInspectResult);\n\t\tif (!effectsSource) {\n\t\t\tthrow new Error('simulateTransaction failed: no results from dryRun or devInspect');\n\t\t}\n\n\t\tconst { effects, objectTypes } = parseTransactionEffectsJson({\n\t\t\teffects: effectsSource.effects,\n\t\t\tobjectChanges: (!dryRunFailed ? dryRunResult?.objectChanges : null) ?? [],\n\t\t});\n\n\t\tlet parsedTransaction: SuiClientTypes.TransactionData | undefined;\n\t\tif (options.include?.transaction) {\n\t\t\tparsedTransaction = parseTransactionBcs(transactionBytes);\n\t\t\tif (data && !dryRunFailed && effects.gasUsed) {\n\t\t\t\tif (!data.gasData.budget) {\n\t\t\t\t\tparsedTransaction.gasData.budget = computeGasBudget(effects.gasUsed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst transactionData: SuiClientTypes.Transaction<Include> = {\n\t\t\tdigest: TransactionDataBuilder.getDigestFromBytes(transactionBytes),\n\t\t\tepoch: null,\n\t\t\tstatus: effects.status,\n\t\t\teffects: (options.include?.effects\n\t\t\t\t? effects\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\t\tobjectTypes: (options.include?.objectTypes\n\t\t\t\t? objectTypes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\t\tsignatures: [],\n\t\t\ttransaction: (parsedTransaction ??\n\t\t\t\tundefined) as SuiClientTypes.Transaction<Include>['transaction'],\n\t\t\tbcs: (options.include?.bcs\n\t\t\t\t? transactionBytes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['bcs'],\n\t\t\tbalanceChanges: (options.include?.balanceChanges && dryRunResult && !dryRunFailed\n\t\t\t\t? dryRunResult.balanceChanges.map((change) => ({\n\t\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\t\tamount: change.amount,\n\t\t\t\t\t}))\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\t\tevents: (options.include?.events\n\t\t\t\t? (effectsSource.events?.map((event) => ({\n\t\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\t\tsender: event.sender,\n\t\t\t\t\t\teventType: event.type,\n\t\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t\t})) ?? [])\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t\t};\n\n\t\tlet commandResults: SuiClientTypes.CommandResult[] | undefined;\n\t\tif (options.include?.commandResults && devInspectResult?.results) {\n\t\t\tcommandResults = devInspectResult.results.map((result) => ({\n\t\t\t\treturnValues: (result.returnValues ?? []).map(([bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t\tmutatedReferences: (result.mutableReferenceOutputs ?? []).map(([, bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t}));\n\t\t}\n\n\t\treturn effects.status.success\n\t\t\t? {\n\t\t\t\t\t$kind: 'Transaction',\n\t\t\t\t\tTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\t\tFailedTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getReferenceGasPrice(options?: SuiClientTypes.GetReferenceGasPriceOptions) {\n\t\tconst referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\treferenceGasPrice: String(referenceGasPrice),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst result = await this.#jsonRpcClient.getProtocolConfig({ signal: options?.signal });\n\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tfor (const [key, value] of Object.entries(result.attributes)) {\n\t\t\tif (value === null) {\n\t\t\t\tattributes[key] = null;\n\t\t\t} else if ('u16' in value) {\n\t\t\t\tattributes[key] = value.u16;\n\t\t\t} else if ('u32' in value) {\n\t\t\t\tattributes[key] = value.u32;\n\t\t\t} else if ('u64' in value) {\n\t\t\t\tattributes[key] = value.u64;\n\t\t\t} else if ('f64' in value) {\n\t\t\t\tattributes[key] = value.f64;\n\t\t\t} else if ('bool' in value) {\n\t\t\t\tattributes[key] = value.bool;\n\t\t\t} else {\n\t\t\t\tconst entries = Object.entries(value);\n\t\t\t\tattributes[key] = entries.length === 1 ? String(entries[0][1]) : JSON.stringify(value);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: result.protocolVersion,\n\t\t\t\tfeatureFlags: { ...result.featureFlags },\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst systemState = await this.#jsonRpcClient.getLatestSuiSystemState({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.systemStateVersion,\n\t\t\t\tepoch: systemState.epoch,\n\t\t\t\tprotocolVersion: systemState.protocolVersion,\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: systemState.epochStartTimestampMs,\n\t\t\t\tsafeMode: systemState.safeMode,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards,\n\t\t\t\tsafeModeComputationRewards: systemState.safeModeComputationRewards,\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates,\n\t\t\t\tsafeModeNonRefundableStorageFee: systemState.safeModeNonRefundableStorageFee,\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.epochDurationMs,\n\t\t\t\t\tstakeSubsidyStartEpoch: systemState.stakeSubsidyStartEpoch,\n\t\t\t\t\tmaxValidatorCount: systemState.maxValidatorCount,\n\t\t\t\t\tminValidatorJoiningStake: systemState.minValidatorJoiningStake,\n\t\t\t\t\tvalidatorLowStakeThreshold: systemState.validatorLowStakeThreshold,\n\t\t\t\t\tvalidatorLowStakeGracePeriod: systemState.validatorLowStakeGracePeriod,\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates: systemState.storageFundTotalObjectStorageRebates,\n\t\t\t\t\tnonRefundableBalance: systemState.storageFundNonRefundableBalance,\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidyBalance,\n\t\t\t\t\tdistributionCounter: systemState.stakeSubsidyDistributionCounter,\n\t\t\t\t\tcurrentDistributionAmount: systemState.stakeSubsidyCurrentDistributionAmount,\n\t\t\t\t\tstakeSubsidyPeriodLength: systemState.stakeSubsidyPeriodLength,\n\t\t\t\t\tstakeSubsidyDecreaseRate: systemState.stakeSubsidyDecreaseRate,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listDynamicFields(options: SuiClientTypes.ListDynamicFieldsOptions) {\n\t\tconst dynamicFields = await this.#jsonRpcClient.getDynamicFields({\n\t\t\tparentId: options.parentId,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t});\n\n\t\treturn {\n\t\t\tdynamicFields: dynamicFields.data.map((dynamicField): SuiClientTypes.DynamicFieldEntry => {\n\t\t\t\tconst isDynamicObject = dynamicField.type === 'DynamicObject';\n\t\t\t\tconst fullType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>, 0x2::object::ID>`\n\t\t\t\t\t: `0x2::dynamic_field::Field<${dynamicField.name.type}, ${dynamicField.objectType}>`;\n\n\t\t\t\tconst bcsBytes = fromBase64(dynamicField.bcsName);\n\t\t\t\tconst derivedNameType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>`\n\t\t\t\t\t: dynamicField.name.type;\n\t\t\t\treturn {\n\t\t\t\t\t$kind: isDynamicObject ? 'DynamicObject' : 'DynamicField',\n\t\t\t\t\tfieldId: deriveDynamicFieldID(options.parentId, derivedNameType, bcsBytes),\n\t\t\t\t\ttype: normalizeStructTag(fullType),\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: dynamicField.name.type,\n\t\t\t\t\t\tbcs: bcsBytes,\n\t\t\t\t\t},\n\t\t\t\t\tvalueType: dynamicField.objectType,\n\t\t\t\t\tchildId: isDynamicObject ? dynamicField.objectId : undefined,\n\t\t\t\t} as SuiClientTypes.DynamicFieldEntry;\n\t\t\t}),\n\t\t\thasNextPage: dynamicFields.hasNextPage,\n\t\t\tcursor: dynamicFields.nextCursor,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\n\t\t// Transaction cursors are digests, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst pagination = resolvePagination(options);\n\t\tconst { descending, after, before } = pagination;\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst page = await this.#jsonRpcClient.queryTransactionBlocks({\n\t\t\tfilter:\n\t\t\t\tfilter &&\n\t\t\t\t(filter.$kind === 'sender'\n\t\t\t\t\t? { FromAddress: filter.sender }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tMoveFunction: {\n\t\t\t\t\t\t\t\tpackage: filter.package,\n\t\t\t\t\t\t\t\tmodule: filter.module ?? null,\n\t\t\t\t\t\t\t\tfunction: filter.function ?? null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\tcursor: after ?? before,\n\t\t\tlimit: pagination.limit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\ttransactions: page.data.map((transaction) => parseTransaction(transaction, options.include)),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data[0]?.digest ?? null,\n\t\t\tendCursor: page.data.length\n\t\t\t\t? (page.nextCursor ?? page.data[page.data.length - 1].digest)\n\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveEventFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\t// Event cursors are event ids, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst { descending, after, before, limit } = resolvePagination(options);\n\t\tconst cursor = after ?? before;\n\n\t\tconst page = await this.#jsonRpcClient.queryEvents({\n\t\t\tquery: !filter\n\t\t\t\t? { All: [] }\n\t\t\t\t: filter.$kind === 'sender'\n\t\t\t\t\t? { Sender: filter.sender }\n\t\t\t\t\t: filter.$kind === 'emitModule'\n\t\t\t\t\t\t? { MoveModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t: filter.$kind === 'eventTypeModule'\n\t\t\t\t\t\t\t? { MoveEventModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t\t: { MoveEventType: filter.eventType },\n\t\t\tcursor: cursor ? parseEventCursor(cursor) : undefined,\n\t\t\tlimit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tevents: page.data.map(\n\t\t\t\t(event): SuiClientTypes.EventEntry => ({\n\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId),\n\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\tsender: normalizeSuiAddress(event.sender),\n\t\t\t\t\teventType: normalizeStructTag(event.type),\n\t\t\t\t\tbcs: event.bcsEncoding === 'base58' ? fromBase58(event.bcs) : fromBase64(event.bcs),\n\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t\t// queryEvents responses do not include checkpoint information\n\t\t\t\t\tcheckpoint: null,\n\t\t\t\t\ttransactionDigest: event.id.txDigest,\n\t\t\t\t\teventIndex: Number(event.id.eventSeq),\n\t\t\t\t}),\n\t\t\t),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data.length ? JSON.stringify(page.data[0].id) : null,\n\t\t\tendCursor:\n\t\t\t\tpage.data.length && page.nextCursor\n\t\t\t\t\t? JSON.stringify(page.nextCursor)\n\t\t\t\t\t: page.data.length\n\t\t\t\t\t\t? JSON.stringify(page.data[page.data.length - 1].id)\n\t\t\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync verifyZkLoginSignature(options: SuiClientTypes.VerifyZkLoginSignatureOptions) {\n\t\tconst result = await this.#jsonRpcClient.verifyZkLoginSignature({\n\t\t\tbytes: options.bytes,\n\t\t\tsignature: options.signature,\n\t\t\tintentScope: options.intentScope,\n\t\t\tauthor: options.address,\n\t\t});\n\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\terrors: result.errors,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name = (await this.#jsonRpcClient.resolveNameServiceNames(options)).data[0] ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync resolveNameServiceAddress(\n\t\toptions: SuiClientTypes.ResolveNameServiceAddressOptions,\n\t): Promise<SuiClientTypes.ResolveNameServiceAddressResponse> {\n\t\treturn {\n\t\t\taddress: await this.#jsonRpcClient.resolveNameServiceAddress(options),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tresolveTransactionPlugin() {\n\t\treturn coreClientResolveTransactionPlugin;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getMoveFunction(\n\t\toptions: SuiClientTypes.GetMoveFunctionOptions,\n\t): Promise<SuiClientTypes.GetMoveFunctionResponse> {\n\t\tconst resolvedPackageId = (await this.mvr.resolvePackage({ package: options.packageId }))\n\t\t\t.package;\n\t\tconst result = await this.#jsonRpcClient.getNormalizedMoveFunction({\n\t\t\tpackage: resolvedPackageId,\n\t\t\tmodule: options.moduleName,\n\t\t\tfunction: options.name,\n\t\t});\n\n\t\treturn {\n\t\t\tfunction: {\n\t\t\t\tpackageId: normalizeSuiAddress(resolvedPackageId),\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t\tvisibility: parseVisibility(result.visibility),\n\t\t\t\tisEntry: result.isEntry,\n\t\t\t\ttypeParameters: result.typeParameters.map((abilities) => ({\n\t\t\t\t\tisPhantom: false,\n\t\t\t\t\tconstraints: parseAbilities(abilities),\n\t\t\t\t})),\n\t\t\t\tparameters: result.parameters.map((param) => parseNormalizedSuiMoveType(param)),\n\t\t\t\treturns: result.return.map((ret) => parseNormalizedSuiMoveType(ret)),\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getChainIdentifier(\n\t\t_options?: SuiClientTypes.GetChainIdentifierOptions,\n\t): Promise<SuiClientTypes.GetChainIdentifierResponse> {\n\t\treturn this.cache.read(['chainIdentifier'], async () => {\n\t\t\tconst checkpoint = await this.#jsonRpcClient.getCheckpoint({ id: '0' });\n\t\t\treturn {\n\t\t\t\tchainIdentifier: checkpoint.digest,\n\t\t\t};\n\t\t});\n\t}\n}\n\nfunction serializeObjectToBcs(object: SuiObjectData): Uint8Array | undefined {\n\tif (object.bcs?.dataType !== 'moveObject') {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\t// Normalize the type string to ensure consistent address formatting (0x2 vs 0x00...02)\n\t\tconst typeStr = normalizeStructTag(object.bcs.type);\n\t\tlet moveObjectType: InferBcsInput<typeof bcs.MoveObjectType>;\n\n\t\t// Normalize constants for comparison\n\t\tconst normalizedSuiFramework = normalizeSuiAddress(SUI_FRAMEWORK_ADDRESS);\n\t\tconst gasCoinType = normalizeStructTag(\n\t\t\t`${SUI_FRAMEWORK_ADDRESS}::coin::Coin<${SUI_FRAMEWORK_ADDRESS}::sui::SUI>`,\n\t\t);\n\t\tconst stakedSuiType = normalizeStructTag(`${SUI_SYSTEM_ADDRESS}::staking_pool::StakedSui`);\n\t\tconst coinPrefix = `${normalizedSuiFramework}::coin::Coin<`;\n\n\t\tif (typeStr === gasCoinType) {\n\t\t\tmoveObjectType = { GasCoin: null };\n\t\t} else if (typeStr === stakedSuiType) {\n\t\t\tmoveObjectType = { StakedSui: null };\n\t\t} else if (typeStr.startsWith(coinPrefix)) {\n\t\t\tconst innerTypeMatch = typeStr.match(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t`${normalizedSuiFramework.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}::coin::Coin<(.+)>$`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (innerTypeMatch) {\n\t\t\t\tconst innerTypeTag = TypeTagSerializer.parseFromStr(innerTypeMatch[1], true);\n\t\t\t\tmoveObjectType = { Coin: innerTypeTag };\n\t\t\t} else {\n\t\t\t\tthrow new Error('Failed to parse Coin type');\n\t\t\t}\n\t\t} else {\n\t\t\tconst typeTag = TypeTagSerializer.parseFromStr(typeStr, true);\n\t\t\tif (typeof typeTag !== 'object' || !('struct' in typeTag)) {\n\t\t\t\tthrow new Error('Expected struct type tag');\n\t\t\t}\n\t\t\tmoveObjectType = { Other: typeTag.struct };\n\t\t}\n\n\t\tconst contents = fromBase64(object.bcs.bcsBytes);\n\t\tconst owner = convertOwnerToBcs(object.owner!);\n\n\t\treturn bcs.Object.serialize({\n\t\t\tdata: {\n\t\t\t\tMove: {\n\t\t\t\t\ttype: moveObjectType,\n\t\t\t\t\thasPublicTransfer: object.bcs.hasPublicTransfer,\n\t\t\t\t\tversion: object.bcs.version,\n\t\t\t\t\tcontents,\n\t\t\t\t},\n\t\t\t},\n\t\t\towner,\n\t\t\tpreviousTransaction: object.previousTransaction!,\n\t\t\tstorageRebate: object.storageRebate!,\n\t\t}).toBytes();\n\t} catch {\n\t\t// If serialization fails, return undefined\n\t\treturn undefined;\n\t}\n}\n\nfunction parseObject<Include extends SuiClientTypes.ObjectInclude = {}>(\n\tobject: SuiObjectData,\n\tinclude?: Include,\n): SuiClientTypes.Object<Include> {\n\tconst bcsContent =\n\t\tobject.bcs?.dataType === 'moveObject' ? fromBase64(object.bcs.bcsBytes) : undefined;\n\n\tconst objectBcs = include?.objectBcs ? serializeObjectToBcs(object) : undefined;\n\n\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\tconst type =\n\t\tobject.type && object.type.includes('::')\n\t\t\t? normalizeStructTag(object.type)\n\t\t\t: (object.type ?? '');\n\n\tconst jsonContent =\n\t\tinclude?.json && object.content?.dataType === 'moveObject'\n\t\t\t? (object.content.fields as Record<string, unknown>)\n\t\t\t: include?.json\n\t\t\t\t? null\n\t\t\t\t: undefined;\n\n\tconst displayData = include?.display\n\t\t? object.display?.data != null\n\t\t\t? { output: object.display.data as Record<string, unknown>, errors: null }\n\t\t\t: null\n\t\t: undefined;\n\n\treturn {\n\t\tobjectId: object.objectId,\n\t\tversion: object.version,\n\t\tdigest: object.digest,\n\t\ttype,\n\t\tcontent: (include?.content\n\t\t\t? bcsContent\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['content'],\n\t\towner: parseOwner(object.owner!),\n\t\tpreviousTransaction: (include?.previousTransaction\n\t\t\t? (object.previousTransaction ?? undefined)\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t};\n}\n\nfunction parseOwner(owner: ObjectOwner): SuiClientTypes.ObjectOwner {\n\tif (owner === 'Immutable') {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'AddressOwner',\n\t\t\tAddressOwner: owner.AddressOwner,\n\t\t};\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.ObjectOwner,\n\t\t};\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.Shared.initial_shared_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction convertOwnerToBcs(owner: ObjectOwner) {\n\tif (owner === 'Immutable') {\n\t\treturn { Immutable: null };\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn { AddressOwner: owner.AddressOwner };\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn { ObjectOwner: owner.ObjectOwner };\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\tShared: { initialSharedVersion: owner.Shared.initial_shared_version },\n\t\t};\n\t}\n\n\tif (typeof owner === 'object' && owner !== null && 'ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseOwnerAddress(owner: ObjectOwner): string | null {\n\tif (owner === 'Immutable') {\n\t\treturn null;\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn owner.ConsensusAddressOwner.owner;\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn owner.AddressOwner;\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn owner.ObjectOwner;\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn null;\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseEventCursor(cursor: string): EventId {\n\ttry {\n\t\tconst parsed = JSON.parse(cursor) as EventId;\n\t\tif (typeof parsed?.txDigest !== 'string' || typeof parsed?.eventSeq !== 'string') {\n\t\t\tthrow new Error('malformed event cursor');\n\t\t}\n\t\treturn parsed;\n\t} catch {\n\t\tthrow new Error(`Invalid event cursor: ${cursor}`);\n\t}\n}\n\nfunction parseTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\ttransaction: SuiTransactionBlockResponse,\n\tinclude?: Include,\n): SuiClientTypes.TransactionResult<Include> {\n\tconst objectTypes: Record<string, string> = {};\n\n\tif (include?.objectTypes) {\n\t\ttransaction.objectChanges?.forEach((change) => {\n\t\t\tif (change.type !== 'published') {\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tlet signatures: string[] = [];\n\tlet bcsBytes: Uint8Array | undefined;\n\n\tif (transaction.rawTransaction) {\n\t\tconst parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction))[0];\n\t\t// The genesis transaction's raw data carries a placeholder signature that\n\t\t// other transports do not report\n\t\tsignatures =\n\t\t\tparsedTx.intentMessage.value.V1.kind.$kind === 'Genesis' ? [] : parsedTx.txSignatures;\n\n\t\tif (include?.transaction || include?.bcs) {\n\t\t\tconst bytes = bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes();\n\n\t\t\tif (include?.bcs) {\n\t\t\t\tbcsBytes = bytes;\n\t\t\t}\n\n\t\t\tif (include?.transaction) {\n\t\t\t\tconst data = TransactionDataBuilder.restore({\n\t\t\t\t\tversion: 2,\n\t\t\t\t\tsender: parsedTx.intentMessage.value.V1.sender,\n\t\t\t\t\texpiration: parsedTx.intentMessage.value.V1.expiration,\n\t\t\t\t\tgasData: parsedTx.intentMessage.value.V1.gasData,\n\t\t\t\t\tinputs: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.inputs,\n\t\t\t\t\tcommands: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.commands,\n\t\t\t\t});\n\t\t\t\ttransactionData = { ...data };\n\t\t\t}\n\t\t}\n\t}\n\n\t// Get status from JSON-RPC response\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status\n\t\t? parseJsonRpcExecutionStatus(transaction.effects.status, transaction.effects.abortError)\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: {\n\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\tmessage: 'Unknown',\n\t\t\t\t\tUnknown: null,\n\t\t\t\t},\n\t\t\t};\n\n\tconst effectsBytes = transaction.rawEffects ? new Uint8Array(transaction.rawEffects) : null;\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest,\n\t\tepoch: transaction.effects?.executedEpoch ?? null,\n\t\tstatus,\n\t\teffects: (include?.effects && effectsBytes\n\t\t\t? parseTransactionEffectsBcs(effectsBytes)\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\tobjectTypes: (include?.objectTypes\n\t\t\t? objectTypes\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\ttransaction: transactionData as SuiClientTypes.Transaction<Include>['transaction'],\n\t\tbcs: bcsBytes as SuiClientTypes.Transaction<Include>['bcs'],\n\t\tsignatures,\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\tamount: change.amount,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\tevents: (include?.events\n\t\t\t? (transaction.events?.map((event) => ({\n\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\tsender: event.sender,\n\t\t\t\t\teventType: event.type,\n\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t};\n\n\treturn status.success\n\t\t? {\n\t\t\t\t$kind: 'Transaction',\n\t\t\t\tTransaction: result,\n\t\t\t}\n\t\t: {\n\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\tFailedTransaction: result,\n\t\t\t};\n}\n\nexport function parseTransactionEffectsJson({\n\tbytes,\n\teffects,\n\tobjectChanges,\n}: {\n\tbytes?: Uint8Array;\n\teffects: TransactionEffects;\n\tobjectChanges: SuiObjectChange[] | null;\n}): {\n\teffects: SuiClientTypes.TransactionEffects;\n\tobjectTypes: Record<string, string>;\n} {\n\tconst changedObjects: SuiClientTypes.ChangedObject[] = [];\n\tconst unchangedConsensusObjects: SuiClientTypes.UnchangedConsensusObject[] = [];\n\tconst objectTypes: Record<string, string> = {};\n\n\tobjectChanges?.forEach((change) => {\n\t\tswitch (change.type) {\n\t\t\tcase 'published':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.packageId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'PackageWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'transferred':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: change.digest,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.recipient),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'mutated':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.previousVersion,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: parseOwner(change.owner),\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'deleted':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'DoesNotExist',\n\t\t\t\t\toutputVersion: null,\n\t\t\t\t\toutputDigest: null,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Deleted',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'wrapped':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest:\n\t\t\t\t\t\teffects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\toutputOwner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'created':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\t// When the transaction has no gas object (system transactions, or gas paid\n\t// from an address balance), the RPC substitutes a placeholder ref with the\n\t// 0x0 object id rather than omitting the field.\n\tconst hasGasObject =\n\t\tnormalizeSuiAddress(effects.gasObject.reference.objectId) !== normalizeSuiAddress('0x0');\n\n\tlet lamportVersion: string | null = null;\n\tif (hasGasObject) {\n\t\tlamportVersion = effects.gasObject.reference.version;\n\t} else {\n\t\t// Written objects are all assigned the lamport version, so recover it\n\t\t// from the changed objects when the gas object can't provide it.\n\t\tfor (const change of changedObjects) {\n\t\t\tif (\n\t\t\t\tchange.outputVersion &&\n\t\t\t\t(lamportVersion === null || BigInt(change.outputVersion) > BigInt(lamportVersion))\n\t\t\t) {\n\t\t\t\tlamportVersion = change.outputVersion;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tobjectTypes,\n\t\teffects: {\n\t\t\tbcs: bytes ?? null,\n\t\t\tversion: 2,\n\t\t\tstatus: parseJsonRpcExecutionStatus(effects.status, effects.abortError),\n\t\t\tgasUsed: effects.gasUsed,\n\t\t\ttransactionDigest: effects.transactionDigest,\n\t\t\tgasObject: hasGasObject\n\t\t\t\t? {\n\t\t\t\t\t\tobjectId: effects.gasObject.reference.objectId,\n\t\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\t\tinputVersion: null,\n\t\t\t\t\t\tinputDigest: null,\n\t\t\t\t\t\tinputOwner: null,\n\t\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\t\toutputVersion: effects.gasObject.reference.version,\n\t\t\t\t\t\toutputDigest: effects.gasObject.reference.digest,\n\t\t\t\t\t\toutputOwner: parseOwner(effects.gasObject.owner),\n\t\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\teventsDigest: effects.eventsDigest ?? null,\n\t\t\tdependencies: effects.dependencies ?? [],\n\t\t\tlamportVersion,\n\t\t\tchangedObjects,\n\t\t\tunchangedConsensusObjects,\n\t\t\tauxiliaryDataDigest: null,\n\t\t},\n\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: SuiMoveNormalizedType): SuiClientTypes.OpenSignature {\n\tif (typeof type !== 'string') {\n\t\tif ('Reference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'immutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.Reference),\n\t\t\t};\n\t\t}\n\n\t\tif ('MutableReference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'mutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.MutableReference),\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\treference: null,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(\n\ttype: SuiMoveNormalizedType,\n): SuiClientTypes.OpenSignatureBody {\n\tswitch (type) {\n\t\tcase 'Address':\n\t\t\treturn { $kind: 'address' };\n\t\tcase 'Bool':\n\t\t\treturn { $kind: 'bool' };\n\t\tcase 'U8':\n\t\t\treturn { $kind: 'u8' };\n\t\tcase 'U16':\n\t\t\treturn { $kind: 'u16' };\n\t\tcase 'U32':\n\t\t\treturn { $kind: 'u32' };\n\t\tcase 'U64':\n\t\t\treturn { $kind: 'u64' };\n\t\tcase 'U128':\n\t\t\treturn { $kind: 'u128' };\n\t\tcase 'U256':\n\t\t\treturn { $kind: 'u256' };\n\t}\n\n\tif (typeof type === 'string') {\n\t\tthrow new Error(`Unknown type: ${type}`);\n\t}\n\n\tif ('Vector' in type) {\n\t\treturn {\n\t\t\t$kind: 'vector',\n\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.Vector),\n\t\t};\n\t}\n\n\tif ('Struct' in type) {\n\t\treturn {\n\t\t\t$kind: 'datatype',\n\t\t\tdatatype: {\n\t\t\t\ttypeName: `${normalizeSuiAddress(type.Struct.address)}::${type.Struct.module}::${type.Struct.name}`,\n\t\t\t\ttypeParameters: type.Struct.typeArguments.map((t) => parseNormalizedSuiMoveTypeBody(t)),\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('TypeParameter' in type) {\n\t\treturn {\n\t\t\t$kind: 'typeParameter',\n\t\t\tindex: type.TypeParameter,\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown type: ${JSON.stringify(type)}`);\n}\n\nfunction parseAbilities(abilitySet: SuiMoveAbilitySet): SuiClientTypes.Ability[] {\n\treturn abilitySet.abilities.map((ability) => {\n\t\tswitch (ability) {\n\t\t\tcase 'Copy':\n\t\t\t\treturn 'copy';\n\t\t\tcase 'Drop':\n\t\t\t\treturn 'drop';\n\t\t\tcase 'Store':\n\t\t\t\treturn 'store';\n\t\t\tcase 'Key':\n\t\t\t\treturn 'key';\n\t\t\tdefault:\n\t\t\t\treturn 'unknown';\n\t\t}\n\t});\n}\n\nfunction parseVisibility(visibility: SuiMoveVisibility): SuiClientTypes.Visibility {\n\tswitch (visibility) {\n\t\tcase 'Public':\n\t\t\treturn 'public';\n\t\tcase 'Private':\n\t\t\treturn 'private';\n\t\tcase 'Friend':\n\t\t\treturn 'friend';\n\t\tdefault:\n\t\t\treturn 'unknown';\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core.mjs","names":["#jsonRpcClient","bcs"],"sources":["../../src/jsonRpc/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase58, fromBase64, type InferBcsInput } from '@mysten/bcs';\n\nimport { bcs, TypeTagSerializer } from '../bcs/index.js';\nimport type {\n\tDevInspectResults,\n\tDryRunTransactionBlockResponse,\n\tEventId,\n\tExecutionStatus as JsonRpcExecutionStatus,\n\tObjectOwner,\n\tObjectResponseError,\n\tSuiMoveAbilitySet,\n\tSuiMoveAbort,\n\tSuiMoveNormalizedType,\n\tSuiMoveVisibility,\n\tSuiObjectChange,\n\tSuiObjectData,\n\tSuiObjectDataFilter,\n\tSuiTransactionBlockResponse,\n\tTransactionEffects,\n} from './types/index.js';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { raceSignal } from '../client/mvr.js';\nimport { Transaction } from '../transactions/Transaction.js';\nimport { computeGasBudget, coreClientResolveTransactionPlugin } from '../client/core-resolver.js';\nimport { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport { normalizeSuiAddress, normalizeStructTag } from '../utils/sui-types.js';\nimport { deriveDynamicFieldID } from '../utils/dynamic-fields.js';\nimport { SUI_FRAMEWORK_ADDRESS, SUI_SYSTEM_ADDRESS } from '../utils/constants.js';\nimport { CoreClient } from '../client/core.js';\nimport type { SuiClientTypes } from '../client/types.js';\nimport { ObjectError, TransactionError } from '../client/errors.js';\nimport {\n\tformatMoveAbortMessage,\n\tparseTransactionBcs,\n\tparseTransactionEffectsBcs,\n} from '../client/index.js';\nimport type { SuiJsonRpcClient } from './client.js';\nimport { JsonRpcError } from './errors.js';\n\nconst MAX_GAS = 50_000_000_000;\n\nfunction mapJsonRpcObjectError(\n\tresponse: ObjectResponseError,\n\trequestedObjectId?: string,\n): ObjectError {\n\tswitch (response.code) {\n\t\tcase 'notExists':\n\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} does not exist`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'notFound',\n\t\t\t\tobjectId: requestedObjectId ?? response.object_id,\n\t\t\t});\n\t\tcase 'dynamicFieldNotFound':\n\t\t\treturn new ObjectError(\n\t\t\t\tresponse.code,\n\t\t\t\t`Dynamic field not found for object ${response.parent_object_id}`,\n\t\t\t\t{\n\t\t\t\t\tcause: response,\n\t\t\t\t\treason: 'notFound',\n\t\t\t\t\tobjectId: requestedObjectId ?? response.parent_object_id,\n\t\t\t\t},\n\t\t\t);\n\t\tcase 'deleted':\n\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} has been deleted`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'deleted',\n\t\t\t\tobjectId: requestedObjectId ?? response.object_id,\n\t\t\t});\n\t\tcase 'displayError':\n\t\t\treturn new ObjectError(response.code, `Display error: ${response.error}`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'unknown',\n\t\t\t\tobjectId: requestedObjectId,\n\t\t\t});\n\t\tcase 'unknown':\n\t\tdefault:\n\t\t\treturn new ObjectError(\n\t\t\t\tresponse.code,\n\t\t\t\t`Unknown error while loading object${requestedObjectId ? ` ${requestedObjectId}` : ''}`,\n\t\t\t\t{\n\t\t\t\t\tcause: response,\n\t\t\t\t\treason: 'unknown',\n\t\t\t\t\tobjectId: requestedObjectId,\n\t\t\t\t},\n\t\t\t);\n\t}\n}\n\nfunction isJsonRpcTransactionNotFound(error: unknown, digest: string): boolean {\n\tif (!(error instanceof JsonRpcError) || error.code !== -32602) return false;\n\n\treturn (\n\t\terror.message === `Invalid Params: Transaction ${digest} not found` ||\n\t\terror.message === `Could not find the referenced transaction [TransactionDigest(${digest})].`\n\t);\n}\n\nfunction parseJsonRpcExecutionStatus(\n\tstatus: JsonRpcExecutionStatus,\n\tabortError?: SuiMoveAbort | null,\n): SuiClientTypes.ExecutionStatus {\n\tif (status.status === 'success') {\n\t\treturn { success: true, error: null };\n\t}\n\n\tconst rawMessage = status.error ?? 'Unknown';\n\n\tif (abortError) {\n\t\tconst commandMatch = rawMessage.match(/in command (\\d+)/);\n\t\tconst command = commandMatch ? parseInt(commandMatch[1], 10) : undefined;\n\n\t\tconst instructionMatch = rawMessage.match(/instruction:\\s*(\\d+)/);\n\t\tconst instruction = instructionMatch ? parseInt(instructionMatch[1], 10) : undefined;\n\n\t\tconst moduleParts = abortError.module_id?.split('::') ?? [];\n\t\tconst pkg = moduleParts[0] ? normalizeSuiAddress(moduleParts[0]) : undefined;\n\t\tconst module = moduleParts[1];\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation:\n\t\t\t\t\t\tpkg && module\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tpackage: pkg,\n\t\t\t\t\t\t\t\t\tmodule,\n\t\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tcleverError: abortError.line != null ? { lineNumber: abortError.line } : undefined,\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: {\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tlocation: abortError.module_id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpackage: normalizeSuiAddress(abortError.module_id.split('::')[0] ?? ''),\n\t\t\t\t\t\t\t\tmodule: abortError.module_id.split('::')[1] ?? '',\n\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: {\n\t\t\t$kind: 'Unknown',\n\t\t\tmessage: rawMessage,\n\t\t\tUnknown: null,\n\t\t},\n\t};\n}\n\n/**\n * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n */\nexport class JSONRpcCoreClient extends CoreClient {\n\t#jsonRpcClient: SuiJsonRpcClient;\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tconstructor({\n\t\tjsonRpcClient,\n\t\tmvr,\n\t}: {\n\t\tjsonRpcClient: SuiJsonRpcClient;\n\t\tmvr?: SuiClientTypes.MvrOptions;\n\t}) {\n\t\tsuper({ network: jsonRpcClient.network, base: jsonRpcClient, mvr });\n\t\tthis.#jsonRpcClient = jsonRpcClient;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t) {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\t\tfor (const batch of batches) {\n\t\t\tconst objects = await this.#jsonRpcClient.multiGetObjects({\n\t\t\t\tids: batch,\n\t\t\t\toptions: {\n\t\t\t\t\tshowOwner: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\tfor (const [idx, object] of objects.entries()) {\n\t\t\t\tif (object.error) {\n\t\t\t\t\tresults.push(mapJsonRpcObjectError(object.error, batch[idx]));\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(parseObject(object.data!, options.include));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t) {\n\t\tlet filter: SuiObjectDataFilter | null = null;\n\t\tif (options.type) {\n\t\t\tconst parts = options.type.split('::');\n\t\t\tif (parts.length === 1) {\n\t\t\t\tfilter = { Package: options.type };\n\t\t\t} else if (parts.length === 2) {\n\t\t\t\tfilter = { MoveModule: { package: parts[0], module: parts[1] } };\n\t\t\t} else {\n\t\t\t\tfilter = { StructType: options.type };\n\t\t\t}\n\t\t}\n\n\t\tconst objects = await this.#jsonRpcClient.getOwnedObjects({\n\t\t\towner: options.owner,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\toptions: {\n\t\t\t\tshowOwner: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t},\n\t\t\tfilter,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: objects.data.map((result) => {\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthrow mapJsonRpcObjectError(result.error);\n\t\t\t\t}\n\n\t\t\t\treturn parseObject(result.data!, options.include);\n\t\t\t}),\n\t\t\thasNextPage: objects.hasNextPage,\n\t\t\tcursor: objects.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listCoins(options: SuiClientTypes.ListCoinsOptions) {\n\t\tconst coins = await this.#jsonRpcClient.getCoins({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: coins.data.map(\n\t\t\t\t(coin): SuiClientTypes.Coin => ({\n\t\t\t\t\tobjectId: coin.coinObjectId,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tbalance: coin.balance,\n\t\t\t\t\ttype: normalizeStructTag(`0x2::coin::Coin<${coin.coinType}>`),\n\t\t\t\t\towner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: options.owner,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\thasNextPage: coins.hasNextPage,\n\t\t\tcursor: coins.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getBalance(options: SuiClientTypes.GetBalanceOptions) {\n\t\tconst balance = await this.#jsonRpcClient.getBalance({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\tcoinBalance,\n\t\t\t\taddressBalance,\n\t\t\t},\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCoinMetadata(\n\t\toptions: SuiClientTypes.GetCoinMetadataOptions,\n\t): Promise<SuiClientTypes.GetCoinMetadataResponse> {\n\t\tconst coinType = (\n\t\t\tawait this.mvr.resolveType({ type: options.coinType, signal: options.signal })\n\t\t).type;\n\n\t\tconst result = await this.#jsonRpcClient.getCoinMetadata({\n\t\t\tcoinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tif (!result) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: result.id ?? null,\n\t\t\t\tdecimals: result.decimals,\n\t\t\t\tname: result.name,\n\t\t\t\tsymbol: result.symbol,\n\t\t\t\tdescription: result.description,\n\t\t\t\ticonUrl: result.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listBalances(options: SuiClientTypes.ListBalancesOptions) {\n\t\tconst balances = await this.#jsonRpcClient.getAllBalances({\n\t\t\towner: options.owner,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tbalances: balances.map((balance) => {\n\t\t\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\t\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\t\t\t\treturn {\n\t\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\t\tcoinBalance,\n\t\t\t\t\taddressBalance,\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: false,\n\t\t\tcursor: null,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\ttry {\n\t\t\tconst transaction = await this.#jsonRpcClient.getTransactionBlock({\n\t\t\t\tdigest: options.digest,\n\t\t\t\toptions: {\n\t\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\t\tshowRawInput: true,\n\t\t\t\t\t// showEffects is always needed to get status\n\t\t\t\t\tshowEffects: true,\n\t\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\treturn parseTransaction(transaction, options.include);\n\t\t} catch (error) {\n\t\t\tif (isJsonRpcTransactionNotFound(error, options.digest)) {\n\t\t\t\tthrow new TransactionError('notFound', options.digest, { cause: error });\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst transaction = await this.#jsonRpcClient.executeTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignature: options.signatures,\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn parseTransaction(transaction, options.include);\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.build({ client: this, onlyTransactionKind: true });\n\t\t}\n\n\t\tconst tx = Transaction.from(options.transaction);\n\n\t\tconst data =\n\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t? null\n\t\t\t\t: TransactionDataBuilder.restore(options.transaction.getData());\n\n\t\tconst transactionBytes = data\n\t\t\t? data.build({\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\tgasData: {\n\t\t\t\t\t\t\tbudget: data.gasData.budget ?? String(MAX_GAS),\n\t\t\t\t\t\t\tprice:\n\t\t\t\t\t\t\t\tdata.gasData.price ??\n\t\t\t\t\t\t\t\tString(await this.#jsonRpcClient.getReferenceGasPrice({ signal: options.signal })),\n\t\t\t\t\t\t\tpayment: data.gasData.payment ?? [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t: (options.transaction as Uint8Array);\n\n\t\tconst sender = tx.getData().sender ?? normalizeSuiAddress('0x0');\n\t\tconst checksDisabled = options.checksEnabled === false;\n\n\t\tlet dryRunResult: DryRunTransactionBlockResponse | null = null;\n\t\ttry {\n\t\t\tdryRunResult = await this.#jsonRpcClient.dryRunTransactionBlock({\n\t\t\t\ttransactionBlock: transactionBytes,\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tif (!checksDisabled) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tlet devInspectResult: DevInspectResults | null = null;\n\t\tif (options.include?.commandResults || checksDisabled) {\n\t\t\ttry {\n\t\t\t\tdevInspectResult = await this.#jsonRpcClient.devInspectTransactionBlock({\n\t\t\t\t\tsender,\n\t\t\t\t\ttransactionBlock: tx,\n\t\t\t\t\tsignal: options.signal,\n\t\t\t\t});\n\t\t\t} catch {}\n\t\t}\n\n\t\tconst dryRunFailed = !dryRunResult || dryRunResult.effects.status.status !== 'success';\n\t\tconst effectsSource =\n\t\t\tchecksDisabled && dryRunFailed && devInspectResult\n\t\t\t\t? devInspectResult\n\t\t\t\t: (dryRunResult ?? devInspectResult);\n\t\tif (!effectsSource) {\n\t\t\tthrow new Error('simulateTransaction failed: no results from dryRun or devInspect');\n\t\t}\n\n\t\tconst { effects, objectTypes } = parseTransactionEffectsJson({\n\t\t\teffects: effectsSource.effects,\n\t\t\tobjectChanges: (!dryRunFailed ? dryRunResult?.objectChanges : null) ?? [],\n\t\t});\n\n\t\tlet parsedTransaction: SuiClientTypes.TransactionData | undefined;\n\t\tif (options.include?.transaction) {\n\t\t\tparsedTransaction = parseTransactionBcs(transactionBytes);\n\t\t\tif (data && !dryRunFailed && effects.gasUsed) {\n\t\t\t\tif (!data.gasData.budget) {\n\t\t\t\t\tparsedTransaction.gasData.budget = computeGasBudget(effects.gasUsed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst transactionData: SuiClientTypes.Transaction<Include> = {\n\t\t\tdigest: TransactionDataBuilder.getDigestFromBytes(transactionBytes),\n\t\t\tepoch: null,\n\t\t\tstatus: effects.status,\n\t\t\teffects: (options.include?.effects\n\t\t\t\t? effects\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\t\tobjectTypes: (options.include?.objectTypes\n\t\t\t\t? objectTypes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\t\tsignatures: [],\n\t\t\ttransaction: (parsedTransaction ??\n\t\t\t\tundefined) as SuiClientTypes.Transaction<Include>['transaction'],\n\t\t\tbcs: (options.include?.bcs\n\t\t\t\t? transactionBytes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['bcs'],\n\t\t\tbalanceChanges: (options.include?.balanceChanges && dryRunResult && !dryRunFailed\n\t\t\t\t? dryRunResult.balanceChanges.map((change) => ({\n\t\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\t\tamount: change.amount,\n\t\t\t\t\t}))\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\t\tevents: (options.include?.events\n\t\t\t\t? (effectsSource.events?.map((event) => ({\n\t\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\t\tsender: event.sender,\n\t\t\t\t\t\teventType: event.type,\n\t\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t\t})) ?? [])\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t\t};\n\n\t\tlet commandResults: SuiClientTypes.CommandResult[] | undefined;\n\t\tif (options.include?.commandResults && devInspectResult?.results) {\n\t\t\tcommandResults = devInspectResult.results.map((result) => ({\n\t\t\t\treturnValues: (result.returnValues ?? []).map(([bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t\tmutatedReferences: (result.mutableReferenceOutputs ?? []).map(([, bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t}));\n\t\t}\n\n\t\treturn effects.status.success\n\t\t\t? {\n\t\t\t\t\t$kind: 'Transaction',\n\t\t\t\t\tTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\t\tFailedTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getReferenceGasPrice(options?: SuiClientTypes.GetReferenceGasPriceOptions) {\n\t\tconst referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\treferenceGasPrice: String(referenceGasPrice),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst result = await this.#jsonRpcClient.getProtocolConfig({ signal: options?.signal });\n\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tfor (const [key, value] of Object.entries(result.attributes)) {\n\t\t\tif (value === null) {\n\t\t\t\tattributes[key] = null;\n\t\t\t} else if ('u16' in value) {\n\t\t\t\tattributes[key] = value.u16;\n\t\t\t} else if ('u32' in value) {\n\t\t\t\tattributes[key] = value.u32;\n\t\t\t} else if ('u64' in value) {\n\t\t\t\tattributes[key] = value.u64;\n\t\t\t} else if ('f64' in value) {\n\t\t\t\tattributes[key] = value.f64;\n\t\t\t} else if ('bool' in value) {\n\t\t\t\tattributes[key] = value.bool;\n\t\t\t} else {\n\t\t\t\tconst entries = Object.entries(value);\n\t\t\t\tattributes[key] = entries.length === 1 ? String(entries[0][1]) : JSON.stringify(value);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: result.protocolVersion,\n\t\t\t\tfeatureFlags: { ...result.featureFlags },\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst systemState = await this.#jsonRpcClient.getLatestSuiSystemState({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.systemStateVersion,\n\t\t\t\tepoch: systemState.epoch,\n\t\t\t\tprotocolVersion: systemState.protocolVersion,\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: systemState.epochStartTimestampMs,\n\t\t\t\tsafeMode: systemState.safeMode,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards,\n\t\t\t\tsafeModeComputationRewards: systemState.safeModeComputationRewards,\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates,\n\t\t\t\tsafeModeNonRefundableStorageFee: systemState.safeModeNonRefundableStorageFee,\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.epochDurationMs,\n\t\t\t\t\tstakeSubsidyStartEpoch: systemState.stakeSubsidyStartEpoch,\n\t\t\t\t\tmaxValidatorCount: systemState.maxValidatorCount,\n\t\t\t\t\tminValidatorJoiningStake: systemState.minValidatorJoiningStake,\n\t\t\t\t\tvalidatorLowStakeThreshold: systemState.validatorLowStakeThreshold,\n\t\t\t\t\tvalidatorLowStakeGracePeriod: systemState.validatorLowStakeGracePeriod,\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates: systemState.storageFundTotalObjectStorageRebates,\n\t\t\t\t\tnonRefundableBalance: systemState.storageFundNonRefundableBalance,\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidyBalance,\n\t\t\t\t\tdistributionCounter: systemState.stakeSubsidyDistributionCounter,\n\t\t\t\t\tcurrentDistributionAmount: systemState.stakeSubsidyCurrentDistributionAmount,\n\t\t\t\t\tstakeSubsidyPeriodLength: systemState.stakeSubsidyPeriodLength,\n\t\t\t\t\tstakeSubsidyDecreaseRate: systemState.stakeSubsidyDecreaseRate,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listDynamicFields(options: SuiClientTypes.ListDynamicFieldsOptions) {\n\t\tconst dynamicFields = await this.#jsonRpcClient.getDynamicFields({\n\t\t\tparentId: options.parentId,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tdynamicFields: dynamicFields.data.map((dynamicField): SuiClientTypes.DynamicFieldEntry => {\n\t\t\t\tconst isDynamicObject = dynamicField.type === 'DynamicObject';\n\t\t\t\tconst fullType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>, 0x2::object::ID>`\n\t\t\t\t\t: `0x2::dynamic_field::Field<${dynamicField.name.type}, ${dynamicField.objectType}>`;\n\n\t\t\t\tconst bcsBytes = fromBase64(dynamicField.bcsName);\n\t\t\t\tconst derivedNameType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>`\n\t\t\t\t\t: dynamicField.name.type;\n\t\t\t\treturn {\n\t\t\t\t\t$kind: isDynamicObject ? 'DynamicObject' : 'DynamicField',\n\t\t\t\t\tfieldId: deriveDynamicFieldID(options.parentId, derivedNameType, bcsBytes),\n\t\t\t\t\ttype: normalizeStructTag(fullType),\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: dynamicField.name.type,\n\t\t\t\t\t\tbcs: bcsBytes,\n\t\t\t\t\t},\n\t\t\t\t\tvalueType: dynamicField.objectType,\n\t\t\t\t\tchildId: isDynamicObject ? dynamicField.objectId : undefined,\n\t\t\t\t} as SuiClientTypes.DynamicFieldEntry;\n\t\t\t}),\n\t\t\thasNextPage: dynamicFields.hasNextPage,\n\t\t\tcursor: dynamicFields.nextCursor,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\n\t\t// Transaction cursors are digests, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst pagination = resolvePagination(options);\n\t\tconst { descending, after, before } = pagination;\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst page = await this.#jsonRpcClient.queryTransactionBlocks({\n\t\t\tfilter:\n\t\t\t\tfilter &&\n\t\t\t\t(filter.$kind === 'sender'\n\t\t\t\t\t? { FromAddress: filter.sender }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tMoveFunction: {\n\t\t\t\t\t\t\t\tpackage: filter.package,\n\t\t\t\t\t\t\t\tmodule: filter.module ?? null,\n\t\t\t\t\t\t\t\tfunction: filter.function ?? null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\tcursor: after ?? before,\n\t\t\tlimit: pagination.limit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\ttransactions: page.data.map((transaction) => parseTransaction(transaction, options.include)),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data[0]?.digest ?? null,\n\t\t\tendCursor: page.data.length\n\t\t\t\t? (page.nextCursor ?? page.data[page.data.length - 1].digest)\n\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveEventFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\t// Event cursors are event ids, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst { descending, after, before, limit } = resolvePagination(options);\n\t\tconst cursor = after ?? before;\n\n\t\tconst page = await this.#jsonRpcClient.queryEvents({\n\t\t\tquery: !filter\n\t\t\t\t? { All: [] }\n\t\t\t\t: filter.$kind === 'sender'\n\t\t\t\t\t? { Sender: filter.sender }\n\t\t\t\t\t: filter.$kind === 'emitModule'\n\t\t\t\t\t\t? { MoveModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t: filter.$kind === 'eventTypeModule'\n\t\t\t\t\t\t\t? { MoveEventModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t\t: { MoveEventType: filter.eventType },\n\t\t\tcursor: cursor ? parseEventCursor(cursor) : undefined,\n\t\t\tlimit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tevents: page.data.map(\n\t\t\t\t(event): SuiClientTypes.EventEntry => ({\n\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId),\n\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\tsender: normalizeSuiAddress(event.sender),\n\t\t\t\t\teventType: normalizeStructTag(event.type),\n\t\t\t\t\tbcs: event.bcsEncoding === 'base58' ? fromBase58(event.bcs) : fromBase64(event.bcs),\n\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t\t// queryEvents responses do not include checkpoint information\n\t\t\t\t\tcheckpoint: null,\n\t\t\t\t\ttransactionDigest: event.id.txDigest,\n\t\t\t\t\teventIndex: Number(event.id.eventSeq),\n\t\t\t\t}),\n\t\t\t),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data.length ? JSON.stringify(page.data[0].id) : null,\n\t\t\tendCursor:\n\t\t\t\tpage.data.length && page.nextCursor\n\t\t\t\t\t? JSON.stringify(page.nextCursor)\n\t\t\t\t\t: page.data.length\n\t\t\t\t\t\t? JSON.stringify(page.data[page.data.length - 1].id)\n\t\t\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync verifyZkLoginSignature(options: SuiClientTypes.VerifyZkLoginSignatureOptions) {\n\t\tconst result = await this.#jsonRpcClient.verifyZkLoginSignature({\n\t\t\tsignal: options.signal,\n\t\t\tbytes: options.bytes,\n\t\t\tsignature: options.signature,\n\t\t\tintentScope: options.intentScope,\n\t\t\tauthor: options.address,\n\t\t});\n\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\terrors: result.errors,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name = (await this.#jsonRpcClient.resolveNameServiceNames(options)).data[0] ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync resolveNameServiceAddress(\n\t\toptions: SuiClientTypes.ResolveNameServiceAddressOptions,\n\t): Promise<SuiClientTypes.ResolveNameServiceAddressResponse> {\n\t\treturn {\n\t\t\taddress: await this.#jsonRpcClient.resolveNameServiceAddress(options),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tresolveTransactionPlugin() {\n\t\treturn coreClientResolveTransactionPlugin;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getMoveFunction(\n\t\toptions: SuiClientTypes.GetMoveFunctionOptions,\n\t): Promise<SuiClientTypes.GetMoveFunctionResponse> {\n\t\tconst resolvedPackageId = (\n\t\t\tawait this.mvr.resolvePackage({ package: options.packageId, signal: options.signal })\n\t\t).package;\n\t\tconst result = await this.#jsonRpcClient.getNormalizedMoveFunction({\n\t\t\tpackage: resolvedPackageId,\n\t\t\tmodule: options.moduleName,\n\t\t\tfunction: options.name,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tfunction: {\n\t\t\t\tpackageId: normalizeSuiAddress(resolvedPackageId),\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t\tvisibility: parseVisibility(result.visibility),\n\t\t\t\tisEntry: result.isEntry,\n\t\t\t\ttypeParameters: result.typeParameters.map((abilities) => ({\n\t\t\t\t\tisPhantom: false,\n\t\t\t\t\tconstraints: parseAbilities(abilities),\n\t\t\t\t})),\n\t\t\t\tparameters: result.parameters.map((param) => parseNormalizedSuiMoveType(param)),\n\t\t\t\treturns: result.return.map((ret) => parseNormalizedSuiMoveType(ret)),\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getChainIdentifier(\n\t\toptions?: SuiClientTypes.GetChainIdentifierOptions,\n\t): Promise<SuiClientTypes.GetChainIdentifierResponse> {\n\t\t// The result is cached and shared across callers, so the underlying request must\n\t\t// not carry any single caller's signal. Isolate cancellation per-caller instead.\n\t\tconst cached = this.cache.read(['chainIdentifier'], async () => {\n\t\t\tconst checkpoint = await this.#jsonRpcClient.getCheckpoint({ id: '0' });\n\t\t\treturn {\n\t\t\t\tchainIdentifier: checkpoint.digest,\n\t\t\t};\n\t\t});\n\n\t\treturn raceSignal(Promise.resolve(cached), options?.signal);\n\t}\n}\n\nfunction serializeObjectToBcs(object: SuiObjectData): Uint8Array | undefined {\n\tif (object.bcs?.dataType !== 'moveObject') {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\t// Normalize the type string to ensure consistent address formatting (0x2 vs 0x00...02)\n\t\tconst typeStr = normalizeStructTag(object.bcs.type);\n\t\tlet moveObjectType: InferBcsInput<typeof bcs.MoveObjectType>;\n\n\t\t// Normalize constants for comparison\n\t\tconst normalizedSuiFramework = normalizeSuiAddress(SUI_FRAMEWORK_ADDRESS);\n\t\tconst gasCoinType = normalizeStructTag(\n\t\t\t`${SUI_FRAMEWORK_ADDRESS}::coin::Coin<${SUI_FRAMEWORK_ADDRESS}::sui::SUI>`,\n\t\t);\n\t\tconst stakedSuiType = normalizeStructTag(`${SUI_SYSTEM_ADDRESS}::staking_pool::StakedSui`);\n\t\tconst coinPrefix = `${normalizedSuiFramework}::coin::Coin<`;\n\n\t\tif (typeStr === gasCoinType) {\n\t\t\tmoveObjectType = { GasCoin: null };\n\t\t} else if (typeStr === stakedSuiType) {\n\t\t\tmoveObjectType = { StakedSui: null };\n\t\t} else if (typeStr.startsWith(coinPrefix)) {\n\t\t\tconst innerTypeMatch = typeStr.match(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t`${normalizedSuiFramework.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}::coin::Coin<(.+)>$`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (innerTypeMatch) {\n\t\t\t\tconst innerTypeTag = TypeTagSerializer.parseFromStr(innerTypeMatch[1], true);\n\t\t\t\tmoveObjectType = { Coin: innerTypeTag };\n\t\t\t} else {\n\t\t\t\tthrow new Error('Failed to parse Coin type');\n\t\t\t}\n\t\t} else {\n\t\t\tconst typeTag = TypeTagSerializer.parseFromStr(typeStr, true);\n\t\t\tif (typeof typeTag !== 'object' || !('struct' in typeTag)) {\n\t\t\t\tthrow new Error('Expected struct type tag');\n\t\t\t}\n\t\t\tmoveObjectType = { Other: typeTag.struct };\n\t\t}\n\n\t\tconst contents = fromBase64(object.bcs.bcsBytes);\n\t\tconst owner = convertOwnerToBcs(object.owner!);\n\n\t\treturn bcs.Object.serialize({\n\t\t\tdata: {\n\t\t\t\tMove: {\n\t\t\t\t\ttype: moveObjectType,\n\t\t\t\t\thasPublicTransfer: object.bcs.hasPublicTransfer,\n\t\t\t\t\tversion: object.bcs.version,\n\t\t\t\t\tcontents,\n\t\t\t\t},\n\t\t\t},\n\t\t\towner,\n\t\t\tpreviousTransaction: object.previousTransaction!,\n\t\t\tstorageRebate: object.storageRebate!,\n\t\t}).toBytes();\n\t} catch {\n\t\t// If serialization fails, return undefined\n\t\treturn undefined;\n\t}\n}\n\nfunction parseObject<Include extends SuiClientTypes.ObjectInclude = {}>(\n\tobject: SuiObjectData,\n\tinclude?: Include,\n): SuiClientTypes.Object<Include> {\n\tconst bcsContent =\n\t\tobject.bcs?.dataType === 'moveObject' ? fromBase64(object.bcs.bcsBytes) : undefined;\n\n\tconst objectBcs = include?.objectBcs ? serializeObjectToBcs(object) : undefined;\n\n\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\tconst type =\n\t\tobject.type && object.type.includes('::')\n\t\t\t? normalizeStructTag(object.type)\n\t\t\t: (object.type ?? '');\n\n\tconst jsonContent =\n\t\tinclude?.json && object.content?.dataType === 'moveObject'\n\t\t\t? (object.content.fields as Record<string, unknown>)\n\t\t\t: include?.json\n\t\t\t\t? null\n\t\t\t\t: undefined;\n\n\tconst displayData = include?.display\n\t\t? object.display?.data != null\n\t\t\t? { output: object.display.data as Record<string, unknown>, errors: null }\n\t\t\t: null\n\t\t: undefined;\n\n\treturn {\n\t\tobjectId: object.objectId,\n\t\tversion: object.version,\n\t\tdigest: object.digest,\n\t\ttype,\n\t\tcontent: (include?.content\n\t\t\t? bcsContent\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['content'],\n\t\towner: parseOwner(object.owner!),\n\t\tpreviousTransaction: (include?.previousTransaction\n\t\t\t? (object.previousTransaction ?? undefined)\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t};\n}\n\nfunction parseOwner(owner: ObjectOwner): SuiClientTypes.ObjectOwner {\n\tif (owner === 'Immutable') {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'AddressOwner',\n\t\t\tAddressOwner: owner.AddressOwner,\n\t\t};\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.ObjectOwner,\n\t\t};\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.Shared.initial_shared_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction convertOwnerToBcs(owner: ObjectOwner) {\n\tif (owner === 'Immutable') {\n\t\treturn { Immutable: null };\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn { AddressOwner: owner.AddressOwner };\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn { ObjectOwner: owner.ObjectOwner };\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\tShared: { initialSharedVersion: owner.Shared.initial_shared_version },\n\t\t};\n\t}\n\n\tif (typeof owner === 'object' && owner !== null && 'ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseOwnerAddress(owner: ObjectOwner): string | null {\n\tif (owner === 'Immutable') {\n\t\treturn null;\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn owner.ConsensusAddressOwner.owner;\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn owner.AddressOwner;\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn owner.ObjectOwner;\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn null;\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseEventCursor(cursor: string): EventId {\n\ttry {\n\t\tconst parsed = JSON.parse(cursor) as EventId;\n\t\tif (typeof parsed?.txDigest !== 'string' || typeof parsed?.eventSeq !== 'string') {\n\t\t\tthrow new Error('malformed event cursor');\n\t\t}\n\t\treturn parsed;\n\t} catch {\n\t\tthrow new Error(`Invalid event cursor: ${cursor}`);\n\t}\n}\n\nfunction parseTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\ttransaction: SuiTransactionBlockResponse,\n\tinclude?: Include,\n): SuiClientTypes.TransactionResult<Include> {\n\tconst objectTypes: Record<string, string> = {};\n\n\tif (include?.objectTypes) {\n\t\ttransaction.objectChanges?.forEach((change) => {\n\t\t\tif (change.type !== 'published') {\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tlet signatures: string[] = [];\n\tlet bcsBytes: Uint8Array | undefined;\n\n\tif (transaction.rawTransaction) {\n\t\tconst parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction))[0];\n\t\t// The genesis transaction's raw data carries a placeholder signature that\n\t\t// other transports do not report\n\t\tsignatures =\n\t\t\tparsedTx.intentMessage.value.V1.kind.$kind === 'Genesis' ? [] : parsedTx.txSignatures;\n\n\t\tif (include?.transaction || include?.bcs) {\n\t\t\tconst bytes = bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes();\n\n\t\t\tif (include?.bcs) {\n\t\t\t\tbcsBytes = bytes;\n\t\t\t}\n\n\t\t\tif (include?.transaction) {\n\t\t\t\tconst data = TransactionDataBuilder.restore({\n\t\t\t\t\tversion: 2,\n\t\t\t\t\tsender: parsedTx.intentMessage.value.V1.sender,\n\t\t\t\t\texpiration: parsedTx.intentMessage.value.V1.expiration,\n\t\t\t\t\tgasData: parsedTx.intentMessage.value.V1.gasData,\n\t\t\t\t\tinputs: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.inputs,\n\t\t\t\t\tcommands: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.commands,\n\t\t\t\t});\n\t\t\t\ttransactionData = { ...data };\n\t\t\t}\n\t\t}\n\t}\n\n\t// Get status from JSON-RPC response\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status\n\t\t? parseJsonRpcExecutionStatus(transaction.effects.status, transaction.effects.abortError)\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: {\n\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\tmessage: 'Unknown',\n\t\t\t\t\tUnknown: null,\n\t\t\t\t},\n\t\t\t};\n\n\tconst effectsBytes = transaction.rawEffects ? new Uint8Array(transaction.rawEffects) : null;\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest,\n\t\tepoch: transaction.effects?.executedEpoch ?? null,\n\t\tstatus,\n\t\teffects: (include?.effects && effectsBytes\n\t\t\t? parseTransactionEffectsBcs(effectsBytes)\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\tobjectTypes: (include?.objectTypes\n\t\t\t? objectTypes\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\ttransaction: transactionData as SuiClientTypes.Transaction<Include>['transaction'],\n\t\tbcs: bcsBytes as SuiClientTypes.Transaction<Include>['bcs'],\n\t\tsignatures,\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\tamount: change.amount,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\tevents: (include?.events\n\t\t\t? (transaction.events?.map((event) => ({\n\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\tsender: event.sender,\n\t\t\t\t\teventType: event.type,\n\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t};\n\n\treturn status.success\n\t\t? {\n\t\t\t\t$kind: 'Transaction',\n\t\t\t\tTransaction: result,\n\t\t\t}\n\t\t: {\n\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\tFailedTransaction: result,\n\t\t\t};\n}\n\nexport function parseTransactionEffectsJson({\n\tbytes,\n\teffects,\n\tobjectChanges,\n}: {\n\tbytes?: Uint8Array;\n\teffects: TransactionEffects;\n\tobjectChanges: SuiObjectChange[] | null;\n}): {\n\teffects: SuiClientTypes.TransactionEffects;\n\tobjectTypes: Record<string, string>;\n} {\n\tconst changedObjects: SuiClientTypes.ChangedObject[] = [];\n\tconst unchangedConsensusObjects: SuiClientTypes.UnchangedConsensusObject[] = [];\n\tconst objectTypes: Record<string, string> = {};\n\n\tobjectChanges?.forEach((change) => {\n\t\tswitch (change.type) {\n\t\t\tcase 'published':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.packageId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'PackageWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'transferred':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: change.digest,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.recipient),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'mutated':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.previousVersion,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: parseOwner(change.owner),\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'deleted':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'DoesNotExist',\n\t\t\t\t\toutputVersion: null,\n\t\t\t\t\toutputDigest: null,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Deleted',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'wrapped':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest:\n\t\t\t\t\t\teffects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\toutputOwner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'created':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\t// When the transaction has no gas object (system transactions, or gas paid\n\t// from an address balance), the RPC substitutes a placeholder ref with the\n\t// 0x0 object id rather than omitting the field.\n\tconst hasGasObject =\n\t\tnormalizeSuiAddress(effects.gasObject.reference.objectId) !== normalizeSuiAddress('0x0');\n\n\tlet lamportVersion: string | null = null;\n\tif (hasGasObject) {\n\t\tlamportVersion = effects.gasObject.reference.version;\n\t} else {\n\t\t// Written objects are all assigned the lamport version, so recover it\n\t\t// from the changed objects when the gas object can't provide it.\n\t\tfor (const change of changedObjects) {\n\t\t\tif (\n\t\t\t\tchange.outputVersion &&\n\t\t\t\t(lamportVersion === null || BigInt(change.outputVersion) > BigInt(lamportVersion))\n\t\t\t) {\n\t\t\t\tlamportVersion = change.outputVersion;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tobjectTypes,\n\t\teffects: {\n\t\t\tbcs: bytes ?? null,\n\t\t\tversion: 2,\n\t\t\tstatus: parseJsonRpcExecutionStatus(effects.status, effects.abortError),\n\t\t\tgasUsed: effects.gasUsed,\n\t\t\ttransactionDigest: effects.transactionDigest,\n\t\t\tgasObject: hasGasObject\n\t\t\t\t? {\n\t\t\t\t\t\tobjectId: effects.gasObject.reference.objectId,\n\t\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\t\tinputVersion: null,\n\t\t\t\t\t\tinputDigest: null,\n\t\t\t\t\t\tinputOwner: null,\n\t\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\t\toutputVersion: effects.gasObject.reference.version,\n\t\t\t\t\t\toutputDigest: effects.gasObject.reference.digest,\n\t\t\t\t\t\toutputOwner: parseOwner(effects.gasObject.owner),\n\t\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\teventsDigest: effects.eventsDigest ?? null,\n\t\t\tdependencies: effects.dependencies ?? [],\n\t\t\tlamportVersion,\n\t\t\tchangedObjects,\n\t\t\tunchangedConsensusObjects,\n\t\t\tauxiliaryDataDigest: null,\n\t\t},\n\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: SuiMoveNormalizedType): SuiClientTypes.OpenSignature {\n\tif (typeof type !== 'string') {\n\t\tif ('Reference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'immutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.Reference),\n\t\t\t};\n\t\t}\n\n\t\tif ('MutableReference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'mutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.MutableReference),\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\treference: null,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(\n\ttype: SuiMoveNormalizedType,\n): SuiClientTypes.OpenSignatureBody {\n\tswitch (type) {\n\t\tcase 'Address':\n\t\t\treturn { $kind: 'address' };\n\t\tcase 'Bool':\n\t\t\treturn { $kind: 'bool' };\n\t\tcase 'U8':\n\t\t\treturn { $kind: 'u8' };\n\t\tcase 'U16':\n\t\t\treturn { $kind: 'u16' };\n\t\tcase 'U32':\n\t\t\treturn { $kind: 'u32' };\n\t\tcase 'U64':\n\t\t\treturn { $kind: 'u64' };\n\t\tcase 'U128':\n\t\t\treturn { $kind: 'u128' };\n\t\tcase 'U256':\n\t\t\treturn { $kind: 'u256' };\n\t}\n\n\tif (typeof type === 'string') {\n\t\tthrow new Error(`Unknown type: ${type}`);\n\t}\n\n\tif ('Vector' in type) {\n\t\treturn {\n\t\t\t$kind: 'vector',\n\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.Vector),\n\t\t};\n\t}\n\n\tif ('Struct' in type) {\n\t\treturn {\n\t\t\t$kind: 'datatype',\n\t\t\tdatatype: {\n\t\t\t\ttypeName: `${normalizeSuiAddress(type.Struct.address)}::${type.Struct.module}::${type.Struct.name}`,\n\t\t\t\ttypeParameters: type.Struct.typeArguments.map((t) => parseNormalizedSuiMoveTypeBody(t)),\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('TypeParameter' in type) {\n\t\treturn {\n\t\t\t$kind: 'typeParameter',\n\t\t\tindex: type.TypeParameter,\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown type: ${JSON.stringify(type)}`);\n}\n\nfunction parseAbilities(abilitySet: SuiMoveAbilitySet): SuiClientTypes.Ability[] {\n\treturn abilitySet.abilities.map((ability) => {\n\t\tswitch (ability) {\n\t\t\tcase 'Copy':\n\t\t\t\treturn 'copy';\n\t\t\tcase 'Drop':\n\t\t\t\treturn 'drop';\n\t\t\tcase 'Store':\n\t\t\t\treturn 'store';\n\t\t\tcase 'Key':\n\t\t\t\treturn 'key';\n\t\t\tdefault:\n\t\t\t\treturn 'unknown';\n\t\t}\n\t});\n}\n\nfunction parseVisibility(visibility: SuiMoveVisibility): SuiClientTypes.Visibility {\n\tswitch (visibility) {\n\t\tcase 'Public':\n\t\t\treturn 'public';\n\t\tcase 'Private':\n\t\t\treturn 'private';\n\t\tcase 'Friend':\n\t\t\treturn 'friend';\n\t\tdefault:\n\t\t\treturn 'unknown';\n\t}\n}\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { createPure } from "./pure.mjs";
8
8
  import { SignatureWithBytes, Signer } from "../cryptography/keypair.mjs";
9
9
  import "../cryptography/index.mjs";
10
10
  import { ClientWithCoreApi } from "../client/core.mjs";
11
- import * as _mysten_bcs1356 from "@mysten/bcs";
11
+ import * as _mysten_bcs1219 from "@mysten/bcs";
12
12
  import { SerializedBcs } from "@mysten/bcs";
13
13
  import { InferInput } from "valibot";
14
14
 
@@ -91,7 +91,7 @@ declare class Transaction {
91
91
  getData(): {
92
92
  version: 2;
93
93
  sender?: string | null | undefined;
94
- expiration?: _mysten_bcs1356.EnumOutputShapeWithKeys<{
94
+ expiration?: _mysten_bcs1219.EnumOutputShapeWithKeys<{
95
95
  None: true;
96
96
  Epoch: string | number;
97
97
  ValidDuring: {
@@ -113,8 +113,8 @@ declare class Transaction {
113
113
  digest: string;
114
114
  }[] | null;
115
115
  };
116
- inputs: _mysten_bcs1356.EnumOutputShapeWithKeys<{
117
- Object: _mysten_bcs1356.EnumOutputShapeWithKeys<{
116
+ inputs: _mysten_bcs1219.EnumOutputShapeWithKeys<{
117
+ Object: _mysten_bcs1219.EnumOutputShapeWithKeys<{
118
118
  ImmOrOwnedObject: {
119
119
  objectId: string;
120
120
  version: string | number;
@@ -153,13 +153,13 @@ declare class Transaction {
153
153
  Balance: string;
154
154
  $kind: "Balance";
155
155
  };
156
- withdrawFrom: _mysten_bcs1356.EnumOutputShapeWithKeys<{
156
+ withdrawFrom: _mysten_bcs1219.EnumOutputShapeWithKeys<{
157
157
  Sender: true;
158
158
  Sponsor: true;
159
159
  }, "Sender" | "Sponsor">;
160
160
  };
161
161
  }, "Object" | "Pure" | "FundsWithdrawal" | "UnresolvedPure" | "UnresolvedObject">[];
162
- commands: _mysten_bcs1356.EnumOutputShapeWithKeys<{
162
+ commands: _mysten_bcs1219.EnumOutputShapeWithKeys<{
163
163
  MoveCall: {
164
164
  package: string;
165
165
  module: string;