@mysten/sui 2.26.2 → 2.27.1
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 +13 -0
- package/dist/bcs/index.d.mts +36 -36
- package/dist/client/types.d.mts +10 -0
- package/dist/client/types.d.mts.map +1 -1
- package/dist/client/utils.mjs +67 -2
- package/dist/client/utils.mjs.map +1 -1
- package/dist/cryptography/signature.d.mts +14 -14
- package/dist/graphql/core.d.mts.map +1 -1
- package/dist/graphql/core.mjs +5 -1
- package/dist/graphql/core.mjs.map +1 -1
- package/dist/graphql/generated/queries.mjs +20 -0
- package/dist/graphql/generated/queries.mjs.map +1 -1
- package/dist/grpc/core.d.mts.map +1 -1
- package/dist/grpc/core.mjs +6 -2
- package/dist/grpc/core.mjs.map +1 -1
- package/dist/grpc/proto/sui/forking/v1alpha/forking_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/move_package_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/state_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.d.mts +4 -4
- package/dist/jsonRpc/core.d.mts.map +1 -1
- package/dist/jsonRpc/core.mjs +4 -0
- package/dist/jsonRpc/core.mjs.map +1 -1
- package/dist/transactions/Transaction.d.mts +9 -9
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/dist/zklogin/bcs.d.mts +14 -14
- package/package.json +1 -1
- package/src/client/types.ts +10 -0
- package/src/client/utils.ts +99 -2
- package/src/graphql/core.ts +8 -1
- package/src/graphql/generated/queries.ts +26 -6
- package/src/graphql/queries/transactions.graphql +4 -0
- package/src/grpc/core.ts +14 -2
- package/src/jsonRpc/core.ts +4 -0
- package/src/version.ts +1 -1
|
@@ -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\tObjectResponseError,\n\tSuiMoveAbilitySet,\n\tSuiMoveAbort,\n\tSuiMoveNormalizedType,\n\tSuiMoveVisibility,\n\tSuiObjectChange,\n\tSuiObjectData,\n\tSuiObjectDataFilter,\n\tSuiTransactionBlockResponse,\n\tTransactionEffects,\n} from './types/index.js';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { raceSignal } from '../client/mvr.js';\nimport { Transaction } from '../transactions/Transaction.js';\nimport { computeGasBudget, coreClientResolveTransactionPlugin } from '../client/core-resolver.js';\nimport { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport { normalizeSuiAddress, normalizeStructTag } from '../utils/sui-types.js';\nimport { deriveDynamicFieldID } from '../utils/dynamic-fields.js';\nimport { SUI_FRAMEWORK_ADDRESS, SUI_SYSTEM_ADDRESS } from '../utils/constants.js';\nimport { CoreClient } from '../client/core.js';\nimport type { SuiClientTypes } from '../client/types.js';\nimport { ObjectError, TransactionError } from '../client/errors.js';\nimport {\n\tformatMoveAbortMessage,\n\tparseTransactionBcs,\n\tparseTransactionEffectsBcs,\n} from '../client/index.js';\nimport type { SuiJsonRpcClient } from './client.js';\nimport { JsonRpcError } from './errors.js';\n\nconst MAX_GAS = 50_000_000_000;\n\nfunction mapJsonRpcObjectError(\n\tresponse: ObjectResponseError,\n\trequestedObjectId?: string,\n): ObjectError {\n\tswitch (response.code) {\n\t\tcase 'notExists':\n\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} does not exist`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'notFound',\n\t\t\t\tobjectId: requestedObjectId ?? response.object_id,\n\t\t\t});\n\t\tcase 'dynamicFieldNotFound':\n\t\t\treturn new ObjectError(\n\t\t\t\tresponse.code,\n\t\t\t\t`Dynamic field not found for object ${response.parent_object_id}`,\n\t\t\t\t{\n\t\t\t\t\tcause: response,\n\t\t\t\t\treason: 'notFound',\n\t\t\t\t\tobjectId: requestedObjectId ?? response.parent_object_id,\n\t\t\t\t},\n\t\t\t);\n\t\tcase 'deleted':\n\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} has been deleted`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'deleted',\n\t\t\t\tobjectId: requestedObjectId ?? response.object_id,\n\t\t\t});\n\t\tcase 'displayError':\n\t\t\treturn new ObjectError(response.code, `Display error: ${response.error}`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'unknown',\n\t\t\t\tobjectId: requestedObjectId,\n\t\t\t});\n\t\tcase 'unknown':\n\t\tdefault:\n\t\t\treturn new ObjectError(\n\t\t\t\tresponse.code,\n\t\t\t\t`Unknown error while loading object${requestedObjectId ? ` ${requestedObjectId}` : ''}`,\n\t\t\t\t{\n\t\t\t\t\tcause: response,\n\t\t\t\t\treason: 'unknown',\n\t\t\t\t\tobjectId: requestedObjectId,\n\t\t\t\t},\n\t\t\t);\n\t}\n}\n\nfunction isJsonRpcTransactionNotFound(error: unknown, digest: string): boolean {\n\tif (!(error instanceof JsonRpcError) || error.code !== -32602) return false;\n\n\treturn (\n\t\terror.message === `Invalid Params: Transaction ${digest} not found` ||\n\t\terror.message === `Could not find the referenced transaction [TransactionDigest(${digest})].`\n\t);\n}\n\nfunction parseJsonRpcExecutionStatus(\n\tstatus: JsonRpcExecutionStatus,\n\tabortError?: SuiMoveAbort | null,\n): SuiClientTypes.ExecutionStatus {\n\tif (status.status === 'success') {\n\t\treturn { success: true, error: null };\n\t}\n\n\tconst rawMessage = status.error ?? 'Unknown';\n\n\tif (abortError) {\n\t\tconst commandMatch = rawMessage.match(/in command (\\d+)/);\n\t\tconst command = commandMatch ? parseInt(commandMatch[1], 10) : undefined;\n\n\t\tconst instructionMatch = rawMessage.match(/instruction:\\s*(\\d+)/);\n\t\tconst instruction = instructionMatch ? parseInt(instructionMatch[1], 10) : undefined;\n\n\t\tconst moduleParts = abortError.module_id?.split('::') ?? [];\n\t\tconst pkg = moduleParts[0] ? normalizeSuiAddress(moduleParts[0]) : undefined;\n\t\tconst module = moduleParts[1];\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation:\n\t\t\t\t\t\tpkg && module\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tpackage: pkg,\n\t\t\t\t\t\t\t\t\tmodule,\n\t\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tcleverError: abortError.line != null ? { lineNumber: abortError.line } : undefined,\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: {\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tlocation: abortError.module_id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpackage: normalizeSuiAddress(abortError.module_id.split('::')[0] ?? ''),\n\t\t\t\t\t\t\t\tmodule: abortError.module_id.split('::')[1] ?? '',\n\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: {\n\t\t\t$kind: 'Unknown',\n\t\t\tmessage: rawMessage,\n\t\t\tUnknown: null,\n\t\t},\n\t};\n}\n\n/**\n * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n */\nexport class JSONRpcCoreClient extends CoreClient {\n\t#jsonRpcClient: SuiJsonRpcClient;\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tconstructor({\n\t\tjsonRpcClient,\n\t\tmvr,\n\t}: {\n\t\tjsonRpcClient: SuiJsonRpcClient;\n\t\tmvr?: SuiClientTypes.MvrOptions;\n\t}) {\n\t\tsuper({ network: jsonRpcClient.network, base: jsonRpcClient, mvr });\n\t\tthis.#jsonRpcClient = jsonRpcClient;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t) {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\t\tfor (const batch of batches) {\n\t\t\tconst objects = await this.#jsonRpcClient.multiGetObjects({\n\t\t\t\tids: batch,\n\t\t\t\toptions: {\n\t\t\t\t\tshowOwner: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\tfor (const [idx, object] of objects.entries()) {\n\t\t\t\tif (object.error) {\n\t\t\t\t\tresults.push(mapJsonRpcObjectError(object.error, batch[idx]));\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(parseObject(object.data!, options.include));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t) {\n\t\tlet filter: SuiObjectDataFilter | null = null;\n\t\tif (options.type) {\n\t\t\tconst parts = options.type.split('::');\n\t\t\tif (parts.length === 1) {\n\t\t\t\tfilter = { Package: options.type };\n\t\t\t} else if (parts.length === 2) {\n\t\t\t\tfilter = { MoveModule: { package: parts[0], module: parts[1] } };\n\t\t\t} else {\n\t\t\t\tfilter = { StructType: options.type };\n\t\t\t}\n\t\t}\n\n\t\tconst objects = await this.#jsonRpcClient.getOwnedObjects({\n\t\t\towner: options.owner,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\toptions: {\n\t\t\t\tshowOwner: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t},\n\t\t\tfilter,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: objects.data.map((result) => {\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthrow mapJsonRpcObjectError(result.error);\n\t\t\t\t}\n\n\t\t\t\treturn parseObject(result.data!, options.include);\n\t\t\t}),\n\t\t\thasNextPage: objects.hasNextPage,\n\t\t\tcursor: objects.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listCoins(options: SuiClientTypes.ListCoinsOptions) {\n\t\tconst coins = await this.#jsonRpcClient.getCoins({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: coins.data.map((coin): SuiClientTypes.Coin => ({\n\t\t\t\tobjectId: coin.coinObjectId,\n\t\t\t\tversion: coin.version,\n\t\t\t\tdigest: coin.digest,\n\t\t\t\tbalance: coin.balance,\n\t\t\t\ttype: normalizeStructTag(`0x2::coin::Coin<${coin.coinType}>`),\n\t\t\t\towner: {\n\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\tAddressOwner: options.owner,\n\t\t\t\t},\n\t\t\t})),\n\t\t\thasNextPage: coins.hasNextPage,\n\t\t\tcursor: coins.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getBalance(options: SuiClientTypes.GetBalanceOptions) {\n\t\tconst balance = await this.#jsonRpcClient.getBalance({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\tcoinBalance,\n\t\t\t\taddressBalance,\n\t\t\t},\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCoinMetadata(\n\t\toptions: SuiClientTypes.GetCoinMetadataOptions,\n\t): Promise<SuiClientTypes.GetCoinMetadataResponse> {\n\t\tconst coinType = (\n\t\t\tawait this.mvr.resolveType({ type: options.coinType, signal: options.signal })\n\t\t).type;\n\n\t\tconst result = await this.#jsonRpcClient.getCoinMetadata({\n\t\t\tcoinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tif (!result) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: result.id ?? null,\n\t\t\t\tdecimals: result.decimals,\n\t\t\t\tname: result.name,\n\t\t\t\tsymbol: result.symbol,\n\t\t\t\tdescription: result.description,\n\t\t\t\ticonUrl: result.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listBalances(options: SuiClientTypes.ListBalancesOptions) {\n\t\tconst balances = await this.#jsonRpcClient.getAllBalances({\n\t\t\towner: options.owner,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tbalances: balances.map((balance) => {\n\t\t\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\t\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\t\t\t\treturn {\n\t\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\t\tcoinBalance,\n\t\t\t\t\taddressBalance,\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: false,\n\t\t\tcursor: null,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\ttry {\n\t\t\tconst transaction = await this.#jsonRpcClient.getTransactionBlock({\n\t\t\t\tdigest: options.digest,\n\t\t\t\toptions: {\n\t\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\t\tshowRawInput: true,\n\t\t\t\t\t// showEffects is always needed to get status\n\t\t\t\t\tshowEffects: true,\n\t\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\treturn parseTransaction(transaction, options.include);\n\t\t} catch (error) {\n\t\t\tif (isJsonRpcTransactionNotFound(error, options.digest)) {\n\t\t\t\tthrow new TransactionError('notFound', options.digest, { cause: error });\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst transaction = await this.#jsonRpcClient.executeTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignature: options.signatures,\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn parseTransaction(transaction, options.include);\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.build({ client: this, onlyTransactionKind: true });\n\t\t}\n\n\t\tconst tx = Transaction.from(options.transaction);\n\n\t\tconst data =\n\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t? null\n\t\t\t\t: TransactionDataBuilder.restore(options.transaction.getData());\n\n\t\tconst transactionBytes = data\n\t\t\t? data.build({\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\tgasData: {\n\t\t\t\t\t\t\tbudget: data.gasData.budget ?? String(MAX_GAS),\n\t\t\t\t\t\t\tprice:\n\t\t\t\t\t\t\t\tdata.gasData.price ??\n\t\t\t\t\t\t\t\tString(await this.#jsonRpcClient.getReferenceGasPrice({ signal: options.signal })),\n\t\t\t\t\t\t\tpayment: data.gasData.payment ?? [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t: (options.transaction as Uint8Array);\n\n\t\tconst sender = tx.getData().sender ?? normalizeSuiAddress('0x0');\n\t\tconst checksDisabled = options.checksEnabled === false;\n\n\t\tlet dryRunResult: DryRunTransactionBlockResponse | null = null;\n\t\ttry {\n\t\t\tdryRunResult = await this.#jsonRpcClient.dryRunTransactionBlock({\n\t\t\t\ttransactionBlock: transactionBytes,\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tif (!checksDisabled) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tlet devInspectResult: DevInspectResults | null = null;\n\t\tif (options.include?.commandResults || checksDisabled) {\n\t\t\ttry {\n\t\t\t\tdevInspectResult = await this.#jsonRpcClient.devInspectTransactionBlock({\n\t\t\t\t\tsender,\n\t\t\t\t\ttransactionBlock: tx,\n\t\t\t\t\tsignal: options.signal,\n\t\t\t\t});\n\t\t\t} catch {}\n\t\t}\n\n\t\tconst dryRunFailed = !dryRunResult || dryRunResult.effects.status.status !== 'success';\n\t\tconst effectsSource =\n\t\t\tchecksDisabled && dryRunFailed && devInspectResult\n\t\t\t\t? devInspectResult\n\t\t\t\t: (dryRunResult ?? devInspectResult);\n\t\tif (!effectsSource) {\n\t\t\tthrow new Error('simulateTransaction failed: no results from dryRun or devInspect');\n\t\t}\n\n\t\tconst { effects, objectTypes } = parseTransactionEffectsJson({\n\t\t\teffects: effectsSource.effects,\n\t\t\tobjectChanges: (!dryRunFailed ? dryRunResult?.objectChanges : null) ?? [],\n\t\t});\n\n\t\tlet parsedTransaction: SuiClientTypes.TransactionData | undefined;\n\t\tif (options.include?.transaction) {\n\t\t\tparsedTransaction = parseTransactionBcs(transactionBytes);\n\t\t\tif (data && !dryRunFailed && effects.gasUsed) {\n\t\t\t\tif (!data.gasData.budget) {\n\t\t\t\t\tparsedTransaction.gasData.budget = computeGasBudget(effects.gasUsed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst transactionData: SuiClientTypes.Transaction<Include> = {\n\t\t\tdigest: TransactionDataBuilder.getDigestFromBytes(transactionBytes),\n\t\t\tepoch: null,\n\t\t\tstatus: effects.status,\n\t\t\teffects: (options.include?.effects\n\t\t\t\t? effects\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\t\tobjectTypes: (options.include?.objectTypes\n\t\t\t\t? objectTypes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\t\tsignatures: [],\n\t\t\ttransaction: (parsedTransaction ??\n\t\t\t\tundefined) as SuiClientTypes.Transaction<Include>['transaction'],\n\t\t\tbcs: (options.include?.bcs\n\t\t\t\t? transactionBytes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['bcs'],\n\t\t\tbalanceChanges: (options.include?.balanceChanges && dryRunResult && !dryRunFailed\n\t\t\t\t? dryRunResult.balanceChanges.map((change) => ({\n\t\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\t\tamount: change.amount,\n\t\t\t\t\t}))\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\t\tevents: (options.include?.events\n\t\t\t\t? (effectsSource.events?.map((event) => ({\n\t\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\t\tsender: event.sender,\n\t\t\t\t\t\teventType: event.type,\n\t\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t\t})) ?? [])\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t\t};\n\n\t\tlet commandResults: SuiClientTypes.CommandResult[] | undefined;\n\t\tif (options.include?.commandResults && devInspectResult?.results) {\n\t\t\tcommandResults = devInspectResult.results.map((result) => ({\n\t\t\t\treturnValues: (result.returnValues ?? []).map(([bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t\tmutatedReferences: (result.mutableReferenceOutputs ?? []).map(([, bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t}));\n\t\t}\n\n\t\treturn effects.status.success\n\t\t\t? {\n\t\t\t\t\t$kind: 'Transaction',\n\t\t\t\t\tTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\t\tFailedTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getReferenceGasPrice(options?: SuiClientTypes.GetReferenceGasPriceOptions) {\n\t\tconst referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\treferenceGasPrice: String(referenceGasPrice),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst result = await this.#jsonRpcClient.getProtocolConfig({ signal: options?.signal });\n\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tfor (const [key, value] of Object.entries(result.attributes)) {\n\t\t\tif (value === null) {\n\t\t\t\tattributes[key] = null;\n\t\t\t} else if ('u16' in value) {\n\t\t\t\tattributes[key] = value.u16;\n\t\t\t} else if ('u32' in value) {\n\t\t\t\tattributes[key] = value.u32;\n\t\t\t} else if ('u64' in value) {\n\t\t\t\tattributes[key] = value.u64;\n\t\t\t} else if ('f64' in value) {\n\t\t\t\tattributes[key] = value.f64;\n\t\t\t} else if ('bool' in value) {\n\t\t\t\tattributes[key] = value.bool;\n\t\t\t} else {\n\t\t\t\tconst entries = Object.entries(value);\n\t\t\t\tattributes[key] = entries.length === 1 ? String(entries[0][1]) : JSON.stringify(value);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: result.protocolVersion,\n\t\t\t\tfeatureFlags: { ...result.featureFlags },\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst systemState = await this.#jsonRpcClient.getLatestSuiSystemState({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.systemStateVersion,\n\t\t\t\tepoch: systemState.epoch,\n\t\t\t\tprotocolVersion: systemState.protocolVersion,\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: systemState.epochStartTimestampMs,\n\t\t\t\tsafeMode: systemState.safeMode,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards,\n\t\t\t\tsafeModeComputationRewards: systemState.safeModeComputationRewards,\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates,\n\t\t\t\tsafeModeNonRefundableStorageFee: systemState.safeModeNonRefundableStorageFee,\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.epochDurationMs,\n\t\t\t\t\tstakeSubsidyStartEpoch: systemState.stakeSubsidyStartEpoch,\n\t\t\t\t\tmaxValidatorCount: systemState.maxValidatorCount,\n\t\t\t\t\tminValidatorJoiningStake: systemState.minValidatorJoiningStake,\n\t\t\t\t\tvalidatorLowStakeThreshold: systemState.validatorLowStakeThreshold,\n\t\t\t\t\tvalidatorLowStakeGracePeriod: systemState.validatorLowStakeGracePeriod,\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates: systemState.storageFundTotalObjectStorageRebates,\n\t\t\t\t\tnonRefundableBalance: systemState.storageFundNonRefundableBalance,\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidyBalance,\n\t\t\t\t\tdistributionCounter: systemState.stakeSubsidyDistributionCounter,\n\t\t\t\t\tcurrentDistributionAmount: systemState.stakeSubsidyCurrentDistributionAmount,\n\t\t\t\t\tstakeSubsidyPeriodLength: systemState.stakeSubsidyPeriodLength,\n\t\t\t\t\tstakeSubsidyDecreaseRate: systemState.stakeSubsidyDecreaseRate,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listDynamicFields(options: SuiClientTypes.ListDynamicFieldsOptions) {\n\t\tconst dynamicFields = await this.#jsonRpcClient.getDynamicFields({\n\t\t\tparentId: options.parentId,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tdynamicFields: dynamicFields.data.map((dynamicField): SuiClientTypes.DynamicFieldEntry => {\n\t\t\t\tconst isDynamicObject = dynamicField.type === 'DynamicObject';\n\t\t\t\tconst fullType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>, 0x2::object::ID>`\n\t\t\t\t\t: `0x2::dynamic_field::Field<${dynamicField.name.type}, ${dynamicField.objectType}>`;\n\n\t\t\t\tconst bcsBytes = fromBase64(dynamicField.bcsName);\n\t\t\t\tconst derivedNameType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>`\n\t\t\t\t\t: dynamicField.name.type;\n\t\t\t\treturn {\n\t\t\t\t\t$kind: isDynamicObject ? 'DynamicObject' : 'DynamicField',\n\t\t\t\t\tfieldId: deriveDynamicFieldID(options.parentId, derivedNameType, bcsBytes),\n\t\t\t\t\ttype: normalizeStructTag(fullType),\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: dynamicField.name.type,\n\t\t\t\t\t\tbcs: bcsBytes,\n\t\t\t\t\t},\n\t\t\t\t\tvalueType: dynamicField.objectType,\n\t\t\t\t\tchildId: isDynamicObject ? dynamicField.objectId : undefined,\n\t\t\t\t} as SuiClientTypes.DynamicFieldEntry;\n\t\t\t}),\n\t\t\thasNextPage: dynamicFields.hasNextPage,\n\t\t\tcursor: dynamicFields.nextCursor,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\n\t\t// Transaction cursors are digests, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst pagination = resolvePagination(options);\n\t\tconst { descending, after, before } = pagination;\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst page = await this.#jsonRpcClient.queryTransactionBlocks({\n\t\t\tfilter:\n\t\t\t\tfilter &&\n\t\t\t\t(filter.$kind === 'sender'\n\t\t\t\t\t? { FromAddress: filter.sender }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tMoveFunction: {\n\t\t\t\t\t\t\t\tpackage: filter.package,\n\t\t\t\t\t\t\t\tmodule: filter.module ?? null,\n\t\t\t\t\t\t\t\tfunction: filter.function ?? null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\tcursor: after ?? before,\n\t\t\tlimit: pagination.limit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\ttransactions: page.data.map((transaction) => parseTransaction(transaction, options.include)),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data[0]?.digest ?? null,\n\t\t\tendCursor: page.data.length\n\t\t\t\t? (page.nextCursor ?? page.data[page.data.length - 1].digest)\n\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveEventFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\t// Event cursors are event ids, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst { descending, after, before, limit } = resolvePagination(options);\n\t\tconst cursor = after ?? before;\n\n\t\tconst page = await this.#jsonRpcClient.queryEvents({\n\t\t\tquery: !filter\n\t\t\t\t? { All: [] }\n\t\t\t\t: filter.$kind === 'sender'\n\t\t\t\t\t? { Sender: filter.sender }\n\t\t\t\t\t: filter.$kind === 'emitModule'\n\t\t\t\t\t\t? { MoveModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t: filter.$kind === 'eventTypeModule'\n\t\t\t\t\t\t\t? { MoveEventModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t\t: { MoveEventType: filter.eventType },\n\t\t\tcursor: cursor ? parseEventCursor(cursor) : undefined,\n\t\t\tlimit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tevents: page.data.map((event): SuiClientTypes.EventEntry => ({\n\t\t\t\tpackageId: normalizeSuiAddress(event.packageId),\n\t\t\t\tmodule: event.transactionModule,\n\t\t\t\tsender: normalizeSuiAddress(event.sender),\n\t\t\t\teventType: normalizeStructTag(event.type),\n\t\t\t\tbcs: event.bcsEncoding === 'base58' ? fromBase58(event.bcs) : fromBase64(event.bcs),\n\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t// queryEvents responses do not include checkpoint information\n\t\t\t\tcheckpoint: null,\n\t\t\t\ttransactionDigest: event.id.txDigest,\n\t\t\t\teventIndex: Number(event.id.eventSeq),\n\t\t\t})),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data.length ? JSON.stringify(page.data[0].id) : null,\n\t\t\tendCursor:\n\t\t\t\tpage.data.length && page.nextCursor\n\t\t\t\t\t? JSON.stringify(page.nextCursor)\n\t\t\t\t\t: page.data.length\n\t\t\t\t\t\t? JSON.stringify(page.data[page.data.length - 1].id)\n\t\t\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync verifyZkLoginSignature(options: SuiClientTypes.VerifyZkLoginSignatureOptions) {\n\t\tconst result = await this.#jsonRpcClient.verifyZkLoginSignature({\n\t\t\tsignal: options.signal,\n\t\t\tbytes: options.bytes,\n\t\t\tsignature: options.signature,\n\t\t\tintentScope: options.intentScope,\n\t\t\tauthor: options.address,\n\t\t});\n\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\terrors: result.errors,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name = (await this.#jsonRpcClient.resolveNameServiceNames(options)).data[0] ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync resolveNameServiceAddress(\n\t\toptions: SuiClientTypes.ResolveNameServiceAddressOptions,\n\t): Promise<SuiClientTypes.ResolveNameServiceAddressResponse> {\n\t\treturn {\n\t\t\taddress: await this.#jsonRpcClient.resolveNameServiceAddress(options),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tresolveTransactionPlugin() {\n\t\treturn coreClientResolveTransactionPlugin;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getMoveFunction(\n\t\toptions: SuiClientTypes.GetMoveFunctionOptions,\n\t): Promise<SuiClientTypes.GetMoveFunctionResponse> {\n\t\tconst resolvedPackageId = (\n\t\t\tawait this.mvr.resolvePackage({ package: options.packageId, signal: options.signal })\n\t\t).package;\n\t\tconst result = await this.#jsonRpcClient.getNormalizedMoveFunction({\n\t\t\tpackage: resolvedPackageId,\n\t\t\tmodule: options.moduleName,\n\t\t\tfunction: options.name,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tfunction: {\n\t\t\t\tpackageId: normalizeSuiAddress(resolvedPackageId),\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t\tvisibility: parseVisibility(result.visibility),\n\t\t\t\tisEntry: result.isEntry,\n\t\t\t\ttypeParameters: result.typeParameters.map((abilities) => ({\n\t\t\t\t\tisPhantom: false,\n\t\t\t\t\tconstraints: parseAbilities(abilities),\n\t\t\t\t})),\n\t\t\t\tparameters: result.parameters.map((param) => parseNormalizedSuiMoveType(param)),\n\t\t\t\treturns: result.return.map((ret) => parseNormalizedSuiMoveType(ret)),\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getChainIdentifier(\n\t\toptions?: SuiClientTypes.GetChainIdentifierOptions,\n\t): Promise<SuiClientTypes.GetChainIdentifierResponse> {\n\t\t// The result is cached and shared across callers, so the underlying request must\n\t\t// not carry any single caller's signal. Isolate cancellation per-caller instead.\n\t\tconst cached = this.cache.read(['chainIdentifier'], async () => {\n\t\t\tconst checkpoint = await this.#jsonRpcClient.getCheckpoint({ id: '0' });\n\t\t\treturn {\n\t\t\t\tchainIdentifier: checkpoint.digest,\n\t\t\t};\n\t\t});\n\n\t\treturn raceSignal(Promise.resolve(cached), options?.signal);\n\t}\n}\n\nfunction serializeObjectToBcs(object: SuiObjectData): Uint8Array | undefined {\n\tif (object.bcs?.dataType !== 'moveObject') {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\t// Normalize the type string to ensure consistent address formatting (0x2 vs 0x00...02)\n\t\tconst typeStr = normalizeStructTag(object.bcs.type);\n\t\tlet moveObjectType: InferBcsInput<typeof bcs.MoveObjectType>;\n\n\t\t// Normalize constants for comparison\n\t\tconst normalizedSuiFramework = normalizeSuiAddress(SUI_FRAMEWORK_ADDRESS);\n\t\tconst gasCoinType = normalizeStructTag(\n\t\t\t`${SUI_FRAMEWORK_ADDRESS}::coin::Coin<${SUI_FRAMEWORK_ADDRESS}::sui::SUI>`,\n\t\t);\n\t\tconst stakedSuiType = normalizeStructTag(`${SUI_SYSTEM_ADDRESS}::staking_pool::StakedSui`);\n\t\tconst coinPrefix = `${normalizedSuiFramework}::coin::Coin<`;\n\n\t\tif (typeStr === gasCoinType) {\n\t\t\tmoveObjectType = { GasCoin: null };\n\t\t} else if (typeStr === stakedSuiType) {\n\t\t\tmoveObjectType = { StakedSui: null };\n\t\t} else if (typeStr.startsWith(coinPrefix)) {\n\t\t\tconst innerTypeMatch = typeStr.match(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t`${normalizedSuiFramework.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}::coin::Coin<(.+)>$`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (innerTypeMatch) {\n\t\t\t\tconst innerTypeTag = TypeTagSerializer.parseFromStr(innerTypeMatch[1], true);\n\t\t\t\tmoveObjectType = { Coin: innerTypeTag };\n\t\t\t} else {\n\t\t\t\tthrow new Error('Failed to parse Coin type');\n\t\t\t}\n\t\t} else {\n\t\t\tconst typeTag = TypeTagSerializer.parseFromStr(typeStr, true);\n\t\t\tif (typeof typeTag !== 'object' || !('struct' in typeTag)) {\n\t\t\t\tthrow new Error('Expected struct type tag');\n\t\t\t}\n\t\t\tmoveObjectType = { Other: typeTag.struct };\n\t\t}\n\n\t\tconst contents = fromBase64(object.bcs.bcsBytes);\n\t\tconst owner = convertOwnerToBcs(object.owner!);\n\n\t\treturn bcs.Object.serialize({\n\t\t\tdata: {\n\t\t\t\tMove: {\n\t\t\t\t\ttype: moveObjectType,\n\t\t\t\t\thasPublicTransfer: object.bcs.hasPublicTransfer,\n\t\t\t\t\tversion: object.bcs.version,\n\t\t\t\t\tcontents,\n\t\t\t\t},\n\t\t\t},\n\t\t\towner,\n\t\t\tpreviousTransaction: object.previousTransaction!,\n\t\t\tstorageRebate: object.storageRebate!,\n\t\t}).toBytes();\n\t} catch {\n\t\t// If serialization fails, return undefined\n\t\treturn undefined;\n\t}\n}\n\nfunction parseObject<Include extends SuiClientTypes.ObjectInclude = {}>(\n\tobject: SuiObjectData,\n\tinclude?: Include,\n): SuiClientTypes.Object<Include> {\n\tconst bcsContent =\n\t\tobject.bcs?.dataType === 'moveObject' ? fromBase64(object.bcs.bcsBytes) : undefined;\n\n\tconst objectBcs = include?.objectBcs ? serializeObjectToBcs(object) : undefined;\n\n\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\tconst type =\n\t\tobject.type && object.type.includes('::')\n\t\t\t? normalizeStructTag(object.type)\n\t\t\t: (object.type ?? '');\n\n\tconst jsonContent =\n\t\tinclude?.json && object.content?.dataType === 'moveObject'\n\t\t\t? (object.content.fields as Record<string, unknown>)\n\t\t\t: include?.json\n\t\t\t\t? null\n\t\t\t\t: undefined;\n\n\tconst displayData = include?.display\n\t\t? object.display?.data != null\n\t\t\t? { output: object.display.data as Record<string, unknown>, errors: null }\n\t\t\t: null\n\t\t: undefined;\n\n\treturn {\n\t\tobjectId: object.objectId,\n\t\tversion: object.version,\n\t\tdigest: object.digest,\n\t\ttype,\n\t\tcontent: (include?.content\n\t\t\t? bcsContent\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['content'],\n\t\towner: parseOwner(object.owner!),\n\t\tpreviousTransaction: (include?.previousTransaction\n\t\t\t? (object.previousTransaction ?? undefined)\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t};\n}\n\nfunction parseOwner(owner: ObjectOwner): SuiClientTypes.ObjectOwner {\n\tif (owner === 'Immutable') {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'AddressOwner',\n\t\t\tAddressOwner: owner.AddressOwner,\n\t\t};\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.ObjectOwner,\n\t\t};\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.Shared.initial_shared_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction convertOwnerToBcs(owner: ObjectOwner) {\n\tif (owner === 'Immutable') {\n\t\treturn { Immutable: null };\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn { AddressOwner: owner.AddressOwner };\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn { ObjectOwner: owner.ObjectOwner };\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\tShared: { initialSharedVersion: owner.Shared.initial_shared_version },\n\t\t};\n\t}\n\n\tif (typeof owner === 'object' && owner !== null && 'ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseOwnerAddress(owner: ObjectOwner): string | null {\n\tif (owner === 'Immutable') {\n\t\treturn null;\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn owner.ConsensusAddressOwner.owner;\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn owner.AddressOwner;\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn owner.ObjectOwner;\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn null;\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseEventCursor(cursor: string): EventId {\n\ttry {\n\t\tconst parsed = JSON.parse(cursor) as EventId;\n\t\tif (typeof parsed?.txDigest !== 'string' || typeof parsed?.eventSeq !== 'string') {\n\t\t\tthrow new Error('malformed event cursor');\n\t\t}\n\t\treturn parsed;\n\t} catch {\n\t\tthrow new Error(`Invalid event cursor: ${cursor}`);\n\t}\n}\n\nfunction parseTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\ttransaction: SuiTransactionBlockResponse,\n\tinclude?: Include,\n): SuiClientTypes.TransactionResult<Include> {\n\tconst objectTypes: Record<string, string> = {};\n\n\tif (include?.objectTypes) {\n\t\ttransaction.objectChanges?.forEach((change) => {\n\t\t\tif (change.type !== 'published') {\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tlet signatures: string[] = [];\n\tlet bcsBytes: Uint8Array | undefined;\n\n\tif (transaction.rawTransaction) {\n\t\tconst parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction))[0];\n\t\t// The genesis transaction's raw data carries a placeholder signature that\n\t\t// other transports do not report\n\t\tsignatures =\n\t\t\tparsedTx.intentMessage.value.V1.kind.$kind === 'Genesis' ? [] : parsedTx.txSignatures;\n\n\t\tif (include?.transaction || include?.bcs) {\n\t\t\tconst bytes = bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes();\n\n\t\t\tif (include?.bcs) {\n\t\t\t\tbcsBytes = bytes;\n\t\t\t}\n\n\t\t\tif (include?.transaction) {\n\t\t\t\tconst data = TransactionDataBuilder.restore({\n\t\t\t\t\tversion: 2,\n\t\t\t\t\tsender: parsedTx.intentMessage.value.V1.sender,\n\t\t\t\t\texpiration: parsedTx.intentMessage.value.V1.expiration,\n\t\t\t\t\tgasData: parsedTx.intentMessage.value.V1.gasData,\n\t\t\t\t\tinputs: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.inputs,\n\t\t\t\t\tcommands: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.commands,\n\t\t\t\t});\n\t\t\t\ttransactionData = { ...data };\n\t\t\t}\n\t\t}\n\t}\n\n\t// Get status from JSON-RPC response\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status\n\t\t? parseJsonRpcExecutionStatus(transaction.effects.status, transaction.effects.abortError)\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: {\n\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\tmessage: 'Unknown',\n\t\t\t\t\tUnknown: null,\n\t\t\t\t},\n\t\t\t};\n\n\tconst effectsBytes = transaction.rawEffects ? new Uint8Array(transaction.rawEffects) : null;\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest,\n\t\tepoch: transaction.effects?.executedEpoch ?? null,\n\t\tstatus,\n\t\teffects: (include?.effects && effectsBytes\n\t\t\t? parseTransactionEffectsBcs(effectsBytes)\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\tobjectTypes: (include?.objectTypes\n\t\t\t? objectTypes\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\ttransaction: transactionData as SuiClientTypes.Transaction<Include>['transaction'],\n\t\tbcs: bcsBytes as SuiClientTypes.Transaction<Include>['bcs'],\n\t\tsignatures,\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\tamount: change.amount,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\tevents: (include?.events\n\t\t\t? (transaction.events?.map((event) => ({\n\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\tsender: event.sender,\n\t\t\t\t\teventType: event.type,\n\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t};\n\n\treturn status.success\n\t\t? {\n\t\t\t\t$kind: 'Transaction',\n\t\t\t\tTransaction: result,\n\t\t\t}\n\t\t: {\n\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\tFailedTransaction: result,\n\t\t\t};\n}\n\nexport function parseTransactionEffectsJson({\n\tbytes,\n\teffects,\n\tobjectChanges,\n}: {\n\tbytes?: Uint8Array;\n\teffects: TransactionEffects;\n\tobjectChanges: SuiObjectChange[] | null;\n}): {\n\teffects: SuiClientTypes.TransactionEffects;\n\tobjectTypes: Record<string, string>;\n} {\n\tconst changedObjects: SuiClientTypes.ChangedObject[] = [];\n\tconst unchangedConsensusObjects: SuiClientTypes.UnchangedConsensusObject[] = [];\n\tconst objectTypes: Record<string, string> = {};\n\n\tobjectChanges?.forEach((change) => {\n\t\tswitch (change.type) {\n\t\t\tcase 'published':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.packageId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'PackageWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'transferred':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: change.digest,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.recipient),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'mutated':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.previousVersion,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: parseOwner(change.owner),\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'deleted':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'DoesNotExist',\n\t\t\t\t\toutputVersion: null,\n\t\t\t\t\toutputDigest: null,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Deleted',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'wrapped':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest:\n\t\t\t\t\t\teffects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\toutputOwner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'created':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\t// When the transaction has no gas object (system transactions, or gas paid\n\t// from an address balance), the RPC substitutes a placeholder ref with the\n\t// 0x0 object id rather than omitting the field.\n\tconst hasGasObject =\n\t\tnormalizeSuiAddress(effects.gasObject.reference.objectId) !== normalizeSuiAddress('0x0');\n\n\tlet lamportVersion: string | null = null;\n\tif (hasGasObject) {\n\t\tlamportVersion = effects.gasObject.reference.version;\n\t} else {\n\t\t// Written objects are all assigned the lamport version, so recover it\n\t\t// from the changed objects when the gas object can't provide it.\n\t\tfor (const change of changedObjects) {\n\t\t\tif (\n\t\t\t\tchange.outputVersion &&\n\t\t\t\t(lamportVersion === null || BigInt(change.outputVersion) > BigInt(lamportVersion))\n\t\t\t) {\n\t\t\t\tlamportVersion = change.outputVersion;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tobjectTypes,\n\t\teffects: {\n\t\t\tbcs: bytes ?? null,\n\t\t\tversion: 2,\n\t\t\tstatus: parseJsonRpcExecutionStatus(effects.status, effects.abortError),\n\t\t\tgasUsed: effects.gasUsed,\n\t\t\ttransactionDigest: effects.transactionDigest,\n\t\t\tgasObject: hasGasObject\n\t\t\t\t? {\n\t\t\t\t\t\tobjectId: effects.gasObject.reference.objectId,\n\t\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\t\tinputVersion: null,\n\t\t\t\t\t\tinputDigest: null,\n\t\t\t\t\t\tinputOwner: null,\n\t\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\t\toutputVersion: effects.gasObject.reference.version,\n\t\t\t\t\t\toutputDigest: effects.gasObject.reference.digest,\n\t\t\t\t\t\toutputOwner: parseOwner(effects.gasObject.owner),\n\t\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\teventsDigest: effects.eventsDigest ?? null,\n\t\t\tdependencies: effects.dependencies ?? [],\n\t\t\tlamportVersion,\n\t\t\tchangedObjects,\n\t\t\tunchangedConsensusObjects,\n\t\t\tauxiliaryDataDigest: null,\n\t\t},\n\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: SuiMoveNormalizedType): SuiClientTypes.OpenSignature {\n\tif (typeof type !== 'string') {\n\t\tif ('Reference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'immutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.Reference),\n\t\t\t};\n\t\t}\n\n\t\tif ('MutableReference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'mutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.MutableReference),\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\treference: null,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(\n\ttype: SuiMoveNormalizedType,\n): SuiClientTypes.OpenSignatureBody {\n\tswitch (type) {\n\t\tcase 'Address':\n\t\t\treturn { $kind: 'address' };\n\t\tcase 'Bool':\n\t\t\treturn { $kind: 'bool' };\n\t\tcase 'U8':\n\t\t\treturn { $kind: 'u8' };\n\t\tcase 'U16':\n\t\t\treturn { $kind: 'u16' };\n\t\tcase 'U32':\n\t\t\treturn { $kind: 'u32' };\n\t\tcase 'U64':\n\t\t\treturn { $kind: 'u64' };\n\t\tcase 'U128':\n\t\t\treturn { $kind: 'u128' };\n\t\tcase 'U256':\n\t\t\treturn { $kind: 'u256' };\n\t}\n\n\tif (typeof type === 'string') {\n\t\tthrow new Error(`Unknown type: ${type}`);\n\t}\n\n\tif ('Vector' in type) {\n\t\treturn {\n\t\t\t$kind: 'vector',\n\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.Vector),\n\t\t};\n\t}\n\n\tif ('Struct' in type) {\n\t\treturn {\n\t\t\t$kind: 'datatype',\n\t\t\tdatatype: {\n\t\t\t\ttypeName: `${normalizeSuiAddress(type.Struct.address)}::${type.Struct.module}::${type.Struct.name}`,\n\t\t\t\ttypeParameters: type.Struct.typeArguments.map((t) => parseNormalizedSuiMoveTypeBody(t)),\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('TypeParameter' in type) {\n\t\treturn {\n\t\t\t$kind: 'typeParameter',\n\t\t\tindex: type.TypeParameter,\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown type: ${JSON.stringify(type)}`);\n}\n\nfunction parseAbilities(abilitySet: SuiMoveAbilitySet): SuiClientTypes.Ability[] {\n\treturn abilitySet.abilities.map((ability) => {\n\t\tswitch (ability) {\n\t\t\tcase 'Copy':\n\t\t\t\treturn 'copy';\n\t\t\tcase 'Drop':\n\t\t\t\treturn 'drop';\n\t\t\tcase 'Store':\n\t\t\t\treturn 'store';\n\t\t\tcase 'Key':\n\t\t\t\treturn 'key';\n\t\t\tdefault:\n\t\t\t\treturn 'unknown';\n\t\t}\n\t});\n}\n\nfunction parseVisibility(visibility: SuiMoveVisibility): SuiClientTypes.Visibility {\n\tswitch (visibility) {\n\t\tcase 'Public':\n\t\t\treturn 'public';\n\t\tcase 'Private':\n\t\t\treturn 'private';\n\t\tcase 'Friend':\n\t\t\treturn 'friend';\n\t\tdefault:\n\t\t\treturn 'unknown';\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.mjs","names":["#jsonRpcClient","bcs"],"sources":["../../src/jsonRpc/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase58, fromBase64, type InferBcsInput } from '@mysten/bcs';\n\nimport { bcs, TypeTagSerializer } from '../bcs/index.js';\nimport type {\n\tDevInspectResults,\n\tDryRunTransactionBlockResponse,\n\tEventId,\n\tExecutionStatus as JsonRpcExecutionStatus,\n\tObjectOwner,\n\tObjectResponseError,\n\tSuiMoveAbilitySet,\n\tSuiMoveAbort,\n\tSuiMoveNormalizedType,\n\tSuiMoveVisibility,\n\tSuiObjectChange,\n\tSuiObjectData,\n\tSuiObjectDataFilter,\n\tSuiTransactionBlockResponse,\n\tTransactionEffects,\n} from './types/index.js';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { raceSignal } from '../client/mvr.js';\nimport { Transaction } from '../transactions/Transaction.js';\nimport { computeGasBudget, coreClientResolveTransactionPlugin } from '../client/core-resolver.js';\nimport { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport { normalizeSuiAddress, normalizeStructTag } from '../utils/sui-types.js';\nimport { deriveDynamicFieldID } from '../utils/dynamic-fields.js';\nimport { SUI_FRAMEWORK_ADDRESS, SUI_SYSTEM_ADDRESS } from '../utils/constants.js';\nimport { CoreClient } from '../client/core.js';\nimport type { SuiClientTypes } from '../client/types.js';\nimport { ObjectError, TransactionError } from '../client/errors.js';\nimport {\n\tformatMoveAbortMessage,\n\tparseTransactionBcs,\n\tparseTransactionEffectsBcs,\n} from '../client/index.js';\nimport type { SuiJsonRpcClient } from './client.js';\nimport { JsonRpcError } from './errors.js';\n\nconst MAX_GAS = 50_000_000_000;\n\nfunction mapJsonRpcObjectError(\n\tresponse: ObjectResponseError,\n\trequestedObjectId?: string,\n): ObjectError {\n\tswitch (response.code) {\n\t\tcase 'notExists':\n\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} does not exist`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'notFound',\n\t\t\t\tobjectId: requestedObjectId ?? response.object_id,\n\t\t\t});\n\t\tcase 'dynamicFieldNotFound':\n\t\t\treturn new ObjectError(\n\t\t\t\tresponse.code,\n\t\t\t\t`Dynamic field not found for object ${response.parent_object_id}`,\n\t\t\t\t{\n\t\t\t\t\tcause: response,\n\t\t\t\t\treason: 'notFound',\n\t\t\t\t\tobjectId: requestedObjectId ?? response.parent_object_id,\n\t\t\t\t},\n\t\t\t);\n\t\tcase 'deleted':\n\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} has been deleted`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'deleted',\n\t\t\t\tobjectId: requestedObjectId ?? response.object_id,\n\t\t\t});\n\t\tcase 'displayError':\n\t\t\treturn new ObjectError(response.code, `Display error: ${response.error}`, {\n\t\t\t\tcause: response,\n\t\t\t\treason: 'unknown',\n\t\t\t\tobjectId: requestedObjectId,\n\t\t\t});\n\t\tcase 'unknown':\n\t\tdefault:\n\t\t\treturn new ObjectError(\n\t\t\t\tresponse.code,\n\t\t\t\t`Unknown error while loading object${requestedObjectId ? ` ${requestedObjectId}` : ''}`,\n\t\t\t\t{\n\t\t\t\t\tcause: response,\n\t\t\t\t\treason: 'unknown',\n\t\t\t\t\tobjectId: requestedObjectId,\n\t\t\t\t},\n\t\t\t);\n\t}\n}\n\nfunction isJsonRpcTransactionNotFound(error: unknown, digest: string): boolean {\n\tif (!(error instanceof JsonRpcError) || error.code !== -32602) return false;\n\n\treturn (\n\t\terror.message === `Invalid Params: Transaction ${digest} not found` ||\n\t\terror.message === `Could not find the referenced transaction [TransactionDigest(${digest})].`\n\t);\n}\n\nfunction parseJsonRpcExecutionStatus(\n\tstatus: JsonRpcExecutionStatus,\n\tabortError?: SuiMoveAbort | null,\n): SuiClientTypes.ExecutionStatus {\n\tif (status.status === 'success') {\n\t\treturn { success: true, error: null };\n\t}\n\n\tconst rawMessage = status.error ?? 'Unknown';\n\n\tif (abortError) {\n\t\tconst commandMatch = rawMessage.match(/in command (\\d+)/);\n\t\tconst command = commandMatch ? parseInt(commandMatch[1], 10) : undefined;\n\n\t\tconst instructionMatch = rawMessage.match(/instruction:\\s*(\\d+)/);\n\t\tconst instruction = instructionMatch ? parseInt(instructionMatch[1], 10) : undefined;\n\n\t\tconst moduleParts = abortError.module_id?.split('::') ?? [];\n\t\tconst pkg = moduleParts[0] ? normalizeSuiAddress(moduleParts[0]) : undefined;\n\t\tconst module = moduleParts[1];\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation:\n\t\t\t\t\t\tpkg && module\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tpackage: pkg,\n\t\t\t\t\t\t\t\t\tmodule,\n\t\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tcleverError: abortError.line != null ? { lineNumber: abortError.line } : undefined,\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: {\n\t\t\t\t\tabortCode: String(abortError.error_code ?? 0),\n\t\t\t\t\tlocation: abortError.module_id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpackage: normalizeSuiAddress(abortError.module_id.split('::')[0] ?? ''),\n\t\t\t\t\t\t\t\tmodule: abortError.module_id.split('::')[1] ?? '',\n\t\t\t\t\t\t\t\tfunctionName: abortError.function ?? undefined,\n\t\t\t\t\t\t\t\tinstruction,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: {\n\t\t\t$kind: 'Unknown',\n\t\t\tmessage: rawMessage,\n\t\t\tUnknown: null,\n\t\t},\n\t};\n}\n\n/**\n * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n */\nexport class JSONRpcCoreClient extends CoreClient {\n\t#jsonRpcClient: SuiJsonRpcClient;\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tconstructor({\n\t\tjsonRpcClient,\n\t\tmvr,\n\t}: {\n\t\tjsonRpcClient: SuiJsonRpcClient;\n\t\tmvr?: SuiClientTypes.MvrOptions;\n\t}) {\n\t\tsuper({ network: jsonRpcClient.network, base: jsonRpcClient, mvr });\n\t\tthis.#jsonRpcClient = jsonRpcClient;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t) {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\t\tfor (const batch of batches) {\n\t\t\tconst objects = await this.#jsonRpcClient.multiGetObjects({\n\t\t\t\tids: batch,\n\t\t\t\toptions: {\n\t\t\t\t\tshowOwner: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\tfor (const [idx, object] of objects.entries()) {\n\t\t\t\tif (object.error) {\n\t\t\t\t\tresults.push(mapJsonRpcObjectError(object.error, batch[idx]));\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(parseObject(object.data!, options.include));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t) {\n\t\tlet filter: SuiObjectDataFilter | null = null;\n\t\tif (options.type) {\n\t\t\tconst parts = options.type.split('::');\n\t\t\tif (parts.length === 1) {\n\t\t\t\tfilter = { Package: options.type };\n\t\t\t} else if (parts.length === 2) {\n\t\t\t\tfilter = { MoveModule: { package: parts[0], module: parts[1] } };\n\t\t\t} else {\n\t\t\t\tfilter = { StructType: options.type };\n\t\t\t}\n\t\t}\n\n\t\tconst objects = await this.#jsonRpcClient.getOwnedObjects({\n\t\t\towner: options.owner,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\toptions: {\n\t\t\t\tshowOwner: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowBcs: options.include?.content || options.include?.objectBcs ? true : false,\n\t\t\t\tshowPreviousTransaction:\n\t\t\t\t\toptions.include?.previousTransaction || options.include?.objectBcs ? true : false,\n\t\t\t\tshowStorageRebate: options.include?.objectBcs ?? false,\n\t\t\t\tshowContent: options.include?.json ?? false,\n\t\t\t\tshowDisplay: options.include?.display ?? false,\n\t\t\t},\n\t\t\tfilter,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: objects.data.map((result) => {\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthrow mapJsonRpcObjectError(result.error);\n\t\t\t\t}\n\n\t\t\t\treturn parseObject(result.data!, options.include);\n\t\t\t}),\n\t\t\thasNextPage: objects.hasNextPage,\n\t\t\tcursor: objects.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listCoins(options: SuiClientTypes.ListCoinsOptions) {\n\t\tconst coins = await this.#jsonRpcClient.getCoins({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: coins.data.map((coin): SuiClientTypes.Coin => ({\n\t\t\t\tobjectId: coin.coinObjectId,\n\t\t\t\tversion: coin.version,\n\t\t\t\tdigest: coin.digest,\n\t\t\t\tbalance: coin.balance,\n\t\t\t\ttype: normalizeStructTag(`0x2::coin::Coin<${coin.coinType}>`),\n\t\t\t\towner: {\n\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\tAddressOwner: options.owner,\n\t\t\t\t},\n\t\t\t})),\n\t\t\thasNextPage: coins.hasNextPage,\n\t\t\tcursor: coins.nextCursor ?? null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getBalance(options: SuiClientTypes.GetBalanceOptions) {\n\t\tconst balance = await this.#jsonRpcClient.getBalance({\n\t\t\towner: options.owner,\n\t\t\tcoinType: options.coinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\tcoinBalance,\n\t\t\t\taddressBalance,\n\t\t\t},\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCoinMetadata(\n\t\toptions: SuiClientTypes.GetCoinMetadataOptions,\n\t): Promise<SuiClientTypes.GetCoinMetadataResponse> {\n\t\tconst coinType = (\n\t\t\tawait this.mvr.resolveType({ type: options.coinType, signal: options.signal })\n\t\t).type;\n\n\t\tconst result = await this.#jsonRpcClient.getCoinMetadata({\n\t\t\tcoinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tif (!result) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: result.id ?? null,\n\t\t\t\tdecimals: result.decimals,\n\t\t\t\tname: result.name,\n\t\t\t\tsymbol: result.symbol,\n\t\t\t\tdescription: result.description,\n\t\t\t\ticonUrl: result.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listBalances(options: SuiClientTypes.ListBalancesOptions) {\n\t\tconst balances = await this.#jsonRpcClient.getAllBalances({\n\t\t\towner: options.owner,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tbalances: balances.map((balance) => {\n\t\t\t\tconst addressBalance = balance.fundsInAddressBalance ?? '0';\n\t\t\t\tconst coinBalance = String(BigInt(balance.totalBalance) - BigInt(addressBalance));\n\t\t\t\treturn {\n\t\t\t\t\tcoinType: normalizeStructTag(balance.coinType),\n\t\t\t\t\tbalance: balance.totalBalance,\n\t\t\t\t\tcoinBalance,\n\t\t\t\t\taddressBalance,\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: false,\n\t\t\tcursor: null,\n\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\ttry {\n\t\t\tconst transaction = await this.#jsonRpcClient.getTransactionBlock({\n\t\t\t\tdigest: options.digest,\n\t\t\t\toptions: {\n\t\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\t\tshowRawInput: true,\n\t\t\t\t\t// showEffects is always needed to get status\n\t\t\t\t\tshowEffects: true,\n\t\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\treturn parseTransaction(transaction, options.include);\n\t\t} catch (error) {\n\t\t\tif (isJsonRpcTransactionNotFound(error, options.digest)) {\n\t\t\t\tthrow new TransactionError('notFound', options.digest, { cause: error });\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst transaction = await this.#jsonRpcClient.executeTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignature: options.signatures,\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn parseTransaction(transaction, options.include);\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.build({ client: this, onlyTransactionKind: true });\n\t\t}\n\n\t\tconst tx = Transaction.from(options.transaction);\n\n\t\tconst data =\n\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t? null\n\t\t\t\t: TransactionDataBuilder.restore(options.transaction.getData());\n\n\t\tconst transactionBytes = data\n\t\t\t? data.build({\n\t\t\t\t\toverrides: {\n\t\t\t\t\t\tgasData: {\n\t\t\t\t\t\t\tbudget: data.gasData.budget ?? String(MAX_GAS),\n\t\t\t\t\t\t\tprice:\n\t\t\t\t\t\t\t\tdata.gasData.price ??\n\t\t\t\t\t\t\t\tString(await this.#jsonRpcClient.getReferenceGasPrice({ signal: options.signal })),\n\t\t\t\t\t\t\tpayment: data.gasData.payment ?? [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t: (options.transaction as Uint8Array);\n\n\t\tconst sender = tx.getData().sender ?? normalizeSuiAddress('0x0');\n\t\tconst checksDisabled = options.checksEnabled === false;\n\n\t\tlet dryRunResult: DryRunTransactionBlockResponse | null = null;\n\t\ttry {\n\t\t\tdryRunResult = await this.#jsonRpcClient.dryRunTransactionBlock({\n\t\t\t\ttransactionBlock: transactionBytes,\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tif (!checksDisabled) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tlet devInspectResult: DevInspectResults | null = null;\n\t\tif (options.include?.commandResults || checksDisabled) {\n\t\t\ttry {\n\t\t\t\tdevInspectResult = await this.#jsonRpcClient.devInspectTransactionBlock({\n\t\t\t\t\tsender,\n\t\t\t\t\ttransactionBlock: tx,\n\t\t\t\t\tsignal: options.signal,\n\t\t\t\t});\n\t\t\t} catch {}\n\t\t}\n\n\t\tconst dryRunFailed = !dryRunResult || dryRunResult.effects.status.status !== 'success';\n\t\tconst effectsSource =\n\t\t\tchecksDisabled && dryRunFailed && devInspectResult\n\t\t\t\t? devInspectResult\n\t\t\t\t: (dryRunResult ?? devInspectResult);\n\t\tif (!effectsSource) {\n\t\t\tthrow new Error('simulateTransaction failed: no results from dryRun or devInspect');\n\t\t}\n\n\t\tconst { effects, objectTypes } = parseTransactionEffectsJson({\n\t\t\teffects: effectsSource.effects,\n\t\t\tobjectChanges: (!dryRunFailed ? dryRunResult?.objectChanges : null) ?? [],\n\t\t});\n\n\t\tlet parsedTransaction: SuiClientTypes.TransactionData | undefined;\n\t\tif (options.include?.transaction) {\n\t\t\tparsedTransaction = parseTransactionBcs(transactionBytes);\n\t\t\tif (data && !dryRunFailed && effects.gasUsed) {\n\t\t\t\tif (!data.gasData.budget) {\n\t\t\t\t\tparsedTransaction.gasData.budget = computeGasBudget(effects.gasUsed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst transactionData: SuiClientTypes.Transaction<Include> = {\n\t\t\tdigest: TransactionDataBuilder.getDigestFromBytes(transactionBytes),\n\t\t\tepoch: null,\n\t\t\ttimestampMs: null,\n\t\t\tcheckpoint: null,\n\t\t\tstatus: effects.status,\n\t\t\teffects: (options.include?.effects\n\t\t\t\t? effects\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\t\tobjectTypes: (options.include?.objectTypes\n\t\t\t\t? objectTypes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\t\tsignatures: [],\n\t\t\ttransaction: (parsedTransaction ??\n\t\t\t\tundefined) as SuiClientTypes.Transaction<Include>['transaction'],\n\t\t\tbcs: (options.include?.bcs\n\t\t\t\t? transactionBytes\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['bcs'],\n\t\t\tbalanceChanges: (options.include?.balanceChanges && dryRunResult && !dryRunFailed\n\t\t\t\t? dryRunResult.balanceChanges.map((change) => ({\n\t\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\t\tamount: change.amount,\n\t\t\t\t\t}))\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\t\tevents: (options.include?.events\n\t\t\t\t? (effectsSource.events?.map((event) => ({\n\t\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\t\tsender: event.sender,\n\t\t\t\t\t\teventType: event.type,\n\t\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t\t})) ?? [])\n\t\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t\t};\n\n\t\tlet commandResults: SuiClientTypes.CommandResult[] | undefined;\n\t\tif (options.include?.commandResults && devInspectResult?.results) {\n\t\t\tcommandResults = devInspectResult.results.map((result) => ({\n\t\t\t\treturnValues: (result.returnValues ?? []).map(([bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t\tmutatedReferences: (result.mutableReferenceOutputs ?? []).map(([, bytes]) => ({\n\t\t\t\t\tbcs: new Uint8Array(bytes),\n\t\t\t\t})),\n\t\t\t}));\n\t\t}\n\n\t\treturn effects.status.success\n\t\t\t? {\n\t\t\t\t\t$kind: 'Transaction',\n\t\t\t\t\tTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\t\tFailedTransaction: transactionData,\n\t\t\t\t\tcommandResults:\n\t\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t\t};\n\t}\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getReferenceGasPrice(options?: SuiClientTypes.GetReferenceGasPriceOptions) {\n\t\tconst referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\treferenceGasPrice: String(referenceGasPrice),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst result = await this.#jsonRpcClient.getProtocolConfig({ signal: options?.signal });\n\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tfor (const [key, value] of Object.entries(result.attributes)) {\n\t\t\tif (value === null) {\n\t\t\t\tattributes[key] = null;\n\t\t\t} else if ('u16' in value) {\n\t\t\t\tattributes[key] = value.u16;\n\t\t\t} else if ('u32' in value) {\n\t\t\t\tattributes[key] = value.u32;\n\t\t\t} else if ('u64' in value) {\n\t\t\t\tattributes[key] = value.u64;\n\t\t\t} else if ('f64' in value) {\n\t\t\t\tattributes[key] = value.f64;\n\t\t\t} else if ('bool' in value) {\n\t\t\t\tattributes[key] = value.bool;\n\t\t\t} else {\n\t\t\t\tconst entries = Object.entries(value);\n\t\t\t\tattributes[key] = entries.length === 1 ? String(entries[0][1]) : JSON.stringify(value);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: result.protocolVersion,\n\t\t\t\tfeatureFlags: { ...result.featureFlags },\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst systemState = await this.#jsonRpcClient.getLatestSuiSystemState({\n\t\t\tsignal: options?.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.systemStateVersion,\n\t\t\t\tepoch: systemState.epoch,\n\t\t\t\tprotocolVersion: systemState.protocolVersion,\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: systemState.epochStartTimestampMs,\n\t\t\t\tsafeMode: systemState.safeMode,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards,\n\t\t\t\tsafeModeComputationRewards: systemState.safeModeComputationRewards,\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates,\n\t\t\t\tsafeModeNonRefundableStorageFee: systemState.safeModeNonRefundableStorageFee,\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.epochDurationMs,\n\t\t\t\t\tstakeSubsidyStartEpoch: systemState.stakeSubsidyStartEpoch,\n\t\t\t\t\tmaxValidatorCount: systemState.maxValidatorCount,\n\t\t\t\t\tminValidatorJoiningStake: systemState.minValidatorJoiningStake,\n\t\t\t\t\tvalidatorLowStakeThreshold: systemState.validatorLowStakeThreshold,\n\t\t\t\t\tvalidatorLowStakeGracePeriod: systemState.validatorLowStakeGracePeriod,\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates: systemState.storageFundTotalObjectStorageRebates,\n\t\t\t\t\tnonRefundableBalance: systemState.storageFundNonRefundableBalance,\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidyBalance,\n\t\t\t\t\tdistributionCounter: systemState.stakeSubsidyDistributionCounter,\n\t\t\t\t\tcurrentDistributionAmount: systemState.stakeSubsidyCurrentDistributionAmount,\n\t\t\t\t\tstakeSubsidyPeriodLength: systemState.stakeSubsidyPeriodLength,\n\t\t\t\t\tstakeSubsidyDecreaseRate: systemState.stakeSubsidyDecreaseRate,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listDynamicFields(options: SuiClientTypes.ListDynamicFieldsOptions) {\n\t\tconst dynamicFields = await this.#jsonRpcClient.getDynamicFields({\n\t\t\tparentId: options.parentId,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tdynamicFields: dynamicFields.data.map((dynamicField): SuiClientTypes.DynamicFieldEntry => {\n\t\t\t\tconst isDynamicObject = dynamicField.type === 'DynamicObject';\n\t\t\t\tconst fullType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>, 0x2::object::ID>`\n\t\t\t\t\t: `0x2::dynamic_field::Field<${dynamicField.name.type}, ${dynamicField.objectType}>`;\n\n\t\t\t\tconst bcsBytes = fromBase64(dynamicField.bcsName);\n\t\t\t\tconst derivedNameType = isDynamicObject\n\t\t\t\t\t? `0x2::dynamic_object_field::Wrapper<${dynamicField.name.type}>`\n\t\t\t\t\t: dynamicField.name.type;\n\t\t\t\treturn {\n\t\t\t\t\t$kind: isDynamicObject ? 'DynamicObject' : 'DynamicField',\n\t\t\t\t\tfieldId: deriveDynamicFieldID(options.parentId, derivedNameType, bcsBytes),\n\t\t\t\t\ttype: normalizeStructTag(fullType),\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: dynamicField.name.type,\n\t\t\t\t\t\tbcs: bcsBytes,\n\t\t\t\t\t},\n\t\t\t\t\tvalueType: dynamicField.objectType,\n\t\t\t\t\tchildId: isDynamicObject ? dynamicField.objectId : undefined,\n\t\t\t\t} as SuiClientTypes.DynamicFieldEntry;\n\t\t\t}),\n\t\t\thasNextPage: dynamicFields.hasNextPage,\n\t\t\tcursor: dynamicFields.nextCursor,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\n\t\t// Transaction cursors are digests, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst pagination = resolvePagination(options);\n\t\tconst { descending, after, before } = pagination;\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst page = await this.#jsonRpcClient.queryTransactionBlocks({\n\t\t\tfilter:\n\t\t\t\tfilter &&\n\t\t\t\t(filter.$kind === 'sender'\n\t\t\t\t\t? { FromAddress: filter.sender }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tMoveFunction: {\n\t\t\t\t\t\t\t\tpackage: filter.package,\n\t\t\t\t\t\t\t\tmodule: filter.module ?? null,\n\t\t\t\t\t\t\t\tfunction: filter.function ?? null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\tcursor: after ?? before,\n\t\t\tlimit: pagination.limit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\toptions: {\n\t\t\t\t// showRawInput is always needed to extract signatures from SenderSignedData\n\t\t\t\tshowRawInput: true,\n\t\t\t\t// showEffects is always needed to get status\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowObjectChanges: options.include?.objectTypes ?? false,\n\t\t\t\tshowRawEffects: options.include?.effects ?? false,\n\t\t\t\tshowEvents: options.include?.events ?? false,\n\t\t\t\tshowBalanceChanges: options.include?.balanceChanges ?? false,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\ttransactions: page.data.map((transaction) => parseTransaction(transaction, options.include)),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data[0]?.digest ?? null,\n\t\t\tendCursor: page.data.length\n\t\t\t\t? (page.nextCursor ?? page.data[page.data.length - 1].digest)\n\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst filter = options.filter\n\t\t\t? await resolveEventFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\t// Event cursors are event ids, and bounds are interpreted relative to the\n\t\t// traversal direction\n\t\tconst { descending, after, before, limit } = resolvePagination(options);\n\t\tconst cursor = after ?? before;\n\n\t\tconst page = await this.#jsonRpcClient.queryEvents({\n\t\t\tquery: !filter\n\t\t\t\t? { All: [] }\n\t\t\t\t: filter.$kind === 'sender'\n\t\t\t\t\t? { Sender: filter.sender }\n\t\t\t\t\t: filter.$kind === 'emitModule'\n\t\t\t\t\t\t? { MoveModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t: filter.$kind === 'eventTypeModule'\n\t\t\t\t\t\t\t? { MoveEventModule: { package: filter.package, module: filter.module } }\n\t\t\t\t\t\t\t: { MoveEventType: filter.eventType },\n\t\t\tcursor: cursor ? parseEventCursor(cursor) : undefined,\n\t\t\tlimit,\n\t\t\torder: descending ? 'descending' : 'ascending',\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tevents: page.data.map((event): SuiClientTypes.EventEntry => ({\n\t\t\t\tpackageId: normalizeSuiAddress(event.packageId),\n\t\t\t\tmodule: event.transactionModule,\n\t\t\t\tsender: normalizeSuiAddress(event.sender),\n\t\t\t\teventType: normalizeStructTag(event.type),\n\t\t\t\tbcs: event.bcsEncoding === 'base58' ? fromBase58(event.bcs) : fromBase64(event.bcs),\n\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t// queryEvents responses do not include checkpoint information\n\t\t\t\tcheckpoint: null,\n\t\t\t\ttransactionDigest: event.id.txDigest,\n\t\t\t\teventIndex: Number(event.id.eventSeq),\n\t\t\t})),\n\t\t\thasNextPage: page.hasNextPage,\n\t\t\tstartCursor: page.data.length ? JSON.stringify(page.data[0].id) : null,\n\t\t\tendCursor:\n\t\t\t\tpage.data.length && page.nextCursor\n\t\t\t\t\t? JSON.stringify(page.nextCursor)\n\t\t\t\t\t: page.data.length\n\t\t\t\t\t\t? JSON.stringify(page.data[page.data.length - 1].id)\n\t\t\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync verifyZkLoginSignature(options: SuiClientTypes.VerifyZkLoginSignatureOptions) {\n\t\tconst result = await this.#jsonRpcClient.verifyZkLoginSignature({\n\t\t\tsignal: options.signal,\n\t\t\tbytes: options.bytes,\n\t\t\tsignature: options.signature,\n\t\t\tintentScope: options.intentScope,\n\t\t\tauthor: options.address,\n\t\t});\n\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\terrors: result.errors,\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name = (await this.#jsonRpcClient.resolveNameServiceNames(options)).data[0] ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync resolveNameServiceAddress(\n\t\toptions: SuiClientTypes.ResolveNameServiceAddressOptions,\n\t): Promise<SuiClientTypes.ResolveNameServiceAddressResponse> {\n\t\treturn {\n\t\t\taddress: await this.#jsonRpcClient.resolveNameServiceAddress(options),\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tresolveTransactionPlugin() {\n\t\treturn coreClientResolveTransactionPlugin;\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getMoveFunction(\n\t\toptions: SuiClientTypes.GetMoveFunctionOptions,\n\t): Promise<SuiClientTypes.GetMoveFunctionResponse> {\n\t\tconst resolvedPackageId = (\n\t\t\tawait this.mvr.resolvePackage({ package: options.packageId, signal: options.signal })\n\t\t).package;\n\t\tconst result = await this.#jsonRpcClient.getNormalizedMoveFunction({\n\t\t\tpackage: resolvedPackageId,\n\t\t\tmodule: options.moduleName,\n\t\t\tfunction: options.name,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tfunction: {\n\t\t\t\tpackageId: normalizeSuiAddress(resolvedPackageId),\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t\tvisibility: parseVisibility(result.visibility),\n\t\t\t\tisEntry: result.isEntry,\n\t\t\t\ttypeParameters: result.typeParameters.map((abilities) => ({\n\t\t\t\t\tisPhantom: false,\n\t\t\t\t\tconstraints: parseAbilities(abilities),\n\t\t\t\t})),\n\t\t\t\tparameters: result.parameters.map((param) => parseNormalizedSuiMoveType(param)),\n\t\t\t\treturns: result.return.map((ret) => parseNormalizedSuiMoveType(ret)),\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @deprecated JSON-RPC APIs are deprecated in the Sui TypeScript SDK. Use `SuiGrpcClient`\n\t * from `@mysten/sui/grpc` or `SuiGraphQLClient` from `@mysten/sui/graphql` instead.\n\t */\n\tasync getChainIdentifier(\n\t\toptions?: SuiClientTypes.GetChainIdentifierOptions,\n\t): Promise<SuiClientTypes.GetChainIdentifierResponse> {\n\t\t// The result is cached and shared across callers, so the underlying request must\n\t\t// not carry any single caller's signal. Isolate cancellation per-caller instead.\n\t\tconst cached = this.cache.read(['chainIdentifier'], async () => {\n\t\t\tconst checkpoint = await this.#jsonRpcClient.getCheckpoint({ id: '0' });\n\t\t\treturn {\n\t\t\t\tchainIdentifier: checkpoint.digest,\n\t\t\t};\n\t\t});\n\n\t\treturn raceSignal(Promise.resolve(cached), options?.signal);\n\t}\n}\n\nfunction serializeObjectToBcs(object: SuiObjectData): Uint8Array | undefined {\n\tif (object.bcs?.dataType !== 'moveObject') {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\t// Normalize the type string to ensure consistent address formatting (0x2 vs 0x00...02)\n\t\tconst typeStr = normalizeStructTag(object.bcs.type);\n\t\tlet moveObjectType: InferBcsInput<typeof bcs.MoveObjectType>;\n\n\t\t// Normalize constants for comparison\n\t\tconst normalizedSuiFramework = normalizeSuiAddress(SUI_FRAMEWORK_ADDRESS);\n\t\tconst gasCoinType = normalizeStructTag(\n\t\t\t`${SUI_FRAMEWORK_ADDRESS}::coin::Coin<${SUI_FRAMEWORK_ADDRESS}::sui::SUI>`,\n\t\t);\n\t\tconst stakedSuiType = normalizeStructTag(`${SUI_SYSTEM_ADDRESS}::staking_pool::StakedSui`);\n\t\tconst coinPrefix = `${normalizedSuiFramework}::coin::Coin<`;\n\n\t\tif (typeStr === gasCoinType) {\n\t\t\tmoveObjectType = { GasCoin: null };\n\t\t} else if (typeStr === stakedSuiType) {\n\t\t\tmoveObjectType = { StakedSui: null };\n\t\t} else if (typeStr.startsWith(coinPrefix)) {\n\t\t\tconst innerTypeMatch = typeStr.match(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t`${normalizedSuiFramework.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}::coin::Coin<(.+)>$`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (innerTypeMatch) {\n\t\t\t\tconst innerTypeTag = TypeTagSerializer.parseFromStr(innerTypeMatch[1], true);\n\t\t\t\tmoveObjectType = { Coin: innerTypeTag };\n\t\t\t} else {\n\t\t\t\tthrow new Error('Failed to parse Coin type');\n\t\t\t}\n\t\t} else {\n\t\t\tconst typeTag = TypeTagSerializer.parseFromStr(typeStr, true);\n\t\t\tif (typeof typeTag !== 'object' || !('struct' in typeTag)) {\n\t\t\t\tthrow new Error('Expected struct type tag');\n\t\t\t}\n\t\t\tmoveObjectType = { Other: typeTag.struct };\n\t\t}\n\n\t\tconst contents = fromBase64(object.bcs.bcsBytes);\n\t\tconst owner = convertOwnerToBcs(object.owner!);\n\n\t\treturn bcs.Object.serialize({\n\t\t\tdata: {\n\t\t\t\tMove: {\n\t\t\t\t\ttype: moveObjectType,\n\t\t\t\t\thasPublicTransfer: object.bcs.hasPublicTransfer,\n\t\t\t\t\tversion: object.bcs.version,\n\t\t\t\t\tcontents,\n\t\t\t\t},\n\t\t\t},\n\t\t\towner,\n\t\t\tpreviousTransaction: object.previousTransaction!,\n\t\t\tstorageRebate: object.storageRebate!,\n\t\t}).toBytes();\n\t} catch {\n\t\t// If serialization fails, return undefined\n\t\treturn undefined;\n\t}\n}\n\nfunction parseObject<Include extends SuiClientTypes.ObjectInclude = {}>(\n\tobject: SuiObjectData,\n\tinclude?: Include,\n): SuiClientTypes.Object<Include> {\n\tconst bcsContent =\n\t\tobject.bcs?.dataType === 'moveObject' ? fromBase64(object.bcs.bcsBytes) : undefined;\n\n\tconst objectBcs = include?.objectBcs ? serializeObjectToBcs(object) : undefined;\n\n\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\tconst type =\n\t\tobject.type && object.type.includes('::')\n\t\t\t? normalizeStructTag(object.type)\n\t\t\t: (object.type ?? '');\n\n\tconst jsonContent =\n\t\tinclude?.json && object.content?.dataType === 'moveObject'\n\t\t\t? (object.content.fields as Record<string, unknown>)\n\t\t\t: include?.json\n\t\t\t\t? null\n\t\t\t\t: undefined;\n\n\tconst displayData = include?.display\n\t\t? object.display?.data != null\n\t\t\t? { output: object.display.data as Record<string, unknown>, errors: null }\n\t\t\t: null\n\t\t: undefined;\n\n\treturn {\n\t\tobjectId: object.objectId,\n\t\tversion: object.version,\n\t\tdigest: object.digest,\n\t\ttype,\n\t\tcontent: (include?.content\n\t\t\t? bcsContent\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['content'],\n\t\towner: parseOwner(object.owner!),\n\t\tpreviousTransaction: (include?.previousTransaction\n\t\t\t? (object.previousTransaction ?? undefined)\n\t\t\t: undefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t};\n}\n\nfunction parseOwner(owner: ObjectOwner): SuiClientTypes.ObjectOwner {\n\tif (owner === 'Immutable') {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'AddressOwner',\n\t\t\tAddressOwner: owner.AddressOwner,\n\t\t};\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.ObjectOwner,\n\t\t};\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.Shared.initial_shared_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction convertOwnerToBcs(owner: ObjectOwner) {\n\tif (owner === 'Immutable') {\n\t\treturn { Immutable: null };\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn { AddressOwner: owner.AddressOwner };\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn { ObjectOwner: owner.ObjectOwner };\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\tShared: { initialSharedVersion: owner.Shared.initial_shared_version },\n\t\t};\n\t}\n\n\tif (typeof owner === 'object' && owner !== null && 'ConsensusAddressOwner' in owner) {\n\t\treturn {\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.ConsensusAddressOwner.start_version,\n\t\t\t\towner: owner.ConsensusAddressOwner.owner,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseOwnerAddress(owner: ObjectOwner): string | null {\n\tif (owner === 'Immutable') {\n\t\treturn null;\n\t}\n\n\tif ('ConsensusAddressOwner' in owner) {\n\t\treturn owner.ConsensusAddressOwner.owner;\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn owner.AddressOwner;\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn owner.ObjectOwner;\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn null;\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseEventCursor(cursor: string): EventId {\n\ttry {\n\t\tconst parsed = JSON.parse(cursor) as EventId;\n\t\tif (typeof parsed?.txDigest !== 'string' || typeof parsed?.eventSeq !== 'string') {\n\t\t\tthrow new Error('malformed event cursor');\n\t\t}\n\t\treturn parsed;\n\t} catch {\n\t\tthrow new Error(`Invalid event cursor: ${cursor}`);\n\t}\n}\n\nfunction parseTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\ttransaction: SuiTransactionBlockResponse,\n\tinclude?: Include,\n): SuiClientTypes.TransactionResult<Include> {\n\tconst objectTypes: Record<string, string> = {};\n\n\tif (include?.objectTypes) {\n\t\ttransaction.objectChanges?.forEach((change) => {\n\t\t\tif (change.type !== 'published') {\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tlet signatures: string[] = [];\n\tlet bcsBytes: Uint8Array | undefined;\n\n\tif (transaction.rawTransaction) {\n\t\tconst parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction))[0];\n\t\t// The genesis transaction's raw data carries a placeholder signature that\n\t\t// other transports do not report\n\t\tsignatures =\n\t\t\tparsedTx.intentMessage.value.V1.kind.$kind === 'Genesis' ? [] : parsedTx.txSignatures;\n\n\t\tif (include?.transaction || include?.bcs) {\n\t\t\tconst bytes = bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes();\n\n\t\t\tif (include?.bcs) {\n\t\t\t\tbcsBytes = bytes;\n\t\t\t}\n\n\t\t\tif (include?.transaction) {\n\t\t\t\tconst data = TransactionDataBuilder.restore({\n\t\t\t\t\tversion: 2,\n\t\t\t\t\tsender: parsedTx.intentMessage.value.V1.sender,\n\t\t\t\t\texpiration: parsedTx.intentMessage.value.V1.expiration,\n\t\t\t\t\tgasData: parsedTx.intentMessage.value.V1.gasData,\n\t\t\t\t\tinputs: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.inputs,\n\t\t\t\t\tcommands: parsedTx.intentMessage.value.V1.kind.ProgrammableTransaction!.commands,\n\t\t\t\t});\n\t\t\t\ttransactionData = { ...data };\n\t\t\t}\n\t\t}\n\t}\n\n\t// Get status from JSON-RPC response\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status\n\t\t? parseJsonRpcExecutionStatus(transaction.effects.status, transaction.effects.abortError)\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: {\n\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\tmessage: 'Unknown',\n\t\t\t\t\tUnknown: null,\n\t\t\t\t},\n\t\t\t};\n\n\tconst effectsBytes = transaction.rawEffects ? new Uint8Array(transaction.rawEffects) : null;\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest,\n\t\tepoch: transaction.effects?.executedEpoch ?? null,\n\t\ttimestampMs: transaction.timestampMs == null ? null : Number(transaction.timestampMs),\n\t\tcheckpoint: transaction.checkpoint ?? null,\n\t\tstatus,\n\t\teffects: (include?.effects && effectsBytes\n\t\t\t? parseTransactionEffectsBcs(effectsBytes)\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['effects'],\n\t\tobjectTypes: (include?.objectTypes\n\t\t\t? objectTypes\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\ttransaction: transactionData as SuiClientTypes.Transaction<Include>['transaction'],\n\t\tbcs: bcsBytes as SuiClientTypes.Transaction<Include>['bcs'],\n\t\tsignatures,\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: normalizeStructTag(change.coinType),\n\t\t\t\t\taddress: parseOwnerAddress(change.owner)!,\n\t\t\t\t\tamount: change.amount,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\tevents: (include?.events\n\t\t\t? (transaction.events?.map((event) => ({\n\t\t\t\t\tpackageId: event.packageId,\n\t\t\t\t\tmodule: event.transactionModule,\n\t\t\t\t\tsender: event.sender,\n\t\t\t\t\teventType: event.type,\n\t\t\t\t\tbcs: 'bcs' in event ? fromBase64(event.bcs) : new Uint8Array(),\n\t\t\t\t\tjson: (event.parsedJson as Record<string, unknown>) ?? null,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t};\n\n\treturn status.success\n\t\t? {\n\t\t\t\t$kind: 'Transaction',\n\t\t\t\tTransaction: result,\n\t\t\t}\n\t\t: {\n\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\tFailedTransaction: result,\n\t\t\t};\n}\n\nexport function parseTransactionEffectsJson({\n\tbytes,\n\teffects,\n\tobjectChanges,\n}: {\n\tbytes?: Uint8Array;\n\teffects: TransactionEffects;\n\tobjectChanges: SuiObjectChange[] | null;\n}): {\n\teffects: SuiClientTypes.TransactionEffects;\n\tobjectTypes: Record<string, string>;\n} {\n\tconst changedObjects: SuiClientTypes.ChangedObject[] = [];\n\tconst unchangedConsensusObjects: SuiClientTypes.UnchangedConsensusObject[] = [];\n\tconst objectTypes: Record<string, string> = {};\n\n\tobjectChanges?.forEach((change) => {\n\t\tswitch (change.type) {\n\t\t\tcase 'published':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.packageId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'PackageWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'transferred':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: change.digest,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.recipient),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'mutated':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.previousVersion,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: parseOwner(change.owner),\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'deleted':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'DoesNotExist',\n\t\t\t\t\toutputVersion: null,\n\t\t\t\t\toutputDigest: null,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Deleted',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'wrapped':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest:\n\t\t\t\t\t\teffects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\toutputOwner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t\tcase 'created':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tobjectId: change.objectId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t});\n\t\t\t\tobjectTypes[change.objectId] = normalizeStructTag(change.objectType);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\t// When the transaction has no gas object (system transactions, or gas paid\n\t// from an address balance), the RPC substitutes a placeholder ref with the\n\t// 0x0 object id rather than omitting the field.\n\tconst hasGasObject =\n\t\tnormalizeSuiAddress(effects.gasObject.reference.objectId) !== normalizeSuiAddress('0x0');\n\n\tlet lamportVersion: string | null = null;\n\tif (hasGasObject) {\n\t\tlamportVersion = effects.gasObject.reference.version;\n\t} else {\n\t\t// Written objects are all assigned the lamport version, so recover it\n\t\t// from the changed objects when the gas object can't provide it.\n\t\tfor (const change of changedObjects) {\n\t\t\tif (\n\t\t\t\tchange.outputVersion &&\n\t\t\t\t(lamportVersion === null || BigInt(change.outputVersion) > BigInt(lamportVersion))\n\t\t\t) {\n\t\t\t\tlamportVersion = change.outputVersion;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tobjectTypes,\n\t\teffects: {\n\t\t\tbcs: bytes ?? null,\n\t\t\tversion: 2,\n\t\t\tstatus: parseJsonRpcExecutionStatus(effects.status, effects.abortError),\n\t\t\tgasUsed: effects.gasUsed,\n\t\t\ttransactionDigest: effects.transactionDigest,\n\t\t\tgasObject: hasGasObject\n\t\t\t\t? {\n\t\t\t\t\t\tobjectId: effects.gasObject.reference.objectId,\n\t\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\t\tinputVersion: null,\n\t\t\t\t\t\tinputDigest: null,\n\t\t\t\t\t\tinputOwner: null,\n\t\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\t\toutputVersion: effects.gasObject.reference.version,\n\t\t\t\t\t\toutputDigest: effects.gasObject.reference.digest,\n\t\t\t\t\t\toutputOwner: parseOwner(effects.gasObject.owner),\n\t\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\teventsDigest: effects.eventsDigest ?? null,\n\t\t\tdependencies: effects.dependencies ?? [],\n\t\t\tlamportVersion,\n\t\t\tchangedObjects,\n\t\t\tunchangedConsensusObjects,\n\t\t\tauxiliaryDataDigest: null,\n\t\t},\n\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: SuiMoveNormalizedType): SuiClientTypes.OpenSignature {\n\tif (typeof type !== 'string') {\n\t\tif ('Reference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'immutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.Reference),\n\t\t\t};\n\t\t}\n\n\t\tif ('MutableReference' in type) {\n\t\t\treturn {\n\t\t\t\treference: 'mutable',\n\t\t\t\tbody: parseNormalizedSuiMoveTypeBody(type.MutableReference),\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\treference: null,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(\n\ttype: SuiMoveNormalizedType,\n): SuiClientTypes.OpenSignatureBody {\n\tswitch (type) {\n\t\tcase 'Address':\n\t\t\treturn { $kind: 'address' };\n\t\tcase 'Bool':\n\t\t\treturn { $kind: 'bool' };\n\t\tcase 'U8':\n\t\t\treturn { $kind: 'u8' };\n\t\tcase 'U16':\n\t\t\treturn { $kind: 'u16' };\n\t\tcase 'U32':\n\t\t\treturn { $kind: 'u32' };\n\t\tcase 'U64':\n\t\t\treturn { $kind: 'u64' };\n\t\tcase 'U128':\n\t\t\treturn { $kind: 'u128' };\n\t\tcase 'U256':\n\t\t\treturn { $kind: 'u256' };\n\t}\n\n\tif (typeof type === 'string') {\n\t\tthrow new Error(`Unknown type: ${type}`);\n\t}\n\n\tif ('Vector' in type) {\n\t\treturn {\n\t\t\t$kind: 'vector',\n\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.Vector),\n\t\t};\n\t}\n\n\tif ('Struct' in type) {\n\t\treturn {\n\t\t\t$kind: 'datatype',\n\t\t\tdatatype: {\n\t\t\t\ttypeName: `${normalizeSuiAddress(type.Struct.address)}::${type.Struct.module}::${type.Struct.name}`,\n\t\t\t\ttypeParameters: type.Struct.typeArguments.map((t) => parseNormalizedSuiMoveTypeBody(t)),\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('TypeParameter' in type) {\n\t\treturn {\n\t\t\t$kind: 'typeParameter',\n\t\t\tindex: type.TypeParameter,\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown type: ${JSON.stringify(type)}`);\n}\n\nfunction parseAbilities(abilitySet: SuiMoveAbilitySet): SuiClientTypes.Ability[] {\n\treturn abilitySet.abilities.map((ability) => {\n\t\tswitch (ability) {\n\t\t\tcase 'Copy':\n\t\t\t\treturn 'copy';\n\t\t\tcase 'Drop':\n\t\t\t\treturn 'drop';\n\t\t\tcase 'Store':\n\t\t\t\treturn 'store';\n\t\t\tcase 'Key':\n\t\t\t\treturn 'key';\n\t\t\tdefault:\n\t\t\t\treturn 'unknown';\n\t\t}\n\t});\n}\n\nfunction parseVisibility(visibility: SuiMoveVisibility): SuiClientTypes.Visibility {\n\tswitch (visibility) {\n\t\tcase 'Public':\n\t\t\treturn 'public';\n\t\tcase 'Private':\n\t\t\treturn 'private';\n\t\tcase 'Friend':\n\t\t\treturn 'friend';\n\t\tdefault:\n\t\t\treturn 'unknown';\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { createPure } from "./pure.mjs";
|
|
|
8
8
|
import { SignatureWithBytes, Signer } from "../cryptography/keypair.mjs";
|
|
9
9
|
import "../cryptography/index.mjs";
|
|
10
10
|
import { ClientWithCoreApi } from "../client/core.mjs";
|
|
11
|
-
import * as
|
|
11
|
+
import * as _mysten_bcs1206 from "@mysten/bcs";
|
|
12
12
|
import { SerializedBcs } from "@mysten/bcs";
|
|
13
13
|
import { InferInput } from "valibot";
|
|
14
14
|
|
|
@@ -91,7 +91,7 @@ declare class Transaction {
|
|
|
91
91
|
getData(): {
|
|
92
92
|
version: 2;
|
|
93
93
|
sender?: string | null | undefined;
|
|
94
|
-
expiration?:
|
|
94
|
+
expiration?: _mysten_bcs1206.EnumOutputShapeWithKeys<{
|
|
95
95
|
None: true;
|
|
96
96
|
Epoch: string | number;
|
|
97
97
|
ValidDuring: {
|
|
@@ -102,7 +102,7 @@ declare class Transaction {
|
|
|
102
102
|
chain: string;
|
|
103
103
|
nonce: number;
|
|
104
104
|
};
|
|
105
|
-
}, "
|
|
105
|
+
}, "None" | "Epoch" | "ValidDuring"> | null | undefined;
|
|
106
106
|
gasData: {
|
|
107
107
|
budget: string | number | null;
|
|
108
108
|
price: string | number | null;
|
|
@@ -113,8 +113,8 @@ declare class Transaction {
|
|
|
113
113
|
digest: string;
|
|
114
114
|
}[] | null;
|
|
115
115
|
};
|
|
116
|
-
inputs:
|
|
117
|
-
Object:
|
|
116
|
+
inputs: _mysten_bcs1206.EnumOutputShapeWithKeys<{
|
|
117
|
+
Object: _mysten_bcs1206.EnumOutputShapeWithKeys<{
|
|
118
118
|
ImmOrOwnedObject: {
|
|
119
119
|
objectId: string;
|
|
120
120
|
version: string | number;
|
|
@@ -130,7 +130,7 @@ declare class Transaction {
|
|
|
130
130
|
version: string | number;
|
|
131
131
|
digest: string;
|
|
132
132
|
};
|
|
133
|
-
}, "
|
|
133
|
+
}, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
|
|
134
134
|
Pure: {
|
|
135
135
|
bytes: string;
|
|
136
136
|
};
|
|
@@ -153,13 +153,13 @@ declare class Transaction {
|
|
|
153
153
|
Balance: string;
|
|
154
154
|
$kind: "Balance";
|
|
155
155
|
};
|
|
156
|
-
withdrawFrom:
|
|
156
|
+
withdrawFrom: _mysten_bcs1206.EnumOutputShapeWithKeys<{
|
|
157
157
|
Sender: true;
|
|
158
158
|
Sponsor: true;
|
|
159
159
|
}, "Sender" | "Sponsor">;
|
|
160
160
|
};
|
|
161
|
-
}, "
|
|
162
|
-
commands:
|
|
161
|
+
}, "Pure" | "Object" | "FundsWithdrawal" | "UnresolvedPure" | "UnresolvedObject">[];
|
|
162
|
+
commands: _mysten_bcs1206.EnumOutputShapeWithKeys<{
|
|
163
163
|
MoveCall: {
|
|
164
164
|
package: string;
|
|
165
165
|
module: string;
|
package/dist/version.mjs
CHANGED
package/dist/version.mjs.map
CHANGED
|
@@ -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.
|
|
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.27.1';\n"],"mappings":";AAKA,MAAa,kBAAkB"}
|
package/dist/zklogin/bcs.d.mts
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _mysten_bcs1213 from "@mysten/bcs";
|
|
2
2
|
import { InferBcsInput } from "@mysten/bcs";
|
|
3
3
|
|
|
4
4
|
//#region src/zklogin/bcs.d.ts
|
|
5
|
-
declare const zkLoginSignature:
|
|
6
|
-
inputs:
|
|
7
|
-
proofPoints:
|
|
8
|
-
a:
|
|
5
|
+
declare const zkLoginSignature: _mysten_bcs1213.BcsStruct<{
|
|
6
|
+
inputs: _mysten_bcs1213.BcsStruct<{
|
|
7
|
+
proofPoints: _mysten_bcs1213.BcsStruct<{
|
|
8
|
+
a: _mysten_bcs1213.BcsType<string[], Iterable<string> & {
|
|
9
9
|
length: number;
|
|
10
10
|
}, string>;
|
|
11
|
-
b:
|
|
11
|
+
b: _mysten_bcs1213.BcsType<string[][], Iterable<Iterable<string> & {
|
|
12
12
|
length: number;
|
|
13
13
|
}> & {
|
|
14
14
|
length: number;
|
|
15
15
|
}, string>;
|
|
16
|
-
c:
|
|
16
|
+
c: _mysten_bcs1213.BcsType<string[], Iterable<string> & {
|
|
17
17
|
length: number;
|
|
18
18
|
}, string>;
|
|
19
19
|
}, string>;
|
|
20
|
-
issBase64Details:
|
|
21
|
-
value:
|
|
22
|
-
indexMod4:
|
|
20
|
+
issBase64Details: _mysten_bcs1213.BcsStruct<{
|
|
21
|
+
value: _mysten_bcs1213.BcsType<string, string, "string">;
|
|
22
|
+
indexMod4: _mysten_bcs1213.BcsType<number, number, "u8">;
|
|
23
23
|
}, string>;
|
|
24
|
-
headerBase64:
|
|
25
|
-
addressSeed:
|
|
24
|
+
headerBase64: _mysten_bcs1213.BcsType<string, string, "string">;
|
|
25
|
+
addressSeed: _mysten_bcs1213.BcsType<string, string, "string">;
|
|
26
26
|
}, string>;
|
|
27
|
-
maxEpoch:
|
|
28
|
-
userSignature:
|
|
27
|
+
maxEpoch: _mysten_bcs1213.BcsType<string, string | number | bigint, "u64">;
|
|
28
|
+
userSignature: _mysten_bcs1213.BcsType<Uint8Array<ArrayBufferLike>, Iterable<number>, "vector<u8>">;
|
|
29
29
|
}, string>;
|
|
30
30
|
type ZkLoginSignature = InferBcsInput<typeof zkLoginSignature>;
|
|
31
31
|
type ZkLoginSignatureInputs = ZkLoginSignature['inputs'];
|
package/package.json
CHANGED
package/src/client/types.ts
CHANGED
|
@@ -326,6 +326,16 @@ export namespace SuiClientTypes {
|
|
|
326
326
|
digest: string;
|
|
327
327
|
signatures: string[];
|
|
328
328
|
epoch: string | null;
|
|
329
|
+
/**
|
|
330
|
+
* Timestamp of the checkpoint containing this transaction, in milliseconds since Unix epoch.
|
|
331
|
+
* `null` for transactions that have not been checkpointed, including execution and simulation results.
|
|
332
|
+
*/
|
|
333
|
+
timestampMs: number | null;
|
|
334
|
+
/**
|
|
335
|
+
* Sequence number of the checkpoint containing this transaction.
|
|
336
|
+
* `null` for transactions that have not been checkpointed, including execution and simulation results.
|
|
337
|
+
*/
|
|
338
|
+
checkpoint: string | null;
|
|
329
339
|
status: ExecutionStatus;
|
|
330
340
|
balanceChanges: Include extends { balanceChanges: true } ? BalanceChange[] : undefined;
|
|
331
341
|
effects: Include extends { effects: true } ? TransactionEffects : undefined;
|