@mysten/sui 2.23.1 → 2.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @mysten/sui.js
2
2
 
3
+ ## 2.23.2
4
+
5
+ ### Patch Changes
6
+
7
+ - dda3746: Fix `effects.gasObject` being populated with an invalid all-null object for transactions
8
+ that have no gas object (system transactions, or transactions paying gas from an address balance).
9
+ The gRPC transport and the JSON-RPC simulation path now return `null`, matching the declared
10
+ `TransactionEffects` type and the BCS-based effects parsing used by the other code paths.
11
+
3
12
  ## 2.23.1
4
13
 
5
14
  ### Patch Changes
@@ -30,6 +30,12 @@ declare function parseSerializedSignature(serializedSignature: string): {
30
30
  clientDataJson: string;
31
31
  userSignature: Uint8Array<ArrayBuffer>;
32
32
  publicKey: Uint8Array<ArrayBuffer>;
33
+ } | {
34
+ serializedSignature: string;
35
+ signatureScheme: "ED25519" | "Secp256k1" | "Secp256r1";
36
+ signature: Uint8Array<ArrayBuffer>;
37
+ publicKey: Uint8Array<ArrayBuffer>;
38
+ bytes: Uint8Array<ArrayBuffer>;
33
39
  } | {
34
40
  serializedSignature: string;
35
41
  signatureScheme: "ZkLogin";
@@ -54,12 +60,6 @@ declare function parseSerializedSignature(serializedSignature: string): {
54
60
  };
55
61
  signature: Uint8Array<ArrayBufferLike>;
56
62
  publicKey: Uint8Array<ArrayBuffer>;
57
- } | {
58
- serializedSignature: string;
59
- signatureScheme: "ED25519" | "Secp256k1" | "Secp256r1";
60
- signature: Uint8Array<ArrayBuffer>;
61
- publicKey: Uint8Array<ArrayBuffer>;
62
- bytes: Uint8Array<ArrayBuffer>;
63
63
  } | {
64
64
  serializedSignature: string;
65
65
  signatureScheme: "MultiSig";
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/grpc/core.ts"],"mappings":";;;;;;;;;;;;UAgEiB,qBAAA,SAA8B,iBAAA;EAC9C,MAAA,EAAQ,aAAA;AAAA;AAAA,cAGI,cAAA,SAAuB,UAAA;EAAA;;IAErB,MAAA;IAAA,GAAW;EAAA,GAAW,qBAAA;EAK9B,UAAA,iBAA2B,cAAA,CAAe,aAAA,MAAA,CAC/C,OAAA,EAAS,cAAA,CAAe,iBAAA,CAAkB,OAAA,IACxC,OAAA,CAAQ,cAAA,CAAe,kBAAA,CAAmB,OAAA;EAqFvC,gBAAA,iBAAiC,cAAA,CAAe,aAAA,MAAA,CACrD,OAAA,EAAS,cAAA,CAAe,uBAAA,CAAwB,OAAA,IAC9C,OAAA,CAAQ,cAAA,CAAe,wBAAA,CAAyB,OAAA;EA8D7C,SAAA,CACL,OAAA,EAAS,cAAA,CAAe,gBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,iBAAA;EAiCpB,UAAA,CACL,OAAA,EAAS,cAAA,CAAe,iBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,kBAAA;EAoBpB,eAAA,CACL,OAAA,EAAS,cAAA,CAAe,sBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,uBAAA;EAqCpB,YAAA,CACL,OAAA,EAAS,cAAA,CAAe,mBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,oBAAA;EAqBpB,cAAA,iBAA+B,cAAA,CAAe,kBAAA,MAAA,CACnD,OAAA,EAAS,cAAA,CAAe,qBAAA,CAAsB,OAAA,IAC5C,OAAA,CAAQ,cAAA,CAAe,iBAAA,CAAkB,OAAA;EAqBtC,kBAAA,iBAAmC,cAAA,CAAe,kBAAA,MAAA,CACvD,OAAA,EAAS,cAAA,CAAe,yBAAA,CAA0B,OAAA,IAChD,OAAA,CAAQ,cAAA,CAAe,iBAAA,CAAkB,OAAA;EA6BtC,mBAAA,iBAAoC,cAAA,CAAe,0BAAA,MAAA,CACxD,OAAA,EAAS,cAAA,CAAe,0BAAA,CAA2B,OAAA;IAAa,cAAA;EAAA,IAC9D,OAAA,CAAQ,cAAA,CAAe,yBAAA,CAA0B,OAAA;EAgD9C,oBAAA,CACL,OAAA,GAAU,cAAA,CAAe,2BAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,4BAAA;EAepB,iBAAA,CACL,OAAA,GAAU,cAAA,CAAe,wBAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,yBAAA;EA8BpB,qBAAA,CACL,OAAA,GAAU,cAAA,CAAe,4BAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,6BAAA;EAoFpB,iBAAA,CACL,OAAA,EAAS,cAAA,CAAe,wBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,yBAAA;EAIpB,gBAAA,iBAAiC,cAAA,CAAe,kBAAA,MAAA,CACrD,OAAA,EAAS,cAAA,CAAe,uBAAA,CAAwB,OAAA,IAC9C,OAAA,CAAQ,cAAA,CAAe,wBAAA,CAAyB,OAAA;EAkE7C,UAAA,CACL,OAAA,EAAS,cAAA,CAAe,iBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,kBAAA;EAkFpB,sBAAA,CACL,OAAA,EAAS,cAAA,CAAe,6BAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,qBAAA;EAoCpB,sBAAA,CACL,OAAA,EAAS,cAAA,CAAe,6BAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,8BAAA;EAiBpB,eAAA,CACL,OAAA,EAAS,cAAA,CAAe,sBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,uBAAA;EA4DpB,kBAAA,CACL,OAAA,GAAU,cAAA,CAAe,yBAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,0BAAA;EAmB1B,wBAAA,CAAA,IAGE,eAAA,EAAiB,sBAAA,EACjB,OAAA,EAAS,uBAAA,EACT,IAAA,QAAY,OAAA,WAAa,OAAA;AAAA;AAAA,iBA0hBZ,4BAAA,iBACC,cAAA,CAAe,kBAAA,MAAA,CAE/B,WAAA,EAAa,mBAAA,EACb,OAAA;EACC,OAAA,GAAU,OAAA,GAAU,cAAA,CAAe,kBAAA;AAAA,IAElC,cAAA,CAAe,iBAAA,CAAkB,OAAA;AAAA,iBA4FpB,oCAAA,iBACC,cAAA,CAAe,0BAAA,MAAA,CAE/B,QAAA,EAAU,2BAAA,EACV,OAAA;EACC,OAAA,GAAU,OAAA,GAAU,cAAA,CAAe,0BAAA;AAAA,IAElC,cAAA,CAAe,yBAAA,CAA0B,OAAA"}
1
+ {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/grpc/core.ts"],"mappings":"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"}
@@ -773,18 +773,18 @@ function parseTransactionEffects({ effects }) {
773
773
  nonRefundableStorageFee: effects.gasUsed?.nonRefundableStorageFee?.toString()
774
774
  },
775
775
  transactionDigest: effects.transactionDigest,
776
- gasObject: {
777
- objectId: effects.gasObject?.objectId,
778
- inputState: mapInputObjectState(effects.gasObject?.inputState),
779
- inputVersion: effects.gasObject?.inputVersion?.toString() ?? null,
780
- inputDigest: effects.gasObject?.inputDigest ?? null,
781
- inputOwner: mapOwner(effects.gasObject?.inputOwner),
782
- outputState: mapOutputObjectState(effects.gasObject?.outputState),
783
- outputVersion: effects.gasObject?.outputVersion?.toString() ?? null,
784
- outputDigest: effects.gasObject?.outputDigest ?? null,
785
- outputOwner: mapOwner(effects.gasObject?.outputOwner),
786
- idOperation: mapIdOperation(effects.gasObject?.idOperation)
787
- },
776
+ gasObject: effects.gasObject ? {
777
+ objectId: effects.gasObject.objectId,
778
+ inputState: mapInputObjectState(effects.gasObject.inputState),
779
+ inputVersion: effects.gasObject.inputVersion?.toString() ?? null,
780
+ inputDigest: effects.gasObject.inputDigest ?? null,
781
+ inputOwner: mapOwner(effects.gasObject.inputOwner),
782
+ outputState: mapOutputObjectState(effects.gasObject.outputState),
783
+ outputVersion: effects.gasObject.outputVersion?.toString() ?? null,
784
+ outputDigest: effects.gasObject.outputDigest ?? null,
785
+ outputOwner: mapOwner(effects.gasObject.outputOwner),
786
+ idOperation: mapIdOperation(effects.gasObject.idOperation)
787
+ } : null,
788
788
  eventsDigest: effects.eventsDigest ?? null,
789
789
  dependencies: effects.dependencies,
790
790
  lamportVersion: effects.lamportVersion?.toString() ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"core.mjs","names":["#client","bcs"],"sources":["../../src/grpc/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CoreClientOptions, SuiClientTypes } from '../client/index.js';\nimport { CoreClient, formatMoveAbortMessage, SimulationError } from '../client/index.js';\nimport { raceSignal } from '../client/mvr.js';\nimport type { SuiGrpcClient } from './client.js';\nimport type { Owner } from './proto/sui/rpc/v2/owner.js';\nimport { Owner_OwnerKind } from './proto/sui/rpc/v2/owner.js';\nimport { chunk, fromBase64, toBase64 } from '@mysten/utils';\nimport type { TransactionEffects } from './proto/sui/rpc/v2/effects.js';\nimport {\n\tUnchangedConsensusObject_UnchangedConsensusObjectKind,\n\tChangedObject_IdOperation,\n\tChangedObject_InputObjectState,\n\tChangedObject_OutputObjectState,\n} from './proto/sui/rpc/v2/effects.js';\nimport type {\n\tExecutionError as GrpcExecutionError,\n\tMoveAbort as GrpcMoveAbort,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport {\n\tExecutionError_ExecutionErrorKind,\n\tCommandArgumentError_CommandArgumentErrorKind,\n\tTypeArgumentError_TypeArgumentErrorKind,\n\tPackageUpgradeError_PackageUpgradeErrorKind,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\nimport { TransactionDataBuilder } from '../transactions/index.js';\nimport { bcs } from '../bcs/index.js';\nimport { normalizeStructTag, normalizeSuiAddress } from '../utils/sui-types.js';\nimport { SUI_TYPE_ARG } from '../utils/constants.js';\nimport type { OpenSignature, OpenSignatureBody } from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tAbility,\n\tFunctionDescriptor_Visibility,\n\tOpenSignature_Reference,\n\tOpenSignatureBody_Type,\n} from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tapplyGrpcResolvedTransaction,\n\ttransactionDataToGrpcTransaction,\n\ttransactionToGrpcTransaction,\n\tgrpcTransactionToTransactionData,\n} from '../client/transaction-resolver.js';\nimport { setAddressBalanceTransactionExpirationFromSimulatedEpoch } from '../client/address-balance-transaction-expiration.js';\nimport { transactionBytesHaveEmptyGasPayment } from '../client/utils.js';\nimport { Value } from './proto/google/protobuf/struct.js';\nimport { ExecutedTransaction } from './proto/sui/rpc/v2/executed_transaction.js';\nimport {\n\tSimulateTransactionRequest_TransactionChecks,\n\tSimulateTransactionResponse,\n} from './proto/sui/rpc/v2/transaction_execution_service.js';\nimport type { QueryEnd, QueryOptions } from './proto/sui/rpc/v2/query_options.js';\nimport { Ordering, QueryEndReason } from './proto/sui/rpc/v2/query_options.js';\nimport type { ResolvedPagination } from '../client/query-filters.js';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { toGrpcEventFilter, toGrpcTransactionFilter } from './filters.js';\n\nexport interface GrpcCoreClientOptions extends CoreClientOptions {\n\tclient: SuiGrpcClient;\n}\n\nexport class GrpcCoreClient extends CoreClient {\n\t#client: SuiGrpcClient;\n\tconstructor({ client, ...options }: GrpcCoreClientOptions) {\n\t\tsuper(options);\n\t\tthis.#client = client;\n\t}\n\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.GetObjectsResponse<Include>> {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tfor (const batch of batches) {\n\t\t\tconst response = await this.#client.ledgerService.batchGetObjects(\n\t\t\t\t{\n\t\t\t\t\trequests: batch.map((id) => ({ objectId: id })),\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t);\n\n\t\t\tresults.push(\n\t\t\t\t...response.response.objects.map((object): SuiClientTypes.Object<Include> | Error => {\n\t\t\t\t\tif (object.result.oneofKind === 'error') {\n\t\t\t\t\t\t// TODO: improve error handling\n\t\t\t\t\t\treturn new Error(object.result.error.message);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (object.result.oneofKind !== 'object') {\n\t\t\t\t\t\treturn new Error('Unexpected result type');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst bcsContent = object.result.object.contents?.value ?? undefined;\n\t\t\t\t\tconst objectBcs = object.result.object.bcs?.value ?? undefined;\n\n\t\t\t\t\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\t\t\t\t\tconst objectType = object.result.object.objectType;\n\t\t\t\t\tconst type =\n\t\t\t\t\t\tobjectType && objectType.includes('::')\n\t\t\t\t\t\t\t? normalizeStructTag(objectType)\n\t\t\t\t\t\t\t: (objectType ?? '');\n\n\t\t\t\t\tconst jsonContent = options.include?.json\n\t\t\t\t\t\t? object.result.object.json\n\t\t\t\t\t\t\t? (Value.toJson(object.result.object.json) as Record<string, unknown>)\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tconst displayData = mapDisplayProto(\n\t\t\t\t\t\toptions.include?.display,\n\t\t\t\t\t\tobject.result.object.display,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tobjectId: object.result.object.objectId!,\n\t\t\t\t\t\tversion: object.result.object.version?.toString()!,\n\t\t\t\t\t\tdigest: object.result.object.digest!,\n\t\t\t\t\t\tcontent: bcsContent as SuiClientTypes.Object<Include>['content'],\n\t\t\t\t\t\towner: mapOwner(object.result.object.owner)!,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tpreviousTransaction: (object.result.object.previousTransaction ??\n\t\t\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\t\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\t\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\t\t\t\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t\t\t\t\t};\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\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.ListOwnedObjectsResponse<Include>> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: options.type\n\t\t\t\t\t? (await this.mvr.resolveType({ type: options.type, signal: options.signal })).type\n\t\t\t\t\t: undefined,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst objects = response.response.objects.map(\n\t\t\t(object): SuiClientTypes.Object<Include> => ({\n\t\t\t\tobjectId: object.objectId!,\n\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\tdigest: object.digest!,\n\t\t\t\tcontent: object.contents?.value as SuiClientTypes.Object<Include>['content'],\n\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\ttype: object.objectType!,\n\t\t\t\tpreviousTransaction: (object.previousTransaction ??\n\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\tobjectBcs: object.bcs?.value as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\tjson: (options.include?.json\n\t\t\t\t\t? object.json\n\t\t\t\t\t\t? (Value.toJson(object.json) as Record<string, unknown>)\n\t\t\t\t\t\t: null\n\t\t\t\t\t: undefined) as SuiClientTypes.Object<Include>['json'],\n\t\t\t\tdisplay: mapDisplayProto(\n\t\t\t\t\toptions.include?.display,\n\t\t\t\t\tobject.display,\n\t\t\t\t) as SuiClientTypes.Object<Include>['display'],\n\t\t\t}),\n\t\t);\n\n\t\treturn {\n\t\t\tobjects,\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\tasync listCoins(\n\t\toptions: SuiClientTypes.ListCoinsOptions,\n\t): Promise<SuiClientTypes.ListCoinsResponse> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id', 'balance'];\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: `0x2::coin::Coin<${(await this.mvr.resolveType({ type: coinType, signal: options.signal })).type}>`,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tobjects: response.response.objects.map(\n\t\t\t\t(object): SuiClientTypes.Coin => ({\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\t\tdigest: object.digest!,\n\t\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\t\ttype: object.objectType!,\n\t\t\t\t\tbalance: object.balance?.toString()!,\n\t\t\t\t}),\n\t\t\t),\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\n\tasync getBalance(\n\t\toptions: SuiClientTypes.GetBalanceOptions,\n\t): Promise<SuiClientTypes.GetBalanceResponse> {\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\t\tconst result = await this.#client.stateService.getBalance(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tcoinType: (await this.mvr.resolveType({ type: coinType, signal: options.signal })).type,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tbalance: result.response.balance?.balance?.toString() ?? '0',\n\t\t\t\tcoinType: result.response.balance?.coinType ?? coinType,\n\t\t\t\tcoinBalance: result.response.balance?.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: result.response.balance?.addressBalance?.toString() ?? '0',\n\t\t\t},\n\t\t};\n\t}\n\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\tlet response;\n\t\ttry {\n\t\t\t({ response } = await this.#client.stateService.getCoinInfo(\n\t\t\t\t{\n\t\t\t\t\tcoinType,\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t));\n\t\t} catch (error) {\n\t\t\t// Don't swallow cancellation — only treat the coin as missing on real errors.\n\t\t\tif (options.signal?.aborted) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\tif (!response.metadata) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: response.metadata.id ?? null,\n\t\t\t\tdecimals: response.metadata.decimals ?? 0,\n\t\t\t\tname: response.metadata.name ?? '',\n\t\t\t\tsymbol: response.metadata.symbol ?? '',\n\t\t\t\tdescription: response.metadata.description ?? '',\n\t\t\t\ticonUrl: response.metadata.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listBalances(\n\t\toptions: SuiClientTypes.ListBalancesOptions,\n\t): Promise<SuiClientTypes.ListBalancesResponse> {\n\t\tconst result = await this.#client.stateService.listBalances(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\thasNextPage: !!result.response.nextPageToken,\n\t\t\tcursor: result.response.nextPageToken ? toBase64(result.response.nextPageToken) : null,\n\t\t\tbalances: result.response.balances.map((balance) => ({\n\t\t\t\tbalance: balance.balance?.toString() ?? '0',\n\t\t\t\tcoinType: balance.coinType!,\n\t\t\t\tcoinBalance: balance.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: balance.addressBalance?.toString() ?? '0',\n\t\t\t})),\n\t\t};\n\t}\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst { response } = await this.#client.ledgerService.getTransaction(\n\t\t\t{\n\t\t\t\tdigest: options.digest,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tif (!response.transaction) {\n\t\t\tthrow new Error(`Transaction ${options.digest} not found`);\n\t\t}\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcTransactionResponse(response.transaction, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t);\n\t}\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst { response } = await this.#client.transactionExecutionService.executeTransaction(\n\t\t\t{\n\t\t\t\ttransaction: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsignatures: options.signatures.map((signature) => ({\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcTransactionResponse(response.transaction!, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t);\n\t}\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include> & { doGasSelection?: boolean },\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\t// The simulated transaction is nested one level deeper in the response\n\t\tconst paths = transactionReadMaskPaths(options.include, 'transaction.');\n\t\tif (options.include?.commandResults) {\n\t\t\tpaths.push('command_outputs');\n\t\t}\n\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.prepareForSerialization({ client: this });\n\t\t}\n\n\t\t// A gas payment explicitly set to an empty list means gas is paid from the sender's\n\t\t// address balance, so the server needs to perform gas selection rather than simulating\n\t\t// with a mocked gas coin.\n\t\tconst doGasSelection =\n\t\t\toptions.doGasSelection ??\n\t\t\t(options.transaction instanceof Uint8Array\n\t\t\t\t? transactionBytesHaveEmptyGasPayment(options.transaction)\n\t\t\t\t: options.transaction.getData().gasData.payment?.length === 0);\n\n\t\tconst { response } = await this.#client.transactionExecutionService.simulateTransaction(\n\t\t\t{\n\t\t\t\ttransaction:\n\t\t\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tbcs: {\n\t\t\t\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: transactionToGrpcTransaction(options.transaction),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t\tdoGasSelection,\n\t\t\t\tchecks:\n\t\t\t\t\toptions.checksEnabled === false\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcSimulateTransactionResponse(response, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => SimulateTransactionResponse.toJson(response),\n\t\t);\n\t}\n\tasync getReferenceGasPrice(\n\t\toptions?: SuiClientTypes.GetReferenceGasPriceOptions,\n\t): Promise<SuiClientTypes.GetReferenceGasPriceResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: ['reference_gas_price'],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\treturn {\n\t\t\treferenceGasPrice: response.response.epoch?.referenceGasPrice?.toString() ?? '',\n\t\t};\n\t}\n\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: { paths: ['protocol_config'] },\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst protocolConfig = response.response.epoch?.protocolConfig;\n\t\tif (!protocolConfig) {\n\t\t\tthrow new Error('Protocol config not found in response');\n\t\t}\n\n\t\tconst featureFlags: Record<string, boolean> = { ...protocolConfig.featureFlags };\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tif (protocolConfig.attributes) {\n\t\t\tfor (const [key, value] of Object.entries(protocolConfig.attributes)) {\n\t\t\t\tattributes[key] = value ?? null;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: protocolConfig.protocolVersion?.toString() ?? (null as never),\n\t\t\t\tfeatureFlags,\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'system_state.version',\n\t\t\t\t\t\t'system_state.epoch',\n\t\t\t\t\t\t'system_state.protocol_version',\n\t\t\t\t\t\t'system_state.reference_gas_price',\n\t\t\t\t\t\t'system_state.epoch_start_timestamp_ms',\n\t\t\t\t\t\t'system_state.safe_mode',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_computation_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rebates',\n\t\t\t\t\t\t'system_state.safe_mode_non_refundable_storage_fee',\n\t\t\t\t\t\t'system_state.parameters',\n\t\t\t\t\t\t'system_state.storage_fund',\n\t\t\t\t\t\t'system_state.stake_subsidy',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst epoch = response.response.epoch;\n\t\tconst systemState = epoch?.systemState;\n\t\tif (!systemState) {\n\t\t\tthrow new Error('System state not found in response');\n\t\t}\n\n\t\tconst startMs = epoch?.start?.seconds\n\t\t\t? Number(epoch.start.seconds) * 1000 + Math.floor((epoch.start.nanos || 0) / 1_000_000)\n\t\t\t: systemState.epochStartTimestampMs\n\t\t\t\t? Number(systemState.epochStartTimestampMs)\n\t\t\t\t: (null as never);\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.version?.toString() ?? (null as never),\n\t\t\t\tepoch: systemState.epoch?.toString() ?? (null as never),\n\t\t\t\tprotocolVersion: systemState.protocolVersion?.toString() ?? (null as never),\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: startMs.toString(),\n\t\t\t\tsafeMode: systemState.safeMode ?? false,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeComputationRewards:\n\t\t\t\t\tsystemState.safeModeComputationRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates?.toString() ?? (null as never),\n\t\t\t\tsafeModeNonRefundableStorageFee:\n\t\t\t\t\tsystemState.safeModeNonRefundableStorageFee?.toString() ?? (null as never),\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.parameters?.epochDurationMs?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyStartEpoch:\n\t\t\t\t\t\tsystemState.parameters?.stakeSubsidyStartEpoch?.toString() ?? (null as never),\n\t\t\t\t\tmaxValidatorCount:\n\t\t\t\t\t\tsystemState.parameters?.maxValidatorCount?.toString() ?? (null as never),\n\t\t\t\t\tminValidatorJoiningStake:\n\t\t\t\t\t\tsystemState.parameters?.minValidatorJoiningStake?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeThreshold:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeThreshold?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeGracePeriod:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeGracePeriod?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates:\n\t\t\t\t\t\tsystemState.storageFund?.totalObjectStorageRebates?.toString() ?? (null as never),\n\t\t\t\t\tnonRefundableBalance:\n\t\t\t\t\t\tsystemState.storageFund?.nonRefundableBalance?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidy?.balance?.toString() ?? (null as never),\n\t\t\t\t\tdistributionCounter:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.distributionCounter?.toString() ?? (null as never),\n\t\t\t\t\tcurrentDistributionAmount:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.currentDistributionAmount?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyPeriodLength:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyPeriodLength?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyDecreaseRate:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyDecreaseRate ?? (null as never),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listDynamicFields(\n\t\toptions: SuiClientTypes.ListDynamicFieldsOptions,\n\t): Promise<SuiClientTypes.ListDynamicFieldsResponse> {\n\t\treturn this.#client.listDynamicFields(options);\n\t}\n\n\tasync listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst paths = transactionReadMaskPaths(options.include);\n\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\tconst pagination = resolvePagination(options);\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst call = this.#client.ledgerService.listTransactions(\n\t\t\t{\n\t\t\t\treadMask: { paths },\n\t\t\t\tfilter: filter && toGrpcTransactionFilter(filter),\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst transactions: SuiClientTypes.TransactionResult<Include>[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.transaction) {\n\t\t\t\tif (transactions.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\ttransactions.push(\n\t\t\t\t\t\tparseGrpcTransactionResponse(frame.transaction, { include: options.include }),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\ttransactions,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\n\t}\n\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst pagination = resolvePagination(options);\n\t\tconst call = this.#client.ledgerService.listEvents(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'package_id',\n\t\t\t\t\t\t'module',\n\t\t\t\t\t\t'sender',\n\t\t\t\t\t\t'event_type',\n\t\t\t\t\t\t'contents',\n\t\t\t\t\t\t'json',\n\t\t\t\t\t\t'checkpoint',\n\t\t\t\t\t\t'transaction_digest',\n\t\t\t\t\t\t'event_index',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tfilter: options.filter\n\t\t\t\t\t? toGrpcEventFilter(await resolveEventFilter(this.mvr, options.filter, options.signal))\n\t\t\t\t\t: undefined,\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst events: SuiClientTypes.EventEntry[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.event) {\n\t\t\t\tif (events.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\tconst event = frame.event;\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\t\teventType: normalizeStructTag(event.eventType!),\n\t\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) as Record<string, unknown>) : null,\n\t\t\t\t\t\tcheckpoint: event.checkpoint?.toString() ?? null,\n\t\t\t\t\t\ttransactionDigest: event.transactionDigest!,\n\t\t\t\t\t\teventIndex: event.eventIndex!,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\tevents,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\n\t}\n\n\tasync verifyZkLoginSignature(\n\t\toptions: SuiClientTypes.VerifyZkLoginSignatureOptions,\n\t): Promise<SuiClientTypes.ZkLoginVerifyResponse> {\n\t\tconst messageBytes = fromBase64(options.bytes);\n\n\t\t// For PersonalMessage, the server expects BCS-encoded vector<u8>\n\t\t// For TransactionData, the server expects the raw BCS-encoded TransactionData as-is\n\t\tconst messageValue =\n\t\t\toptions.intentScope === 'PersonalMessage'\n\t\t\t\t? bcs.byteVector().serialize(messageBytes).toBytes()\n\t\t\t\t: messageBytes;\n\n\t\tconst { response } = await this.#client.signatureVerificationService.verifySignature(\n\t\t\t{\n\t\t\t\tmessage: {\n\t\t\t\t\tname: options.intentScope,\n\t\t\t\t\tvalue: messageValue,\n\t\t\t\t},\n\t\t\t\tsignature: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(options.signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taddress: options.address,\n\t\t\t\tjwks: [],\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tsuccess: response.isValid ?? false,\n\t\t\terrors: response.reason ? [response.reason] : [],\n\t\t};\n\t}\n\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name =\n\t\t\t(\n\t\t\t\tawait this.#client.nameService.reverseLookupName(\n\t\t\t\t\t{\n\t\t\t\t\t\taddress: options.address,\n\t\t\t\t\t},\n\t\t\t\t\t{ abort: options.signal },\n\t\t\t\t)\n\t\t\t).response.record?.name ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\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 { response } = await this.#client.movePackageService.getFunction(\n\t\t\t{\n\t\t\t\tpackageId: resolvedPackageId,\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tlet visibility: 'public' | 'private' | 'friend' | 'unknown' = 'unknown';\n\n\t\tswitch (response.function?.visibility) {\n\t\t\tcase FunctionDescriptor_Visibility.PUBLIC:\n\t\t\t\tvisibility = 'public';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.PRIVATE:\n\t\t\t\tvisibility = 'private';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.FRIEND:\n\t\t\t\tvisibility = 'friend';\n\t\t\t\tbreak;\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: response.function?.name!,\n\t\t\t\tvisibility,\n\t\t\t\tisEntry: response.function?.isEntry ?? false,\n\t\t\t\ttypeParameters:\n\t\t\t\t\tresponse.function?.typeParameters?.map(({ constraints }) => ({\n\t\t\t\t\t\tisPhantom: false,\n\t\t\t\t\t\tconstraints:\n\t\t\t\t\t\t\tconstraints.map((constraint) => {\n\t\t\t\t\t\t\t\tswitch (constraint) {\n\t\t\t\t\t\t\t\t\tcase Ability.COPY:\n\t\t\t\t\t\t\t\t\t\treturn 'copy';\n\t\t\t\t\t\t\t\t\tcase Ability.DROP:\n\t\t\t\t\t\t\t\t\t\treturn 'drop';\n\t\t\t\t\t\t\t\t\tcase Ability.STORE:\n\t\t\t\t\t\t\t\t\t\treturn 'store';\n\t\t\t\t\t\t\t\t\tcase Ability.KEY:\n\t\t\t\t\t\t\t\t\t\treturn 'key';\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn 'unknown';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}) ?? [],\n\t\t\t\t\t})) ?? [],\n\t\t\t\tparameters:\n\t\t\t\t\tresponse.function?.parameters?.map((param) => parseNormalizedSuiMoveType(param)) ?? [],\n\t\t\t\treturns: response.function?.returns?.map((ret) => parseNormalizedSuiMoveType(ret)) ?? [],\n\t\t\t},\n\t\t};\n\t}\n\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\treturn raceSignal(\n\t\t\tPromise.resolve(\n\t\t\t\tthis.cache.read(['chainIdentifier'], async () => {\n\t\t\t\t\tconst { response } = await this.#client.ledgerService.getServiceInfo({});\n\t\t\t\t\tif (!response.chainId) {\n\t\t\t\t\t\tthrow new Error('Chain identifier not found in service info');\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchainIdentifier: response.chainId,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t),\n\t\t\toptions?.signal,\n\t\t);\n\t}\n\n\tresolveTransactionPlugin() {\n\t\tconst client = this.#client;\n\t\treturn async function resolveTransactionData(\n\t\t\ttransactionData: TransactionDataBuilder,\n\t\t\toptions: BuildTransactionOptions,\n\t\t\tnext: () => Promise<void>,\n\t\t) {\n\t\t\tconst snapshot = transactionData.snapshot();\n\t\t\t// If sender is not set, use a dummy address for resolution purposes\n\t\t\t// The resolved transaction will not include the sender if it wasn't set originally\n\t\t\tif (!snapshot.sender) {\n\t\t\t\tsnapshot.sender = '0x0000000000000000000000000000000000000000000000000000000000000000';\n\t\t\t}\n\t\t\tconst grpcTransaction = transactionDataToGrpcTransaction(snapshot);\n\t\t\tconst doGasSelection =\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\t(snapshot.gasData.budget == null || snapshot.gasData.payment == null);\n\n\t\t\tlet response;\n\t\t\ttry {\n\t\t\t\tconst result = await client.transactionExecutionService.simulateTransaction({\n\t\t\t\t\ttransaction: grpcTransaction,\n\t\t\t\t\tdoGasSelection,\n\t\t\t\t\t// Kind-only txns are never executed directly and do not have sender, so skip validation checks.\n\t\t\t\t\tchecks: options.onlyTransactionKind\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths: [\n\t\t\t\t\t\t\t'transaction.transaction.sender',\n\t\t\t\t\t\t\t'transaction.transaction.gas_payment',\n\t\t\t\t\t\t\t'transaction.transaction.expiration',\n\t\t\t\t\t\t\t'transaction.transaction.kind',\n\t\t\t\t\t\t\t'transaction.effects.status',\n\t\t\t\t\t\t\t'transaction.effects.epoch',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tresponse = result.response;\n\t\t\t} catch (error) {\n\t\t\t\t// https://github.com/timostamm/protobuf-ts/pull/739\n\t\t\t\tif (error instanceof Error && error.message) {\n\t\t\t\t\tthrow new SimulationError(decodeURIComponent(error.message), { cause: error });\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\tresponse.transaction?.effects?.status &&\n\t\t\t\t!response.transaction.effects.status.success\n\t\t\t) {\n\t\t\t\tconst executionError = response.transaction.effects.status.error\n\t\t\t\t\t? parseGrpcExecutionError(response.transaction.effects.status.error)\n\t\t\t\t\t: undefined;\n\t\t\t\tconst errorMessage = executionError?.message ?? 'Transaction failed';\n\t\t\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\t\t\texecutionError,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!response.transaction?.transaction) {\n\t\t\t\tthrow new Error('simulateTransaction did not return resolved transaction data');\n\t\t\t}\n\n\t\t\tapplyGrpcResolvedTransaction(transactionData, response.transaction.transaction, options);\n\t\t\tawait setAddressBalanceTransactionExpirationFromSimulatedEpoch({\n\t\t\t\ttransactionData,\n\t\t\t\tclient,\n\t\t\t\tepoch: response.transaction.effects?.epoch,\n\t\t\t\toriginalTransactionData: snapshot,\n\t\t\t\tisTransactionKindOnly: !!options.onlyTransactionKind,\n\t\t\t\tdoGasSelection,\n\t\t\t});\n\n\t\t\treturn await next();\n\t\t};\n\t}\n}\n\nfunction toGrpcQueryOptions(pagination: ResolvedPagination, limit: number): QueryOptions {\n\treturn {\n\t\tlimit,\n\t\tordering: pagination.descending ? Ordering.DESCENDING : Ordering.ASCENDING,\n\t\tafter: pagination.after ? fromBase64(pagination.after) : undefined,\n\t\tbefore: pagination.before ? fromBase64(pagination.before) : undefined,\n\t};\n}\n\nfunction transactionReadMaskPaths(\n\tinclude: SuiClientTypes.TransactionInclude | undefined,\n\tprefix = '',\n): string[] {\n\tconst paths = ['digest', 'transaction.digest', 'signatures', 'effects.status'];\n\n\tif (include?.transaction) {\n\t\tpaths.push(\n\t\t\t'transaction.sender',\n\t\t\t'transaction.gas_payment',\n\t\t\t'transaction.expiration',\n\t\t\t'transaction.kind',\n\t\t);\n\t}\n\tif (include?.bcs) {\n\t\tpaths.push('transaction.bcs');\n\t}\n\tif (include?.balanceChanges) {\n\t\tpaths.push('balance_changes');\n\t}\n\tif (include?.effects) {\n\t\tpaths.push('effects');\n\t}\n\tif (include?.events) {\n\t\tpaths.push('events');\n\t}\n\tif (include?.objectTypes) {\n\t\t// Use effects.changed_objects to match JSON-RPC behavior (which uses objectChanges)\n\t\tpaths.push('effects.changed_objects.object_type');\n\t\tpaths.push('effects.changed_objects.object_id');\n\t}\n\n\treturn prefix ? paths.map((path) => prefix + path) : paths;\n}\n\nfunction withProtoJson<Result>(\n\tresult: Result,\n\tinclude: ({ protoJson?: boolean } & object) | undefined,\n\tgetProtoJson: () => unknown,\n): Result {\n\tif (!include?.protoJson) {\n\t\treturn result;\n\t}\n\n\treturn {\n\t\t...result,\n\t\tprotoJson: getProtoJson(),\n\t};\n}\n\nfunction mapDisplayProto(\n\tinclude: boolean | undefined,\n\tdisplay: { output?: Value; errors?: Value } | undefined,\n): SuiClientTypes.Display | null | undefined {\n\tif (!include) return undefined;\n\tif (display === undefined) return null;\n\treturn {\n\t\toutput:\n\t\t\tdisplay.output !== undefined\n\t\t\t\t? (Value.toJson(display.output) as Record<string, unknown> | null)\n\t\t\t\t: null,\n\t\terrors:\n\t\t\tdisplay.errors !== undefined\n\t\t\t\t? (Value.toJson(display.errors) as Record<string, string> | null)\n\t\t\t\t: null,\n\t};\n}\n\nfunction mapOwner(owner: Owner | null | undefined): SuiClientTypes.ObjectOwner | null {\n\tif (!owner) {\n\t\treturn null;\n\t}\n\tif (owner.kind === Owner_OwnerKind.IMMUTABLE) {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.ADDRESS) {\n\t\treturn {\n\t\t\tAddressOwner: owner.address!,\n\t\t\t$kind: 'AddressOwner',\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.OBJECT) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.address!,\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.SHARED) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.version?.toString()!,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.CONSENSUS_ADDRESS) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.version?.toString()!,\n\t\t\t\towner: owner.address!,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`Unknown owner kind ${JSON.stringify(owner, (_k, v) => (typeof v === 'bigint' ? v.toString() : v))}`,\n\t);\n}\n\nfunction parseGrpcExecutionError(error: GrpcExecutionError): SuiClientTypes.ExecutionError {\n\tconst message = error.description ?? 'Unknown error';\n\tconst command = error.command != null ? Number(error.command) : undefined;\n\tconst details = error.errorDetails;\n\n\tswitch (details?.oneofKind) {\n\t\tcase 'abort': {\n\t\t\tconst abort = details.abort;\n\t\t\tconst cleverError = abort.cleverError;\n\t\t\treturn {\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: abort.location,\n\t\t\t\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\t\t\t\tcleverError: cleverError\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tlineNumber:\n\t\t\t\t\t\t\t\t\tcleverError.lineNumber != null ? Number(cleverError.lineNumber) : undefined,\n\t\t\t\t\t\t\t\tconstantName: cleverError.constantName,\n\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\tcleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t\t\t\t? cleverError.value.rendered\n\t\t\t\t\t\t\t\t\t\t: undefined,\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\tcommand,\n\t\t\t\tMoveAbort: parseMoveAbort(abort),\n\t\t\t};\n\t\t}\n\n\t\tcase 'sizeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tsize: Number(details.sizeError.size ?? 0n),\n\t\t\t\t\tmaxSize: Number(details.sizeError.maxSize ?? 0n),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'commandArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CommandArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCommandArgumentError: {\n\t\t\t\t\targument: details.commandArgumentError.argument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.commandArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'typeArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'TypeArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tTypeArgumentError: {\n\t\t\t\t\ttypeArgument: details.typeArgumentError.typeArgument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.typeArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'packageUpgradeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'PackageUpgradeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tPackageUpgradeError: {\n\t\t\t\t\tname: mapErrorName(details.packageUpgradeError.kind),\n\t\t\t\t\tpackageId: details.packageUpgradeError.packageId,\n\t\t\t\t\tdigest: details.packageUpgradeError.digest,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'indexError':\n\t\t\treturn {\n\t\t\t\t$kind: 'IndexError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tIndexError: {\n\t\t\t\t\tindex: details.indexError.index,\n\t\t\t\t\tsubresult: details.indexError.subresult,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'coinDenyListError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tcoinType: details.coinDenyListError.coinType!,\n\t\t\t\t\taddress: details.coinDenyListError.address,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'congestedObjects':\n\t\t\treturn {\n\t\t\t\t$kind: 'CongestedObjects',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCongestedObjects: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjects: details.congestedObjects.objects,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'objectId':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjectId: details.objectId,\n\t\t\t\t},\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\t}\n}\n\nfunction parseMoveAbort(abort: GrpcMoveAbort): SuiClientTypes.MoveAbort {\n\treturn {\n\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\tlocation: { ...abort.location },\n\t\tcleverError: abort.cleverError\n\t\t\t? {\n\t\t\t\t\terrorCode:\n\t\t\t\t\t\tabort.cleverError.errorCode != null ? Number(abort.cleverError.errorCode) : undefined,\n\t\t\t\t\tlineNumber:\n\t\t\t\t\t\tabort.cleverError.lineNumber != null ? Number(abort.cleverError.lineNumber) : undefined,\n\t\t\t\t\tconstantName: abort.cleverError.constantName,\n\t\t\t\t\tconstantType: abort.cleverError.constantType,\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tabort.cleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t? abort.cleverError.value.rendered\n\t\t\t\t\t\t\t: abort.cleverError.value?.oneofKind === 'raw'\n\t\t\t\t\t\t\t\t? toBase64(abort.cleverError.value.raw)\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}\n\t\t\t: undefined,\n\t};\n}\n\nfunction mapErrorName(\n\tkind:\n\t\t| ExecutionError_ExecutionErrorKind\n\t\t| CommandArgumentError_CommandArgumentErrorKind\n\t\t| TypeArgumentError_TypeArgumentErrorKind\n\t\t| PackageUpgradeError_PackageUpgradeErrorKind\n\t\t| undefined,\n): string {\n\tif (kind == null) {\n\t\treturn 'Unknown';\n\t}\n\tconst name = CommandArgumentError_CommandArgumentErrorKind[kind];\n\tif (!name || name.endsWith('_UNKNOWN')) {\n\t\treturn 'Unknown';\n\t}\n\treturn name\n\t\t.split('_')\n\t\t.map((word) => word.charAt(0) + word.slice(1).toLowerCase())\n\t\t.join('');\n}\n\nfunction mapIdOperation(\n\toperation: ChangedObject_IdOperation | undefined,\n): null | 'Created' | 'Deleted' | 'Unknown' | 'None' {\n\tif (operation == null) {\n\t\treturn null;\n\t}\n\tswitch (operation) {\n\t\tcase ChangedObject_IdOperation.CREATED:\n\t\t\treturn 'Created';\n\t\tcase ChangedObject_IdOperation.DELETED:\n\t\t\treturn 'Deleted';\n\t\tcase ChangedObject_IdOperation.NONE:\n\t\tcase ChangedObject_IdOperation.ID_OPERATION_UNKNOWN:\n\t\t\treturn 'None';\n\t\tdefault:\n\t\t\toperation satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapInputObjectState(\n\tstate: ChangedObject_InputObjectState | undefined,\n): null | 'Exists' | 'DoesNotExist' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_InputObjectState.EXISTS:\n\t\t\treturn 'Exists';\n\t\tcase ChangedObject_InputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_InputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapOutputObjectState(\n\tstate: ChangedObject_OutputObjectState | undefined,\n): null | 'ObjectWrite' | 'PackageWrite' | 'DoesNotExist' | 'AccumulatorWriteV1' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_OutputObjectState.OBJECT_WRITE:\n\t\t\treturn 'ObjectWrite';\n\t\tcase ChangedObject_OutputObjectState.PACKAGE_WRITE:\n\t\t\treturn 'PackageWrite';\n\t\tcase ChangedObject_OutputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_OutputObjectState.ACCUMULATOR_WRITE:\n\t\t\treturn 'AccumulatorWriteV1';\n\t\tcase ChangedObject_OutputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapUnchangedConsensusObjectKind(\n\tkind: UnchangedConsensusObject_UnchangedConsensusObjectKind | undefined,\n): null | SuiClientTypes.UnchangedConsensusObject['kind'] {\n\tif (kind == null) {\n\t\treturn null;\n\t}\n\tswitch (kind) {\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.UNCHANGED_CONSENSUS_OBJECT_KIND_UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_ONLY_ROOT:\n\t\t\treturn 'ReadOnlyRoot';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.MUTATE_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'MutateConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'ReadConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.CANCELED:\n\t\t\treturn 'Cancelled';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.PER_EPOCH_CONFIG:\n\t\t\treturn 'PerEpochConfig';\n\t\tdefault:\n\t\t\tkind satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nexport function parseTransactionEffects({\n\teffects,\n}: {\n\teffects: TransactionEffects | undefined;\n}): SuiClientTypes.TransactionEffects | null {\n\tif (!effects) {\n\t\treturn null;\n\t}\n\n\tconst changedObjects = effects.changedObjects.map((change): SuiClientTypes.ChangedObject => {\n\t\treturn {\n\t\t\tobjectId: change.objectId!,\n\t\t\tinputState: mapInputObjectState(change.inputState)!,\n\t\t\tinputVersion: change.inputVersion?.toString() ?? null,\n\t\t\tinputDigest: change.inputDigest ?? null,\n\t\t\tinputOwner: mapOwner(change.inputOwner),\n\t\t\toutputState: mapOutputObjectState(change.outputState)!,\n\t\t\toutputVersion: change.outputVersion?.toString() ?? null,\n\t\t\toutputDigest: change.outputDigest ?? null,\n\t\t\toutputOwner: mapOwner(change.outputOwner),\n\t\t\tidOperation: mapIdOperation(change.idOperation)!,\n\t\t};\n\t});\n\n\treturn {\n\t\tbcs: effects.bcs?.value!,\n\n\t\tversion: 2,\n\t\tstatus: effects.status?.success\n\t\t\t? {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\terror: null,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: parseGrpcExecutionError(effects.status!.error!),\n\t\t\t\t},\n\t\tgasUsed: {\n\t\t\tcomputationCost: effects.gasUsed?.computationCost?.toString()!,\n\t\t\tstorageCost: effects.gasUsed?.storageCost?.toString()!,\n\t\t\tstorageRebate: effects.gasUsed?.storageRebate?.toString()!,\n\t\t\tnonRefundableStorageFee: effects.gasUsed?.nonRefundableStorageFee?.toString()!,\n\t\t},\n\t\ttransactionDigest: effects.transactionDigest!,\n\t\tgasObject: {\n\t\t\tobjectId: effects.gasObject?.objectId!,\n\t\t\tinputState: mapInputObjectState(effects.gasObject?.inputState)!,\n\t\t\tinputVersion: effects.gasObject?.inputVersion?.toString() ?? null,\n\t\t\tinputDigest: effects.gasObject?.inputDigest ?? null,\n\t\t\tinputOwner: mapOwner(effects.gasObject?.inputOwner),\n\t\t\toutputState: mapOutputObjectState(effects.gasObject?.outputState)!,\n\t\t\toutputVersion: effects.gasObject?.outputVersion?.toString() ?? null,\n\t\t\toutputDigest: effects.gasObject?.outputDigest ?? null,\n\t\t\toutputOwner: mapOwner(effects.gasObject?.outputOwner),\n\t\t\tidOperation: mapIdOperation(effects.gasObject?.idOperation)!,\n\t\t},\n\t\teventsDigest: effects.eventsDigest ?? null,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion?.toString() ?? null,\n\t\tchangedObjects,\n\t\tunchangedConsensusObjects: effects.unchangedConsensusObjects.map(\n\t\t\t(object): SuiClientTypes.UnchangedConsensusObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: mapUnchangedConsensusObjectKind(object.kind)!,\n\t\t\t\t\t// TODO: we are inconsistent about id vs objectId\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString() ?? null,\n\t\t\t\t\tdigest: object.digest ?? null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxiliaryDataDigest ?? null,\n\t};\n}\n\nexport function parseGrpcTransactionResponse<\n\tInclude extends SuiClientTypes.TransactionInclude = {},\n>(\n\ttransaction: ExecutedTransaction,\n\toptions?: {\n\t\tinclude?: Include & SuiClientTypes.TransactionInclude;\n\t},\n): SuiClientTypes.TransactionResult<Include> {\n\tconst include = options?.include;\n\tconst objectTypes: Record<string, string> = {};\n\tif (include?.objectTypes) {\n\t\ttransaction.effects?.changedObjects?.forEach((change) => {\n\t\t\tif (change.objectId && change.objectType) {\n\t\t\t\tobjectTypes[change.objectId] = change.objectType;\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tif (include?.transaction) {\n\t\tconst tx = transaction.transaction;\n\n\t\tif (!tx) {\n\t\t\tthrow new Error('Transaction data is required but missing from gRPC response');\n\t\t}\n\n\t\tconst resolved = grpcTransactionToTransactionData(tx);\n\t\ttransactionData = {\n\t\t\tgasData: resolved.gasData,\n\t\t\tsender: resolved.sender,\n\t\t\texpiration: resolved.expiration,\n\t\t\tcommands: resolved.commands,\n\t\t\tinputs: resolved.inputs,\n\t\t\tversion: resolved.version,\n\t\t};\n\t}\n\n\tconst bcsBytes = include?.bcs ? transaction.transaction?.bcs?.value : undefined;\n\n\tconst effects = include?.effects\n\t\t? parseTransactionEffects({\n\t\t\t\teffects: transaction.effects,\n\t\t\t})\n\t\t: undefined;\n\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status?.success\n\t\t? { success: true, error: null }\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: transaction.effects?.status?.error\n\t\t\t\t\t? parseGrpcExecutionError(transaction.effects.status.error)\n\t\t\t\t\t: {\n\t\t\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\t\t\tmessage: 'Transaction failed',\n\t\t\t\t\t\t\tUnknown: null,\n\t\t\t\t\t\t},\n\t\t\t};\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest!,\n\t\tepoch: transaction.effects?.epoch?.toString() ?? null,\n\t\tstatus,\n\t\teffects: effects 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: transaction.signatures?.map((sig) => toBase64(sig.bcs?.value!)) ?? [],\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: change.coinType!,\n\t\t\t\t\taddress: change.address!,\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?.events.map((event) => ({\n\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\teventType: event.eventType!,\n\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) 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 parseGrpcSimulateTransactionResponse<\n\tInclude extends SuiClientTypes.SimulateTransactionInclude = {},\n>(\n\tresponse: SimulateTransactionResponse,\n\toptions?: {\n\t\tinclude?: Include & SuiClientTypes.SimulateTransactionInclude;\n\t},\n): SuiClientTypes.SimulateTransactionResult<Include> {\n\tconst include = options?.include;\n\tconst transactionResult = parseGrpcTransactionResponse(response.transaction!, { include });\n\n\tconst commandResults =\n\t\tinclude?.commandResults && response.commandOutputs\n\t\t\t? response.commandOutputs.map((output) => ({\n\t\t\t\t\treturnValues: (output.returnValues ?? []).map((rv) => ({\n\t\t\t\t\t\tbcs: rv.value?.value ?? null,\n\t\t\t\t\t})),\n\t\t\t\t\tmutatedReferences: (output.mutatedByRef ?? []).map((mr) => ({\n\t\t\t\t\t\tbcs: mr.value?.value ?? null,\n\t\t\t\t\t})),\n\t\t\t\t}))\n\t\t\t: undefined;\n\n\tif (transactionResult.$kind === 'Transaction') {\n\t\treturn {\n\t\t\t$kind: 'Transaction',\n\t\t\tTransaction: transactionResult.Transaction,\n\t\t\tcommandResults:\n\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t};\n\t}\n\n\treturn {\n\t\t$kind: 'FailedTransaction',\n\t\tFailedTransaction: transactionResult.FailedTransaction,\n\t\tcommandResults:\n\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: OpenSignature): SuiClientTypes.OpenSignature {\n\tlet reference: 'mutable' | 'immutable' | null = null;\n\n\tif (type.reference === OpenSignature_Reference.IMMUTABLE) {\n\t\treference = 'immutable';\n\t} else if (type.reference === OpenSignature_Reference.MUTABLE) {\n\t\treference = 'mutable';\n\t}\n\n\treturn {\n\t\treference,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type.body!),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(type: OpenSignatureBody): SuiClientTypes.OpenSignatureBody {\n\tswitch (type.type) {\n\t\tcase OpenSignatureBody_Type.TYPE_UNKNOWN:\n\t\t\treturn { $kind: 'unknown' };\n\t\tcase OpenSignatureBody_Type.ADDRESS:\n\t\t\treturn { $kind: 'address' };\n\t\tcase OpenSignatureBody_Type.BOOL:\n\t\t\treturn { $kind: 'bool' };\n\t\tcase OpenSignatureBody_Type.U8:\n\t\t\treturn { $kind: 'u8' };\n\t\tcase OpenSignatureBody_Type.U16:\n\t\t\treturn { $kind: 'u16' };\n\t\tcase OpenSignatureBody_Type.U32:\n\t\t\treturn { $kind: 'u32' };\n\t\tcase OpenSignatureBody_Type.U64:\n\t\t\treturn { $kind: 'u64' };\n\t\tcase OpenSignatureBody_Type.U128:\n\t\t\treturn { $kind: 'u128' };\n\t\tcase OpenSignatureBody_Type.U256:\n\t\t\treturn { $kind: 'u256' };\n\t\tcase OpenSignatureBody_Type.VECTOR:\n\t\t\treturn {\n\t\t\t\t$kind: 'vector',\n\t\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.typeParameterInstantiation[0]),\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.DATATYPE:\n\t\t\treturn {\n\t\t\t\t$kind: 'datatype',\n\t\t\t\tdatatype: {\n\t\t\t\t\ttypeName: type.typeName!,\n\t\t\t\t\ttypeParameters: type.typeParameterInstantiation.map((t) =>\n\t\t\t\t\t\tparseNormalizedSuiMoveTypeBody(t),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.TYPE_PARAMETER:\n\t\t\treturn {\n\t\t\t\t$kind: 'typeParameter',\n\t\t\t\tindex: type.typeParameter!,\n\t\t\t};\n\t\tdefault:\n\t\t\treturn { $kind: 'unknown' };\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core.mjs","names":["#client","bcs"],"sources":["../../src/grpc/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CoreClientOptions, SuiClientTypes } from '../client/index.js';\nimport { CoreClient, formatMoveAbortMessage, SimulationError } from '../client/index.js';\nimport { raceSignal } from '../client/mvr.js';\nimport type { SuiGrpcClient } from './client.js';\nimport type { Owner } from './proto/sui/rpc/v2/owner.js';\nimport { Owner_OwnerKind } from './proto/sui/rpc/v2/owner.js';\nimport { chunk, fromBase64, toBase64 } from '@mysten/utils';\nimport type { TransactionEffects } from './proto/sui/rpc/v2/effects.js';\nimport {\n\tUnchangedConsensusObject_UnchangedConsensusObjectKind,\n\tChangedObject_IdOperation,\n\tChangedObject_InputObjectState,\n\tChangedObject_OutputObjectState,\n} from './proto/sui/rpc/v2/effects.js';\nimport type {\n\tExecutionError as GrpcExecutionError,\n\tMoveAbort as GrpcMoveAbort,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport {\n\tExecutionError_ExecutionErrorKind,\n\tCommandArgumentError_CommandArgumentErrorKind,\n\tTypeArgumentError_TypeArgumentErrorKind,\n\tPackageUpgradeError_PackageUpgradeErrorKind,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\nimport { TransactionDataBuilder } from '../transactions/index.js';\nimport { bcs } from '../bcs/index.js';\nimport { normalizeStructTag, normalizeSuiAddress } from '../utils/sui-types.js';\nimport { SUI_TYPE_ARG } from '../utils/constants.js';\nimport type { OpenSignature, OpenSignatureBody } from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tAbility,\n\tFunctionDescriptor_Visibility,\n\tOpenSignature_Reference,\n\tOpenSignatureBody_Type,\n} from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tapplyGrpcResolvedTransaction,\n\ttransactionDataToGrpcTransaction,\n\ttransactionToGrpcTransaction,\n\tgrpcTransactionToTransactionData,\n} from '../client/transaction-resolver.js';\nimport { setAddressBalanceTransactionExpirationFromSimulatedEpoch } from '../client/address-balance-transaction-expiration.js';\nimport { transactionBytesHaveEmptyGasPayment } from '../client/utils.js';\nimport { Value } from './proto/google/protobuf/struct.js';\nimport { ExecutedTransaction } from './proto/sui/rpc/v2/executed_transaction.js';\nimport {\n\tSimulateTransactionRequest_TransactionChecks,\n\tSimulateTransactionResponse,\n} from './proto/sui/rpc/v2/transaction_execution_service.js';\nimport type { QueryEnd, QueryOptions } from './proto/sui/rpc/v2/query_options.js';\nimport { Ordering, QueryEndReason } from './proto/sui/rpc/v2/query_options.js';\nimport type { ResolvedPagination } from '../client/query-filters.js';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { toGrpcEventFilter, toGrpcTransactionFilter } from './filters.js';\n\nexport interface GrpcCoreClientOptions extends CoreClientOptions {\n\tclient: SuiGrpcClient;\n}\n\nexport class GrpcCoreClient extends CoreClient {\n\t#client: SuiGrpcClient;\n\tconstructor({ client, ...options }: GrpcCoreClientOptions) {\n\t\tsuper(options);\n\t\tthis.#client = client;\n\t}\n\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.GetObjectsResponse<Include>> {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tfor (const batch of batches) {\n\t\t\tconst response = await this.#client.ledgerService.batchGetObjects(\n\t\t\t\t{\n\t\t\t\t\trequests: batch.map((id) => ({ objectId: id })),\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t);\n\n\t\t\tresults.push(\n\t\t\t\t...response.response.objects.map((object): SuiClientTypes.Object<Include> | Error => {\n\t\t\t\t\tif (object.result.oneofKind === 'error') {\n\t\t\t\t\t\t// TODO: improve error handling\n\t\t\t\t\t\treturn new Error(object.result.error.message);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (object.result.oneofKind !== 'object') {\n\t\t\t\t\t\treturn new Error('Unexpected result type');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst bcsContent = object.result.object.contents?.value ?? undefined;\n\t\t\t\t\tconst objectBcs = object.result.object.bcs?.value ?? undefined;\n\n\t\t\t\t\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\t\t\t\t\tconst objectType = object.result.object.objectType;\n\t\t\t\t\tconst type =\n\t\t\t\t\t\tobjectType && objectType.includes('::')\n\t\t\t\t\t\t\t? normalizeStructTag(objectType)\n\t\t\t\t\t\t\t: (objectType ?? '');\n\n\t\t\t\t\tconst jsonContent = options.include?.json\n\t\t\t\t\t\t? object.result.object.json\n\t\t\t\t\t\t\t? (Value.toJson(object.result.object.json) as Record<string, unknown>)\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tconst displayData = mapDisplayProto(\n\t\t\t\t\t\toptions.include?.display,\n\t\t\t\t\t\tobject.result.object.display,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tobjectId: object.result.object.objectId!,\n\t\t\t\t\t\tversion: object.result.object.version?.toString()!,\n\t\t\t\t\t\tdigest: object.result.object.digest!,\n\t\t\t\t\t\tcontent: bcsContent as SuiClientTypes.Object<Include>['content'],\n\t\t\t\t\t\towner: mapOwner(object.result.object.owner)!,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tpreviousTransaction: (object.result.object.previousTransaction ??\n\t\t\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\t\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\t\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\t\t\t\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t\t\t\t\t};\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\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.ListOwnedObjectsResponse<Include>> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: options.type\n\t\t\t\t\t? (await this.mvr.resolveType({ type: options.type, signal: options.signal })).type\n\t\t\t\t\t: undefined,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst objects = response.response.objects.map(\n\t\t\t(object): SuiClientTypes.Object<Include> => ({\n\t\t\t\tobjectId: object.objectId!,\n\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\tdigest: object.digest!,\n\t\t\t\tcontent: object.contents?.value as SuiClientTypes.Object<Include>['content'],\n\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\ttype: object.objectType!,\n\t\t\t\tpreviousTransaction: (object.previousTransaction ??\n\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\tobjectBcs: object.bcs?.value as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\tjson: (options.include?.json\n\t\t\t\t\t? object.json\n\t\t\t\t\t\t? (Value.toJson(object.json) as Record<string, unknown>)\n\t\t\t\t\t\t: null\n\t\t\t\t\t: undefined) as SuiClientTypes.Object<Include>['json'],\n\t\t\t\tdisplay: mapDisplayProto(\n\t\t\t\t\toptions.include?.display,\n\t\t\t\t\tobject.display,\n\t\t\t\t) as SuiClientTypes.Object<Include>['display'],\n\t\t\t}),\n\t\t);\n\n\t\treturn {\n\t\t\tobjects,\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\tasync listCoins(\n\t\toptions: SuiClientTypes.ListCoinsOptions,\n\t): Promise<SuiClientTypes.ListCoinsResponse> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id', 'balance'];\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: `0x2::coin::Coin<${(await this.mvr.resolveType({ type: coinType, signal: options.signal })).type}>`,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tobjects: response.response.objects.map(\n\t\t\t\t(object): SuiClientTypes.Coin => ({\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\t\tdigest: object.digest!,\n\t\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\t\ttype: object.objectType!,\n\t\t\t\t\tbalance: object.balance?.toString()!,\n\t\t\t\t}),\n\t\t\t),\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\n\tasync getBalance(\n\t\toptions: SuiClientTypes.GetBalanceOptions,\n\t): Promise<SuiClientTypes.GetBalanceResponse> {\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\t\tconst result = await this.#client.stateService.getBalance(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tcoinType: (await this.mvr.resolveType({ type: coinType, signal: options.signal })).type,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tbalance: result.response.balance?.balance?.toString() ?? '0',\n\t\t\t\tcoinType: result.response.balance?.coinType ?? coinType,\n\t\t\t\tcoinBalance: result.response.balance?.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: result.response.balance?.addressBalance?.toString() ?? '0',\n\t\t\t},\n\t\t};\n\t}\n\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\tlet response;\n\t\ttry {\n\t\t\t({ response } = await this.#client.stateService.getCoinInfo(\n\t\t\t\t{\n\t\t\t\t\tcoinType,\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t));\n\t\t} catch (error) {\n\t\t\t// Don't swallow cancellation — only treat the coin as missing on real errors.\n\t\t\tif (options.signal?.aborted) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\tif (!response.metadata) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: response.metadata.id ?? null,\n\t\t\t\tdecimals: response.metadata.decimals ?? 0,\n\t\t\t\tname: response.metadata.name ?? '',\n\t\t\t\tsymbol: response.metadata.symbol ?? '',\n\t\t\t\tdescription: response.metadata.description ?? '',\n\t\t\t\ticonUrl: response.metadata.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listBalances(\n\t\toptions: SuiClientTypes.ListBalancesOptions,\n\t): Promise<SuiClientTypes.ListBalancesResponse> {\n\t\tconst result = await this.#client.stateService.listBalances(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\thasNextPage: !!result.response.nextPageToken,\n\t\t\tcursor: result.response.nextPageToken ? toBase64(result.response.nextPageToken) : null,\n\t\t\tbalances: result.response.balances.map((balance) => ({\n\t\t\t\tbalance: balance.balance?.toString() ?? '0',\n\t\t\t\tcoinType: balance.coinType!,\n\t\t\t\tcoinBalance: balance.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: balance.addressBalance?.toString() ?? '0',\n\t\t\t})),\n\t\t};\n\t}\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst { response } = await this.#client.ledgerService.getTransaction(\n\t\t\t{\n\t\t\t\tdigest: options.digest,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tif (!response.transaction) {\n\t\t\tthrow new Error(`Transaction ${options.digest} not found`);\n\t\t}\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcTransactionResponse(response.transaction, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t);\n\t}\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst { response } = await this.#client.transactionExecutionService.executeTransaction(\n\t\t\t{\n\t\t\t\ttransaction: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsignatures: options.signatures.map((signature) => ({\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcTransactionResponse(response.transaction!, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t);\n\t}\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include> & { doGasSelection?: boolean },\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\t// The simulated transaction is nested one level deeper in the response\n\t\tconst paths = transactionReadMaskPaths(options.include, 'transaction.');\n\t\tif (options.include?.commandResults) {\n\t\t\tpaths.push('command_outputs');\n\t\t}\n\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.prepareForSerialization({ client: this });\n\t\t}\n\n\t\t// A gas payment explicitly set to an empty list means gas is paid from the sender's\n\t\t// address balance, so the server needs to perform gas selection rather than simulating\n\t\t// with a mocked gas coin.\n\t\tconst doGasSelection =\n\t\t\toptions.doGasSelection ??\n\t\t\t(options.transaction instanceof Uint8Array\n\t\t\t\t? transactionBytesHaveEmptyGasPayment(options.transaction)\n\t\t\t\t: options.transaction.getData().gasData.payment?.length === 0);\n\n\t\tconst { response } = await this.#client.transactionExecutionService.simulateTransaction(\n\t\t\t{\n\t\t\t\ttransaction:\n\t\t\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tbcs: {\n\t\t\t\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: transactionToGrpcTransaction(options.transaction),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t\tdoGasSelection,\n\t\t\t\tchecks:\n\t\t\t\t\toptions.checksEnabled === false\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcSimulateTransactionResponse(response, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => SimulateTransactionResponse.toJson(response),\n\t\t);\n\t}\n\tasync getReferenceGasPrice(\n\t\toptions?: SuiClientTypes.GetReferenceGasPriceOptions,\n\t): Promise<SuiClientTypes.GetReferenceGasPriceResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: ['reference_gas_price'],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\treturn {\n\t\t\treferenceGasPrice: response.response.epoch?.referenceGasPrice?.toString() ?? '',\n\t\t};\n\t}\n\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: { paths: ['protocol_config'] },\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst protocolConfig = response.response.epoch?.protocolConfig;\n\t\tif (!protocolConfig) {\n\t\t\tthrow new Error('Protocol config not found in response');\n\t\t}\n\n\t\tconst featureFlags: Record<string, boolean> = { ...protocolConfig.featureFlags };\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tif (protocolConfig.attributes) {\n\t\t\tfor (const [key, value] of Object.entries(protocolConfig.attributes)) {\n\t\t\t\tattributes[key] = value ?? null;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: protocolConfig.protocolVersion?.toString() ?? (null as never),\n\t\t\t\tfeatureFlags,\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'system_state.version',\n\t\t\t\t\t\t'system_state.epoch',\n\t\t\t\t\t\t'system_state.protocol_version',\n\t\t\t\t\t\t'system_state.reference_gas_price',\n\t\t\t\t\t\t'system_state.epoch_start_timestamp_ms',\n\t\t\t\t\t\t'system_state.safe_mode',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_computation_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rebates',\n\t\t\t\t\t\t'system_state.safe_mode_non_refundable_storage_fee',\n\t\t\t\t\t\t'system_state.parameters',\n\t\t\t\t\t\t'system_state.storage_fund',\n\t\t\t\t\t\t'system_state.stake_subsidy',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst epoch = response.response.epoch;\n\t\tconst systemState = epoch?.systemState;\n\t\tif (!systemState) {\n\t\t\tthrow new Error('System state not found in response');\n\t\t}\n\n\t\tconst startMs = epoch?.start?.seconds\n\t\t\t? Number(epoch.start.seconds) * 1000 + Math.floor((epoch.start.nanos || 0) / 1_000_000)\n\t\t\t: systemState.epochStartTimestampMs\n\t\t\t\t? Number(systemState.epochStartTimestampMs)\n\t\t\t\t: (null as never);\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.version?.toString() ?? (null as never),\n\t\t\t\tepoch: systemState.epoch?.toString() ?? (null as never),\n\t\t\t\tprotocolVersion: systemState.protocolVersion?.toString() ?? (null as never),\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: startMs.toString(),\n\t\t\t\tsafeMode: systemState.safeMode ?? false,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeComputationRewards:\n\t\t\t\t\tsystemState.safeModeComputationRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates?.toString() ?? (null as never),\n\t\t\t\tsafeModeNonRefundableStorageFee:\n\t\t\t\t\tsystemState.safeModeNonRefundableStorageFee?.toString() ?? (null as never),\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.parameters?.epochDurationMs?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyStartEpoch:\n\t\t\t\t\t\tsystemState.parameters?.stakeSubsidyStartEpoch?.toString() ?? (null as never),\n\t\t\t\t\tmaxValidatorCount:\n\t\t\t\t\t\tsystemState.parameters?.maxValidatorCount?.toString() ?? (null as never),\n\t\t\t\t\tminValidatorJoiningStake:\n\t\t\t\t\t\tsystemState.parameters?.minValidatorJoiningStake?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeThreshold:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeThreshold?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeGracePeriod:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeGracePeriod?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates:\n\t\t\t\t\t\tsystemState.storageFund?.totalObjectStorageRebates?.toString() ?? (null as never),\n\t\t\t\t\tnonRefundableBalance:\n\t\t\t\t\t\tsystemState.storageFund?.nonRefundableBalance?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidy?.balance?.toString() ?? (null as never),\n\t\t\t\t\tdistributionCounter:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.distributionCounter?.toString() ?? (null as never),\n\t\t\t\t\tcurrentDistributionAmount:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.currentDistributionAmount?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyPeriodLength:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyPeriodLength?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyDecreaseRate:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyDecreaseRate ?? (null as never),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listDynamicFields(\n\t\toptions: SuiClientTypes.ListDynamicFieldsOptions,\n\t): Promise<SuiClientTypes.ListDynamicFieldsResponse> {\n\t\treturn this.#client.listDynamicFields(options);\n\t}\n\n\tasync listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst paths = transactionReadMaskPaths(options.include);\n\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\tconst pagination = resolvePagination(options);\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst call = this.#client.ledgerService.listTransactions(\n\t\t\t{\n\t\t\t\treadMask: { paths },\n\t\t\t\tfilter: filter && toGrpcTransactionFilter(filter),\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst transactions: SuiClientTypes.TransactionResult<Include>[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.transaction) {\n\t\t\t\tif (transactions.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\ttransactions.push(\n\t\t\t\t\t\tparseGrpcTransactionResponse(frame.transaction, { include: options.include }),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\ttransactions,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\n\t}\n\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst pagination = resolvePagination(options);\n\t\tconst call = this.#client.ledgerService.listEvents(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'package_id',\n\t\t\t\t\t\t'module',\n\t\t\t\t\t\t'sender',\n\t\t\t\t\t\t'event_type',\n\t\t\t\t\t\t'contents',\n\t\t\t\t\t\t'json',\n\t\t\t\t\t\t'checkpoint',\n\t\t\t\t\t\t'transaction_digest',\n\t\t\t\t\t\t'event_index',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tfilter: options.filter\n\t\t\t\t\t? toGrpcEventFilter(await resolveEventFilter(this.mvr, options.filter, options.signal))\n\t\t\t\t\t: undefined,\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst events: SuiClientTypes.EventEntry[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.event) {\n\t\t\t\tif (events.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\tconst event = frame.event;\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\t\teventType: normalizeStructTag(event.eventType!),\n\t\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) as Record<string, unknown>) : null,\n\t\t\t\t\t\tcheckpoint: event.checkpoint?.toString() ?? null,\n\t\t\t\t\t\ttransactionDigest: event.transactionDigest!,\n\t\t\t\t\t\teventIndex: event.eventIndex!,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\tevents,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\n\t}\n\n\tasync verifyZkLoginSignature(\n\t\toptions: SuiClientTypes.VerifyZkLoginSignatureOptions,\n\t): Promise<SuiClientTypes.ZkLoginVerifyResponse> {\n\t\tconst messageBytes = fromBase64(options.bytes);\n\n\t\t// For PersonalMessage, the server expects BCS-encoded vector<u8>\n\t\t// For TransactionData, the server expects the raw BCS-encoded TransactionData as-is\n\t\tconst messageValue =\n\t\t\toptions.intentScope === 'PersonalMessage'\n\t\t\t\t? bcs.byteVector().serialize(messageBytes).toBytes()\n\t\t\t\t: messageBytes;\n\n\t\tconst { response } = await this.#client.signatureVerificationService.verifySignature(\n\t\t\t{\n\t\t\t\tmessage: {\n\t\t\t\t\tname: options.intentScope,\n\t\t\t\t\tvalue: messageValue,\n\t\t\t\t},\n\t\t\t\tsignature: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(options.signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taddress: options.address,\n\t\t\t\tjwks: [],\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tsuccess: response.isValid ?? false,\n\t\t\terrors: response.reason ? [response.reason] : [],\n\t\t};\n\t}\n\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name =\n\t\t\t(\n\t\t\t\tawait this.#client.nameService.reverseLookupName(\n\t\t\t\t\t{\n\t\t\t\t\t\taddress: options.address,\n\t\t\t\t\t},\n\t\t\t\t\t{ abort: options.signal },\n\t\t\t\t)\n\t\t\t).response.record?.name ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\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 { response } = await this.#client.movePackageService.getFunction(\n\t\t\t{\n\t\t\t\tpackageId: resolvedPackageId,\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tlet visibility: 'public' | 'private' | 'friend' | 'unknown' = 'unknown';\n\n\t\tswitch (response.function?.visibility) {\n\t\t\tcase FunctionDescriptor_Visibility.PUBLIC:\n\t\t\t\tvisibility = 'public';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.PRIVATE:\n\t\t\t\tvisibility = 'private';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.FRIEND:\n\t\t\t\tvisibility = 'friend';\n\t\t\t\tbreak;\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: response.function?.name!,\n\t\t\t\tvisibility,\n\t\t\t\tisEntry: response.function?.isEntry ?? false,\n\t\t\t\ttypeParameters:\n\t\t\t\t\tresponse.function?.typeParameters?.map(({ constraints }) => ({\n\t\t\t\t\t\tisPhantom: false,\n\t\t\t\t\t\tconstraints:\n\t\t\t\t\t\t\tconstraints.map((constraint) => {\n\t\t\t\t\t\t\t\tswitch (constraint) {\n\t\t\t\t\t\t\t\t\tcase Ability.COPY:\n\t\t\t\t\t\t\t\t\t\treturn 'copy';\n\t\t\t\t\t\t\t\t\tcase Ability.DROP:\n\t\t\t\t\t\t\t\t\t\treturn 'drop';\n\t\t\t\t\t\t\t\t\tcase Ability.STORE:\n\t\t\t\t\t\t\t\t\t\treturn 'store';\n\t\t\t\t\t\t\t\t\tcase Ability.KEY:\n\t\t\t\t\t\t\t\t\t\treturn 'key';\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn 'unknown';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}) ?? [],\n\t\t\t\t\t})) ?? [],\n\t\t\t\tparameters:\n\t\t\t\t\tresponse.function?.parameters?.map((param) => parseNormalizedSuiMoveType(param)) ?? [],\n\t\t\t\treturns: response.function?.returns?.map((ret) => parseNormalizedSuiMoveType(ret)) ?? [],\n\t\t\t},\n\t\t};\n\t}\n\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\treturn raceSignal(\n\t\t\tPromise.resolve(\n\t\t\t\tthis.cache.read(['chainIdentifier'], async () => {\n\t\t\t\t\tconst { response } = await this.#client.ledgerService.getServiceInfo({});\n\t\t\t\t\tif (!response.chainId) {\n\t\t\t\t\t\tthrow new Error('Chain identifier not found in service info');\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchainIdentifier: response.chainId,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t),\n\t\t\toptions?.signal,\n\t\t);\n\t}\n\n\tresolveTransactionPlugin() {\n\t\tconst client = this.#client;\n\t\treturn async function resolveTransactionData(\n\t\t\ttransactionData: TransactionDataBuilder,\n\t\t\toptions: BuildTransactionOptions,\n\t\t\tnext: () => Promise<void>,\n\t\t) {\n\t\t\tconst snapshot = transactionData.snapshot();\n\t\t\t// If sender is not set, use a dummy address for resolution purposes\n\t\t\t// The resolved transaction will not include the sender if it wasn't set originally\n\t\t\tif (!snapshot.sender) {\n\t\t\t\tsnapshot.sender = '0x0000000000000000000000000000000000000000000000000000000000000000';\n\t\t\t}\n\t\t\tconst grpcTransaction = transactionDataToGrpcTransaction(snapshot);\n\t\t\tconst doGasSelection =\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\t(snapshot.gasData.budget == null || snapshot.gasData.payment == null);\n\n\t\t\tlet response;\n\t\t\ttry {\n\t\t\t\tconst result = await client.transactionExecutionService.simulateTransaction({\n\t\t\t\t\ttransaction: grpcTransaction,\n\t\t\t\t\tdoGasSelection,\n\t\t\t\t\t// Kind-only txns are never executed directly and do not have sender, so skip validation checks.\n\t\t\t\t\tchecks: options.onlyTransactionKind\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths: [\n\t\t\t\t\t\t\t'transaction.transaction.sender',\n\t\t\t\t\t\t\t'transaction.transaction.gas_payment',\n\t\t\t\t\t\t\t'transaction.transaction.expiration',\n\t\t\t\t\t\t\t'transaction.transaction.kind',\n\t\t\t\t\t\t\t'transaction.effects.status',\n\t\t\t\t\t\t\t'transaction.effects.epoch',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tresponse = result.response;\n\t\t\t} catch (error) {\n\t\t\t\t// https://github.com/timostamm/protobuf-ts/pull/739\n\t\t\t\tif (error instanceof Error && error.message) {\n\t\t\t\t\tthrow new SimulationError(decodeURIComponent(error.message), { cause: error });\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\tresponse.transaction?.effects?.status &&\n\t\t\t\t!response.transaction.effects.status.success\n\t\t\t) {\n\t\t\t\tconst executionError = response.transaction.effects.status.error\n\t\t\t\t\t? parseGrpcExecutionError(response.transaction.effects.status.error)\n\t\t\t\t\t: undefined;\n\t\t\t\tconst errorMessage = executionError?.message ?? 'Transaction failed';\n\t\t\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\t\t\texecutionError,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!response.transaction?.transaction) {\n\t\t\t\tthrow new Error('simulateTransaction did not return resolved transaction data');\n\t\t\t}\n\n\t\t\tapplyGrpcResolvedTransaction(transactionData, response.transaction.transaction, options);\n\t\t\tawait setAddressBalanceTransactionExpirationFromSimulatedEpoch({\n\t\t\t\ttransactionData,\n\t\t\t\tclient,\n\t\t\t\tepoch: response.transaction.effects?.epoch,\n\t\t\t\toriginalTransactionData: snapshot,\n\t\t\t\tisTransactionKindOnly: !!options.onlyTransactionKind,\n\t\t\t\tdoGasSelection,\n\t\t\t});\n\n\t\t\treturn await next();\n\t\t};\n\t}\n}\n\nfunction toGrpcQueryOptions(pagination: ResolvedPagination, limit: number): QueryOptions {\n\treturn {\n\t\tlimit,\n\t\tordering: pagination.descending ? Ordering.DESCENDING : Ordering.ASCENDING,\n\t\tafter: pagination.after ? fromBase64(pagination.after) : undefined,\n\t\tbefore: pagination.before ? fromBase64(pagination.before) : undefined,\n\t};\n}\n\nfunction transactionReadMaskPaths(\n\tinclude: SuiClientTypes.TransactionInclude | undefined,\n\tprefix = '',\n): string[] {\n\tconst paths = ['digest', 'transaction.digest', 'signatures', 'effects.status'];\n\n\tif (include?.transaction) {\n\t\tpaths.push(\n\t\t\t'transaction.sender',\n\t\t\t'transaction.gas_payment',\n\t\t\t'transaction.expiration',\n\t\t\t'transaction.kind',\n\t\t);\n\t}\n\tif (include?.bcs) {\n\t\tpaths.push('transaction.bcs');\n\t}\n\tif (include?.balanceChanges) {\n\t\tpaths.push('balance_changes');\n\t}\n\tif (include?.effects) {\n\t\tpaths.push('effects');\n\t}\n\tif (include?.events) {\n\t\tpaths.push('events');\n\t}\n\tif (include?.objectTypes) {\n\t\t// Use effects.changed_objects to match JSON-RPC behavior (which uses objectChanges)\n\t\tpaths.push('effects.changed_objects.object_type');\n\t\tpaths.push('effects.changed_objects.object_id');\n\t}\n\n\treturn prefix ? paths.map((path) => prefix + path) : paths;\n}\n\nfunction withProtoJson<Result>(\n\tresult: Result,\n\tinclude: ({ protoJson?: boolean } & object) | undefined,\n\tgetProtoJson: () => unknown,\n): Result {\n\tif (!include?.protoJson) {\n\t\treturn result;\n\t}\n\n\treturn {\n\t\t...result,\n\t\tprotoJson: getProtoJson(),\n\t};\n}\n\nfunction mapDisplayProto(\n\tinclude: boolean | undefined,\n\tdisplay: { output?: Value; errors?: Value } | undefined,\n): SuiClientTypes.Display | null | undefined {\n\tif (!include) return undefined;\n\tif (display === undefined) return null;\n\treturn {\n\t\toutput:\n\t\t\tdisplay.output !== undefined\n\t\t\t\t? (Value.toJson(display.output) as Record<string, unknown> | null)\n\t\t\t\t: null,\n\t\terrors:\n\t\t\tdisplay.errors !== undefined\n\t\t\t\t? (Value.toJson(display.errors) as Record<string, string> | null)\n\t\t\t\t: null,\n\t};\n}\n\nfunction mapOwner(owner: Owner | null | undefined): SuiClientTypes.ObjectOwner | null {\n\tif (!owner) {\n\t\treturn null;\n\t}\n\tif (owner.kind === Owner_OwnerKind.IMMUTABLE) {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.ADDRESS) {\n\t\treturn {\n\t\t\tAddressOwner: owner.address!,\n\t\t\t$kind: 'AddressOwner',\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.OBJECT) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.address!,\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.SHARED) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.version?.toString()!,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.CONSENSUS_ADDRESS) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.version?.toString()!,\n\t\t\t\towner: owner.address!,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`Unknown owner kind ${JSON.stringify(owner, (_k, v) => (typeof v === 'bigint' ? v.toString() : v))}`,\n\t);\n}\n\nfunction parseGrpcExecutionError(error: GrpcExecutionError): SuiClientTypes.ExecutionError {\n\tconst message = error.description ?? 'Unknown error';\n\tconst command = error.command != null ? Number(error.command) : undefined;\n\tconst details = error.errorDetails;\n\n\tswitch (details?.oneofKind) {\n\t\tcase 'abort': {\n\t\t\tconst abort = details.abort;\n\t\t\tconst cleverError = abort.cleverError;\n\t\t\treturn {\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: abort.location,\n\t\t\t\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\t\t\t\tcleverError: cleverError\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tlineNumber:\n\t\t\t\t\t\t\t\t\tcleverError.lineNumber != null ? Number(cleverError.lineNumber) : undefined,\n\t\t\t\t\t\t\t\tconstantName: cleverError.constantName,\n\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\tcleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t\t\t\t? cleverError.value.rendered\n\t\t\t\t\t\t\t\t\t\t: undefined,\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\tcommand,\n\t\t\t\tMoveAbort: parseMoveAbort(abort),\n\t\t\t};\n\t\t}\n\n\t\tcase 'sizeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tsize: Number(details.sizeError.size ?? 0n),\n\t\t\t\t\tmaxSize: Number(details.sizeError.maxSize ?? 0n),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'commandArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CommandArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCommandArgumentError: {\n\t\t\t\t\targument: details.commandArgumentError.argument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.commandArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'typeArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'TypeArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tTypeArgumentError: {\n\t\t\t\t\ttypeArgument: details.typeArgumentError.typeArgument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.typeArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'packageUpgradeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'PackageUpgradeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tPackageUpgradeError: {\n\t\t\t\t\tname: mapErrorName(details.packageUpgradeError.kind),\n\t\t\t\t\tpackageId: details.packageUpgradeError.packageId,\n\t\t\t\t\tdigest: details.packageUpgradeError.digest,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'indexError':\n\t\t\treturn {\n\t\t\t\t$kind: 'IndexError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tIndexError: {\n\t\t\t\t\tindex: details.indexError.index,\n\t\t\t\t\tsubresult: details.indexError.subresult,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'coinDenyListError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tcoinType: details.coinDenyListError.coinType!,\n\t\t\t\t\taddress: details.coinDenyListError.address,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'congestedObjects':\n\t\t\treturn {\n\t\t\t\t$kind: 'CongestedObjects',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCongestedObjects: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjects: details.congestedObjects.objects,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'objectId':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjectId: details.objectId,\n\t\t\t\t},\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\t}\n}\n\nfunction parseMoveAbort(abort: GrpcMoveAbort): SuiClientTypes.MoveAbort {\n\treturn {\n\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\tlocation: { ...abort.location },\n\t\tcleverError: abort.cleverError\n\t\t\t? {\n\t\t\t\t\terrorCode:\n\t\t\t\t\t\tabort.cleverError.errorCode != null ? Number(abort.cleverError.errorCode) : undefined,\n\t\t\t\t\tlineNumber:\n\t\t\t\t\t\tabort.cleverError.lineNumber != null ? Number(abort.cleverError.lineNumber) : undefined,\n\t\t\t\t\tconstantName: abort.cleverError.constantName,\n\t\t\t\t\tconstantType: abort.cleverError.constantType,\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tabort.cleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t? abort.cleverError.value.rendered\n\t\t\t\t\t\t\t: abort.cleverError.value?.oneofKind === 'raw'\n\t\t\t\t\t\t\t\t? toBase64(abort.cleverError.value.raw)\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}\n\t\t\t: undefined,\n\t};\n}\n\nfunction mapErrorName(\n\tkind:\n\t\t| ExecutionError_ExecutionErrorKind\n\t\t| CommandArgumentError_CommandArgumentErrorKind\n\t\t| TypeArgumentError_TypeArgumentErrorKind\n\t\t| PackageUpgradeError_PackageUpgradeErrorKind\n\t\t| undefined,\n): string {\n\tif (kind == null) {\n\t\treturn 'Unknown';\n\t}\n\tconst name = CommandArgumentError_CommandArgumentErrorKind[kind];\n\tif (!name || name.endsWith('_UNKNOWN')) {\n\t\treturn 'Unknown';\n\t}\n\treturn name\n\t\t.split('_')\n\t\t.map((word) => word.charAt(0) + word.slice(1).toLowerCase())\n\t\t.join('');\n}\n\nfunction mapIdOperation(\n\toperation: ChangedObject_IdOperation | undefined,\n): null | 'Created' | 'Deleted' | 'Unknown' | 'None' {\n\tif (operation == null) {\n\t\treturn null;\n\t}\n\tswitch (operation) {\n\t\tcase ChangedObject_IdOperation.CREATED:\n\t\t\treturn 'Created';\n\t\tcase ChangedObject_IdOperation.DELETED:\n\t\t\treturn 'Deleted';\n\t\tcase ChangedObject_IdOperation.NONE:\n\t\tcase ChangedObject_IdOperation.ID_OPERATION_UNKNOWN:\n\t\t\treturn 'None';\n\t\tdefault:\n\t\t\toperation satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapInputObjectState(\n\tstate: ChangedObject_InputObjectState | undefined,\n): null | 'Exists' | 'DoesNotExist' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_InputObjectState.EXISTS:\n\t\t\treturn 'Exists';\n\t\tcase ChangedObject_InputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_InputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapOutputObjectState(\n\tstate: ChangedObject_OutputObjectState | undefined,\n): null | 'ObjectWrite' | 'PackageWrite' | 'DoesNotExist' | 'AccumulatorWriteV1' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_OutputObjectState.OBJECT_WRITE:\n\t\t\treturn 'ObjectWrite';\n\t\tcase ChangedObject_OutputObjectState.PACKAGE_WRITE:\n\t\t\treturn 'PackageWrite';\n\t\tcase ChangedObject_OutputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_OutputObjectState.ACCUMULATOR_WRITE:\n\t\t\treturn 'AccumulatorWriteV1';\n\t\tcase ChangedObject_OutputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapUnchangedConsensusObjectKind(\n\tkind: UnchangedConsensusObject_UnchangedConsensusObjectKind | undefined,\n): null | SuiClientTypes.UnchangedConsensusObject['kind'] {\n\tif (kind == null) {\n\t\treturn null;\n\t}\n\tswitch (kind) {\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.UNCHANGED_CONSENSUS_OBJECT_KIND_UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_ONLY_ROOT:\n\t\t\treturn 'ReadOnlyRoot';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.MUTATE_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'MutateConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'ReadConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.CANCELED:\n\t\t\treturn 'Cancelled';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.PER_EPOCH_CONFIG:\n\t\t\treturn 'PerEpochConfig';\n\t\tdefault:\n\t\t\tkind satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nexport function parseTransactionEffects({\n\teffects,\n}: {\n\teffects: TransactionEffects | undefined;\n}): SuiClientTypes.TransactionEffects | null {\n\tif (!effects) {\n\t\treturn null;\n\t}\n\n\tconst changedObjects = effects.changedObjects.map((change): SuiClientTypes.ChangedObject => {\n\t\treturn {\n\t\t\tobjectId: change.objectId!,\n\t\t\tinputState: mapInputObjectState(change.inputState)!,\n\t\t\tinputVersion: change.inputVersion?.toString() ?? null,\n\t\t\tinputDigest: change.inputDigest ?? null,\n\t\t\tinputOwner: mapOwner(change.inputOwner),\n\t\t\toutputState: mapOutputObjectState(change.outputState)!,\n\t\t\toutputVersion: change.outputVersion?.toString() ?? null,\n\t\t\toutputDigest: change.outputDigest ?? null,\n\t\t\toutputOwner: mapOwner(change.outputOwner),\n\t\t\tidOperation: mapIdOperation(change.idOperation)!,\n\t\t};\n\t});\n\n\treturn {\n\t\tbcs: effects.bcs?.value!,\n\n\t\tversion: 2,\n\t\tstatus: effects.status?.success\n\t\t\t? {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\terror: null,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: parseGrpcExecutionError(effects.status!.error!),\n\t\t\t\t},\n\t\tgasUsed: {\n\t\t\tcomputationCost: effects.gasUsed?.computationCost?.toString()!,\n\t\t\tstorageCost: effects.gasUsed?.storageCost?.toString()!,\n\t\t\tstorageRebate: effects.gasUsed?.storageRebate?.toString()!,\n\t\t\tnonRefundableStorageFee: effects.gasUsed?.nonRefundableStorageFee?.toString()!,\n\t\t},\n\t\ttransactionDigest: effects.transactionDigest!,\n\t\t// gas_object is unset when the transaction has no gas object (system\n\t\t// transactions, or gas paid from an address balance)\n\t\tgasObject: effects.gasObject\n\t\t\t? {\n\t\t\t\t\tobjectId: effects.gasObject.objectId!,\n\t\t\t\t\tinputState: mapInputObjectState(effects.gasObject.inputState)!,\n\t\t\t\t\tinputVersion: effects.gasObject.inputVersion?.toString() ?? null,\n\t\t\t\t\tinputDigest: effects.gasObject.inputDigest ?? null,\n\t\t\t\t\tinputOwner: mapOwner(effects.gasObject.inputOwner),\n\t\t\t\t\toutputState: mapOutputObjectState(effects.gasObject.outputState)!,\n\t\t\t\t\toutputVersion: effects.gasObject.outputVersion?.toString() ?? null,\n\t\t\t\t\toutputDigest: effects.gasObject.outputDigest ?? null,\n\t\t\t\t\toutputOwner: mapOwner(effects.gasObject.outputOwner),\n\t\t\t\t\tidOperation: mapIdOperation(effects.gasObject.idOperation)!,\n\t\t\t\t}\n\t\t\t: null,\n\t\teventsDigest: effects.eventsDigest ?? null,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion?.toString() ?? null,\n\t\tchangedObjects,\n\t\tunchangedConsensusObjects: effects.unchangedConsensusObjects.map(\n\t\t\t(object): SuiClientTypes.UnchangedConsensusObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: mapUnchangedConsensusObjectKind(object.kind)!,\n\t\t\t\t\t// TODO: we are inconsistent about id vs objectId\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString() ?? null,\n\t\t\t\t\tdigest: object.digest ?? null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxiliaryDataDigest ?? null,\n\t};\n}\n\nexport function parseGrpcTransactionResponse<\n\tInclude extends SuiClientTypes.TransactionInclude = {},\n>(\n\ttransaction: ExecutedTransaction,\n\toptions?: {\n\t\tinclude?: Include & SuiClientTypes.TransactionInclude;\n\t},\n): SuiClientTypes.TransactionResult<Include> {\n\tconst include = options?.include;\n\tconst objectTypes: Record<string, string> = {};\n\tif (include?.objectTypes) {\n\t\ttransaction.effects?.changedObjects?.forEach((change) => {\n\t\t\tif (change.objectId && change.objectType) {\n\t\t\t\tobjectTypes[change.objectId] = change.objectType;\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tif (include?.transaction) {\n\t\tconst tx = transaction.transaction;\n\n\t\tif (!tx) {\n\t\t\tthrow new Error('Transaction data is required but missing from gRPC response');\n\t\t}\n\n\t\tconst resolved = grpcTransactionToTransactionData(tx);\n\t\ttransactionData = {\n\t\t\tgasData: resolved.gasData,\n\t\t\tsender: resolved.sender,\n\t\t\texpiration: resolved.expiration,\n\t\t\tcommands: resolved.commands,\n\t\t\tinputs: resolved.inputs,\n\t\t\tversion: resolved.version,\n\t\t};\n\t}\n\n\tconst bcsBytes = include?.bcs ? transaction.transaction?.bcs?.value : undefined;\n\n\tconst effects = include?.effects\n\t\t? parseTransactionEffects({\n\t\t\t\teffects: transaction.effects,\n\t\t\t})\n\t\t: undefined;\n\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status?.success\n\t\t? { success: true, error: null }\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: transaction.effects?.status?.error\n\t\t\t\t\t? parseGrpcExecutionError(transaction.effects.status.error)\n\t\t\t\t\t: {\n\t\t\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\t\t\tmessage: 'Transaction failed',\n\t\t\t\t\t\t\tUnknown: null,\n\t\t\t\t\t\t},\n\t\t\t};\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest!,\n\t\tepoch: transaction.effects?.epoch?.toString() ?? null,\n\t\tstatus,\n\t\teffects: effects 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: transaction.signatures?.map((sig) => toBase64(sig.bcs?.value!)) ?? [],\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: change.coinType!,\n\t\t\t\t\taddress: change.address!,\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?.events.map((event) => ({\n\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\teventType: event.eventType!,\n\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) 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 parseGrpcSimulateTransactionResponse<\n\tInclude extends SuiClientTypes.SimulateTransactionInclude = {},\n>(\n\tresponse: SimulateTransactionResponse,\n\toptions?: {\n\t\tinclude?: Include & SuiClientTypes.SimulateTransactionInclude;\n\t},\n): SuiClientTypes.SimulateTransactionResult<Include> {\n\tconst include = options?.include;\n\tconst transactionResult = parseGrpcTransactionResponse(response.transaction!, { include });\n\n\tconst commandResults =\n\t\tinclude?.commandResults && response.commandOutputs\n\t\t\t? response.commandOutputs.map((output) => ({\n\t\t\t\t\treturnValues: (output.returnValues ?? []).map((rv) => ({\n\t\t\t\t\t\tbcs: rv.value?.value ?? null,\n\t\t\t\t\t})),\n\t\t\t\t\tmutatedReferences: (output.mutatedByRef ?? []).map((mr) => ({\n\t\t\t\t\t\tbcs: mr.value?.value ?? null,\n\t\t\t\t\t})),\n\t\t\t\t}))\n\t\t\t: undefined;\n\n\tif (transactionResult.$kind === 'Transaction') {\n\t\treturn {\n\t\t\t$kind: 'Transaction',\n\t\t\tTransaction: transactionResult.Transaction,\n\t\t\tcommandResults:\n\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t};\n\t}\n\n\treturn {\n\t\t$kind: 'FailedTransaction',\n\t\tFailedTransaction: transactionResult.FailedTransaction,\n\t\tcommandResults:\n\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: OpenSignature): SuiClientTypes.OpenSignature {\n\tlet reference: 'mutable' | 'immutable' | null = null;\n\n\tif (type.reference === OpenSignature_Reference.IMMUTABLE) {\n\t\treference = 'immutable';\n\t} else if (type.reference === OpenSignature_Reference.MUTABLE) {\n\t\treference = 'mutable';\n\t}\n\n\treturn {\n\t\treference,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type.body!),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(type: OpenSignatureBody): SuiClientTypes.OpenSignatureBody {\n\tswitch (type.type) {\n\t\tcase OpenSignatureBody_Type.TYPE_UNKNOWN:\n\t\t\treturn { $kind: 'unknown' };\n\t\tcase OpenSignatureBody_Type.ADDRESS:\n\t\t\treturn { $kind: 'address' };\n\t\tcase OpenSignatureBody_Type.BOOL:\n\t\t\treturn { $kind: 'bool' };\n\t\tcase OpenSignatureBody_Type.U8:\n\t\t\treturn { $kind: 'u8' };\n\t\tcase OpenSignatureBody_Type.U16:\n\t\t\treturn { $kind: 'u16' };\n\t\tcase OpenSignatureBody_Type.U32:\n\t\t\treturn { $kind: 'u32' };\n\t\tcase OpenSignatureBody_Type.U64:\n\t\t\treturn { $kind: 'u64' };\n\t\tcase OpenSignatureBody_Type.U128:\n\t\t\treturn { $kind: 'u128' };\n\t\tcase OpenSignatureBody_Type.U256:\n\t\t\treturn { $kind: 'u256' };\n\t\tcase OpenSignatureBody_Type.VECTOR:\n\t\t\treturn {\n\t\t\t\t$kind: 'vector',\n\t\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.typeParameterInstantiation[0]),\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.DATATYPE:\n\t\t\treturn {\n\t\t\t\t$kind: 'datatype',\n\t\t\t\tdatatype: {\n\t\t\t\t\ttypeName: type.typeName!,\n\t\t\t\t\ttypeParameters: type.typeParameterInstantiation.map((t) =>\n\t\t\t\t\t\tparseNormalizedSuiMoveTypeBody(t),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.TYPE_PARAMETER:\n\t\t\treturn {\n\t\t\t\t$kind: 'typeParameter',\n\t\t\t\tindex: type.typeParameter!,\n\t\t\t};\n\t\tdefault:\n\t\t\treturn { $kind: 'unknown' };\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoEA,IAAa,iBAAb,cAAoC,WAAW;CAC9C;CACA,YAAY,EAAE,QAAQ,GAAG,WAAkC;AAC1D,QAAM,QAAQ;AACd,QAAKA,SAAU;;CAGhB,MAAM,WACL,SACsD;EACtD,MAAM,UAAU,MAAM,QAAQ,WAAW,GAAG;EAC5C,MAAM,UAAiE,EAAE;EAEzE,MAAM,QAAQ;GAAC;GAAS;GAAe;GAAU;GAAW;GAAY;AACxE,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,WAAW;AAEvB,MAAI,QAAQ,SAAS,oBACpB,OAAM,KAAK,uBAAuB;AAEnC,MAAI,QAAQ,SAAS,UACpB,OAAM,KAAK,MAAM;AAElB,MAAI,QAAQ,SAAS,KACpB,OAAM,KAAK,OAAO;AAEnB,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,UAAU;AAGtB,OAAK,MAAM,SAAS,SAAS;GAC5B,MAAM,WAAW,MAAM,MAAKA,OAAQ,cAAc,gBACjD;IACC,UAAU,MAAM,KAAK,QAAQ,EAAE,UAAU,IAAI,EAAE;IAC/C,UAAU,EACT,OACA;IACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,WAAQ,KACP,GAAG,SAAS,SAAS,QAAQ,KAAK,WAAmD;AACpF,QAAI,OAAO,OAAO,cAAc,QAE/B,QAAO,IAAI,MAAM,OAAO,OAAO,MAAM,QAAQ;AAG9C,QAAI,OAAO,OAAO,cAAc,SAC/B,wBAAO,IAAI,MAAM,yBAAyB;IAG3C,MAAM,aAAa,OAAO,OAAO,OAAO,UAAU,SAAS;IAC3D,MAAM,YAAY,OAAO,OAAO,OAAO,KAAK,SAAS;IAGrD,MAAM,aAAa,OAAO,OAAO,OAAO;IACxC,MAAM,OACL,cAAc,WAAW,SAAS,KAAK,GACpC,mBAAmB,WAAW,GAC7B,cAAc;IAEnB,MAAM,cAAc,QAAQ,SAAS,OAClC,OAAO,OAAO,OAAO,OACnB,MAAM,OAAO,OAAO,OAAO,OAAO,KAAK,GACxC,OACD;IAEH,MAAM,cAAc,gBACnB,QAAQ,SAAS,SACjB,OAAO,OAAO,OAAO,QACrB;AAED,WAAO;KACN,UAAU,OAAO,OAAO,OAAO;KAC/B,SAAS,OAAO,OAAO,OAAO,SAAS,UAAU;KACjD,QAAQ,OAAO,OAAO,OAAO;KAC7B,SAAS;KACT,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM;KAC3C;KACA,qBAAsB,OAAO,OAAO,OAAO,uBAC1C;KACU;KACX,MAAM;KACN,SAAS;KACT;KACA,CACF;;AAGF,SAAO,EACN,SAAS,SACT;;CAEF,MAAM,iBACL,SAC4D;EAC5D,MAAM,QAAQ;GAAC;GAAS;GAAe;GAAU;GAAW;GAAY;AACxE,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,WAAW;AAEvB,MAAI,QAAQ,SAAS,oBACpB,OAAM,KAAK,uBAAuB;AAEnC,MAAI,QAAQ,SAAS,UACpB,OAAM,KAAK,MAAM;AAElB,MAAI,QAAQ,SAAS,KACpB,OAAM,KAAK,OAAO;AAEnB,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,UAAU;EAGtB,MAAM,WAAW,MAAM,MAAKA,OAAQ,aAAa,iBAChD;GACC,OAAO,QAAQ;GACf,YAAY,QAAQ,QAChB,MAAM,KAAK,IAAI,YAAY;IAAE,MAAM,QAAQ;IAAM,QAAQ,QAAQ;IAAQ,CAAC,EAAE,OAC7E;GACH,WAAW,QAAQ,SAAS,WAAW,QAAQ,OAAO,GAAG;GACzD,UAAU,QAAQ;GAClB,UAAU,EACT,OACA;GACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAyBD,SAAO;GACN,SAxBe,SAAS,SAAS,QAAQ,KACxC,YAA4C;IAC5C,UAAU,OAAO;IACjB,SAAS,OAAO,SAAS,UAAU;IACnC,QAAQ,OAAO;IACf,SAAS,OAAO,UAAU;IAC1B,OAAO,SAAS,OAAO,MAAM;IAC7B,MAAM,OAAO;IACb,qBAAsB,OAAO,uBAC5B;IACD,WAAW,OAAO,KAAK;IACvB,MAAO,QAAQ,SAAS,OACrB,OAAO,OACL,MAAM,OAAO,OAAO,KAAK,GAC1B,OACD;IACH,SAAS,gBACR,QAAQ,SAAS,SACjB,OAAO,QACP;IACD,EACD;GAIA,QAAQ,SAAS,SAAS,gBAAgB,SAAS,SAAS,SAAS,cAAc,GAAG;GACtF,aAAa,SAAS,SAAS,kBAAkB;GACjD;;CAEF,MAAM,UACL,SAC4C;EAC5C,MAAM,QAAQ;GAAC;GAAS;GAAe;GAAU;GAAW;GAAa;GAAU;EACnF,MAAM,WAAW,QAAQ,YAAY;EAErC,MAAM,WAAW,MAAM,MAAKA,OAAQ,aAAa,iBAChD;GACC,OAAO,QAAQ;GACf,YAAY,oBAAoB,MAAM,KAAK,IAAI,YAAY;IAAE,MAAM;IAAU,QAAQ,QAAQ;IAAQ,CAAC,EAAE,KAAK;GAC7G,WAAW,QAAQ,SAAS,WAAW,QAAQ,OAAO,GAAG;GACzD,UAAU,QAAQ;GAClB,UAAU,EACT,OACA;GACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO;GACN,SAAS,SAAS,SAAS,QAAQ,KACjC,YAAiC;IACjC,UAAU,OAAO;IACjB,SAAS,OAAO,SAAS,UAAU;IACnC,QAAQ,OAAO;IACf,OAAO,SAAS,OAAO,MAAM;IAC7B,MAAM,OAAO;IACb,SAAS,OAAO,SAAS,UAAU;IACnC,EACD;GACD,QAAQ,SAAS,SAAS,gBAAgB,SAAS,SAAS,SAAS,cAAc,GAAG;GACtF,aAAa,SAAS,SAAS,kBAAkB;GACjD;;CAGF,MAAM,WACL,SAC6C;EAC7C,MAAM,WAAW,QAAQ,YAAY;EACrC,MAAM,SAAS,MAAM,MAAKA,OAAQ,aAAa,WAC9C;GACC,OAAO,QAAQ;GACf,WAAW,MAAM,KAAK,IAAI,YAAY;IAAE,MAAM;IAAU,QAAQ,QAAQ;IAAQ,CAAC,EAAE;GACnF,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO,EACN,SAAS;GACR,SAAS,OAAO,SAAS,SAAS,SAAS,UAAU,IAAI;GACzD,UAAU,OAAO,SAAS,SAAS,YAAY;GAC/C,aAAa,OAAO,SAAS,SAAS,aAAa,UAAU,IAAI;GACjE,gBAAgB,OAAO,SAAS,SAAS,gBAAgB,UAAU,IAAI;GACvE,EACD;;CAGF,MAAM,gBACL,SACkD;EAClD,MAAM,YACL,MAAM,KAAK,IAAI,YAAY;GAAE,MAAM,QAAQ;GAAU,QAAQ,QAAQ;GAAQ,CAAC,EAC7E;EAEF,IAAI;AACJ,MAAI;AACH,IAAC,CAAE,YAAa,MAAM,MAAKA,OAAQ,aAAa,YAC/C,EACC,UACA,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;WACO,OAAO;AAEf,OAAI,QAAQ,QAAQ,QACnB,OAAM;AAEP,UAAO,EAAE,cAAc,MAAM;;AAG9B,MAAI,CAAC,SAAS,SACb,QAAO,EAAE,cAAc,MAAM;AAG9B,SAAO,EACN,cAAc;GACb,IAAI,SAAS,SAAS,MAAM;GAC5B,UAAU,SAAS,SAAS,YAAY;GACxC,MAAM,SAAS,SAAS,QAAQ;GAChC,QAAQ,SAAS,SAAS,UAAU;GACpC,aAAa,SAAS,SAAS,eAAe;GAC9C,SAAS,SAAS,SAAS,WAAW;GACtC,EACD;;CAGF,MAAM,aACL,SAC+C;EAC/C,MAAM,SAAS,MAAM,MAAKA,OAAQ,aAAa,aAC9C;GACC,OAAO,QAAQ;GACf,WAAW,QAAQ,SAAS,WAAW,QAAQ,OAAO,GAAG;GACzD,UAAU,QAAQ;GAClB,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO;GACN,aAAa,CAAC,CAAC,OAAO,SAAS;GAC/B,QAAQ,OAAO,SAAS,gBAAgB,SAAS,OAAO,SAAS,cAAc,GAAG;GAClF,UAAU,OAAO,SAAS,SAAS,KAAK,aAAa;IACpD,SAAS,QAAQ,SAAS,UAAU,IAAI;IACxC,UAAU,QAAQ;IAClB,aAAa,QAAQ,aAAa,UAAU,IAAI;IAChD,gBAAgB,QAAQ,gBAAgB,UAAU,IAAI;IACtD,EAAE;GACH;;CAEF,MAAM,eACL,SACqD;EACrD,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,cAAc,eACrD;GACC,QAAQ,QAAQ;GAChB,UAAU,EACT,OAAO,yBAAyB,QAAQ,QAAQ,EAChD;GACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,MAAI,CAAC,SAAS,YACb,OAAM,IAAI,MAAM,eAAe,QAAQ,OAAO,YAAY;AAG3D,SAAO,cACN,6BAA6B,SAAS,aAAa,EAAE,SAAS,QAAQ,SAAS,CAAC,EAChF,QAAQ,eACF,oBAAoB,OAAO,SAAS,YAAa,CACvD;;CAEF,MAAM,mBACL,SACqD;EACrD,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,4BAA4B,mBACnE;GACC,aAAa,EACZ,KAAK,EACJ,OAAO,QAAQ,aACf,EACD;GACD,YAAY,QAAQ,WAAW,KAAK,eAAe;IAClD,KAAK,EACJ,OAAO,WAAW,UAAU,EAC5B;IACD,WAAW,EACV,WAAW,QACX;IACD,EAAE;GACH,UAAU,EACT,OAAO,yBAAyB,QAAQ,QAAQ,EAChD;GACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO,cACN,6BAA6B,SAAS,aAAc,EAAE,SAAS,QAAQ,SAAS,CAAC,EACjF,QAAQ,eACF,oBAAoB,OAAO,SAAS,YAAa,CACvD;;CAEF,MAAM,oBACL,SAC6D;EAE7D,MAAM,QAAQ,yBAAyB,QAAQ,SAAS,eAAe;AACvE,MAAI,QAAQ,SAAS,eACpB,OAAM,KAAK,kBAAkB;AAG9B,MAAI,EAAE,QAAQ,uBAAuB,YACpC,OAAM,QAAQ,YAAY,wBAAwB,EAAE,QAAQ,MAAM,CAAC;EAMpE,MAAM,iBACL,QAAQ,mBACP,QAAQ,uBAAuB,aAC7B,oCAAoC,QAAQ,YAAY,GACxD,QAAQ,YAAY,SAAS,CAAC,QAAQ,SAAS,WAAW;EAE9D,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,4BAA4B,oBACnE;GACC,aACC,QAAQ,uBAAuB,aAC5B,EACA,KAAK,EACJ,OAAO,QAAQ,aACf,EACD,GACA,6BAA6B,QAAQ,YAAY;GACrD,UAAU,EACT,OACA;GACD;GACA,QACC,QAAQ,kBAAkB,QACvB,6CAA6C,WAC7C,6CAA6C;GACjD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO,cACN,qCAAqC,UAAU,EAAE,SAAS,QAAQ,SAAS,CAAC,EAC5E,QAAQ,eACF,4BAA4B,OAAO,SAAS,CAClD;;CAEF,MAAM,qBACL,SACuD;AAUvD,SAAO,EACN,oBAVgB,MAAM,MAAKA,OAAQ,cAAc,SACjD,EACC,UAAU,EACT,OAAO,CAAC,sBAAsB,EAC9B,EACD,EACD,EAAE,OAAO,SAAS,QAAQ,CAC1B,EAG4B,SAAS,OAAO,mBAAmB,UAAU,IAAI,IAC7E;;CAGF,MAAM,kBACL,SACoD;EAQpD,MAAM,kBAPW,MAAM,MAAKA,OAAQ,cAAc,SACjD,EACC,UAAU,EAAE,OAAO,CAAC,kBAAkB,EAAE,EACxC,EACD,EAAE,OAAO,SAAS,QAAQ,CAC1B,EAE+B,SAAS,OAAO;AAChD,MAAI,CAAC,eACJ,OAAM,IAAI,MAAM,wCAAwC;EAGzD,MAAM,eAAwC,EAAE,GAAG,eAAe,cAAc;EAChF,MAAM,aAA4C,EAAE;AACpD,MAAI,eAAe,WAClB,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,eAAe,WAAW,CACnE,YAAW,OAAO,SAAS;AAI7B,SAAO,EACN,gBAAgB;GACf,iBAAiB,eAAe,iBAAiB,UAAU,IAAK;GAChE;GACA;GACA,EACD;;CAGF,MAAM,sBACL,SACwD;EAwBxD,MAAM,SAvBW,MAAM,MAAKA,OAAQ,cAAc,SACjD,EACC,UAAU,EACT,OAAO;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD,EACD,EACD,EAAE,OAAO,SAAS,QAAQ,CAC1B,EAEsB,SAAS;EAChC,MAAM,cAAc,OAAO;AAC3B,MAAI,CAAC,YACJ,OAAM,IAAI,MAAM,qCAAqC;EAGtD,MAAM,UAAU,OAAO,OAAO,UAC3B,OAAO,MAAM,MAAM,QAAQ,GAAG,MAAO,KAAK,OAAO,MAAM,MAAM,SAAS,KAAK,IAAU,GACrF,YAAY,wBACX,OAAO,YAAY,sBAAsB,GACxC;AAEL,SAAO,EACN,aAAa;GACZ,oBAAoB,YAAY,SAAS,UAAU,IAAK;GACxD,OAAO,YAAY,OAAO,UAAU,IAAK;GACzC,iBAAiB,YAAY,iBAAiB,UAAU,IAAK;GAC7D,mBAAmB,YAAY,mBAAmB,UAAU,IAAK;GACjE,uBAAuB,QAAQ,UAAU;GACzC,UAAU,YAAY,YAAY;GAClC,wBAAwB,YAAY,wBAAwB,UAAU,IAAK;GAC3E,4BACC,YAAY,4BAA4B,UAAU,IAAK;GACxD,wBAAwB,YAAY,wBAAwB,UAAU,IAAK;GAC3E,iCACC,YAAY,iCAAiC,UAAU,IAAK;GAC7D,YAAY;IACX,iBAAiB,YAAY,YAAY,iBAAiB,UAAU,IAAK;IACzE,wBACC,YAAY,YAAY,wBAAwB,UAAU,IAAK;IAChE,mBACC,YAAY,YAAY,mBAAmB,UAAU,IAAK;IAC3D,0BACC,YAAY,YAAY,0BAA0B,UAAU,IAAK;IAClE,4BACC,YAAY,YAAY,4BAA4B,UAAU,IAAK;IACpE,8BACC,YAAY,YAAY,8BAA8B,UAAU,IAAK;IACtE;GACD,aAAa;IACZ,2BACC,YAAY,aAAa,2BAA2B,UAAU,IAAK;IACpE,sBACC,YAAY,aAAa,sBAAsB,UAAU,IAAK;IAC/D;GACD,cAAc;IACb,SAAS,YAAY,cAAc,SAAS,UAAU,IAAK;IAC3D,qBACC,YAAY,cAAc,qBAAqB,UAAU,IAAK;IAC/D,2BACC,YAAY,cAAc,2BAA2B,UAAU,IAAK;IACrE,0BACC,YAAY,cAAc,0BAA0B,UAAU,IAAK;IACpE,0BACC,YAAY,cAAc,4BAA6B;IACxD;GACD,EACD;;CAGF,MAAM,kBACL,SACoD;AACpD,SAAO,MAAKA,OAAQ,kBAAkB,QAAQ;;CAG/C,MAAM,iBACL,SAC4D;EAC5D,MAAM,QAAQ,yBAAyB,QAAQ,QAAQ;EAEvD,MAAM,SAAS,QAAQ,SACpB,MAAM,yBAAyB,KAAK,KAAK,QAAQ,QAAQ,QAAQ,OAAO,GACxE;EACH,MAAM,aAAa,kBAAkB,QAAQ;AAC7C,2BAAyB,QAAQ,WAAW;EAE5C,MAAM,OAAO,MAAKA,OAAQ,cAAc,iBACvC;GACC,UAAU,EAAE,OAAO;GACnB,QAAQ,UAAU,wBAAwB,OAAO;GAIjD,SAAS,mBAAmB,YAAY,WAAW,QAAQ,EAAE;GAC7D,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;EAED,MAAM,eAA4D,EAAE;EACpE,IAAI,cAA6B;EACjC,IAAI,YAA2B;EAC/B,IAAI,WAA0B;EAC9B,IAAI;EACJ,IAAI,mBAAmB;AAEvB,aAAW,MAAM,SAAS,KAAK,WAAW;AACzC,OAAI,MAAM,WAAW,OACpB,YAAW,SAAS,MAAM,UAAU,OAAO;AAE5C,OAAI,MAAM,YACT,KAAI,aAAa,UAAU,WAAW,MACrC,oBAAmB;QACb;AACN,oBAAgB;AAChB,gBAAY;AACZ,iBAAa,KACZ,6BAA6B,MAAM,aAAa,EAAE,SAAS,QAAQ,SAAS,CAAC,CAC7E;;AAGH,OAAI,MAAM,IACT,OAAM,MAAM;;EAMd,MAAM,cACL,oBACA,KAAK,WAAW,eAAe,cAC/B,KAAK,WAAW,eAAe;AAEhC,SAAO;GACN;GACA;GACA;GAIA,WAAW,mBAAmB,YAAY,cAAe,YAAY,YAAa;GAClF;;CAGF,MAAM,WACL,SAC6C;EAC7C,MAAM,aAAa,kBAAkB,QAAQ;EAC7C,MAAM,OAAO,MAAKA,OAAQ,cAAc,WACvC;GACC,UAAU,EACT,OAAO;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EACD;GACD,QAAQ,QAAQ,SACb,kBAAkB,MAAM,mBAAmB,KAAK,KAAK,QAAQ,QAAQ,QAAQ,OAAO,CAAC,GACrF;GAIH,SAAS,mBAAmB,YAAY,WAAW,QAAQ,EAAE;GAC7D,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;EAED,MAAM,SAAsC,EAAE;EAC9C,IAAI,cAA6B;EACjC,IAAI,YAA2B;EAC/B,IAAI,WAA0B;EAC9B,IAAI;EACJ,IAAI,mBAAmB;AAEvB,aAAW,MAAM,SAAS,KAAK,WAAW;AACzC,OAAI,MAAM,WAAW,OACpB,YAAW,SAAS,MAAM,UAAU,OAAO;AAE5C,OAAI,MAAM,MACT,KAAI,OAAO,UAAU,WAAW,MAC/B,oBAAmB;QACb;AACN,oBAAgB;AAChB,gBAAY;IACZ,MAAM,QAAQ,MAAM;AACpB,WAAO,KAAK;KACX,WAAW,oBAAoB,MAAM,UAAW;KAChD,QAAQ,MAAM;KACd,QAAQ,oBAAoB,MAAM,OAAQ;KAC1C,WAAW,mBAAmB,MAAM,UAAW;KAC/C,KAAK,MAAM,UAAU,SAAS,IAAI,YAAY;KAC9C,MAAM,MAAM,OAAQ,MAAM,OAAO,MAAM,KAAK,GAA+B;KAC3E,YAAY,MAAM,YAAY,UAAU,IAAI;KAC5C,mBAAmB,MAAM;KACzB,YAAY,MAAM;KAClB,CAAC;;AAGJ,OAAI,MAAM,IACT,OAAM,MAAM;;EAMd,MAAM,cACL,oBACA,KAAK,WAAW,eAAe,cAC/B,KAAK,WAAW,eAAe;AAEhC,SAAO;GACN;GACA;GACA;GAIA,WAAW,mBAAmB,YAAY,cAAe,YAAY,YAAa;GAClF;;CAGF,MAAM,uBACL,SACgD;EAChD,MAAM,eAAe,WAAW,QAAQ,MAAM;EAI9C,MAAM,eACL,QAAQ,gBAAgB,oBACrBC,OAAI,YAAY,CAAC,UAAU,aAAa,CAAC,SAAS,GAClD;EAEJ,MAAM,EAAE,aAAa,MAAM,MAAKD,OAAQ,6BAA6B,gBACpE;GACC,SAAS;IACR,MAAM,QAAQ;IACd,OAAO;IACP;GACD,WAAW;IACV,KAAK,EACJ,OAAO,WAAW,QAAQ,UAAU,EACpC;IACD,WAAW,EACV,WAAW,QACX;IACD;GACD,SAAS,QAAQ;GACjB,MAAM,EAAE;GACR,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO;GACN,SAAS,SAAS,WAAW;GAC7B,QAAQ,SAAS,SAAS,CAAC,SAAS,OAAO,GAAG,EAAE;GAChD;;CAGF,MAAM,uBACL,SACyD;AAUzD,SAAO,EACN,MAAM,EACL,OATA,MAAM,MAAKA,OAAQ,YAAY,kBAC9B,EACC,SAAS,QAAQ,SACjB,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB,EACA,SAAS,QAAQ,QAAQ,MAI1B,EACD;;CAGF,MAAM,gBACL,SACkD;EAClD,MAAM,qBACL,MAAM,KAAK,IAAI,eAAe;GAAE,SAAS,QAAQ;GAAW,QAAQ,QAAQ;GAAQ,CAAC,EACpF;EACF,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,mBAAmB,YAC1D;GACC,WAAW;GACX,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACd,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;EAED,IAAI,aAA0D;AAE9D,UAAQ,SAAS,UAAU,YAA3B;GACC,KAAK,8BAA8B;AAClC,iBAAa;AACb;GACD,KAAK,8BAA8B;AAClC,iBAAa;AACb;GACD,KAAK,8BAA8B;AAClC,iBAAa;AACb;;AAGF,SAAO,EACN,UAAU;GACT,WAAW,oBAAoB,kBAAkB;GACjD,YAAY,QAAQ;GACpB,MAAM,SAAS,UAAU;GACzB;GACA,SAAS,SAAS,UAAU,WAAW;GACvC,gBACC,SAAS,UAAU,gBAAgB,KAAK,EAAE,mBAAmB;IAC5D,WAAW;IACX,aACC,YAAY,KAAK,eAAe;AAC/B,aAAQ,YAAR;MACC,KAAK,QAAQ,KACZ,QAAO;MACR,KAAK,QAAQ,KACZ,QAAO;MACR,KAAK,QAAQ,MACZ,QAAO;MACR,KAAK,QAAQ,IACZ,QAAO;MACR,QACC,QAAO;;MAER,IAAI,EAAE;IACT,EAAE,IAAI,EAAE;GACV,YACC,SAAS,UAAU,YAAY,KAAK,UAAU,2BAA2B,MAAM,CAAC,IAAI,EAAE;GACvF,SAAS,SAAS,UAAU,SAAS,KAAK,QAAQ,2BAA2B,IAAI,CAAC,IAAI,EAAE;GACxF,EACD;;CAGF,MAAM,mBACL,SACqD;AAGrD,SAAO,WACN,QAAQ,QACP,KAAK,MAAM,KAAK,CAAC,kBAAkB,EAAE,YAAY;GAChD,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,cAAc,eAAe,EAAE,CAAC;AACxE,OAAI,CAAC,SAAS,QACb,OAAM,IAAI,MAAM,6CAA6C;AAE9D,UAAO,EACN,iBAAiB,SAAS,SAC1B;IACA,CACF,EACD,SAAS,OACT;;CAGF,2BAA2B;EAC1B,MAAM,SAAS,MAAKA;AACpB,SAAO,eAAe,uBACrB,iBACA,SACA,MACC;GACD,MAAM,WAAW,gBAAgB,UAAU;AAG3C,OAAI,CAAC,SAAS,OACb,UAAS,SAAS;GAEnB,MAAM,kBAAkB,iCAAiC,SAAS;GAClE,MAAM,iBACL,CAAC,QAAQ,wBACR,SAAS,QAAQ,UAAU,QAAQ,SAAS,QAAQ,WAAW;GAEjE,IAAI;AACJ,OAAI;AAmBH,gBAlBe,MAAM,OAAO,4BAA4B,oBAAoB;KAC3E,aAAa;KACb;KAEA,QAAQ,QAAQ,sBACb,6CAA6C,WAC7C,6CAA6C;KAChD,UAAU,EACT,OAAO;MACN;MACA;MACA;MACA;MACA;MACA;MACA,EACD;KACD,CAAC,EACgB;YACV,OAAO;AAEf,QAAI,iBAAiB,SAAS,MAAM,QACnC,OAAM,IAAI,gBAAgB,mBAAmB,MAAM,QAAQ,EAAE,EAAE,OAAO,OAAO,CAAC;AAE/E,UAAM;;AAGP,OACC,CAAC,QAAQ,uBACT,SAAS,aAAa,SAAS,UAC/B,CAAC,SAAS,YAAY,QAAQ,OAAO,SACpC;IACD,MAAM,iBAAiB,SAAS,YAAY,QAAQ,OAAO,QACxD,wBAAwB,SAAS,YAAY,QAAQ,OAAO,MAAM,GAClE;AAEH,UAAM,IAAI,gBAAgB,kCADL,gBAAgB,WAAW,wBAC4B,EAC3E,gBACA,CAAC;;AAGH,OAAI,CAAC,SAAS,aAAa,YAC1B,OAAM,IAAI,MAAM,+DAA+D;AAGhF,gCAA6B,iBAAiB,SAAS,YAAY,aAAa,QAAQ;AACxF,SAAM,yDAAyD;IAC9D;IACA;IACA,OAAO,SAAS,YAAY,SAAS;IACrC,yBAAyB;IACzB,uBAAuB,CAAC,CAAC,QAAQ;IACjC;IACA,CAAC;AAEF,UAAO,MAAM,MAAM;;;;AAKtB,SAAS,mBAAmB,YAAgC,OAA6B;AACxF,QAAO;EACN;EACA,UAAU,WAAW,aAAa,SAAS,aAAa,SAAS;EACjE,OAAO,WAAW,QAAQ,WAAW,WAAW,MAAM,GAAG;EACzD,QAAQ,WAAW,SAAS,WAAW,WAAW,OAAO,GAAG;EAC5D;;AAGF,SAAS,yBACR,SACA,SAAS,IACE;CACX,MAAM,QAAQ;EAAC;EAAU;EAAsB;EAAc;EAAiB;AAE9E,KAAI,SAAS,YACZ,OAAM,KACL,sBACA,2BACA,0BACA,mBACA;AAEF,KAAI,SAAS,IACZ,OAAM,KAAK,kBAAkB;AAE9B,KAAI,SAAS,eACZ,OAAM,KAAK,kBAAkB;AAE9B,KAAI,SAAS,QACZ,OAAM,KAAK,UAAU;AAEtB,KAAI,SAAS,OACZ,OAAM,KAAK,SAAS;AAErB,KAAI,SAAS,aAAa;AAEzB,QAAM,KAAK,sCAAsC;AACjD,QAAM,KAAK,oCAAoC;;AAGhD,QAAO,SAAS,MAAM,KAAK,SAAS,SAAS,KAAK,GAAG;;AAGtD,SAAS,cACR,QACA,SACA,cACS;AACT,KAAI,CAAC,SAAS,UACb,QAAO;AAGR,QAAO;EACN,GAAG;EACH,WAAW,cAAc;EACzB;;AAGF,SAAS,gBACR,SACA,SAC4C;AAC5C,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,YAAY,OAAW,QAAO;AAClC,QAAO;EACN,QACC,QAAQ,WAAW,SACf,MAAM,OAAO,QAAQ,OAAO,GAC7B;EACJ,QACC,QAAQ,WAAW,SACf,MAAM,OAAO,QAAQ,OAAO,GAC7B;EACJ;;AAGF,SAAS,SAAS,OAAoE;AACrF,KAAI,CAAC,MACJ,QAAO;AAER,KAAI,MAAM,SAAS,gBAAgB,UAClC,QAAO;EACN,OAAO;EACP,WAAW;EACX;AAEF,KAAI,MAAM,SAAS,gBAAgB,QAClC,QAAO;EACN,cAAc,MAAM;EACpB,OAAO;EACP;AAEF,KAAI,MAAM,SAAS,gBAAgB,OAClC,QAAO;EACN,OAAO;EACP,aAAa,MAAM;EACnB;AAGF,KAAI,MAAM,SAAS,gBAAgB,OAClC,QAAO;EACN,OAAO;EACP,QAAQ,EACP,sBAAsB,MAAM,SAAS,UAAU,EAC/C;EACD;AAGF,KAAI,MAAM,SAAS,gBAAgB,kBAClC,QAAO;EACN,OAAO;EACP,uBAAuB;GACtB,cAAc,MAAM,SAAS,UAAU;GACvC,OAAO,MAAM;GACb;EACD;AAGF,OAAM,IAAI,MACT,sBAAsB,KAAK,UAAU,QAAQ,IAAI,MAAO,OAAO,MAAM,WAAW,EAAE,UAAU,GAAG,EAAG,GAClG;;AAGF,SAAS,wBAAwB,OAA0D;CAC1F,MAAM,UAAU,MAAM,eAAe;CACrC,MAAM,UAAU,MAAM,WAAW,OAAO,OAAO,MAAM,QAAQ,GAAG;CAChE,MAAM,UAAU,MAAM;AAEtB,SAAQ,SAAS,WAAjB;EACC,KAAK,SAAS;GACb,MAAM,QAAQ,QAAQ;GACtB,MAAM,cAAc,MAAM;AAC1B,UAAO;IACN,OAAO;IACP,SAAS,uBAAuB;KAC/B;KACA,UAAU,MAAM;KAChB,WAAW,OAAO,MAAM,aAAa,GAAG;KACxC,aAAa,cACV;MACA,YACC,YAAY,cAAc,OAAO,OAAO,YAAY,WAAW,GAAG;MACnE,cAAc,YAAY;MAC1B,OACC,YAAY,OAAO,cAAc,aAC9B,YAAY,MAAM,WAClB;MACJ,GACA;KACH,CAAC;IACF;IACA,WAAW,eAAe,MAAM;IAChC;;EAGF,KAAK,YACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,WAAW;IACV,MAAM,aAAa,MAAM,KAAK;IAC9B,MAAM,OAAO,QAAQ,UAAU,QAAQ,GAAG;IAC1C,SAAS,OAAO,QAAQ,UAAU,WAAW,GAAG;IAChD;GACD;EAEF,KAAK,uBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,sBAAsB;IACrB,UAAU,QAAQ,qBAAqB,YAAY;IACnD,MAAM,aAAa,QAAQ,qBAAqB,KAAK;IACrD;GACD;EAEF,KAAK,oBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,mBAAmB;IAClB,cAAc,QAAQ,kBAAkB,gBAAgB;IACxD,MAAM,aAAa,QAAQ,kBAAkB,KAAK;IAClD;GACD;EAEF,KAAK,sBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,qBAAqB;IACpB,MAAM,aAAa,QAAQ,oBAAoB,KAAK;IACpD,WAAW,QAAQ,oBAAoB;IACvC,QAAQ,QAAQ,oBAAoB;IACpC;GACD;EAEF,KAAK,aACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,YAAY;IACX,OAAO,QAAQ,WAAW;IAC1B,WAAW,QAAQ,WAAW;IAC9B;GACD;EAEF,KAAK,oBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,mBAAmB;IAClB,MAAM,aAAa,MAAM,KAAK;IAC9B,UAAU,QAAQ,kBAAkB;IACpC,SAAS,QAAQ,kBAAkB;IACnC;GACD;EAEF,KAAK,mBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,kBAAkB;IACjB,MAAM,aAAa,MAAM,KAAK;IAC9B,SAAS,QAAQ,iBAAiB;IAClC;GACD;EAEF,KAAK,WACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,eAAe;IACd,MAAM,aAAa,MAAM,KAAK;IAC9B,UAAU,QAAQ;IAClB;GACD;EAEF,QACC,QAAO;GACN,OAAO;GACP;GACA;GACA,SAAS;GACT;;;AAIJ,SAAS,eAAe,OAAgD;AACvE,QAAO;EACN,WAAW,OAAO,MAAM,aAAa,GAAG;EACxC,UAAU,EAAE,GAAG,MAAM,UAAU;EAC/B,aAAa,MAAM,cAChB;GACA,WACC,MAAM,YAAY,aAAa,OAAO,OAAO,MAAM,YAAY,UAAU,GAAG;GAC7E,YACC,MAAM,YAAY,cAAc,OAAO,OAAO,MAAM,YAAY,WAAW,GAAG;GAC/E,cAAc,MAAM,YAAY;GAChC,cAAc,MAAM,YAAY;GAChC,OACC,MAAM,YAAY,OAAO,cAAc,aACpC,MAAM,YAAY,MAAM,WACxB,MAAM,YAAY,OAAO,cAAc,QACtC,SAAS,MAAM,YAAY,MAAM,IAAI,GACrC;GACL,GACA;EACH;;AAGF,SAAS,aACR,MAMS;AACT,KAAI,QAAQ,KACX,QAAO;CAER,MAAM,OAAO,8CAA8C;AAC3D,KAAI,CAAC,QAAQ,KAAK,SAAS,WAAW,CACrC,QAAO;AAER,QAAO,KACL,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,OAAO,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC,aAAa,CAAC,CAC3D,KAAK,GAAG;;AAGX,SAAS,eACR,WACoD;AACpD,KAAI,aAAa,KAChB,QAAO;AAER,SAAQ,WAAR;EACC,KAAK,0BAA0B,QAC9B,QAAO;EACR,KAAK,0BAA0B,QAC9B,QAAO;EACR,KAAK,0BAA0B;EAC/B,KAAK,0BAA0B,qBAC9B,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAS,oBACR,OAC+C;AAC/C,KAAI,SAAS,KACZ,QAAO;AAER,SAAQ,OAAR;EACC,KAAK,+BAA+B,OACnC,QAAO;EACR,KAAK,+BAA+B,eACnC,QAAO;EACR,KAAK,+BAA+B,QACnC,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAS,qBACR,OAC4F;AAC5F,KAAI,SAAS,KACZ,QAAO;AAER,SAAQ,OAAR;EACC,KAAK,gCAAgC,aACpC,QAAO;EACR,KAAK,gCAAgC,cACpC,QAAO;EACR,KAAK,gCAAgC,eACpC,QAAO;EACR,KAAK,gCAAgC,kBACpC,QAAO;EACR,KAAK,gCAAgC,QACpC,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAS,gCACR,MACyD;AACzD,KAAI,QAAQ,KACX,QAAO;AAER,SAAQ,MAAR;EACC,KAAK,sDAAsD,wCAC1D,QAAO;EACR,KAAK,sDAAsD,eAC1D,QAAO;EACR,KAAK,sDAAsD,8BAC1D,QAAO;EACR,KAAK,sDAAsD,4BAC1D,QAAO;EACR,KAAK,sDAAsD,SAC1D,QAAO;EACR,KAAK,sDAAsD,iBAC1D,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAgB,wBAAwB,EACvC,WAG4C;AAC5C,KAAI,CAAC,QACJ,QAAO;CAGR,MAAM,iBAAiB,QAAQ,eAAe,KAAK,WAAyC;AAC3F,SAAO;GACN,UAAU,OAAO;GACjB,YAAY,oBAAoB,OAAO,WAAW;GAClD,cAAc,OAAO,cAAc,UAAU,IAAI;GACjD,aAAa,OAAO,eAAe;GACnC,YAAY,SAAS,OAAO,WAAW;GACvC,aAAa,qBAAqB,OAAO,YAAY;GACrD,eAAe,OAAO,eAAe,UAAU,IAAI;GACnD,cAAc,OAAO,gBAAgB;GACrC,aAAa,SAAS,OAAO,YAAY;GACzC,aAAa,eAAe,OAAO,YAAY;GAC/C;GACA;AAEF,QAAO;EACN,KAAK,QAAQ,KAAK;EAElB,SAAS;EACT,QAAQ,QAAQ,QAAQ,UACrB;GACA,SAAS;GACT,OAAO;GACP,GACA;GACA,SAAS;GACT,OAAO,wBAAwB,QAAQ,OAAQ,MAAO;GACtD;EACH,SAAS;GACR,iBAAiB,QAAQ,SAAS,iBAAiB,UAAU;GAC7D,aAAa,QAAQ,SAAS,aAAa,UAAU;GACrD,eAAe,QAAQ,SAAS,eAAe,UAAU;GACzD,yBAAyB,QAAQ,SAAS,yBAAyB,UAAU;GAC7E;EACD,mBAAmB,QAAQ;EAG3B,WAAW,QAAQ,YAChB;GACA,UAAU,QAAQ,UAAU;GAC5B,YAAY,oBAAoB,QAAQ,UAAU,WAAW;GAC7D,cAAc,QAAQ,UAAU,cAAc,UAAU,IAAI;GAC5D,aAAa,QAAQ,UAAU,eAAe;GAC9C,YAAY,SAAS,QAAQ,UAAU,WAAW;GAClD,aAAa,qBAAqB,QAAQ,UAAU,YAAY;GAChE,eAAe,QAAQ,UAAU,eAAe,UAAU,IAAI;GAC9D,cAAc,QAAQ,UAAU,gBAAgB;GAChD,aAAa,SAAS,QAAQ,UAAU,YAAY;GACpD,aAAa,eAAe,QAAQ,UAAU,YAAY;GAC1D,GACA;EACH,cAAc,QAAQ,gBAAgB;EACtC,cAAc,QAAQ;EACtB,gBAAgB,QAAQ,gBAAgB,UAAU,IAAI;EACtD;EACA,2BAA2B,QAAQ,0BAA0B,KAC3D,WAAoD;AACpD,UAAO;IACN,MAAM,gCAAgC,OAAO,KAAK;IAElD,UAAU,OAAO;IACjB,SAAS,OAAO,SAAS,UAAU,IAAI;IACvC,QAAQ,OAAO,UAAU;IACzB;IAEF;EACD,qBAAqB,QAAQ,uBAAuB;EACpD;;AAGF,SAAgB,6BAGf,aACA,SAG4C;CAC5C,MAAM,UAAU,SAAS;CACzB,MAAM,cAAsC,EAAE;AAC9C,KAAI,SAAS,YACZ,aAAY,SAAS,gBAAgB,SAAS,WAAW;AACxD,MAAI,OAAO,YAAY,OAAO,WAC7B,aAAY,OAAO,YAAY,OAAO;GAEtC;CAGH,IAAI;AACJ,KAAI,SAAS,aAAa;EACzB,MAAM,KAAK,YAAY;AAEvB,MAAI,CAAC,GACJ,OAAM,IAAI,MAAM,8DAA8D;EAG/E,MAAM,WAAW,iCAAiC,GAAG;AACrD,oBAAkB;GACjB,SAAS,SAAS;GAClB,QAAQ,SAAS;GACjB,YAAY,SAAS;GACrB,UAAU,SAAS;GACnB,QAAQ,SAAS;GACjB,SAAS,SAAS;GAClB;;CAGF,MAAM,WAAW,SAAS,MAAM,YAAY,aAAa,KAAK,QAAQ;CAEtE,MAAM,UAAU,SAAS,UACtB,wBAAwB,EACxB,SAAS,YAAY,SACrB,CAAC,GACD;CAEH,MAAM,SAAyC,YAAY,SAAS,QAAQ,UACzE;EAAE,SAAS;EAAM,OAAO;EAAM,GAC9B;EACA,SAAS;EACT,OAAO,YAAY,SAAS,QAAQ,QACjC,wBAAwB,YAAY,QAAQ,OAAO,MAAM,GACzD;GACA,OAAO;GACP,SAAS;GACT,SAAS;GACT;EACH;CAEH,MAAM,SAA8C;EACnD,QAAQ,YAAY;EACpB,OAAO,YAAY,SAAS,OAAO,UAAU,IAAI;EACjD;EACS;EACT,aAAc,SAAS,cACpB,cACA;EACH,aAAa;EACb,KAAK;EACL,YAAY,YAAY,YAAY,KAAK,QAAQ,SAAS,IAAI,KAAK,MAAO,CAAC,IAAI,EAAE;EACjF,gBAAiB,SAAS,iBACtB,YAAY,gBAAgB,KAAK,YAAY;GAC9C,UAAU,OAAO;GACjB,SAAS,OAAO;GAChB,QAAQ,OAAO;GACf,EAAE,IAAI,EAAE,GACR;EACH,QAAS,SAAS,SACd,YAAY,QAAQ,OAAO,KAAK,WAAW;GAC5C,WAAW,oBAAoB,MAAM,UAAW;GAChD,QAAQ,MAAM;GACd,QAAQ,oBAAoB,MAAM,OAAQ;GAC1C,WAAW,MAAM;GACjB,KAAK,MAAM,UAAU,SAAS,IAAI,YAAY;GAC9C,MAAM,MAAM,OAAQ,MAAM,OAAO,MAAM,KAAK,GAA+B;GAC3E,EAAE,IAAI,EAAE,GACR;EACH;AAED,QAAO,OAAO,UACX;EACA,OAAO;EACP,aAAa;EACb,GACA;EACA,OAAO;EACP,mBAAmB;EACnB;;AAGJ,SAAgB,qCAGf,UACA,SAGoD;CACpD,MAAM,UAAU,SAAS;CACzB,MAAM,oBAAoB,6BAA6B,SAAS,aAAc,EAAE,SAAS,CAAC;CAE1F,MAAM,iBACL,SAAS,kBAAkB,SAAS,iBACjC,SAAS,eAAe,KAAK,YAAY;EACzC,eAAe,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EACtD,KAAK,GAAG,OAAO,SAAS,MACxB,EAAE;EACH,oBAAoB,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAC3D,KAAK,GAAG,OAAO,SAAS,MACxB,EAAE;EACH,EAAE,GACF;AAEJ,KAAI,kBAAkB,UAAU,cAC/B,QAAO;EACN,OAAO;EACP,aAAa,kBAAkB;EAE9B;EACD;AAGF,QAAO;EACN,OAAO;EACP,mBAAmB,kBAAkB;EAEpC;EACD;;AAGF,SAAS,2BAA2B,MAAmD;CACtF,IAAI,YAA4C;AAEhD,KAAI,KAAK,cAAc,wBAAwB,UAC9C,aAAY;UACF,KAAK,cAAc,wBAAwB,QACrD,aAAY;AAGb,QAAO;EACN;EACA,MAAM,+BAA+B,KAAK,KAAM;EAChD;;AAGF,SAAS,+BAA+B,MAA2D;AAClG,SAAQ,KAAK,MAAb;EACC,KAAK,uBAAuB,aAC3B,QAAO,EAAE,OAAO,WAAW;EAC5B,KAAK,uBAAuB,QAC3B,QAAO,EAAE,OAAO,WAAW;EAC5B,KAAK,uBAAuB,KAC3B,QAAO,EAAE,OAAO,QAAQ;EACzB,KAAK,uBAAuB,GAC3B,QAAO,EAAE,OAAO,MAAM;EACvB,KAAK,uBAAuB,IAC3B,QAAO,EAAE,OAAO,OAAO;EACxB,KAAK,uBAAuB,IAC3B,QAAO,EAAE,OAAO,OAAO;EACxB,KAAK,uBAAuB,IAC3B,QAAO,EAAE,OAAO,OAAO;EACxB,KAAK,uBAAuB,KAC3B,QAAO,EAAE,OAAO,QAAQ;EACzB,KAAK,uBAAuB,KAC3B,QAAO,EAAE,OAAO,QAAQ;EACzB,KAAK,uBAAuB,OAC3B,QAAO;GACN,OAAO;GACP,QAAQ,+BAA+B,KAAK,2BAA2B,GAAG;GAC1E;EACF,KAAK,uBAAuB,SAC3B,QAAO;GACN,OAAO;GACP,UAAU;IACT,UAAU,KAAK;IACf,gBAAgB,KAAK,2BAA2B,KAAK,MACpD,+BAA+B,EAAE,CACjC;IACD;GACD;EACF,KAAK,uBAAuB,eAC3B,QAAO;GACN,OAAO;GACP,OAAO,KAAK;GACZ;EACF,QACC,QAAO,EAAE,OAAO,WAAW"}
@@ -1,6 +1,6 @@
1
1
  import { BatchGetObjectsRequest, BatchGetObjectsResponse, BatchGetTransactionsRequest, BatchGetTransactionsResponse, GetCheckpointRequest, GetCheckpointResponse, GetEpochRequest, GetEpochResponse, GetObjectRequest, GetObjectResponse, GetServiceInfoRequest, GetServiceInfoResponse, GetTransactionRequest, GetTransactionResponse, ListCheckpointsRequest, ListCheckpointsResponse, ListEventsRequest, ListEventsResponse, ListTransactionsRequest, ListTransactionsResponse } from "./ledger_service.mjs";
2
- import * as _protobuf_ts_runtime4 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc4 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime1 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc1 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServerStreamingCall, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts
@@ -73,9 +73,9 @@ interface ILedgerServiceClient {
73
73
  declare class LedgerServiceClient implements ILedgerServiceClient, ServiceInfo {
74
74
  private readonly _transport;
75
75
  typeName: string;
76
- methods: _protobuf_ts_runtime_rpc4.MethodInfo<any, any>[];
76
+ methods: _protobuf_ts_runtime_rpc1.MethodInfo<any, any>[];
77
77
  options: {
78
- [extensionName: string]: _protobuf_ts_runtime4.JsonValue;
78
+ [extensionName: string]: _protobuf_ts_runtime1.JsonValue;
79
79
  };
80
80
  constructor(_transport: RpcTransport);
81
81
  /**
@@ -1,6 +1,6 @@
1
1
  import { GetDatatypeRequest, GetDatatypeResponse, GetFunctionRequest, GetFunctionResponse, GetPackageRequest, GetPackageResponse, ListPackageVersionsRequest, ListPackageVersionsResponse } from "./move_package_service.mjs";
2
- import * as _protobuf_ts_runtime0 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc0 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime2 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc2 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts
@@ -31,9 +31,9 @@ interface IMovePackageServiceClient {
31
31
  declare class MovePackageServiceClient implements IMovePackageServiceClient, ServiceInfo {
32
32
  private readonly _transport;
33
33
  typeName: string;
34
- methods: _protobuf_ts_runtime_rpc0.MethodInfo<any, any>[];
34
+ methods: _protobuf_ts_runtime_rpc2.MethodInfo<any, any>[];
35
35
  options: {
36
- [extensionName: string]: _protobuf_ts_runtime0.JsonValue;
36
+ [extensionName: string]: _protobuf_ts_runtime2.JsonValue;
37
37
  };
38
38
  constructor(_transport: RpcTransport);
39
39
  /**
@@ -1,6 +1,6 @@
1
1
  import { VerifySignatureRequest, VerifySignatureResponse } from "./signature_verification_service.mjs";
2
- import * as _protobuf_ts_runtime1 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc1 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime3 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc3 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.ts
@@ -21,9 +21,9 @@ interface ISignatureVerificationServiceClient {
21
21
  declare class SignatureVerificationServiceClient implements ISignatureVerificationServiceClient, ServiceInfo {
22
22
  private readonly _transport;
23
23
  typeName: string;
24
- methods: _protobuf_ts_runtime_rpc1.MethodInfo<any, any>[];
24
+ methods: _protobuf_ts_runtime_rpc3.MethodInfo<any, any>[];
25
25
  options: {
26
- [extensionName: string]: _protobuf_ts_runtime1.JsonValue;
26
+ [extensionName: string]: _protobuf_ts_runtime3.JsonValue;
27
27
  };
28
28
  constructor(_transport: RpcTransport);
29
29
  /**
@@ -1,6 +1,6 @@
1
1
  import { GetBalanceRequest, GetBalanceResponse, GetCoinInfoRequest, GetCoinInfoResponse, ListBalancesRequest, ListBalancesResponse, ListDynamicFieldsRequest, ListDynamicFieldsResponse, ListOwnedObjectsRequest, ListOwnedObjectsResponse } from "./state_service.mjs";
2
- import * as _protobuf_ts_runtime3 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc3 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime4 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc4 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/sui/rpc/v2/state_service.client.d.ts
@@ -35,9 +35,9 @@ interface IStateServiceClient {
35
35
  declare class StateServiceClient implements IStateServiceClient, ServiceInfo {
36
36
  private readonly _transport;
37
37
  typeName: string;
38
- methods: _protobuf_ts_runtime_rpc3.MethodInfo<any, any>[];
38
+ methods: _protobuf_ts_runtime_rpc4.MethodInfo<any, any>[];
39
39
  options: {
40
- [extensionName: string]: _protobuf_ts_runtime3.JsonValue;
40
+ [extensionName: string]: _protobuf_ts_runtime4.JsonValue;
41
41
  };
42
42
  constructor(_transport: RpcTransport);
43
43
  /**
@@ -1,6 +1,6 @@
1
1
  import { ExecuteTransactionRequest, ExecuteTransactionResponse, SimulateTransactionRequest, SimulateTransactionResponse } from "./transaction_execution_service.mjs";
2
- import * as _protobuf_ts_runtime2 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc2 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime0 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc0 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.ts
@@ -23,9 +23,9 @@ interface ITransactionExecutionServiceClient {
23
23
  declare class TransactionExecutionServiceClient implements ITransactionExecutionServiceClient, ServiceInfo {
24
24
  private readonly _transport;
25
25
  typeName: string;
26
- methods: _protobuf_ts_runtime_rpc2.MethodInfo<any, any>[];
26
+ methods: _protobuf_ts_runtime_rpc0.MethodInfo<any, any>[];
27
27
  options: {
28
- [extensionName: string]: _protobuf_ts_runtime2.JsonValue;
28
+ [extensionName: string]: _protobuf_ts_runtime0.JsonValue;
29
29
  };
30
30
  constructor(_transport: RpcTransport);
31
31
  /**
@@ -1,3 +1,4 @@
1
+ import "./types/index.mjs";
1
2
  import { SuiClientTypes } from "../client/types.mjs";
2
3
  import { coreClientResolveTransactionPlugin } from "../client/core-resolver.mjs";
3
4
  import { SuiJsonRpcClient } from "./client.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/jsonRpc/core.ts"],"mappings":";;;;;;;;AAoHA;;cAAa,iBAAA,SAA0B,UAAA;EAAA;EASrC;;;;;IADA,aAAA;IACA;EAAA;IAEA,aAAA,EAAe,gBAAA;IACf,GAAA,GAAM,cAAA,CAAe,UAAA;EAAA;;;;;EAUhB,UAAA,iBAA2B,cAAA,CAAe,aAAA,MAAA,CAC/C,OAAA,EAAS,cAAA,CAAe,iBAAA,CAAkB,OAAA,IAAQ,OAAA;;;;;;;EAqC7C,gBAAA,iBAAiC,cAAA,CAAe,aAAA,MAAA,CACrD,OAAA,EAAS,cAAA,CAAe,uBAAA,CAAwB,OAAA,IAAQ,OAAA;;;;;EA0GtD;;;;EAzDG,SAAA,CAAU,OAAA,EAAS,cAAA,CAAe,gBAAA,GAAgB,OAAA;;;;;EAsIf;;;;EAtGnC,UAAA,CAAW,OAAA,EAAS,cAAA,CAAe,iBAAA,GAAiB,OAAA;;;;;;;;EA4QrB;;;;EArP/B,eAAA,CACL,OAAA,EAAS,cAAA,CAAe,sBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,uBAAA;EAwSf;;;;EA5QL,YAAA,CAAa,OAAA,EAAS,cAAA,CAAe,mBAAA,GAAmB,OAAA;;;;;;;;;;EAyZ3D;;;;EAhYG,cAAA,iBAA+B,cAAA,CAAe,kBAAA,MAAA,CACnD,OAAA,EAAS,cAAA,CAAe,qBAAA,CAAsB,OAAA,IAC5C,OAAA,CAAQ,cAAA,CAAe,iBAAA,CAAkB,OAAA;EAyczC;;;;EAnbG,kBAAA,iBAAmC,cAAA,CAAe,kBAAA,MAAA,CACvD,OAAA,EAAS,cAAA,CAAe,yBAAA,CAA0B,OAAA,IAChD,OAAA,CAAQ,cAAA,CAAe,iBAAA,CAAkB,OAAA;EAuehC;;;;EAhdN,mBAAA,iBAAoC,cAAA,CAAe,0BAAA,MAAA,CACxD,OAAA,EAAS,cAAA,CAAe,0BAAA,CAA2B,OAAA,IACjD,OAAA,CAAQ,cAAA,CAAe,yBAAA,CAA0B,OAAA;EA/QJ;;;;EA0Z1C,oBAAA,CAAqB,OAAA,GAAU,cAAA,CAAe,2BAAA,GAA2B,OAAA;;;EAjZ9E;;;;EA+ZK,iBAAA,CACL,OAAA,GAAU,cAAA,CAAe,wBAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,yBAAA;EA9ZJ;;;;EAkchB,qBAAA,CACL,OAAA,GAAU,cAAA,CAAe,4BAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,6BAAA;EAzbhB;;;;EAqeJ,iBAAA,CAAkB,OAAA,EAAS,cAAA,CAAe,wBAAA,GAAwB,OAAA;;;;;;;;;EAuClE,gBAAA,iBAAiC,cAAA,CAAe,kBAAA,MAAA,CACrD,OAAA,EAAS,cAAA,CAAe,uBAAA,CAAwB,OAAA,IAC9C,OAAA,CAAQ,cAAA,CAAe,wBAAA,CAAyB,OAAA;EAxezC;;;;EA6hBJ,UAAA,CACL,OAAA,EAAS,cAAA,CAAe,iBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,kBAAA;;;;;EAuDpB,sBAAA,CAAuB,OAAA,EAAS,cAAA,CAAe,6BAAA,GAA6B,OAAA;;;;EAriB5E;;;;EAujBA,sBAAA,CACL,OAAA,EAAS,cAAA,CAAe,6BAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,8BAAA;;;;;EAa1B,wBAAA,CAAA,UAAwB,kCAAA;EAtiBlB;;;;EA8iBA,eAAA,CACL,OAAA,EAAS,cAAA,CAAe,sBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,uBAAA;;;;;EA8BpB,kBAAA,CACL,QAAA,GAAW,cAAA,CAAe,yBAAA,GACxB,OAAA,CAAQ,cAAA,CAAe,0BAAA;AAAA"}
1
+ {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/jsonRpc/core.ts"],"mappings":";;;;;;;;;AAoHA;;cAAa,iBAAA,SAA0B,UAAA;EAAA;EASrC;;;;;IADA,aAAA;IACA;EAAA;IAEA,aAAA,EAAe,gBAAA;IACf,GAAA,GAAM,cAAA,CAAe,UAAA;EAAA;;;;;EAUhB,UAAA,iBAA2B,cAAA,CAAe,aAAA,MAAA,CAC/C,OAAA,EAAS,cAAA,CAAe,iBAAA,CAAkB,OAAA,IAAQ,OAAA;;;;;;;EAqC7C,gBAAA,iBAAiC,cAAA,CAAe,aAAA,MAAA,CACrD,OAAA,EAAS,cAAA,CAAe,uBAAA,CAAwB,OAAA,IAAQ,OAAA;;;;;EA0GtD;;;;EAzDG,SAAA,CAAU,OAAA,EAAS,cAAA,CAAe,gBAAA,GAAgB,OAAA;;;;;EAsIf;;;;EAtGnC,UAAA,CAAW,OAAA,EAAS,cAAA,CAAe,iBAAA,GAAiB,OAAA;;;;;;;;EA4QrB;;;;EArP/B,eAAA,CACL,OAAA,EAAS,cAAA,CAAe,sBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,uBAAA;EAwSf;;;;EA5QL,YAAA,CAAa,OAAA,EAAS,cAAA,CAAe,mBAAA,GAAmB,OAAA;;;;;;;;;;EAyZ3D;;;;EAhYG,cAAA,iBAA+B,cAAA,CAAe,kBAAA,MAAA,CACnD,OAAA,EAAS,cAAA,CAAe,qBAAA,CAAsB,OAAA,IAC5C,OAAA,CAAQ,cAAA,CAAe,iBAAA,CAAkB,OAAA;EAyczC;;;;EAnbG,kBAAA,iBAAmC,cAAA,CAAe,kBAAA,MAAA,CACvD,OAAA,EAAS,cAAA,CAAe,yBAAA,CAA0B,OAAA,IAChD,OAAA,CAAQ,cAAA,CAAe,iBAAA,CAAkB,OAAA;EAuehC;;;;EAhdN,mBAAA,iBAAoC,cAAA,CAAe,0BAAA,MAAA,CACxD,OAAA,EAAS,cAAA,CAAe,0BAAA,CAA2B,OAAA,IACjD,OAAA,CAAQ,cAAA,CAAe,yBAAA,CAA0B,OAAA;EA/QJ;;;;EA0Z1C,oBAAA,CAAqB,OAAA,GAAU,cAAA,CAAe,2BAAA,GAA2B,OAAA;;;EAjZ9E;;;;EA+ZK,iBAAA,CACL,OAAA,GAAU,cAAA,CAAe,wBAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,yBAAA;EA9ZJ;;;;EAkchB,qBAAA,CACL,OAAA,GAAU,cAAA,CAAe,4BAAA,GACvB,OAAA,CAAQ,cAAA,CAAe,6BAAA;EAzbhB;;;;EAqeJ,iBAAA,CAAkB,OAAA,EAAS,cAAA,CAAe,wBAAA,GAAwB,OAAA;;;;;;;;;EAuClE,gBAAA,iBAAiC,cAAA,CAAe,kBAAA,MAAA,CACrD,OAAA,EAAS,cAAA,CAAe,uBAAA,CAAwB,OAAA,IAC9C,OAAA,CAAQ,cAAA,CAAe,wBAAA,CAAyB,OAAA;EAxezC;;;;EA6hBJ,UAAA,CACL,OAAA,EAAS,cAAA,CAAe,iBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,kBAAA;;;;;EAuDpB,sBAAA,CAAuB,OAAA,EAAS,cAAA,CAAe,6BAAA,GAA6B,OAAA;;;;EAriB5E;;;;EAujBA,sBAAA,CACL,OAAA,EAAS,cAAA,CAAe,6BAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,8BAAA;;;;;EAa1B,wBAAA,CAAA,UAAwB,kCAAA;EAtiBlB;;;;EA8iBA,eAAA,CACL,OAAA,EAAS,cAAA,CAAe,sBAAA,GACtB,OAAA,CAAQ,cAAA,CAAe,uBAAA;;;;;EA8BpB,kBAAA,CACL,QAAA,GAAW,cAAA,CAAe,yBAAA,GACxB,OAAA,CAAQ,cAAA,CAAe,0BAAA;AAAA"}
@@ -886,6 +886,10 @@ function parseTransactionEffectsJson({ bytes, effects, objectChanges }) {
886
886
  break;
887
887
  }
888
888
  });
889
+ const hasGasObject = normalizeSuiAddress(effects.gasObject.reference.objectId) !== normalizeSuiAddress("0x0");
890
+ let lamportVersion = null;
891
+ if (hasGasObject) lamportVersion = effects.gasObject.reference.version;
892
+ else for (const change of changedObjects) if (change.outputVersion && (lamportVersion === null || BigInt(change.outputVersion) > BigInt(lamportVersion))) lamportVersion = change.outputVersion;
889
893
  return {
890
894
  objectTypes,
891
895
  effects: {
@@ -894,8 +898,8 @@ function parseTransactionEffectsJson({ bytes, effects, objectChanges }) {
894
898
  status: parseJsonRpcExecutionStatus(effects.status, effects.abortError),
895
899
  gasUsed: effects.gasUsed,
896
900
  transactionDigest: effects.transactionDigest,
897
- gasObject: {
898
- objectId: effects.gasObject?.reference.objectId,
901
+ gasObject: hasGasObject ? {
902
+ objectId: effects.gasObject.reference.objectId,
899
903
  inputState: "Exists",
900
904
  inputVersion: null,
901
905
  inputDigest: null,
@@ -905,10 +909,10 @@ function parseTransactionEffectsJson({ bytes, effects, objectChanges }) {
905
909
  outputDigest: effects.gasObject.reference.digest,
906
910
  outputOwner: parseOwner(effects.gasObject.owner),
907
911
  idOperation: "None"
908
- },
912
+ } : null,
909
913
  eventsDigest: effects.eventsDigest ?? null,
910
914
  dependencies: effects.dependencies ?? [],
911
- lamportVersion: effects.gasObject.reference.version,
915
+ lamportVersion,
912
916
  changedObjects,
913
917
  unchangedConsensusObjects,
914
918
  auxiliaryDataDigest: null
@@ -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\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\nfunction 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\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: {\n\t\t\t\tobjectId: effects.gasObject?.reference.objectId,\n\t\t\t\tinputState: 'Exists',\n\t\t\t\tinputVersion: null,\n\t\t\t\tinputDigest: null,\n\t\t\t\tinputOwner: null,\n\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\toutputVersion: effects.gasObject.reference.version,\n\t\t\t\toutputDigest: effects.gasObject.reference.digest,\n\t\t\t\toutputOwner: parseOwner(effects.gasObject.owner),\n\t\t\t\tidOperation: 'None',\n\t\t\t},\n\t\t\teventsDigest: effects.eventsDigest ?? null,\n\t\t\tdependencies: effects.dependencies ?? [],\n\t\t\tlamportVersion: effects.gasObject.reference.version,\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\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\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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"}
package/dist/version.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region src/version.ts
2
- const PACKAGE_VERSION = "2.23.1";
2
+ const PACKAGE_VERSION = "2.23.2";
3
3
 
4
4
  //#endregion
5
5
  export { PACKAGE_VERSION };
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '2.23.1';\n"],"mappings":";AAKA,MAAa,kBAAkB"}
1
+ {"version":3,"file":"version.mjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '2.23.2';\n"],"mappings":";AAKA,MAAa,kBAAkB"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "Mysten Labs <build@mystenlabs.com>",
4
4
  "description": "Sui TypeScript API",
5
5
  "homepage": "https://sdk.mystenlabs.com",
6
- "version": "2.23.1",
6
+ "version": "2.23.2",
7
7
  "license": "Apache-2.0",
8
8
  "sideEffects": false,
9
9
  "files": [
package/src/grpc/core.ts CHANGED
@@ -1392,18 +1392,22 @@ export function parseTransactionEffects({
1392
1392
  nonRefundableStorageFee: effects.gasUsed?.nonRefundableStorageFee?.toString()!,
1393
1393
  },
1394
1394
  transactionDigest: effects.transactionDigest!,
1395
- gasObject: {
1396
- objectId: effects.gasObject?.objectId!,
1397
- inputState: mapInputObjectState(effects.gasObject?.inputState)!,
1398
- inputVersion: effects.gasObject?.inputVersion?.toString() ?? null,
1399
- inputDigest: effects.gasObject?.inputDigest ?? null,
1400
- inputOwner: mapOwner(effects.gasObject?.inputOwner),
1401
- outputState: mapOutputObjectState(effects.gasObject?.outputState)!,
1402
- outputVersion: effects.gasObject?.outputVersion?.toString() ?? null,
1403
- outputDigest: effects.gasObject?.outputDigest ?? null,
1404
- outputOwner: mapOwner(effects.gasObject?.outputOwner),
1405
- idOperation: mapIdOperation(effects.gasObject?.idOperation)!,
1406
- },
1395
+ // gas_object is unset when the transaction has no gas object (system
1396
+ // transactions, or gas paid from an address balance)
1397
+ gasObject: effects.gasObject
1398
+ ? {
1399
+ objectId: effects.gasObject.objectId!,
1400
+ inputState: mapInputObjectState(effects.gasObject.inputState)!,
1401
+ inputVersion: effects.gasObject.inputVersion?.toString() ?? null,
1402
+ inputDigest: effects.gasObject.inputDigest ?? null,
1403
+ inputOwner: mapOwner(effects.gasObject.inputOwner),
1404
+ outputState: mapOutputObjectState(effects.gasObject.outputState)!,
1405
+ outputVersion: effects.gasObject.outputVersion?.toString() ?? null,
1406
+ outputDigest: effects.gasObject.outputDigest ?? null,
1407
+ outputOwner: mapOwner(effects.gasObject.outputOwner),
1408
+ idOperation: mapIdOperation(effects.gasObject.idOperation)!,
1409
+ }
1410
+ : null,
1407
1411
  eventsDigest: effects.eventsDigest ?? null,
1408
1412
  dependencies: effects.dependencies,
1409
1413
  lamportVersion: effects.lamportVersion?.toString() ?? null,
@@ -1182,7 +1182,7 @@ function parseTransaction<Include extends SuiClientTypes.TransactionInclude = {}
1182
1182
  };
1183
1183
  }
1184
1184
 
1185
- function parseTransactionEffectsJson({
1185
+ export function parseTransactionEffectsJson({
1186
1186
  bytes,
1187
1187
  effects,
1188
1188
  objectChanges,
@@ -1302,6 +1302,28 @@ function parseTransactionEffectsJson({
1302
1302
  }
1303
1303
  });
1304
1304
 
1305
+ // When the transaction has no gas object (system transactions, or gas paid
1306
+ // from an address balance), the RPC substitutes a placeholder ref with the
1307
+ // 0x0 object id rather than omitting the field.
1308
+ const hasGasObject =
1309
+ normalizeSuiAddress(effects.gasObject.reference.objectId) !== normalizeSuiAddress('0x0');
1310
+
1311
+ let lamportVersion: string | null = null;
1312
+ if (hasGasObject) {
1313
+ lamportVersion = effects.gasObject.reference.version;
1314
+ } else {
1315
+ // Written objects are all assigned the lamport version, so recover it
1316
+ // from the changed objects when the gas object can't provide it.
1317
+ for (const change of changedObjects) {
1318
+ if (
1319
+ change.outputVersion &&
1320
+ (lamportVersion === null || BigInt(change.outputVersion) > BigInt(lamportVersion))
1321
+ ) {
1322
+ lamportVersion = change.outputVersion;
1323
+ }
1324
+ }
1325
+ }
1326
+
1305
1327
  return {
1306
1328
  objectTypes,
1307
1329
  effects: {
@@ -1310,21 +1332,23 @@ function parseTransactionEffectsJson({
1310
1332
  status: parseJsonRpcExecutionStatus(effects.status, effects.abortError),
1311
1333
  gasUsed: effects.gasUsed,
1312
1334
  transactionDigest: effects.transactionDigest,
1313
- gasObject: {
1314
- objectId: effects.gasObject?.reference.objectId,
1315
- inputState: 'Exists',
1316
- inputVersion: null,
1317
- inputDigest: null,
1318
- inputOwner: null,
1319
- outputState: 'ObjectWrite',
1320
- outputVersion: effects.gasObject.reference.version,
1321
- outputDigest: effects.gasObject.reference.digest,
1322
- outputOwner: parseOwner(effects.gasObject.owner),
1323
- idOperation: 'None',
1324
- },
1335
+ gasObject: hasGasObject
1336
+ ? {
1337
+ objectId: effects.gasObject.reference.objectId,
1338
+ inputState: 'Exists',
1339
+ inputVersion: null,
1340
+ inputDigest: null,
1341
+ inputOwner: null,
1342
+ outputState: 'ObjectWrite',
1343
+ outputVersion: effects.gasObject.reference.version,
1344
+ outputDigest: effects.gasObject.reference.digest,
1345
+ outputOwner: parseOwner(effects.gasObject.owner),
1346
+ idOperation: 'None',
1347
+ }
1348
+ : null,
1325
1349
  eventsDigest: effects.eventsDigest ?? null,
1326
1350
  dependencies: effects.dependencies ?? [],
1327
- lamportVersion: effects.gasObject.reference.version,
1351
+ lamportVersion,
1328
1352
  changedObjects,
1329
1353
  unchangedConsensusObjects,
1330
1354
  auxiliaryDataDigest: null,
package/src/version.ts CHANGED
@@ -3,4 +3,4 @@
3
3
 
4
4
  // This file is generated by genversion.mjs. Do not edit it directly.
5
5
 
6
- export const PACKAGE_VERSION = '2.23.1';
6
+ export const PACKAGE_VERSION = '2.23.2';