@mysten/sui 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/client/client.d.mts.map +1 -1
  3. package/dist/client/client.mjs +3 -2
  4. package/dist/client/client.mjs.map +1 -1
  5. package/dist/client/core-resolver.d.mts.map +1 -1
  6. package/dist/client/core-resolver.mjs +6 -2
  7. package/dist/client/core-resolver.mjs.map +1 -1
  8. package/dist/client/errors.d.mts +15 -0
  9. package/dist/client/errors.d.mts.map +1 -0
  10. package/dist/client/errors.mjs +7 -1
  11. package/dist/client/errors.mjs.map +1 -1
  12. package/dist/client/index.d.mts +2 -1
  13. package/dist/client/index.mjs +2 -1
  14. package/dist/client/utils.d.mts.map +1 -1
  15. package/dist/client/utils.mjs +20 -14
  16. package/dist/client/utils.mjs.map +1 -1
  17. package/dist/graphql/client.d.mts.map +1 -1
  18. package/dist/graphql/core.mjs +41 -16
  19. package/dist/graphql/core.mjs.map +1 -1
  20. package/dist/graphql/generated/queries.mjs +20 -0
  21. package/dist/graphql/generated/queries.mjs.map +1 -1
  22. package/dist/grpc/core.mjs +9 -6
  23. package/dist/grpc/core.mjs.map +1 -1
  24. package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.d.mts +4 -4
  25. package/dist/grpc/proto/sui/rpc/v2/move_package_service.client.d.mts +4 -4
  26. package/dist/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.mts +4 -4
  27. package/dist/grpc/proto/sui/rpc/v2/state_service.client.d.mts +4 -4
  28. package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.d.mts +4 -4
  29. package/dist/grpc/proto/sui/rpc/v2/transaction.d.mts.map +1 -1
  30. package/dist/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.mts +4 -4
  31. package/dist/jsonRpc/core.mjs +1 -1
  32. package/dist/transactions/Transaction.d.mts +7 -7
  33. package/dist/transactions/data/internal.d.mts +109 -109
  34. package/dist/transactions/data/internal.d.mts.map +1 -1
  35. package/dist/transactions/data/v1.d.mts +220 -220
  36. package/dist/transactions/data/v1.d.mts.map +1 -1
  37. package/dist/transactions/data/v2.d.mts +16 -16
  38. package/dist/transactions/data/v2.d.mts.map +1 -1
  39. package/dist/version.mjs +1 -1
  40. package/dist/version.mjs.map +1 -1
  41. package/dist/zklogin/bcs.d.mts +14 -14
  42. package/package.json +3 -3
  43. package/src/client/client.ts +5 -2
  44. package/src/client/core-resolver.ts +7 -7
  45. package/src/client/errors.ts +13 -0
  46. package/src/client/index.ts +2 -0
  47. package/src/client/utils.ts +26 -19
  48. package/src/graphql/core.ts +47 -11
  49. package/src/graphql/generated/queries.ts +21 -1
  50. package/src/graphql/queries/transactions.graphql +20 -0
  51. package/src/grpc/core.ts +20 -4
  52. package/src/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @mysten/sui.js
2
2
 
3
+ ## 2.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 724a13a: Improve handling of clever errors during simulation
8
+
9
+ ### Patch Changes
10
+
11
+ - fcbf952: Fix `$extend` chaining so that `client.$extend(sdk1()).$extend(sdk2())` works correctly.
12
+ Previously, the second `$extend` call would lose the extensions from the first call.
13
+
3
14
  ## 2.2.0
4
15
 
5
16
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.mts","names":[],"sources":["../../src/client/client.ts"],"sourcesContent":[],"mappings":";;;;;;uBAQsB,UAAA;WACZ,cAAA,CAAe;EADH,KAAA,EAEd,WAFwB;EACtB,IAAA,EAEH,UAFkB;EACjB,WAAA,CAAA;IAAA,OAAA;IAAA,IAAA;IAAA;EAAA,CAAA,EAOJ,cAAA,CAAe,gBAPX;EACD,SAAA,IAAA,EAYS,UAZT;EAGL,OAAA,CAAA,4BAWmC,qBAXnC,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,GAAA,aAAA,EAYkB,aAZlB,CAAA,EAoCM,oBApCN,CAqCC,QArCD,CAsCE,mBAtCF,CAAA,QAAA,MAwCgB,aAxChB,GAwCgC,aAxChC,CAwC8C,CAxC9C,CAAA,SAwCyD,qBAxCzD,CAAA,IAAA,EAAA,KAAA,cAAA,MAAA,EAAA,KAAA,UAAA,CAAA,GAAA,SA8Cc,IA9Cd,GA8CqB,SA9CrB,EAAA,GAAA,KAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"client.d.mts","names":[],"sources":["../../src/client/client.ts"],"sourcesContent":[],"mappings":";;;;;;uBAQsB,UAAA;WACZ,cAAA,CAAe;EADH,KAAA,EAEd,WAFwB;EACtB,IAAA,EAEH,UAFkB;EACjB,WAAA,CAAA;IAAA,OAAA;IAAA,IAAA;IAAA;EAAA,CAAA,EAOJ,cAAA,CAAe,gBAPX;EACD,SAAA,IAAA,EAYS,UAZT;EAGL,OAAA,CAAA,4BAWmC,qBAXnC,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,GAAA,aAAA,EAYkB,aAZlB,CAAA,EAuCM,oBAvCN,CAwCC,QAxCD,CAyCE,mBAzCF,CAAA,QAAA,MA2CgB,aA3ChB,GA2CgC,aA3ChC,CA2C8C,CA3C9C,CAAA,SA2CyD,qBA3CzD,CAAA,IAAA,EAAA,KAAA,cAAA,MAAA,EAAA,KAAA,UAAA,CAAA,GAAA,SAiDc,IAjDd,GAiDqB,SAjDrB,EAAA,GAAA,KAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA"}
@@ -12,10 +12,11 @@ var BaseClient = class {
12
12
  return [registration.name, registration.register(this)];
13
13
  }));
14
14
  const methodCache = /* @__PURE__ */ new Map();
15
- return new Proxy(this, { get(target, prop) {
15
+ return new Proxy(this, { get(target, prop, receiver) {
16
16
  if (typeof prop === "string" && prop in extensions) return extensions[prop];
17
- const value = Reflect.get(target, prop, target);
17
+ const value = Reflect.get(target, prop, receiver);
18
18
  if (typeof value === "function") {
19
+ if (prop === "$extend") return value.bind(receiver);
19
20
  if (!methodCache.has(prop)) methodCache.set(prop, value.bind(target));
20
21
  return methodCache.get(prop);
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.mjs","names":[],"sources":["../../src/client/client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Simplify, UnionToIntersection } from '@mysten/utils';\nimport { ClientCache } from './cache.js';\nimport type { CoreClient } from './core.js';\nimport type { ClientWithExtensions, SuiClientTypes, SuiClientRegistration } from './types.js';\n\nexport abstract class BaseClient {\n\tnetwork: SuiClientTypes.Network;\n\tcache: ClientCache;\n\tbase: BaseClient;\n\n\tconstructor({\n\t\tnetwork,\n\t\tbase,\n\t\tcache = base?.cache ?? new ClientCache(),\n\t}: SuiClientTypes.SuiClientOptions) {\n\t\tthis.network = network;\n\t\tthis.base = base ?? this;\n\t\tthis.cache = cache;\n\t}\n\n\tabstract core: CoreClient;\n\n\t$extend<const Registrations extends SuiClientRegistration<this>[]>(\n\t\t...registrations: Registrations\n\t) {\n\t\tconst extensions: Record<string, unknown> = Object.fromEntries(\n\t\t\tregistrations.map((registration) => {\n\t\t\t\treturn [registration.name, registration.register(this)];\n\t\t\t}),\n\t\t);\n\n\t\tconst methodCache = new Map<string | symbol, Function>();\n\n\t\treturn new Proxy(this, {\n\t\t\tget(target, prop) {\n\t\t\t\tif (typeof prop === 'string' && prop in extensions) {\n\t\t\t\t\treturn extensions[prop];\n\t\t\t\t}\n\t\t\t\tconst value = Reflect.get(target, prop, target);\n\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\tif (!methodCache.has(prop)) {\n\t\t\t\t\t\tmethodCache.set(prop, value.bind(target));\n\t\t\t\t\t}\n\t\t\t\t\treturn methodCache.get(prop);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t},\n\t\t}) as ClientWithExtensions<\n\t\t\tSimplify<\n\t\t\t\tUnionToIntersection<\n\t\t\t\t\t{\n\t\t\t\t\t\t[K in keyof Registrations]: Registrations[K] extends SuiClientRegistration<\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\tinfer Name extends string,\n\t\t\t\t\t\t\tinfer Extension\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t[K2 in Name]: Extension;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: never;\n\t\t\t\t\t}[number]\n\t\t\t\t>\n\t\t\t>,\n\t\t\tthis\n\t\t>;\n\t}\n}\n"],"mappings":";;;AAQA,IAAsB,aAAtB,MAAiC;CAKhC,YAAY,EACX,SACA,MACA,QAAQ,MAAM,SAAS,IAAI,aAAa,IACL;AACnC,OAAK,UAAU;AACf,OAAK,OAAO,QAAQ;AACpB,OAAK,QAAQ;;CAKd,QACC,GAAG,eACF;EACD,MAAM,aAAsC,OAAO,YAClD,cAAc,KAAK,iBAAiB;AACnC,UAAO,CAAC,aAAa,MAAM,aAAa,SAAS,KAAK,CAAC;IACtD,CACF;EAED,MAAM,8BAAc,IAAI,KAAgC;AAExD,SAAO,IAAI,MAAM,MAAM,EACtB,IAAI,QAAQ,MAAM;AACjB,OAAI,OAAO,SAAS,YAAY,QAAQ,WACvC,QAAO,WAAW;GAEnB,MAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,OAAO;AAC/C,OAAI,OAAO,UAAU,YAAY;AAChC,QAAI,CAAC,YAAY,IAAI,KAAK,CACzB,aAAY,IAAI,MAAM,MAAM,KAAK,OAAO,CAAC;AAE1C,WAAO,YAAY,IAAI,KAAK;;AAE7B,UAAO;KAER,CAAC"}
1
+ {"version":3,"file":"client.mjs","names":[],"sources":["../../src/client/client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Simplify, UnionToIntersection } from '@mysten/utils';\nimport { ClientCache } from './cache.js';\nimport type { CoreClient } from './core.js';\nimport type { ClientWithExtensions, SuiClientTypes, SuiClientRegistration } from './types.js';\n\nexport abstract class BaseClient {\n\tnetwork: SuiClientTypes.Network;\n\tcache: ClientCache;\n\tbase: BaseClient;\n\n\tconstructor({\n\t\tnetwork,\n\t\tbase,\n\t\tcache = base?.cache ?? new ClientCache(),\n\t}: SuiClientTypes.SuiClientOptions) {\n\t\tthis.network = network;\n\t\tthis.base = base ?? this;\n\t\tthis.cache = cache;\n\t}\n\n\tabstract core: CoreClient;\n\n\t$extend<const Registrations extends SuiClientRegistration<this>[]>(\n\t\t...registrations: Registrations\n\t) {\n\t\tconst extensions: Record<string, unknown> = Object.fromEntries(\n\t\t\tregistrations.map((registration) => {\n\t\t\t\treturn [registration.name, registration.register(this)];\n\t\t\t}),\n\t\t);\n\n\t\tconst methodCache = new Map<string | symbol, Function>();\n\n\t\treturn new Proxy(this, {\n\t\t\tget(target, prop, receiver) {\n\t\t\t\tif (typeof prop === 'string' && prop in extensions) {\n\t\t\t\t\treturn extensions[prop];\n\t\t\t\t}\n\t\t\t\tconst value = Reflect.get(target, prop, receiver);\n\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\tif (prop === '$extend') {\n\t\t\t\t\t\treturn value.bind(receiver);\n\t\t\t\t\t}\n\t\t\t\t\tif (!methodCache.has(prop)) {\n\t\t\t\t\t\tmethodCache.set(prop, value.bind(target));\n\t\t\t\t\t}\n\t\t\t\t\treturn methodCache.get(prop);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t},\n\t\t}) as ClientWithExtensions<\n\t\t\tSimplify<\n\t\t\t\tUnionToIntersection<\n\t\t\t\t\t{\n\t\t\t\t\t\t[K in keyof Registrations]: Registrations[K] extends SuiClientRegistration<\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\tinfer Name extends string,\n\t\t\t\t\t\t\tinfer Extension\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t[K2 in Name]: Extension;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: never;\n\t\t\t\t\t}[number]\n\t\t\t\t>\n\t\t\t>,\n\t\t\tthis\n\t\t>;\n\t}\n}\n"],"mappings":";;;AAQA,IAAsB,aAAtB,MAAiC;CAKhC,YAAY,EACX,SACA,MACA,QAAQ,MAAM,SAAS,IAAI,aAAa,IACL;AACnC,OAAK,UAAU;AACf,OAAK,OAAO,QAAQ;AACpB,OAAK,QAAQ;;CAKd,QACC,GAAG,eACF;EACD,MAAM,aAAsC,OAAO,YAClD,cAAc,KAAK,iBAAiB;AACnC,UAAO,CAAC,aAAa,MAAM,aAAa,SAAS,KAAK,CAAC;IACtD,CACF;EAED,MAAM,8BAAc,IAAI,KAAgC;AAExD,SAAO,IAAI,MAAM,MAAM,EACtB,IAAI,QAAQ,MAAM,UAAU;AAC3B,OAAI,OAAO,SAAS,YAAY,QAAQ,WACvC,QAAO,WAAW;GAEnB,MAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,SAAS;AACjD,OAAI,OAAO,UAAU,YAAY;AAChC,QAAI,SAAS,UACZ,QAAO,MAAM,KAAK,SAAS;AAE5B,QAAI,CAAC,YAAY,IAAI,KAAK,CACzB,aAAY,IAAI,MAAM,MAAM,KAAK,OAAO,CAAC;AAE1C,WAAO,YAAY,IAAI,KAAK;;AAE7B,UAAO;KAER,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-resolver.d.mts","names":[],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":[],"mappings":";;;;;iBAgCsB,kCAAA,kBACJ,iCACR,qCACG,gBAAa"}
1
+ {"version":3,"file":"core-resolver.d.mts","names":[],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":[],"mappings":";;;;;iBAiCsB,kCAAA,kBACJ,iCACR,qCACG,gBAAa"}
@@ -1,5 +1,6 @@
1
1
  import { normalizeSuiAddress, normalizeSuiObjectId } from "../utils/sui-types.mjs";
2
2
  import { ObjectRefSchema } from "../transactions/data/internal.mjs";
3
+ import { SimulationError } from "./errors.mjs";
3
4
  import { SUI_TYPE_ARG } from "../utils/constants.mjs";
4
5
  import { Inputs } from "../transactions/Inputs.mjs";
5
6
  import { getPureBcsSchema, isTxContext } from "../transactions/serializer.mjs";
@@ -41,8 +42,11 @@ async function setGasBudget(transactionData, client) {
41
42
  include: { effects: true }
42
43
  });
43
44
  if (simulateResult.$kind === "FailedTransaction") {
44
- const errorMessage = simulateResult.FailedTransaction.status.error?.message ?? "Unknown error";
45
- throw new Error(`Simulation failed, could not automatically determine a budget: ${errorMessage}`, { cause: simulateResult });
45
+ const executionError = simulateResult.FailedTransaction.status.error ?? void 0;
46
+ throw new SimulationError(`Transaction resolution failed: ${executionError?.message ?? "Unknown error"}`, {
47
+ cause: simulateResult,
48
+ executionError
49
+ });
46
50
  }
47
51
  const gasUsed = simulateResult.Transaction.effects.gasUsed;
48
52
  const safeOverhead = GAS_SAFE_OVERHEAD * BigInt(transactionData.gasData.price || 1n);
@@ -1 +1 @@
1
- {"version":3,"file":"core-resolver.mjs","names":["object"],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { parse } from 'valibot';\n\nimport { normalizeSuiAddress, normalizeSuiObjectId, SUI_TYPE_ARG } from '../utils/index.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport { ObjectRefSchema } from '../transactions/data/internal.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { SuiClientTypes } from './types.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\n\tawait normalizeInputs(transactionData, client);\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tawait setGasData(transactionData, client);\n\t}\n\n\treturn await next();\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setGasData(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tlet systemState: SystemStateData | null = null;\n\n\tif (!transactionData.gasData.price) {\n\t\tconst response = await client.core.getCurrentSystemState();\n\t\tsystemState = response.systemState;\n\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t}\n\n\tawait setGasBudget(transactionData, client);\n\tawait setGasPayment(transactionData, client);\n\n\tif (!transactionData.expiration) {\n\t\tawait setExpiration(transactionData, client, systemState);\n\t}\n}\n\nasync function setGasBudget(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t});\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst errorMessage = simulateResult.FailedTransaction.status.error?.message ?? 'Unknown error';\n\t\tthrow new Error(\n\t\t\t`Simulation failed, could not automatically determine a budget: ${errorMessage}`,\n\t\t\t{\n\t\t\t\tcause: simulateResult,\n\t\t\t},\n\t\t);\n\t}\n\n\tconst gasUsed = simulateResult.Transaction.effects!.gasUsed;\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(transactionData.gasData.price || 1n);\n\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\n\ttransactionData.gasData.budget = String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\n// The current default is just picking _all_ coins we can which may not be ideal.\nasync function setGasPayment(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (!transactionData.gasData.payment) {\n\t\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender!;\n\t\tlet usesGasCoin = false;\n\t\tlet withdrawals = 0n;\n\n\t\ttransactionData.mapArguments((arg) => {\n\t\t\tif (arg.$kind === 'GasCoin') {\n\t\t\t\tusesGasCoin = true;\n\t\t\t} else if (arg.$kind === 'Input') {\n\t\t\t\tconst input = transactionData.inputs[arg.Input];\n\n\t\t\t\tif (input.$kind === 'FundsWithdrawal') {\n\t\t\t\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t\t\t\t? transactionData.sender\n\t\t\t\t\t\t: gasPayer;\n\n\t\t\t\t\tif (withdrawalOwner === gasPayer) {\n\t\t\t\t\t\tif (input.FundsWithdrawal.reservation.$kind === 'MaxAmountU64') {\n\t\t\t\t\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arg;\n\t\t});\n\n\t\tconst [suiBalance, coins] = await Promise.all([\n\t\t\tusesGasCoin || !transactionData.gasData.owner\n\t\t\t\t? null\n\t\t\t\t: client.core.getBalance({\n\t\t\t\t\t\towner: transactionData.gasData.owner,\n\t\t\t\t\t}),\n\t\t\tclient.core.listCoins({\n\t\t\t\towner: transactionData.gasData.owner || transactionData.sender!,\n\t\t\t\tcoinType: SUI_TYPE_ARG,\n\t\t\t}),\n\t\t]);\n\n\t\tif (\n\t\t\tsuiBalance?.balance.addressBalance &&\n\t\t\tBigInt(suiBalance.balance.addressBalance) >=\n\t\t\t\tBigInt(transactionData.gasData.budget || '0') + withdrawals\n\t\t) {\n\t\t\ttransactionData.gasData.payment = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst paymentCoins = coins.objects\n\t\t\t// Filter out coins that are also used as input:\n\t\t\t.filter((coin) => {\n\t\t\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t\treturn !matchingInput;\n\t\t\t})\n\t\t\t.map((coin) =>\n\t\t\t\tparse(ObjectRefSchema, {\n\t\t\t\t\tobjectId: coin.objectId,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t}),\n\t\t\t);\n\n\t\tif (!paymentCoins.length) {\n\t\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t\t}\n\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\texistingSystemState: SystemStateData | null,\n) {\n\tconst [systemState, { chainIdentifier }] = await Promise.all([\n\t\texistingSystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t\tclient.core.getChainIdentifier(),\n\t]);\n\tconst currentEpoch = BigInt(systemState.epoch);\n\n\ttransactionData.expiration = {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeSuiObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeSuiAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, SuiClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: SuiClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core-resolver.mjs","names":["object"],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { parse } from 'valibot';\n\nimport { normalizeSuiAddress, normalizeSuiObjectId, SUI_TYPE_ARG } from '../utils/index.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport { ObjectRefSchema } from '../transactions/data/internal.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { SuiClientTypes } from './types.js';\nimport { SimulationError } from './errors.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\n\tawait normalizeInputs(transactionData, client);\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tawait setGasData(transactionData, client);\n\t}\n\n\treturn await next();\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setGasData(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tlet systemState: SystemStateData | null = null;\n\n\tif (!transactionData.gasData.price) {\n\t\tconst response = await client.core.getCurrentSystemState();\n\t\tsystemState = response.systemState;\n\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t}\n\n\tawait setGasBudget(transactionData, client);\n\tawait setGasPayment(transactionData, client);\n\n\tif (!transactionData.expiration) {\n\t\tawait setExpiration(transactionData, client, systemState);\n\t}\n}\n\nasync function setGasBudget(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t});\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst executionError = simulateResult.FailedTransaction.status.error ?? undefined;\n\t\tconst errorMessage = executionError?.message ?? 'Unknown error';\n\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\tcause: simulateResult,\n\t\t\texecutionError,\n\t\t});\n\t}\n\n\tconst gasUsed = simulateResult.Transaction.effects!.gasUsed;\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(transactionData.gasData.price || 1n);\n\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\n\ttransactionData.gasData.budget = String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\n// The current default is just picking _all_ coins we can which may not be ideal.\nasync function setGasPayment(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (!transactionData.gasData.payment) {\n\t\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender!;\n\t\tlet usesGasCoin = false;\n\t\tlet withdrawals = 0n;\n\n\t\ttransactionData.mapArguments((arg) => {\n\t\t\tif (arg.$kind === 'GasCoin') {\n\t\t\t\tusesGasCoin = true;\n\t\t\t} else if (arg.$kind === 'Input') {\n\t\t\t\tconst input = transactionData.inputs[arg.Input];\n\n\t\t\t\tif (input.$kind === 'FundsWithdrawal') {\n\t\t\t\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t\t\t\t? transactionData.sender\n\t\t\t\t\t\t: gasPayer;\n\n\t\t\t\t\tif (withdrawalOwner === gasPayer) {\n\t\t\t\t\t\tif (input.FundsWithdrawal.reservation.$kind === 'MaxAmountU64') {\n\t\t\t\t\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arg;\n\t\t});\n\n\t\tconst [suiBalance, coins] = await Promise.all([\n\t\t\tusesGasCoin || !transactionData.gasData.owner\n\t\t\t\t? null\n\t\t\t\t: client.core.getBalance({\n\t\t\t\t\t\towner: transactionData.gasData.owner,\n\t\t\t\t\t}),\n\t\t\tclient.core.listCoins({\n\t\t\t\towner: transactionData.gasData.owner || transactionData.sender!,\n\t\t\t\tcoinType: SUI_TYPE_ARG,\n\t\t\t}),\n\t\t]);\n\n\t\tif (\n\t\t\tsuiBalance?.balance.addressBalance &&\n\t\t\tBigInt(suiBalance.balance.addressBalance) >=\n\t\t\t\tBigInt(transactionData.gasData.budget || '0') + withdrawals\n\t\t) {\n\t\t\ttransactionData.gasData.payment = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst paymentCoins = coins.objects\n\t\t\t// Filter out coins that are also used as input:\n\t\t\t.filter((coin) => {\n\t\t\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t\treturn !matchingInput;\n\t\t\t})\n\t\t\t.map((coin) =>\n\t\t\t\tparse(ObjectRefSchema, {\n\t\t\t\t\tobjectId: coin.objectId,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t}),\n\t\t\t);\n\n\t\tif (!paymentCoins.length) {\n\t\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t\t}\n\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\texistingSystemState: SystemStateData | null,\n) {\n\tconst [systemState, { chainIdentifier }] = await Promise.all([\n\t\texistingSystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t\tclient.core.getChainIdentifier(),\n\t]);\n\tconst currentEpoch = BigInt(systemState.epoch);\n\n\ttransactionData.expiration = {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeSuiObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeSuiAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, SuiClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: SuiClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":";;;;;;;;;;AAkBA,MAAM,wBAAwB;AAG9B,MAAM,oBAAoB;AAC1B,MAAM,UAAU;AAEhB,SAAS,UAAU,SAAqD;AACvE,KAAI,CAAC,QAAQ,OACZ,OAAM,IAAI,MACT,uGACA;AAEF,QAAO,QAAQ;;AAGhB,eAAsB,mCACrB,iBACA,SACA,MACC;CACD,MAAM,SAAS,UAAU,QAAQ;AAEjC,OAAM,gBAAgB,iBAAiB,OAAO;AAC9C,OAAM,wBAAwB,iBAAiB,OAAO;AAEtD,KAAI,CAAC,QAAQ,oBACZ,OAAM,WAAW,iBAAiB,OAAO;AAG1C,QAAO,MAAM,MAAM;;AAQpB,eAAe,WAAW,iBAAyC,QAA2B;CAC7F,IAAI,cAAsC;AAE1C,KAAI,CAAC,gBAAgB,QAAQ,OAAO;AAEnC,iBADiB,MAAM,OAAO,KAAK,uBAAuB,EACnC;AACvB,kBAAgB,QAAQ,QAAQ,YAAY;;AAG7C,OAAM,aAAa,iBAAiB,OAAO;AAC3C,OAAM,cAAc,iBAAiB,OAAO;AAE5C,KAAI,CAAC,gBAAgB,WACpB,OAAM,cAAc,iBAAiB,QAAQ,YAAY;;AAI3D,eAAe,aAAa,iBAAyC,QAA2B;AAC/F,KAAI,gBAAgB,QAAQ,OAC3B;CAGD,MAAM,iBAAiB,MAAM,OAAO,KAAK,oBAAoB;EAC5D,aAAa,gBAAgB,MAAM,EAClC,WAAW,EACV,SAAS;GACR,QAAQ,OAAO,QAAQ;GACvB,SAAS,EAAE;GACX,EACD,EACD,CAAC;EACF,SAAS,EAAE,SAAS,MAAM;EAC1B,CAAC;AAEF,KAAI,eAAe,UAAU,qBAAqB;EACjD,MAAM,iBAAiB,eAAe,kBAAkB,OAAO,SAAS;AAExE,QAAM,IAAI,gBAAgB,kCADL,gBAAgB,WAAW,mBAC4B;GAC3E,OAAO;GACP;GACA,CAAC;;CAGH,MAAM,UAAU,eAAe,YAAY,QAAS;CACpD,MAAM,eAAe,oBAAoB,OAAO,gBAAgB,QAAQ,SAAS,GAAG;CAEpF,MAAM,kCAAkC,OAAO,QAAQ,gBAAgB,GAAG;CAE1E,MAAM,YACL,kCAAkC,OAAO,QAAQ,YAAY,GAAG,OAAO,QAAQ,cAAc;AAE9F,iBAAgB,QAAQ,SAAS,OAChC,YAAY,kCAAkC,YAAY,gCAC1D;;AAIF,eAAe,cAAc,iBAAyC,QAA2B;AAChG,KAAI,CAAC,gBAAgB,QAAQ,SAAS;EACrC,MAAM,WAAW,gBAAgB,QAAQ,SAAS,gBAAgB;EAClE,IAAI,cAAc;EAClB,IAAI,cAAc;AAElB,kBAAgB,cAAc,QAAQ;AACrC,OAAI,IAAI,UAAU,UACjB,eAAc;YACJ,IAAI,UAAU,SAAS;IACjC,MAAM,QAAQ,gBAAgB,OAAO,IAAI;AAEzC,QAAI,MAAM,UAAU,mBAKnB;UAJwB,MAAM,gBAAgB,aAAa,SACxD,gBAAgB,SAChB,cAEqB,UACvB;UAAI,MAAM,gBAAgB,YAAY,UAAU,eAC/C,gBAAe,OAAO,MAAM,gBAAgB,YAAY,aAAa;;;;AAMzE,UAAO;IACN;EAEF,MAAM,CAAC,YAAY,SAAS,MAAM,QAAQ,IAAI,CAC7C,eAAe,CAAC,gBAAgB,QAAQ,QACrC,OACA,OAAO,KAAK,WAAW,EACvB,OAAO,gBAAgB,QAAQ,OAC/B,CAAC,EACJ,OAAO,KAAK,UAAU;GACrB,OAAO,gBAAgB,QAAQ,SAAS,gBAAgB;GACxD,UAAU;GACV,CAAC,CACF,CAAC;AAEF,MACC,YAAY,QAAQ,kBACpB,OAAO,WAAW,QAAQ,eAAe,IACxC,OAAO,gBAAgB,QAAQ,UAAU,IAAI,GAAG,aAChD;AACD,mBAAgB,QAAQ,UAAU,EAAE;AACpC;;EAGD,MAAM,eAAe,MAAM,QAEzB,QAAQ,SAAS;AASjB,UAAO,CARe,gBAAgB,OAAO,MAAM,UAAU;AAC5D,QAAI,MAAM,QAAQ,iBACjB,QAAO,KAAK,aAAa,MAAM,OAAO,iBAAiB;AAGxD,WAAO;KACN;IAGD,CACD,KAAK,SACL,MAAM,iBAAiB;GACtB,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,SAAS,KAAK;GACd,CAAC,CACF;AAEF,MAAI,CAAC,aAAa,OACjB,OAAM,IAAI,MAAM,gDAAgD;AAGjE,kBAAgB,QAAQ,UAAU;;;AAIpC,eAAe,cACd,iBACA,QACA,qBACC;CACD,MAAM,CAAC,aAAa,EAAE,qBAAqB,MAAM,QAAQ,IAAI,CAC5D,uBAAuB,OAAO,KAAK,uBAAuB,CAAC,MAAM,MAAM,EAAE,YAAY,EACrF,OAAO,KAAK,oBAAoB,CAChC,CAAC;CACF,MAAM,eAAe,OAAO,YAAY,MAAM;AAE9C,iBAAgB,aAAa;EAC5B,OAAO;EACP,aAAa;GACZ,UAAU,OAAO,aAAa;GAC9B,UAAU,OAAO,eAAe,GAAG;GACnC,cAAc;GACd,cAAc;GACd,OAAO;GACP,OAAQ,KAAK,QAAQ,GAAG,eAAiB;GACzC;EACD;;AAGF,eAAe,wBACd,iBACA,QACC;CAGD,MAAM,mBAAmB,gBAAgB,OAAO,QAAQ,UAAU;AACjE,SACC,MAAM,oBACN,EAAE,MAAM,iBAAiB,WAAW,MAAM,kBAAkB;GAE5D;CAEF,MAAM,aAAa,CAClB,GAAG,IAAI,IACN,iBAAiB,KAAK,UAAU,qBAAqB,MAAM,iBAAiB,SAAS,CAAC,CACtF,CACD;CAED,MAAM,eAAe,WAAW,SAAS,MAAM,YAAY,sBAAsB,GAAG,EAAE;CACtF,MAAM,YACL,MAAM,QAAQ,IACb,aAAa,KAAK,aACjB,OAAO,KAAK,WAAW,EACtB,WAAW,UACX,CAAC,CACF,CACD,EACA,SAAS,WAAW,OAAO,QAAQ;CAErC,MAAM,gBAAgB,IAAI,IACzB,WAAW,KAAK,IAAI,UAAU;AAC7B,SAAO,CAAC,IAAI,SAAS,OAAO;GAC3B,CACF;CAED,MAAM,iBAAiB,MAAM,KAAK,cAAc,CAC9C,QAAQ,CAAC,GAAG,SAAS,eAAe,MAAM,CAC1C,KAAK,CAAC,GAAG,SAAU,IAAc,QAAQ;AAE3C,KAAI,eAAe,OAClB,OAAM,IAAI,MAAM,4CAA4C,eAAe,KAAK,KAAK,GAAG;CAGzF,MAAM,UAAU,SAAS,KAAK,aAAW;AACxC,MAAIA,oBAAkB,MACrB,OAAM,IAAI,MAAM,2BAA2BA,SAAO,UAAU;EAE7D,MAAM,QAAQA,SAAO;EACrB,MAAM,uBACL,SAAS,OAAO,UAAU,WACvB,MAAM,UAAU,WACf,MAAM,OAAO,uBACb,MAAM,UAAU,0BACf,MAAM,sBAAsB,eAC5B,OACF;AAEJ,SAAO;GACN,UAAUA,SAAO;GACjB,QAAQA,SAAO;GACf,SAASA,SAAO;GAChB;GACA;GACA;CAEF,MAAM,cAAc,IAAI,IACvB,WAAW,KAAK,IAAI,UAAU;AAC7B,SAAO,CAAC,IAAI,QAAQ,OAAO;GAC1B,CACF;AAED,MAAK,MAAM,CAAC,OAAO,UAAU,gBAAgB,OAAO,SAAS,EAAE;AAC9D,MAAI,CAAC,MAAM,iBACV;EAGD,IAAI;EACJ,MAAM,KAAK,oBAAoB,MAAM,iBAAiB,SAAS;EAC/D,MAAMA,WAAS,YAAY,IAAI,GAAG;AAElC,MAAI,MAAM,iBAAiB,wBAAwBA,UAAQ,qBAC1D,WAAU,OAAO,gBAAgB;GAChC,UAAU;GACV,sBACC,MAAM,iBAAiB,wBAAwBA,UAAQ;GACxD,SAAS,MAAM,iBAAiB,WAAW,gBAAgB,iBAAiB,MAAM;GAClF,CAAC;WACQ,kBAAkB,iBAAiB,MAAM,CACnD,WAAU,OAAO,aAChB;GACC,UAAU;GACV,QAAQ,MAAM,iBAAiB,UAAUA,UAAQ;GACjD,SAAS,MAAM,iBAAiB,WAAWA,UAAQ;GACnD,CACD;AAGF,kBAAgB,OAAO,gBAAgB,OAAO,QAAQ,MAAM,IAC3D,WACA,OAAO,UAAU;GAChB,UAAU;GACV,QAAQ,MAAM,iBAAiB,UAAUA,UAAQ;GACjD,SAAS,MAAM,iBAAiB,WAAWA,UAAQ;GACnD,CAAC;;;AAIL,eAAe,gBAAgB,iBAAyC,QAA2B;CAClG,MAAM,EAAE,QAAQ,aAAa;CAC7B,MAAM,qBAA4E,EAAE;CACpF,MAAM,yCAAyB,IAAI,KAAa;AAEhD,UAAS,SAAS,YAAY;AAE7B,MAAI,QAAQ,UAAU;AAMrB,OAAI,QAAQ,SAAS,eACpB;AAeD,OAZe,QAAQ,SAAS,UAAU,KAAK,QAAQ;AACtD,QAAI,IAAI,UAAU,QACjB,QAAO,gBAAgB,OAAO,IAAI;AAEnC,WAAO;KACN,CAC6B,MAC7B,UACA,OAAO,kBACN,OAAO,oBAAoB,OAAO,OAAO,iBAAiB,YAAY,UACxE,EAEoB;IACpB,MAAM,eAAe,GAAG,QAAQ,SAAS,QAAQ,IAAI,QAAQ,SAAS,OAAO,IAAI,QAAQ,SAAS;AAClG,2BAAuB,IAAI,aAAa;AACxC,uBAAmB,KAAK,QAAQ,SAAS;;;GAG1C;CAEF,MAAM,yCAAyB,IAAI,KAA6C;AAChF,KAAI,uBAAuB,OAAO,EACjC,OAAM,QAAQ,IACb,CAAC,GAAG,uBAAuB,CAAC,IAAI,OAAO,iBAAiB;EACvD,MAAM,CAAC,WAAW,YAAY,QAAQ,aAAa,MAAM,KAAK;EAC9D,MAAM,EAAE,UAAU,QAAQ,MAAM,OAAO,KAAK,gBAAgB;GAC3D;GACA;GACA;GACA,CAAC;AAEF,yBAAuB,IAAI,cAAc,IAAI,WAAW;GACvD,CACF;AAGF,KAAI,mBAAmB,OACtB,OAAM,QAAQ,IACb,mBAAmB,IAAI,OAAO,aAAa;EAC1C,MAAM,aAAa,uBAAuB,IACzC,GAAG,SAAS,QAAQ,IAAI,SAAS,OAAO,IAAI,SAAS,WACrD;AAED,MAAI,CAAC,WACJ;AASD,WAAS,iBAHY,WAAW,SAAS,KAAK,YAAY,WAAW,GAAG,GAAG,CAAE,GAC/C,WAAW,MAAM,GAAG,WAAW,SAAS,EAAE,GAAG;GAG1E,CACF;AAGF,UAAS,SAAS,YAAY;AAC7B,MAAI,CAAC,QAAQ,SACZ;EAGD,MAAM,WAAW,QAAQ;EACzB,MAAM,SAAS,GAAG,SAAS,QAAQ,IAAI,SAAS,OAAO,IAAI,SAAS;EACpE,MAAM,SAAS,SAAS;AAExB,MAAI,CAAC,OACJ;AAGD,MAAI,OAAO,WAAW,QAAQ,SAAS,UAAU,OAChD,OAAM,IAAI,MAAM,qCAAqC,SAAS;AAG/D,SAAO,SAAS,OAAO,MAAM;GAC5B,MAAM,MAAM,SAAS,UAAU;AAC/B,OAAI,IAAI,UAAU,QAAS;GAC3B,MAAM,QAAQ,OAAO,IAAI;AAGzB,OAAI,CAAC,MAAM,kBAAkB,CAAC,MAAM,iBACnC;GAGD,MAAM,aAAa,MAAM,gBAAgB,SAAS,MAAM,kBAAkB;GAE1E,MAAM,SAAS,iBAAiB,MAAM,KAAK;AAC3C,OAAI,QAAQ;AACX,QAAI,OAAO;AACX,WAAO,OAAO,QAAQ,MAAM,IAAI,OAAO,KAAK,OAAO,UAAU,WAAW,CAAC;AACzE;;AAGD,OAAI,OAAO,eAAe,SACzB,OAAM,IAAI,MACT,sDAAsD,KAAK,UAC1D,YACA,MACA,EACA,GACD;AAGF,OAAI,OAAO;GACX,MAAM,mBAAiC,MAAM,iBAC1C;IACA,OAAO;IACP,kBAAkB,EACjB,UAAU,YACV;IACD,GACA;AAEH,UAAO,IAAI,SAAS;IACnB;GACD;;AAGH,SAAS,gBAAgB,iBAAyC,OAAe;CAChF,IAAI,gBAAgB;AAEpB,iBAAgB,aAAa,QAAQ,KAAK,OAAO;AAChD,MAAI,GAAG,YAAY,GAAG,SAAS,gBAAgB;GAC9C,MAAM,WAAW,GAAG,SAAS,UAAU,QAAQ,IAAI;AACnD,mBACC,GAAG,SAAS,eAAe,UAAU,cAAc,eAAe;;AAGpE,MACC,GAAG,UAAU,iBACb,GAAG,UAAU,gBACb,GAAG,UAAU,gBACb,GAAG,UAAU,kBAEb,iBAAgB;GAEhB;AAEF,QAAO;;AAGR,SAAS,kBAAkB,iBAAyC,OAAe;CAClF,IAAI,kBAAkB;AAEtB,iBAAgB,aAAa,QAAQ,KAAK,OAAO;AAChD,MAAI,GAAG,YAAY,GAAG,SAAS,gBAAgB;GAC9C,MAAM,WAAW,GAAG,SAAS,UAAU,QAAQ,IAAI;AACnD,qBAAkB,gBAAgB,GAAG,SAAS,eAAe,UAAU,IAAI;;GAE3E;AAEF,QAAO;;AAGR,MAAM,iBACL;AAED,SAAS,gBAAgB,MAA6C;AACrE,KAAI,KAAK,KAAK,UAAU,WACvB,QAAO;AAGR,QAAO,KAAK,KAAK,SAAS,aAAa"}
@@ -0,0 +1,15 @@
1
+ import { SuiClientTypes } from "./types.mjs";
2
+ import "../jsonRpc/index.mjs";
3
+
4
+ //#region src/client/errors.d.ts
5
+ declare class SuiClientError extends Error {}
6
+ declare class SimulationError extends SuiClientError {
7
+ executionError?: SuiClientTypes.ExecutionError;
8
+ constructor(message: string, options?: {
9
+ cause?: unknown;
10
+ executionError?: SuiClientTypes.ExecutionError;
11
+ });
12
+ }
13
+ //#endregion
14
+ export { SimulationError };
15
+ //# sourceMappingURL=errors.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.mts","names":[],"sources":["../../src/client/errors.ts"],"sourcesContent":[],"mappings":";;;;cAMa,cAAA,SAAuB,KAAA;AAAvB,cAEA,eAAA,SAAwB,cAAA,CAFI;EAE5B,cAAA,CAAA,EACK,cAAA,CAAe,cADJ;EACX,WAAA,CAAe,OAAA,EAAA,MAAA,EAAA,OADkB,CAClB,EAAA;IAIe,KAAA,CAAA,EAAe,OAAA;IAL1B,cAAA,CAAA,EAKW,cAAA,CAAe,cAL1B;EAAc,CAAA"}
@@ -1,5 +1,11 @@
1
1
  //#region src/client/errors.ts
2
2
  var SuiClientError = class extends Error {};
3
+ var SimulationError = class extends SuiClientError {
4
+ constructor(message, options) {
5
+ super(message, { cause: options?.cause });
6
+ this.executionError = options?.executionError;
7
+ }
8
+ };
3
9
  var ObjectError = class ObjectError extends SuiClientError {
4
10
  constructor(code, message) {
5
11
  super(message);
@@ -18,5 +24,5 @@ var ObjectError = class ObjectError extends SuiClientError {
18
24
  };
19
25
 
20
26
  //#endregion
21
- export { ObjectError };
27
+ export { ObjectError, SimulationError };
22
28
  //# sourceMappingURL=errors.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","names":[],"sources":["../../src/client/errors.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ObjectResponseError } from '../jsonRpc/index.js';\n\nexport class SuiClientError extends Error {}\n\nexport class ObjectError extends SuiClientError {\n\tcode: string;\n\n\tconstructor(code: string, message: string) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t}\n\n\tstatic fromResponse(response: ObjectResponseError, objectId?: string): ObjectError {\n\t\tswitch (response.code) {\n\t\t\tcase 'notExists':\n\t\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} does not exist`);\n\t\t\tcase 'dynamicFieldNotFound':\n\t\t\t\treturn new ObjectError(\n\t\t\t\t\tresponse.code,\n\t\t\t\t\t`Dynamic field not found for object ${response.parent_object_id}`,\n\t\t\t\t);\n\t\t\tcase 'deleted':\n\t\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} has been deleted`);\n\t\t\tcase 'displayError':\n\t\t\t\treturn new ObjectError(response.code, `Display error: ${response.error}`);\n\t\t\tcase 'unknown':\n\t\t\tdefault:\n\t\t\t\treturn new ObjectError(\n\t\t\t\t\tresponse.code,\n\t\t\t\t\t`Unknown error while loading object${objectId ? ` ${objectId}` : ''}`,\n\t\t\t\t);\n\t\t}\n\t}\n}\n"],"mappings":";AAKA,IAAa,iBAAb,cAAoC,MAAM;AAE1C,IAAa,cAAb,MAAa,oBAAoB,eAAe;CAG/C,YAAY,MAAc,SAAiB;AAC1C,QAAM,QAAQ;AACd,OAAK,OAAO;;CAGb,OAAO,aAAa,UAA+B,UAAgC;AAClF,UAAQ,SAAS,MAAjB;GACC,KAAK,YACJ,QAAO,IAAI,YAAY,SAAS,MAAM,UAAU,SAAS,UAAU,iBAAiB;GACrF,KAAK,uBACJ,QAAO,IAAI,YACV,SAAS,MACT,sCAAsC,SAAS,mBAC/C;GACF,KAAK,UACJ,QAAO,IAAI,YAAY,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB;GACvF,KAAK,eACJ,QAAO,IAAI,YAAY,SAAS,MAAM,kBAAkB,SAAS,QAAQ;GAC1E,KAAK;GACL,QACC,QAAO,IAAI,YACV,SAAS,MACT,qCAAqC,WAAW,IAAI,aAAa,KACjE"}
1
+ {"version":3,"file":"errors.mjs","names":[],"sources":["../../src/client/errors.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ObjectResponseError } from '../jsonRpc/index.js';\nimport type { SuiClientTypes } from './types.js';\n\nexport class SuiClientError extends Error {}\n\nexport class SimulationError extends SuiClientError {\n\texecutionError?: SuiClientTypes.ExecutionError;\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions?: { cause?: unknown; executionError?: SuiClientTypes.ExecutionError },\n\t) {\n\t\tsuper(message, { cause: options?.cause });\n\t\tthis.executionError = options?.executionError;\n\t}\n}\n\nexport class ObjectError extends SuiClientError {\n\tcode: string;\n\n\tconstructor(code: string, message: string) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t}\n\n\tstatic fromResponse(response: ObjectResponseError, objectId?: string): ObjectError {\n\t\tswitch (response.code) {\n\t\t\tcase 'notExists':\n\t\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} does not exist`);\n\t\t\tcase 'dynamicFieldNotFound':\n\t\t\t\treturn new ObjectError(\n\t\t\t\t\tresponse.code,\n\t\t\t\t\t`Dynamic field not found for object ${response.parent_object_id}`,\n\t\t\t\t);\n\t\t\tcase 'deleted':\n\t\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} has been deleted`);\n\t\t\tcase 'displayError':\n\t\t\t\treturn new ObjectError(response.code, `Display error: ${response.error}`);\n\t\t\tcase 'unknown':\n\t\t\tdefault:\n\t\t\t\treturn new ObjectError(\n\t\t\t\t\tresponse.code,\n\t\t\t\t\t`Unknown error while loading object${objectId ? ` ${objectId}` : ''}`,\n\t\t\t\t);\n\t\t}\n\t}\n}\n"],"mappings":";AAMA,IAAa,iBAAb,cAAoC,MAAM;AAE1C,IAAa,kBAAb,cAAqC,eAAe;CAGnD,YACC,SACA,SACC;AACD,QAAM,SAAS,EAAE,OAAO,SAAS,OAAO,CAAC;AACzC,OAAK,iBAAiB,SAAS;;;AAIjC,IAAa,cAAb,MAAa,oBAAoB,eAAe;CAG/C,YAAY,MAAc,SAAiB;AAC1C,QAAM,QAAQ;AACd,OAAK,OAAO;;CAGb,OAAO,aAAa,UAA+B,UAAgC;AAClF,UAAQ,SAAS,MAAjB;GACC,KAAK,YACJ,QAAO,IAAI,YAAY,SAAS,MAAM,UAAU,SAAS,UAAU,iBAAiB;GACrF,KAAK,uBACJ,QAAO,IAAI,YACV,SAAS,MACT,sCAAsC,SAAS,mBAC/C;GACF,KAAK,UACJ,QAAO,IAAI,YAAY,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB;GACvF,KAAK,eACJ,QAAO,IAAI,YAAY,SAAS,MAAM,kBAAkB,SAAS,QAAQ;GAC1E,KAAK;GACL,QACC,QAAO,IAAI,YACV,SAAS,MACT,qCAAqC,WAAW,IAAI,aAAa,KACjE"}
@@ -3,5 +3,6 @@ import { ClientWithExtensions, SuiClientRegistration, SuiClientTypes } from "./t
3
3
  import { ClientWithCoreApi, CoreClient, CoreClientOptions } from "./core.mjs";
4
4
  import { BaseClient } from "./client.mjs";
5
5
  import { extractStatusFromEffectsBcs, formatMoveAbortMessage, parseTransactionBcs, parseTransactionEffectsBcs } from "./utils.mjs";
6
+ import { SimulationError } from "./errors.mjs";
6
7
  import { NamedPackagesOverrides } from "./mvr.mjs";
7
- export { BaseClient, ClientCache, type ClientCacheOptions, type ClientWithCoreApi, type ClientWithExtensions, CoreClient, type CoreClientOptions, type NamedPackagesOverrides, type SuiClientRegistration, type SuiClientTypes, extractStatusFromEffectsBcs, formatMoveAbortMessage, parseTransactionBcs, parseTransactionEffectsBcs };
8
+ export { BaseClient, ClientCache, type ClientCacheOptions, type ClientWithCoreApi, type ClientWithExtensions, CoreClient, type CoreClientOptions, type NamedPackagesOverrides, SimulationError, type SuiClientRegistration, type SuiClientTypes, extractStatusFromEffectsBcs, formatMoveAbortMessage, parseTransactionBcs, parseTransactionEffectsBcs };
@@ -2,5 +2,6 @@ import { ClientCache } from "./cache.mjs";
2
2
  import { BaseClient } from "./client.mjs";
3
3
  import { CoreClient } from "./core.mjs";
4
4
  import { extractStatusFromEffectsBcs, formatMoveAbortMessage, parseTransactionBcs, parseTransactionEffectsBcs } from "./utils.mjs";
5
+ import { SimulationError } from "./errors.mjs";
5
6
 
6
- export { BaseClient, ClientCache, CoreClient, extractStatusFromEffectsBcs, formatMoveAbortMessage, parseTransactionBcs, parseTransactionEffectsBcs };
7
+ export { BaseClient, ClientCache, CoreClient, SimulationError, extractStatusFromEffectsBcs, formatMoveAbortMessage, parseTransactionBcs, parseTransactionEffectsBcs };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.mts","names":[],"sources":["../../src/client/utils.ts"],"sourcesContent":[],"mappings":";;;iBAsBgB,sBAAA;EAAA,OAAA,CAAA,EAAA,MAAA;EA2WA,QAAA,CAAA,EAAA;IAsBA,OAAA,CAAA,EAAA,MAAA;IAsCA,MAAA,CAAA,EAAA,MAAA;;;;;;;;;;;iBA5DA,mBAAA,QACR,4CAEL,cAAA,CAAe;;;;;;;;;;;;iBAmBF,2BAAA,eACD,aACZ,cAAA,CAAe;iBAoCF,0BAAA,UAAoC,aAAa,cAAA,CAAe"}
1
+ {"version":3,"file":"utils.d.mts","names":[],"sources":["../../src/client/utils.ts"],"sourcesContent":[],"mappings":";;;iBAsBgB,sBAAA;EAAA,OAAA,CAAA,EAAA,MAAA;EAkXA,QAAA,CAAA,EAAA;IAsBA,OAAA,CAAA,EAAA,MAAA;IAsCA,MAAA,CAAA,EAAA,MAAA;;;;;;;;;;;iBA5DA,mBAAA,QACR,4CAEL,cAAA,CAAe;;;;;;;;;;;;iBAmBF,2BAAA,eACD,aACZ,cAAA,CAAe;iBAoCF,0BAAA,UAAoC,aAAa,cAAA,CAAe"}
@@ -17,9 +17,14 @@ function formatOrdinal(n) {
17
17
  function formatMoveAbortMessage(options) {
18
18
  const { command, location, abortCode, cleverError } = options;
19
19
  const parts = [];
20
- if (command != null) parts.push(`Error in ${formatOrdinal(command + 1)} command`);
20
+ if (command != null) parts.push(`MoveAbort in ${formatOrdinal(command + 1)} command`);
21
+ else parts.push("MoveAbort");
22
+ if (cleverError?.constantName) {
23
+ const errorStr = cleverError.value ? `'${cleverError.constantName}': ${cleverError.value}` : `'${cleverError.constantName}'`;
24
+ parts.push(errorStr);
25
+ } else parts.push(`abort code: ${abortCode}`);
21
26
  if (location?.package && location?.module) {
22
- const locationStr = [`from '${[
27
+ const locationStr = [`in '${[
23
28
  location.package.startsWith("0x") ? location.package : `0x${location.package}`,
24
29
  location.module,
25
30
  location.functionName
@@ -28,10 +33,6 @@ function formatMoveAbortMessage(options) {
28
33
  else if (location.instruction != null) locationStr.push(`(instruction ${location.instruction})`);
29
34
  parts.push(locationStr.join(" "));
30
35
  }
31
- if (cleverError?.constantName) {
32
- const abortStr = cleverError.value ? `abort '${cleverError.constantName}': ${cleverError.value}` : `abort '${cleverError.constantName}'`;
33
- parts.push(abortStr);
34
- } else parts.push(`abort code: ${abortCode}`);
35
36
  return parts.join(", ");
36
37
  }
37
38
  const MinimalEffectsWithError = suiBcs.struct("MinimalEffectsWithError", { status: ExecutionStatus });
@@ -58,19 +59,24 @@ function parseBcsExecutionError(failure) {
58
59
  switch (error.$kind) {
59
60
  case "MoveAbort": {
60
61
  const [location, abortCode] = error.MoveAbort;
62
+ const moveLocation = {
63
+ package: location.module.address,
64
+ module: location.module.name,
65
+ function: location.function,
66
+ functionName: location.functionName ?? void 0,
67
+ instruction: location.instruction
68
+ };
61
69
  return {
62
70
  $kind: "MoveAbort",
63
- message: formatErrorMessage("MoveAbort", error.MoveAbort),
71
+ message: formatMoveAbortMessage({
72
+ command,
73
+ location: moveLocation,
74
+ abortCode: String(abortCode)
75
+ }),
64
76
  command,
65
77
  MoveAbort: {
66
78
  abortCode: String(abortCode),
67
- location: {
68
- package: location.module.address,
69
- module: location.module.name,
70
- function: location.function,
71
- functionName: location.functionName ?? void 0,
72
- instruction: location.instruction
73
- }
79
+ location: moveLocation
74
80
  }
75
81
  };
76
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":["bcs"],"sources":["../../src/client/utils.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@mysten/utils';\n\nimport { bcs } from '../bcs/index.js';\nimport { ExecutionStatus } from '../bcs/effects.js';\nimport { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport type { SuiClientTypes } from './types.js';\n\nconst ordinalRules = new Intl.PluralRules('en-US', { type: 'ordinal' });\nconst ordinalSuffixes = new Map([\n\t['one', 'st'],\n\t['two', 'nd'],\n\t['few', 'rd'],\n\t['other', 'th'],\n]);\n\nexport function formatOrdinal(n: number): string {\n\treturn `${n}${ordinalSuffixes.get(ordinalRules.select(n))}`;\n}\n\nexport function formatMoveAbortMessage(options: {\n\tcommand?: number;\n\tlocation?: {\n\t\tpackage?: string;\n\t\tmodule?: string;\n\t\tfunctionName?: string;\n\t\tinstruction?: number;\n\t};\n\tabortCode: string;\n\tcleverError?: {\n\t\tlineNumber?: number;\n\t\tconstantName?: string;\n\t\tvalue?: string;\n\t};\n}): string {\n\tconst { command, location, abortCode, cleverError } = options;\n\tconst parts: string[] = [];\n\n\tif (command != null) {\n\t\tparts.push(`Error in ${formatOrdinal(command + 1)} command`);\n\t}\n\n\tif (location?.package && location?.module) {\n\t\tconst pkg = location.package.startsWith('0x') ? location.package : `0x${location.package}`;\n\t\tconst locationParts = [pkg, location.module, location.functionName].filter(Boolean);\n\t\tconst locationStr = [`from '${locationParts.join('::')}'`];\n\n\t\tif (cleverError?.lineNumber != null) {\n\t\t\tlocationStr.push(`(line ${cleverError.lineNumber})`);\n\t\t} else if (location.instruction != null) {\n\t\t\tlocationStr.push(`(instruction ${location.instruction})`);\n\t\t}\n\n\t\tparts.push(locationStr.join(' '));\n\t}\n\n\tif (cleverError?.constantName) {\n\t\tconst abortStr = cleverError.value\n\t\t\t? `abort '${cleverError.constantName}': ${cleverError.value}`\n\t\t\t: `abort '${cleverError.constantName}'`;\n\t\tparts.push(abortStr);\n\t} else {\n\t\tparts.push(`abort code: ${abortCode}`);\n\t}\n\n\treturn parts.join(', ');\n}\n\n// Minimal BCS types for extracting just the status from transaction effects.\n// BCS fields are read sequentially, so we only need to define fields up to and including status.\n// This avoids parsing the entire effects structure when we only need success/failure.\n\n// First, try with the full ExecutionStatus to get detailed error info\nconst MinimalEffectsWithError = bcs.struct('MinimalEffectsWithError', {\n\tstatus: ExecutionStatus,\n});\n\nconst MinimalTransactionEffectsWithError = bcs.enum('MinimalTransactionEffectsWithError', {\n\tV1: MinimalEffectsWithError,\n\tV2: MinimalEffectsWithError,\n});\n\n// Fallback version that doesn't parse error details - used when ExecutionFailureStatus has unknown variants\nconst MinimalExecutionStatusNoError = bcs.enum('MinimalExecutionStatusNoError', {\n\tSuccess: null,\n\tFailed: null, // Don't parse the error structure\n});\n\nconst MinimalEffectsNoError = bcs.struct('MinimalEffectsNoError', {\n\tstatus: MinimalExecutionStatusNoError,\n});\n\nconst MinimalTransactionEffectsNoError = bcs.enum('MinimalTransactionEffectsNoError', {\n\tV1: MinimalEffectsNoError,\n\tV2: MinimalEffectsNoError,\n});\n\ntype BcsExecutionFailureStatus = NonNullable<\n\t(typeof ExecutionStatus.$inferType)['Failure']\n>['error'];\n\nfunction formatErrorMessage($kind: string, data: unknown): string {\n\tif (data !== null && data !== undefined && typeof data !== 'boolean') {\n\t\treturn `${$kind}(${JSON.stringify(data, (_key, value) => (typeof value === 'bigint' ? value.toString() : value))})`;\n\t}\n\treturn $kind;\n}\n\nfunction parseBcsExecutionError(failure: {\n\terror: BcsExecutionFailureStatus;\n\tcommand: string | null;\n}): SuiClientTypes.ExecutionError {\n\tconst error = failure.error;\n\tconst command = failure.command != null ? Number(failure.command) : undefined;\n\n\tswitch (error.$kind) {\n\t\tcase 'MoveAbort': {\n\t\t\tconst [location, abortCode] = error.MoveAbort;\n\t\t\treturn {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatErrorMessage('MoveAbort', error.MoveAbort),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: {\n\t\t\t\t\tabortCode: String(abortCode),\n\t\t\t\t\tlocation: {\n\t\t\t\t\t\tpackage: location.module.address,\n\t\t\t\t\t\tmodule: location.module.name,\n\t\t\t\t\t\tfunction: location.function,\n\t\t\t\t\t\tfunctionName: location.functionName ?? undefined,\n\t\t\t\t\t\tinstruction: location.instruction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase 'MoveObjectTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveObjectTooBig', error.MoveObjectTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'ObjectTooBig',\n\t\t\t\t\tsize: Number(error.MoveObjectTooBig.objectSize),\n\t\t\t\t\tmaxSize: Number(error.MoveObjectTooBig.maxObjectSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MovePackageTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MovePackageTooBig', error.MovePackageTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'PackageTooBig',\n\t\t\t\t\tsize: Number(error.MovePackageTooBig.objectSize),\n\t\t\t\t\tmaxSize: Number(error.MovePackageTooBig.maxObjectSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'EffectsTooLarge':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('EffectsTooLarge', error.EffectsTooLarge),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'EffectsTooLarge',\n\t\t\t\t\tsize: Number(error.EffectsTooLarge.currentSize),\n\t\t\t\t\tmaxSize: Number(error.EffectsTooLarge.maxSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'WrittenObjectsTooLarge':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('WrittenObjectsTooLarge', error.WrittenObjectsTooLarge),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'WrittenObjectsTooLarge',\n\t\t\t\t\tsize: Number(error.WrittenObjectsTooLarge.currentSize),\n\t\t\t\t\tmaxSize: Number(error.WrittenObjectsTooLarge.maxSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MoveVectorElemTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveVectorElemTooBig', error.MoveVectorElemTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'MoveVectorElemTooBig',\n\t\t\t\t\tsize: Number(error.MoveVectorElemTooBig.valueSize),\n\t\t\t\t\tmaxSize: Number(error.MoveVectorElemTooBig.maxScaledSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MoveRawValueTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveRawValueTooBig', error.MoveRawValueTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'MoveRawValueTooBig',\n\t\t\t\t\tsize: Number(error.MoveRawValueTooBig.valueSize),\n\t\t\t\t\tmaxSize: Number(error.MoveRawValueTooBig.maxScaledSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CommandArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CommandArgumentError',\n\t\t\t\tmessage: formatErrorMessage('CommandArgumentError', error.CommandArgumentError),\n\t\t\t\tcommand,\n\t\t\t\tCommandArgumentError: {\n\t\t\t\t\targument: error.CommandArgumentError.argIdx,\n\t\t\t\t\tname: error.CommandArgumentError.kind.$kind,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'TypeArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'TypeArgumentError',\n\t\t\t\tmessage: formatErrorMessage('TypeArgumentError', error.TypeArgumentError),\n\t\t\t\tcommand,\n\t\t\t\tTypeArgumentError: {\n\t\t\t\t\ttypeArgument: error.TypeArgumentError.argumentIdx,\n\t\t\t\t\tname: error.TypeArgumentError.kind.$kind,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'PackageUpgradeError': {\n\t\t\tconst upgradeError = error.PackageUpgradeError.upgradeError;\n\t\t\treturn {\n\t\t\t\t$kind: 'PackageUpgradeError',\n\t\t\t\tmessage: formatErrorMessage('PackageUpgradeError', error.PackageUpgradeError),\n\t\t\t\tcommand,\n\t\t\t\tPackageUpgradeError: {\n\t\t\t\t\tname: upgradeError.$kind,\n\t\t\t\t\tpackageId:\n\t\t\t\t\t\tupgradeError.$kind === 'UnableToFetchPackage'\n\t\t\t\t\t\t\t? upgradeError.UnableToFetchPackage.packageId\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tdigest:\n\t\t\t\t\t\tupgradeError.$kind === 'DigestDoesNotMatch'\n\t\t\t\t\t\t\t? toBase64(upgradeError.DigestDoesNotMatch.digest)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase 'ExecutionCancelledDueToSharedObjectCongestion':\n\t\t\treturn {\n\t\t\t\t$kind: 'CongestedObjects',\n\t\t\t\tmessage: formatErrorMessage(\n\t\t\t\t\t'ExecutionCancelledDueToSharedObjectCongestion',\n\t\t\t\t\terror.ExecutionCancelledDueToSharedObjectCongestion,\n\t\t\t\t),\n\t\t\t\tcommand,\n\t\t\t\tCongestedObjects: {\n\t\t\t\t\tname: 'ExecutionCanceledDueToConsensusObjectCongestion',\n\t\t\t\t\tobjects: error.ExecutionCancelledDueToSharedObjectCongestion.congested_objects,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'AddressDeniedForCoin':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage: formatErrorMessage('AddressDeniedForCoin', error.AddressDeniedForCoin),\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: 'AddressDeniedForCoin',\n\t\t\t\t\taddress: error.AddressDeniedForCoin.address,\n\t\t\t\t\tcoinType: error.AddressDeniedForCoin.coinType,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CoinTypeGlobalPause':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage: formatErrorMessage('CoinTypeGlobalPause', error.CoinTypeGlobalPause),\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: 'CoinTypeGlobalPause',\n\t\t\t\t\tcoinType: error.CoinTypeGlobalPause.coinType,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CircularObjectOwnership':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: formatErrorMessage('CircularObjectOwnership', error.CircularObjectOwnership),\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'CircularObjectOwnership',\n\t\t\t\t\tobjectId: error.CircularObjectOwnership.object,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InvalidGasObject':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InvalidGasObject',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InvalidGasObject',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InputObjectDeleted':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InputObjectDeleted',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InputObjectDeleted',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InvalidTransferObject':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InvalidTransferObject',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InvalidTransferObject',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'NonExclusiveWriteInputObjectModified':\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: formatErrorMessage(\n\t\t\t\t\t'NonExclusiveWriteInputObjectModified',\n\t\t\t\t\terror.NonExclusiveWriteInputObjectModified,\n\t\t\t\t),\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\n\t\tcase 'InsufficientGas':\n\t\tcase 'InvariantViolation':\n\t\tcase 'FeatureNotYetSupported':\n\t\tcase 'InsufficientCoinBalance':\n\t\tcase 'CoinBalanceOverflow':\n\t\tcase 'PublishErrorNonZeroAddress':\n\t\tcase 'SuiMoveVerificationError':\n\t\tcase 'MovePrimitiveRuntimeError':\n\t\tcase 'VMVerificationOrDeserializationError':\n\t\tcase 'VMInvariantViolation':\n\t\tcase 'FunctionNotFound':\n\t\tcase 'ArityMismatch':\n\t\tcase 'TypeArityMismatch':\n\t\tcase 'NonEntryFunctionInvoked':\n\t\tcase 'UnusedValueWithoutDrop':\n\t\tcase 'InvalidPublicFunctionReturnType':\n\t\tcase 'PublishUpgradeMissingDependency':\n\t\tcase 'PublishUpgradeDependencyDowngrade':\n\t\tcase 'CertificateDenied':\n\t\tcase 'SuiMoveVerificationTimedout':\n\t\tcase 'SharedObjectOperationNotAllowed':\n\t\tcase 'ExecutionCancelledDueToRandomnessUnavailable':\n\t\tcase 'InvalidLinkage':\n\t\tcase 'InsufficientBalanceForWithdraw':\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: error.$kind,\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\n\t\tdefault:\n\t\t\terror satisfies never;\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: 'Unknown error',\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\t}\n}\n\nexport function parseTransactionBcs(\n\tbytes: Uint8Array,\n\tonlyTransactionKind = false,\n): SuiClientTypes.TransactionData {\n\treturn (\n\t\tonlyTransactionKind\n\t\t\t? TransactionDataBuilder.fromKindBytes(bytes)\n\t\t\t: TransactionDataBuilder.fromBytes(bytes)\n\t).snapshot();\n}\n\n/**\n * Extracts just the status from transaction effects BCS without fully parsing.\n * This is optimized for cases where we only need the status (success/failure)\n * without parsing the entire effects structure.\n *\n * Uses a minimal BCS struct that only parses fields up to and including status,\n * since BCS fields are read sequentially. First tries to parse with full error details,\n * then falls back to a version without error parsing if the error enum has unknown variants.\n *\n * For errors with data, serializes the error as JSON to preserve all information.\n */\nexport function extractStatusFromEffectsBcs(\n\teffectsBytes: Uint8Array,\n): SuiClientTypes.ExecutionStatus {\n\t// First try parsing with full error details\n\tlet parsed: ReturnType<typeof MinimalTransactionEffectsWithError.parse> | null = null;\n\ttry {\n\t\tparsed = MinimalTransactionEffectsWithError.parse(effectsBytes);\n\t} catch {\n\t\t// Fall back to parsing without error details if the error enum has unknown variants\n\t\tconst parsedNoError = MinimalTransactionEffectsNoError.parse(effectsBytes);\n\t\tconst status = (parsedNoError.V1 ?? parsedNoError.V2)!.status;\n\n\t\tif (status.$kind === 'Success') {\n\t\t\treturn { success: true, error: null };\n\t\t}\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: 'ExecutionFailed',\n\t\t\t\tUnknown: null,\n\t\t\t},\n\t\t};\n\t}\n\n\tconst status = (parsed.V1 ?? parsed.V2)!.status;\n\n\tif (status.$kind === 'Success') {\n\t\treturn { success: true, error: null };\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: parseBcsExecutionError(status.Failure),\n\t};\n}\n\nexport function parseTransactionEffectsBcs(effects: Uint8Array): SuiClientTypes.TransactionEffects {\n\tconst parsed = bcs.TransactionEffects.parse(effects);\n\n\tswitch (parsed.$kind) {\n\t\tcase 'V1':\n\t\t\treturn parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1 });\n\t\tcase 'V2':\n\t\t\treturn parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2 });\n\t\tdefault:\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown transaction effects version: ${(parsed as { $kind: string }).$kind}`,\n\t\t\t);\n\t}\n}\n\nfunction parseTransactionEffectsV1(_: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V1']>;\n}): SuiClientTypes.TransactionEffects {\n\tthrow new Error('V1 effects are not supported yet');\n}\n\nfunction parseTransactionEffectsV2({\n\tbytes,\n\teffects,\n}: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V2']>;\n}): SuiClientTypes.TransactionEffects {\n\tconst changedObjects = effects.changedObjects.map(\n\t\t([id, change]): SuiClientTypes.ChangedObject => {\n\t\t\treturn {\n\t\t\t\tobjectId: id,\n\t\t\t\tinputState: change.inputState.$kind === 'Exist' ? 'Exists' : 'DoesNotExist',\n\t\t\t\tinputVersion: change.inputState.Exist?.[0][0] ?? null,\n\t\t\t\tinputDigest: change.inputState.Exist?.[0][1] ?? null,\n\t\t\t\tinputOwner: change.inputState.Exist?.[1] ?? null,\n\t\t\t\toutputState:\n\t\t\t\t\tchange.outputState.$kind === 'NotExist' ? 'DoesNotExist' : change.outputState.$kind,\n\t\t\t\toutputVersion:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[0]\n\t\t\t\t\t\t: change.outputState.$kind === 'ObjectWrite'\n\t\t\t\t\t\t\t? effects.lamportVersion\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputDigest:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[1]\n\t\t\t\t\t\t: change.outputState.$kind === 'ObjectWrite'\n\t\t\t\t\t\t\t? (change.outputState.ObjectWrite?.[0] ?? null)\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputOwner:\n\t\t\t\t\tchange.outputState.$kind === 'ObjectWrite' ? change.outputState.ObjectWrite[1] : null,\n\t\t\t\tidOperation: change.idOperation.$kind,\n\t\t\t};\n\t\t},\n\t);\n\n\treturn {\n\t\tbcs: bytes,\n\t\tversion: 2,\n\t\tstatus:\n\t\t\teffects.status.$kind === 'Success'\n\t\t\t\t? {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: parseBcsExecutionError(effects.status.Failure),\n\t\t\t\t\t},\n\t\tgasUsed: effects.gasUsed,\n\t\ttransactionDigest: effects.transactionDigest,\n\t\tgasObject:\n\t\t\teffects.gasObjectIndex === null ? null : (changedObjects[effects.gasObjectIndex] ?? null),\n\t\teventsDigest: effects.eventsDigest,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion,\n\t\tchangedObjects,\n\t\tunchangedConsensusObjects: effects.unchangedConsensusObjects.map(\n\t\t\t([objectId, object]): SuiClientTypes.UnchangedConsensusObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: object.$kind,\n\t\t\t\t\tobjectId: objectId,\n\t\t\t\t\tversion:\n\t\t\t\t\t\tobject.$kind === 'ReadOnlyRoot'\n\t\t\t\t\t\t\t? object.ReadOnlyRoot[0]\n\t\t\t\t\t\t\t: (object[object.$kind] as string | null),\n\t\t\t\t\tdigest: object.$kind === 'ReadOnlyRoot' ? object.ReadOnlyRoot[1] : null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxDataDigest,\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.mjs","names":["bcs"],"sources":["../../src/client/utils.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@mysten/utils';\n\nimport { bcs } from '../bcs/index.js';\nimport { ExecutionStatus } from '../bcs/effects.js';\nimport { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport type { SuiClientTypes } from './types.js';\n\nconst ordinalRules = new Intl.PluralRules('en-US', { type: 'ordinal' });\nconst ordinalSuffixes = new Map([\n\t['one', 'st'],\n\t['two', 'nd'],\n\t['few', 'rd'],\n\t['other', 'th'],\n]);\n\nexport function formatOrdinal(n: number): string {\n\treturn `${n}${ordinalSuffixes.get(ordinalRules.select(n))}`;\n}\n\nexport function formatMoveAbortMessage(options: {\n\tcommand?: number;\n\tlocation?: {\n\t\tpackage?: string;\n\t\tmodule?: string;\n\t\tfunctionName?: string;\n\t\tinstruction?: number;\n\t};\n\tabortCode: string;\n\tcleverError?: {\n\t\tlineNumber?: number;\n\t\tconstantName?: string;\n\t\tvalue?: string;\n\t};\n}): string {\n\tconst { command, location, abortCode, cleverError } = options;\n\tconst parts: string[] = [];\n\n\tif (command != null) {\n\t\tparts.push(`MoveAbort in ${formatOrdinal(command + 1)} command`);\n\t} else {\n\t\tparts.push('MoveAbort');\n\t}\n\n\tif (cleverError?.constantName) {\n\t\tconst errorStr = cleverError!.value\n\t\t\t? `'${cleverError!.constantName}': ${cleverError!.value}`\n\t\t\t: `'${cleverError!.constantName}'`;\n\t\tparts.push(errorStr);\n\t} else {\n\t\tparts.push(`abort code: ${abortCode}`);\n\t}\n\n\tif (location?.package && location?.module) {\n\t\tconst pkg = location.package.startsWith('0x') ? location.package : `0x${location.package}`;\n\t\tconst locationParts = [pkg, location.module, location.functionName].filter(Boolean);\n\t\tconst locationStr = [`in '${locationParts.join('::')}'`];\n\n\t\tif (cleverError?.lineNumber != null) {\n\t\t\tlocationStr.push(`(line ${cleverError.lineNumber})`);\n\t\t} else if (location.instruction != null) {\n\t\t\tlocationStr.push(`(instruction ${location.instruction})`);\n\t\t}\n\n\t\tparts.push(locationStr.join(' '));\n\t}\n\n\treturn parts.join(', ');\n}\n\n// Minimal BCS types for extracting just the status from transaction effects.\n// BCS fields are read sequentially, so we only need to define fields up to and including status.\n// This avoids parsing the entire effects structure when we only need success/failure.\n\n// First, try with the full ExecutionStatus to get detailed error info\nconst MinimalEffectsWithError = bcs.struct('MinimalEffectsWithError', {\n\tstatus: ExecutionStatus,\n});\n\nconst MinimalTransactionEffectsWithError = bcs.enum('MinimalTransactionEffectsWithError', {\n\tV1: MinimalEffectsWithError,\n\tV2: MinimalEffectsWithError,\n});\n\n// Fallback version that doesn't parse error details - used when ExecutionFailureStatus has unknown variants\nconst MinimalExecutionStatusNoError = bcs.enum('MinimalExecutionStatusNoError', {\n\tSuccess: null,\n\tFailed: null, // Don't parse the error structure\n});\n\nconst MinimalEffectsNoError = bcs.struct('MinimalEffectsNoError', {\n\tstatus: MinimalExecutionStatusNoError,\n});\n\nconst MinimalTransactionEffectsNoError = bcs.enum('MinimalTransactionEffectsNoError', {\n\tV1: MinimalEffectsNoError,\n\tV2: MinimalEffectsNoError,\n});\n\ntype BcsExecutionFailureStatus = NonNullable<\n\t(typeof ExecutionStatus.$inferType)['Failure']\n>['error'];\n\nfunction formatErrorMessage($kind: string, data: unknown): string {\n\tif (data !== null && data !== undefined && typeof data !== 'boolean') {\n\t\treturn `${$kind}(${JSON.stringify(data, (_key, value) => (typeof value === 'bigint' ? value.toString() : value))})`;\n\t}\n\treturn $kind;\n}\n\nfunction parseBcsExecutionError(failure: {\n\terror: BcsExecutionFailureStatus;\n\tcommand: string | null;\n}): SuiClientTypes.ExecutionError {\n\tconst error = failure.error;\n\tconst command = failure.command != null ? Number(failure.command) : undefined;\n\n\tswitch (error.$kind) {\n\t\tcase 'MoveAbort': {\n\t\t\tconst [location, abortCode] = error.MoveAbort;\n\t\t\tconst moveLocation = {\n\t\t\t\tpackage: location.module.address,\n\t\t\t\tmodule: location.module.name,\n\t\t\t\tfunction: location.function,\n\t\t\t\tfunctionName: location.functionName ?? undefined,\n\t\t\t\tinstruction: location.instruction,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation: moveLocation,\n\t\t\t\t\tabortCode: String(abortCode),\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: {\n\t\t\t\t\tabortCode: String(abortCode),\n\t\t\t\t\tlocation: moveLocation,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase 'MoveObjectTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveObjectTooBig', error.MoveObjectTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'ObjectTooBig',\n\t\t\t\t\tsize: Number(error.MoveObjectTooBig.objectSize),\n\t\t\t\t\tmaxSize: Number(error.MoveObjectTooBig.maxObjectSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MovePackageTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MovePackageTooBig', error.MovePackageTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'PackageTooBig',\n\t\t\t\t\tsize: Number(error.MovePackageTooBig.objectSize),\n\t\t\t\t\tmaxSize: Number(error.MovePackageTooBig.maxObjectSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'EffectsTooLarge':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('EffectsTooLarge', error.EffectsTooLarge),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'EffectsTooLarge',\n\t\t\t\t\tsize: Number(error.EffectsTooLarge.currentSize),\n\t\t\t\t\tmaxSize: Number(error.EffectsTooLarge.maxSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'WrittenObjectsTooLarge':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('WrittenObjectsTooLarge', error.WrittenObjectsTooLarge),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'WrittenObjectsTooLarge',\n\t\t\t\t\tsize: Number(error.WrittenObjectsTooLarge.currentSize),\n\t\t\t\t\tmaxSize: Number(error.WrittenObjectsTooLarge.maxSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MoveVectorElemTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveVectorElemTooBig', error.MoveVectorElemTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'MoveVectorElemTooBig',\n\t\t\t\t\tsize: Number(error.MoveVectorElemTooBig.valueSize),\n\t\t\t\t\tmaxSize: Number(error.MoveVectorElemTooBig.maxScaledSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MoveRawValueTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveRawValueTooBig', error.MoveRawValueTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'MoveRawValueTooBig',\n\t\t\t\t\tsize: Number(error.MoveRawValueTooBig.valueSize),\n\t\t\t\t\tmaxSize: Number(error.MoveRawValueTooBig.maxScaledSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CommandArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CommandArgumentError',\n\t\t\t\tmessage: formatErrorMessage('CommandArgumentError', error.CommandArgumentError),\n\t\t\t\tcommand,\n\t\t\t\tCommandArgumentError: {\n\t\t\t\t\targument: error.CommandArgumentError.argIdx,\n\t\t\t\t\tname: error.CommandArgumentError.kind.$kind,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'TypeArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'TypeArgumentError',\n\t\t\t\tmessage: formatErrorMessage('TypeArgumentError', error.TypeArgumentError),\n\t\t\t\tcommand,\n\t\t\t\tTypeArgumentError: {\n\t\t\t\t\ttypeArgument: error.TypeArgumentError.argumentIdx,\n\t\t\t\t\tname: error.TypeArgumentError.kind.$kind,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'PackageUpgradeError': {\n\t\t\tconst upgradeError = error.PackageUpgradeError.upgradeError;\n\t\t\treturn {\n\t\t\t\t$kind: 'PackageUpgradeError',\n\t\t\t\tmessage: formatErrorMessage('PackageUpgradeError', error.PackageUpgradeError),\n\t\t\t\tcommand,\n\t\t\t\tPackageUpgradeError: {\n\t\t\t\t\tname: upgradeError.$kind,\n\t\t\t\t\tpackageId:\n\t\t\t\t\t\tupgradeError.$kind === 'UnableToFetchPackage'\n\t\t\t\t\t\t\t? upgradeError.UnableToFetchPackage.packageId\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tdigest:\n\t\t\t\t\t\tupgradeError.$kind === 'DigestDoesNotMatch'\n\t\t\t\t\t\t\t? toBase64(upgradeError.DigestDoesNotMatch.digest)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase 'ExecutionCancelledDueToSharedObjectCongestion':\n\t\t\treturn {\n\t\t\t\t$kind: 'CongestedObjects',\n\t\t\t\tmessage: formatErrorMessage(\n\t\t\t\t\t'ExecutionCancelledDueToSharedObjectCongestion',\n\t\t\t\t\terror.ExecutionCancelledDueToSharedObjectCongestion,\n\t\t\t\t),\n\t\t\t\tcommand,\n\t\t\t\tCongestedObjects: {\n\t\t\t\t\tname: 'ExecutionCanceledDueToConsensusObjectCongestion',\n\t\t\t\t\tobjects: error.ExecutionCancelledDueToSharedObjectCongestion.congested_objects,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'AddressDeniedForCoin':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage: formatErrorMessage('AddressDeniedForCoin', error.AddressDeniedForCoin),\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: 'AddressDeniedForCoin',\n\t\t\t\t\taddress: error.AddressDeniedForCoin.address,\n\t\t\t\t\tcoinType: error.AddressDeniedForCoin.coinType,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CoinTypeGlobalPause':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage: formatErrorMessage('CoinTypeGlobalPause', error.CoinTypeGlobalPause),\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: 'CoinTypeGlobalPause',\n\t\t\t\t\tcoinType: error.CoinTypeGlobalPause.coinType,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CircularObjectOwnership':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: formatErrorMessage('CircularObjectOwnership', error.CircularObjectOwnership),\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'CircularObjectOwnership',\n\t\t\t\t\tobjectId: error.CircularObjectOwnership.object,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InvalidGasObject':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InvalidGasObject',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InvalidGasObject',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InputObjectDeleted':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InputObjectDeleted',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InputObjectDeleted',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InvalidTransferObject':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InvalidTransferObject',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InvalidTransferObject',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'NonExclusiveWriteInputObjectModified':\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: formatErrorMessage(\n\t\t\t\t\t'NonExclusiveWriteInputObjectModified',\n\t\t\t\t\terror.NonExclusiveWriteInputObjectModified,\n\t\t\t\t),\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\n\t\tcase 'InsufficientGas':\n\t\tcase 'InvariantViolation':\n\t\tcase 'FeatureNotYetSupported':\n\t\tcase 'InsufficientCoinBalance':\n\t\tcase 'CoinBalanceOverflow':\n\t\tcase 'PublishErrorNonZeroAddress':\n\t\tcase 'SuiMoveVerificationError':\n\t\tcase 'MovePrimitiveRuntimeError':\n\t\tcase 'VMVerificationOrDeserializationError':\n\t\tcase 'VMInvariantViolation':\n\t\tcase 'FunctionNotFound':\n\t\tcase 'ArityMismatch':\n\t\tcase 'TypeArityMismatch':\n\t\tcase 'NonEntryFunctionInvoked':\n\t\tcase 'UnusedValueWithoutDrop':\n\t\tcase 'InvalidPublicFunctionReturnType':\n\t\tcase 'PublishUpgradeMissingDependency':\n\t\tcase 'PublishUpgradeDependencyDowngrade':\n\t\tcase 'CertificateDenied':\n\t\tcase 'SuiMoveVerificationTimedout':\n\t\tcase 'SharedObjectOperationNotAllowed':\n\t\tcase 'ExecutionCancelledDueToRandomnessUnavailable':\n\t\tcase 'InvalidLinkage':\n\t\tcase 'InsufficientBalanceForWithdraw':\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: error.$kind,\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\n\t\tdefault:\n\t\t\terror satisfies never;\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: 'Unknown error',\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\t}\n}\n\nexport function parseTransactionBcs(\n\tbytes: Uint8Array,\n\tonlyTransactionKind = false,\n): SuiClientTypes.TransactionData {\n\treturn (\n\t\tonlyTransactionKind\n\t\t\t? TransactionDataBuilder.fromKindBytes(bytes)\n\t\t\t: TransactionDataBuilder.fromBytes(bytes)\n\t).snapshot();\n}\n\n/**\n * Extracts just the status from transaction effects BCS without fully parsing.\n * This is optimized for cases where we only need the status (success/failure)\n * without parsing the entire effects structure.\n *\n * Uses a minimal BCS struct that only parses fields up to and including status,\n * since BCS fields are read sequentially. First tries to parse with full error details,\n * then falls back to a version without error parsing if the error enum has unknown variants.\n *\n * For errors with data, serializes the error as JSON to preserve all information.\n */\nexport function extractStatusFromEffectsBcs(\n\teffectsBytes: Uint8Array,\n): SuiClientTypes.ExecutionStatus {\n\t// First try parsing with full error details\n\tlet parsed: ReturnType<typeof MinimalTransactionEffectsWithError.parse> | null = null;\n\ttry {\n\t\tparsed = MinimalTransactionEffectsWithError.parse(effectsBytes);\n\t} catch {\n\t\t// Fall back to parsing without error details if the error enum has unknown variants\n\t\tconst parsedNoError = MinimalTransactionEffectsNoError.parse(effectsBytes);\n\t\tconst status = (parsedNoError.V1 ?? parsedNoError.V2)!.status;\n\n\t\tif (status.$kind === 'Success') {\n\t\t\treturn { success: true, error: null };\n\t\t}\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: 'ExecutionFailed',\n\t\t\t\tUnknown: null,\n\t\t\t},\n\t\t};\n\t}\n\n\tconst status = (parsed.V1 ?? parsed.V2)!.status;\n\n\tif (status.$kind === 'Success') {\n\t\treturn { success: true, error: null };\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: parseBcsExecutionError(status.Failure),\n\t};\n}\n\nexport function parseTransactionEffectsBcs(effects: Uint8Array): SuiClientTypes.TransactionEffects {\n\tconst parsed = bcs.TransactionEffects.parse(effects);\n\n\tswitch (parsed.$kind) {\n\t\tcase 'V1':\n\t\t\treturn parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1 });\n\t\tcase 'V2':\n\t\t\treturn parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2 });\n\t\tdefault:\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown transaction effects version: ${(parsed as { $kind: string }).$kind}`,\n\t\t\t);\n\t}\n}\n\nfunction parseTransactionEffectsV1(_: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V1']>;\n}): SuiClientTypes.TransactionEffects {\n\tthrow new Error('V1 effects are not supported yet');\n}\n\nfunction parseTransactionEffectsV2({\n\tbytes,\n\teffects,\n}: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V2']>;\n}): SuiClientTypes.TransactionEffects {\n\tconst changedObjects = effects.changedObjects.map(\n\t\t([id, change]): SuiClientTypes.ChangedObject => {\n\t\t\treturn {\n\t\t\t\tobjectId: id,\n\t\t\t\tinputState: change.inputState.$kind === 'Exist' ? 'Exists' : 'DoesNotExist',\n\t\t\t\tinputVersion: change.inputState.Exist?.[0][0] ?? null,\n\t\t\t\tinputDigest: change.inputState.Exist?.[0][1] ?? null,\n\t\t\t\tinputOwner: change.inputState.Exist?.[1] ?? null,\n\t\t\t\toutputState:\n\t\t\t\t\tchange.outputState.$kind === 'NotExist' ? 'DoesNotExist' : change.outputState.$kind,\n\t\t\t\toutputVersion:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[0]\n\t\t\t\t\t\t: change.outputState.$kind === 'ObjectWrite'\n\t\t\t\t\t\t\t? effects.lamportVersion\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputDigest:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[1]\n\t\t\t\t\t\t: change.outputState.$kind === 'ObjectWrite'\n\t\t\t\t\t\t\t? (change.outputState.ObjectWrite?.[0] ?? null)\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputOwner:\n\t\t\t\t\tchange.outputState.$kind === 'ObjectWrite' ? change.outputState.ObjectWrite[1] : null,\n\t\t\t\tidOperation: change.idOperation.$kind,\n\t\t\t};\n\t\t},\n\t);\n\n\treturn {\n\t\tbcs: bytes,\n\t\tversion: 2,\n\t\tstatus:\n\t\t\teffects.status.$kind === 'Success'\n\t\t\t\t? {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: parseBcsExecutionError(effects.status.Failure),\n\t\t\t\t\t},\n\t\tgasUsed: effects.gasUsed,\n\t\ttransactionDigest: effects.transactionDigest,\n\t\tgasObject:\n\t\t\teffects.gasObjectIndex === null ? null : (changedObjects[effects.gasObjectIndex] ?? null),\n\t\teventsDigest: effects.eventsDigest,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion,\n\t\tchangedObjects,\n\t\tunchangedConsensusObjects: effects.unchangedConsensusObjects.map(\n\t\t\t([objectId, object]): SuiClientTypes.UnchangedConsensusObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: object.$kind,\n\t\t\t\t\tobjectId: objectId,\n\t\t\t\t\tversion:\n\t\t\t\t\t\tobject.$kind === 'ReadOnlyRoot'\n\t\t\t\t\t\t\t? object.ReadOnlyRoot[0]\n\t\t\t\t\t\t\t: (object[object.$kind] as string | null),\n\t\t\t\t\tdigest: object.$kind === 'ReadOnlyRoot' ? object.ReadOnlyRoot[1] : null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxDataDigest,\n\t};\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.mts","names":[],"sources":["../../src/graphql/client.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.mts","names":[],"sources":["../../src/graphql/client.ts"],"sourcesContent":[],"mappings":"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"}
@@ -2,10 +2,10 @@ import { normalizeStructTag, normalizeSuiAddress } from "../utils/sui-types.mjs"
2
2
  import { deriveDynamicFieldID } from "../utils/dynamic-fields.mjs";
3
3
  import { CoreClient } from "../client/core.mjs";
4
4
  import { TransactionDataBuilder } from "../transactions/TransactionData.mjs";
5
- import { parseTransactionEffectsBcs } from "../client/utils.mjs";
5
+ import { formatMoveAbortMessage, parseTransactionEffectsBcs } from "../client/utils.mjs";
6
+ import { ObjectError, SimulationError } from "../client/errors.mjs";
6
7
  import { SUI_TYPE_ARG } from "../utils/constants.mjs";
7
8
  import { DefaultSuinsNameDocument, ExecuteTransactionDocument, ExecutionStatus, GetAllBalancesDocument, GetBalanceDocument, GetChainIdentifierDocument, GetCoinMetadataDocument, GetCoinsDocument, GetCurrentSystemStateDocument, GetDynamicFieldsDocument, GetMoveFunctionDocument, GetOwnedObjectsDocument, GetReferenceGasPriceDocument, GetTransactionBlockDocument, MultiGetObjectsDocument, ResolveTransactionDocument, SimulateTransactionDocument, VerifyZkLoginSignatureDocument, ZkLoginIntentScope } from "./generated/queries.mjs";
8
- import { ObjectError } from "../client/errors.mjs";
9
9
  import { Transaction } from "../grpc/proto/sui/rpc/v2/transaction.mjs";
10
10
  import { grpcTransactionToTransactionData, transactionDataToGrpcTransaction, transactionToGrpcJson } from "../client/transaction-resolver.mjs";
11
11
  import { BalanceChange } from "../grpc/proto/sui/rpc/v2/balance_change.mjs";
@@ -226,7 +226,7 @@ var GraphQLCoreClient = class extends CoreClient {
226
226
  includeBcs: options.include?.bcs ?? false
227
227
  }
228
228
  }, (result$1) => result$1.simulateTransaction);
229
- if (result.error) throw new Error(result.error);
229
+ if (result.error && !result.effects?.transaction) throw new SimulationError(result.error);
230
230
  const transactionResult = parseTransaction(result.effects?.transaction, options.include);
231
231
  const commandResults = options.include?.commandResults && result.outputs ? result.outputs.map((output) => ({
232
232
  returnValues: (output.returnValues ?? []).map((rv) => ({ bcs: rv.value?.bcs ? fromBase64(rv.value.bcs) : null })),
@@ -393,11 +393,16 @@ var GraphQLCoreClient = class extends CoreClient {
393
393
  query: ResolveTransactionDocument,
394
394
  variables: {
395
395
  transaction: transactionJson,
396
- doGasSelection: !options.onlyTransactionKind
396
+ doGasSelection: !options.onlyTransactionKind && (snapshot.gasData.budget == null || snapshot.gasData.payment == null)
397
397
  }
398
398
  });
399
399
  handleGraphQLErrors(errors);
400
- if (data?.simulateTransaction?.error) throw new Error(`Transaction resolution failed: ${data.simulateTransaction.error}`);
400
+ if (data?.simulateTransaction?.error) throw new SimulationError(`Transaction resolution failed: ${data.simulateTransaction.error}`);
401
+ const transactionEffects = data?.simulateTransaction?.effects?.transaction?.effects;
402
+ if (!options.onlyTransactionKind && transactionEffects?.status === ExecutionStatus.Failure) {
403
+ const executionError = parseGraphQLExecutionError(transactionEffects.executionError);
404
+ throw new SimulationError(`Transaction resolution failed: ${executionError?.message ?? "Transaction failed"}`, { executionError });
405
+ }
401
406
  const resolvedTransactionBcs = data?.simulateTransaction?.effects?.transaction?.transactionBcs;
402
407
  if (!resolvedTransactionBcs) throw new Error("simulateTransaction did not return resolved transaction data");
403
408
  const resolved = TransactionDataBuilder.fromBytes(fromBase64(resolvedTransactionBcs)).snapshot();
@@ -543,19 +548,39 @@ function parseNormalizedSuiMoveType(type) {
543
548
  };
544
549
  }
545
550
  function parseGraphQLExecutionError(executionError) {
546
- const message = executionError?.message ?? "Transaction failed";
547
- if (mapGraphQLExecutionErrorKind(executionError) === "MoveAbort" && executionError?.abortCode != null) return {
548
- $kind: "MoveAbort",
549
- message,
550
- MoveAbort: {
551
- abortCode: executionError.abortCode,
552
- location: parseGraphQLMoveLocation(executionError),
553
- cleverError: parseGraphQLCleverError(executionError)
554
- }
555
- };
551
+ if (mapGraphQLExecutionErrorKind(executionError) === "MoveAbort" && executionError?.abortCode != null) {
552
+ const location = parseGraphQLMoveLocation(executionError);
553
+ const cleverError = parseGraphQLCleverError(executionError);
554
+ const commandMatch = executionError.message?.match(/in (\d+)\w* command/);
555
+ const command = commandMatch ? parseInt(commandMatch[1], 10) - 1 : void 0;
556
+ return {
557
+ $kind: "MoveAbort",
558
+ message: formatMoveAbortMessage({
559
+ command,
560
+ location: location ? {
561
+ package: location.package,
562
+ module: location.module,
563
+ functionName: location.functionName,
564
+ instruction: location.instruction
565
+ } : void 0,
566
+ abortCode: executionError.abortCode,
567
+ cleverError: cleverError ? {
568
+ lineNumber: cleverError.lineNumber,
569
+ constantName: cleverError.constantName,
570
+ value: cleverError.value
571
+ } : void 0
572
+ }),
573
+ command,
574
+ MoveAbort: {
575
+ abortCode: executionError.abortCode,
576
+ location,
577
+ cleverError
578
+ }
579
+ };
580
+ }
556
581
  return {
557
582
  $kind: "Unknown",
558
- message,
583
+ message: executionError?.message ?? "Transaction failed",
559
584
  Unknown: null
560
585
  };
561
586
  }