viem 2.29.3 → 2.30.0-jxom-send-calls-fallback-20250515091127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # viem
2
2
 
3
+ ## 2.30.0-jxom-send-calls-fallback-20250515091127
4
+
5
+ ### Minor Changes
6
+
7
+ - [#3648](https://github.com/wevm/viem/pull/3648) [`a8e6ec8f009c4d12a1e5b67e07a0bda8c983c32b`](https://github.com/wevm/viem/commit/a8e6ec8f009c4d12a1e5b67e07a0bda8c983c32b) Thanks [@jxom](https://github.com/jxom)! - Added `experimental_fallback` property to `sendCalls` for wallets that do not support EIP-5792 (falls back to `eth_sendTransaction`).
8
+
3
9
  ## 2.29.3
4
10
 
5
11
  ### Patch Changes
@@ -1,13 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCallsStatus = getCallsStatus;
4
+ const slice_js_1 = require("../../utils/data/slice.js");
5
+ const trim_js_1 = require("../../utils/data/trim.js");
4
6
  const fromHex_js_1 = require("../../utils/encoding/fromHex.js");
5
7
  const transactionReceipt_js_1 = require("../../utils/formatters/transactionReceipt.js");
8
+ const sendCalls_js_1 = require("./sendCalls.js");
6
9
  async function getCallsStatus(client, parameters) {
7
- const { atomic = false, chainId, receipts, version = '2.0.0', ...response } = await client.request({
8
- method: 'wallet_getCallsStatus',
9
- params: [parameters.id],
10
- });
10
+ async function getStatus(id) {
11
+ const isTransactions = id.endsWith(sendCalls_js_1.fallbackMagicIdentifier.slice(2));
12
+ if (isTransactions) {
13
+ const chainId = (0, trim_js_1.trim)((0, slice_js_1.sliceHex)(id, -64, -32));
14
+ const hashes = (0, slice_js_1.sliceHex)(id, 0, -64)
15
+ .slice(2)
16
+ .match(/.{1,64}/g);
17
+ const receipts = await Promise.all(hashes.map((hash) => client.request({
18
+ method: 'eth_getTransactionReceipt',
19
+ params: [`0x${hash}`],
20
+ }, { dedupe: true })));
21
+ const status = (() => {
22
+ if (receipts.some((r) => r === null))
23
+ return 100;
24
+ if (receipts.every((r) => r?.status === '0x1'))
25
+ return 200;
26
+ if (receipts.every((r) => r?.status === '0x0'))
27
+ return 500;
28
+ return 600;
29
+ })();
30
+ return {
31
+ atomic: false,
32
+ chainId: (0, fromHex_js_1.hexToNumber)(chainId),
33
+ receipts: receipts.filter(Boolean),
34
+ status,
35
+ version: '2.0.0',
36
+ };
37
+ }
38
+ return client.request({
39
+ method: 'wallet_getCallsStatus',
40
+ params: [id],
41
+ });
42
+ }
43
+ const { atomic = false, chainId, receipts, version = '2.0.0', ...response } = await getStatus(parameters.id);
11
44
  const [status, statusCode] = (() => {
12
45
  const statusCode = response.status;
13
46
  if (statusCode >= 100 && statusCode < 200)
@@ -1 +1 @@
1
- {"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":";;AAmDA,wCA+CC;AAzFD,gEAA0E;AAC1E,wFAA8E;AAyCvE,KAAK,UAAU,cAAc,CAIlC,MAAyC,EACzC,UAAoC;IAEpC,MAAM,EACJ,MAAM,GAAG,KAAK,EACd,OAAO,EACP,QAAQ,EACR,OAAO,GAAG,OAAO,EACjB,GAAG,QAAQ,EACZ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACvB,MAAM,EAAE,uBAAuB;QAC/B,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;KACxB,CAAC,CAAA;IACF,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA;QAClC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAA;QACzC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAA;QACzC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAA;QAEzC,IAAI,UAAU,KAAK,WAAW;YAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAU,CAAA;QAEhE,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAU,CAAA;QAC9D,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAChC,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO;QACL,GAAG,QAAQ;QACX,MAAM;QAEN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAW,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACnD,QAAQ,EACN,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,OAAO;YACV,WAAW,EAAE,IAAA,wBAAW,EAAC,OAAO,CAAC,WAAW,CAAC;YAC7C,OAAO,EAAE,IAAA,wBAAW,EAAC,OAAO,CAAC,OAAO,CAAC;YACrC,MAAM,EAAE,uCAAe,CAAC,OAAO,CAAC,MAAuB,CAAC;SACzD,CAAC,CAAC,IAAI,EAAE;QACX,UAAU;QACV,MAAM;QACN,OAAO;KACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fallbackMagicIdentifier = void 0;
3
4
  exports.sendCalls = sendCalls;
4
5
  const parseAccount_js_1 = require("../../accounts/utils/parseAccount.js");
5
6
  const account_js_1 = require("../../errors/account.js");
7
+ const base_js_1 = require("../../errors/base.js");
8
+ const rpc_js_1 = require("../../errors/rpc.js");
6
9
  const encodeFunctionData_js_1 = require("../../utils/abi/encodeFunctionData.js");
10
+ const concat_js_1 = require("../../utils/data/concat.js");
11
+ const fromHex_js_1 = require("../../utils/encoding/fromHex.js");
7
12
  const toHex_js_1 = require("../../utils/encoding/toHex.js");
8
13
  const getTransactionError_js_1 = require("../../utils/errors/getTransactionError.js");
14
+ const sendTransaction_js_1 = require("./sendTransaction.js");
15
+ exports.fallbackMagicIdentifier = '0x5792579257925792579257925792579257925792579257925792579257925792';
9
16
  async function sendCalls(client, parameters) {
10
- const { account: account_ = client.account, capabilities, chain = client.chain, forceAtomic = false, id, version = '2.0.0', } = parameters;
17
+ const { account: account_ = client.account, capabilities, chain = client.chain, experimental_fallback, forceAtomic = false, id, version = '2.0.0', } = parameters;
11
18
  if (typeof account_ === 'undefined')
12
19
  throw new account_js_1.AccountNotFoundError({
13
20
  docsPath: '/docs/actions/wallet/sendCalls',
@@ -48,6 +55,53 @@ async function sendCalls(client, parameters) {
48
55
  return response;
49
56
  }
50
57
  catch (err) {
58
+ const error = err;
59
+ if (experimental_fallback &&
60
+ (error.name === 'MethodNotFoundRpcError' ||
61
+ error.name === 'MethodNotSupportedRpcError' ||
62
+ error.details
63
+ .toLowerCase()
64
+ .includes('does not exist / is not available') ||
65
+ error.details.toLowerCase().includes('missing or invalid. request()') ||
66
+ error.details
67
+ .toLowerCase()
68
+ .includes('did not match any variant of untagged enum'))) {
69
+ if (capabilities) {
70
+ const hasNonOptionalCapability = Object.values(capabilities).some((capability) => !capability.optional);
71
+ if (hasNonOptionalCapability) {
72
+ const message = 'non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.';
73
+ throw new rpc_js_1.UnsupportedNonOptionalCapabilityError(new base_js_1.BaseError(message, {
74
+ details: message,
75
+ }));
76
+ }
77
+ }
78
+ if (forceAtomic && calls.length > 1) {
79
+ const message = '`forceAtomic` is not supported on fallback to `eth_sendTransaction`.';
80
+ throw new rpc_js_1.AtomicityNotSupportedError(new base_js_1.BaseError(message, {
81
+ details: message,
82
+ }));
83
+ }
84
+ const promises = [];
85
+ for (const call of calls) {
86
+ const promise = (0, sendTransaction_js_1.sendTransaction)(client, {
87
+ account,
88
+ chain,
89
+ data: call.data,
90
+ to: call.to,
91
+ value: call.value ? (0, fromHex_js_1.hexToBigInt)(call.value) : undefined,
92
+ });
93
+ promises.push(promise);
94
+ await new Promise((resolve) => setTimeout(resolve, 32));
95
+ }
96
+ const hashes = await Promise.all(promises);
97
+ return {
98
+ id: (0, concat_js_1.concat)([
99
+ ...hashes,
100
+ (0, toHex_js_1.numberToHex)(chain.id, { size: 32 }),
101
+ exports.fallbackMagicIdentifier,
102
+ ]),
103
+ };
104
+ }
51
105
  throw (0, getTransactionError_js_1.getTransactionError)(err, {
52
106
  ...parameters,
53
107
  account,
@@ -1 +1 @@
1
- {"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":";;AAyEA,8BAqEC;AA7ID,0EAAmE;AAGnE,wDAA8D;AAS9D,iFAA0E;AAE1E,4DAA2D;AAC3D,sFAA+E;AAyDxE,KAAK,UAAU,SAAS,CAM7B,MAAyC,EACzC,UAAqE;IAErE,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,YAAY,EACZ,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,WAAW,GAAG,KAAK,EACnB,EAAE,EACF,OAAO,GAAG,OAAO,GAClB,GAAG,UAAU,CAAA;IAEd,IAAI,OAAO,QAAQ,KAAK,WAAW;QACjC,MAAM,IAAI,iCAAoB,CAAC;YAC7B,QAAQ,EAAE,gCAAgC;SAC3C,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAY,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAExD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAc,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,KAAa,CAAA;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG;YACnB,CAAC,CAAC,IAAA,0CAAkB,EAAC;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAEb,OAAO;YACL,IAAI;YACJ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SACxD,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC;YACE,MAAM,EAAE,kBAAkB;YAC1B,MAAM,EAAE;gBACN;oBACE,cAAc,EAAE,WAAW;oBAC3B,KAAK;oBACL,YAAY;oBACZ,OAAO,EAAE,IAAA,sBAAW,EAAC,KAAM,CAAC,EAAE,CAAC;oBAC/B,IAAI,EAAE,OAAO,EAAE,OAAO;oBACtB,EAAE;oBACF,OAAO;iBACR;aACF;SACF,EACD,EAAE,UAAU,EAAE,CAAC,EAAE,CAClB,CAAA;QACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAA;QACzD,OAAO,QAAiB,CAAA;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAA,4CAAmB,EAAC,GAAgB,EAAE;YAC1C,GAAG,UAAU;YACb,OAAO;YACP,KAAK,EAAE,UAAU,CAAC,KAAM;SACzB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '2.29.3';
4
+ exports.version = '2.30.0-jxom-send-calls-fallback-20250515091127';
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../errors/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../errors/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,gDAAgD,CAAA"}
@@ -1,5 +1,8 @@
1
+ import { sliceHex } from '../../utils/data/slice.js';
2
+ import { trim } from '../../utils/data/trim.js';
1
3
  import { hexToBigInt, hexToNumber } from '../../utils/encoding/fromHex.js';
2
4
  import { receiptStatuses } from '../../utils/formatters/transactionReceipt.js';
5
+ import { fallbackMagicIdentifier } from './sendCalls.js';
3
6
  /**
4
7
  * Returns the status of a call batch that was sent via `sendCalls`.
5
8
  *
@@ -21,10 +24,40 @@ import { receiptStatuses } from '../../utils/formatters/transactionReceipt.js';
21
24
  * const { receipts, status } = await getCallsStatus(client, { id: '0xdeadbeef' })
22
25
  */
23
26
  export async function getCallsStatus(client, parameters) {
24
- const { atomic = false, chainId, receipts, version = '2.0.0', ...response } = await client.request({
25
- method: 'wallet_getCallsStatus',
26
- params: [parameters.id],
27
- });
27
+ async function getStatus(id) {
28
+ const isTransactions = id.endsWith(fallbackMagicIdentifier.slice(2));
29
+ if (isTransactions) {
30
+ const chainId = trim(sliceHex(id, -64, -32));
31
+ const hashes = sliceHex(id, 0, -64)
32
+ .slice(2)
33
+ .match(/.{1,64}/g);
34
+ const receipts = await Promise.all(hashes.map((hash) => client.request({
35
+ method: 'eth_getTransactionReceipt',
36
+ params: [`0x${hash}`],
37
+ }, { dedupe: true })));
38
+ const status = (() => {
39
+ if (receipts.some((r) => r === null))
40
+ return 100; // pending
41
+ if (receipts.every((r) => r?.status === '0x1'))
42
+ return 200; // success
43
+ if (receipts.every((r) => r?.status === '0x0'))
44
+ return 500; // complete failure
45
+ return 600; // partial failure
46
+ })();
47
+ return {
48
+ atomic: false,
49
+ chainId: hexToNumber(chainId),
50
+ receipts: receipts.filter(Boolean),
51
+ status,
52
+ version: '2.0.0',
53
+ };
54
+ }
55
+ return client.request({
56
+ method: 'wallet_getCallsStatus',
57
+ params: [id],
58
+ });
59
+ }
60
+ const { atomic = false, chainId, receipts, version = '2.0.0', ...response } = await getStatus(parameters.id);
28
61
  const [status, statusCode] = (() => {
29
62
  const statusCode = response.status;
30
63
  if (statusCode >= 100 && statusCode < 200)
@@ -1 +1 @@
1
- {"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAqB9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAIlC,MAAyC,EACzC,UAAoC;IAEpC,MAAM,EACJ,MAAM,GAAG,KAAK,EACd,OAAO,EACP,QAAQ,EACR,OAAO,GAAG,OAAO,EACjB,GAAG,QAAQ,EACZ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACvB,MAAM,EAAE,uBAAuB;QAC/B,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;KACxB,CAAC,CAAA;IACF,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA;QAClC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAA;QACzC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAA;QACzC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAA;QACzC,gDAAgD;QAChD,IAAI,UAAU,KAAK,WAAW;YAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAU,CAAA;QAChE,gDAAgD;QAChD,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAU,CAAA;QAC9D,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAChC,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO;QACL,GAAG,QAAQ;QACX,MAAM;QACN,gDAAgD;QAChD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACnD,QAAQ,EACN,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,OAAO;YACV,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;YAC7C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,MAAuB,CAAC;SACzD,CAAC,CAAC,IAAI,EAAE;QACX,UAAU;QACV,MAAM;QACN,OAAO;KACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"getCallsStatus.js","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
1
  import { parseAccount } from '../../accounts/utils/parseAccount.js';
2
2
  import { AccountNotFoundError } from '../../errors/account.js';
3
+ import { BaseError } from '../../errors/base.js';
4
+ import { AtomicityNotSupportedError, UnsupportedNonOptionalCapabilityError, } from '../../errors/rpc.js';
3
5
  import { encodeFunctionData } from '../../utils/abi/encodeFunctionData.js';
6
+ import { concat } from '../../utils/data/concat.js';
7
+ import { hexToBigInt } from '../../utils/encoding/fromHex.js';
4
8
  import { numberToHex } from '../../utils/encoding/toHex.js';
5
9
  import { getTransactionError } from '../../utils/errors/getTransactionError.js';
10
+ import { sendTransaction } from './sendTransaction.js';
11
+ export const fallbackMagicIdentifier = '0x5792579257925792579257925792579257925792579257925792579257925792';
6
12
  /**
7
13
  * Requests the connected wallet to send a batch of calls.
8
14
  *
@@ -36,7 +42,7 @@ import { getTransactionError } from '../../utils/errors/getTransactionError.js';
36
42
  * })
37
43
  */
38
44
  export async function sendCalls(client, parameters) {
39
- const { account: account_ = client.account, capabilities, chain = client.chain, forceAtomic = false, id, version = '2.0.0', } = parameters;
45
+ const { account: account_ = client.account, capabilities, chain = client.chain, experimental_fallback, forceAtomic = false, id, version = '2.0.0', } = parameters;
40
46
  if (typeof account_ === 'undefined')
41
47
  throw new AccountNotFoundError({
42
48
  docsPath: '/docs/actions/wallet/sendCalls',
@@ -77,6 +83,55 @@ export async function sendCalls(client, parameters) {
77
83
  return response;
78
84
  }
79
85
  catch (err) {
86
+ const error = err;
87
+ // If the transport does not support EIP-5792, fall back to
88
+ // `eth_sendTransaction`.
89
+ if (experimental_fallback &&
90
+ (error.name === 'MethodNotFoundRpcError' ||
91
+ error.name === 'MethodNotSupportedRpcError' ||
92
+ error.details
93
+ .toLowerCase()
94
+ .includes('does not exist / is not available') ||
95
+ error.details.toLowerCase().includes('missing or invalid. request()') ||
96
+ error.details
97
+ .toLowerCase()
98
+ .includes('did not match any variant of untagged enum'))) {
99
+ if (capabilities) {
100
+ const hasNonOptionalCapability = Object.values(capabilities).some((capability) => !capability.optional);
101
+ if (hasNonOptionalCapability) {
102
+ const message = 'non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.';
103
+ throw new UnsupportedNonOptionalCapabilityError(new BaseError(message, {
104
+ details: message,
105
+ }));
106
+ }
107
+ }
108
+ if (forceAtomic && calls.length > 1) {
109
+ const message = '`forceAtomic` is not supported on fallback to `eth_sendTransaction`.';
110
+ throw new AtomicityNotSupportedError(new BaseError(message, {
111
+ details: message,
112
+ }));
113
+ }
114
+ const promises = [];
115
+ for (const call of calls) {
116
+ const promise = sendTransaction(client, {
117
+ account,
118
+ chain,
119
+ data: call.data,
120
+ to: call.to,
121
+ value: call.value ? hexToBigInt(call.value) : undefined,
122
+ });
123
+ promises.push(promise);
124
+ await new Promise((resolve) => setTimeout(resolve, 32));
125
+ }
126
+ const hashes = await Promise.all(promises);
127
+ return {
128
+ id: concat([
129
+ ...hashes,
130
+ numberToHex(chain.id, { size: 32 }),
131
+ fallbackMagicIdentifier,
132
+ ]),
133
+ };
134
+ }
80
135
  throw getTransactionError(err, {
81
136
  ...parameters,
82
137
  account,
@@ -1 +1 @@
1
- {"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAGnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAS9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAyB/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAM7B,MAAyC,EACzC,UAAqE;IAErE,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,YAAY,EACZ,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,WAAW,GAAG,KAAK,EACnB,EAAE,EACF,OAAO,GAAG,OAAO,GAClB,GAAG,UAAU,CAAA;IAEd,IAAI,OAAO,QAAQ,KAAK,WAAW;QACjC,MAAM,IAAI,oBAAoB,CAAC;YAC7B,QAAQ,EAAE,gCAAgC;SAC3C,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAExD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAc,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,KAAa,CAAA;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG;YACnB,CAAC,CAAC,kBAAkB,CAAC;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAEb,OAAO;YACL,IAAI;YACJ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SACxD,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC;YACE,MAAM,EAAE,kBAAkB;YAC1B,MAAM,EAAE;gBACN;oBACE,cAAc,EAAE,WAAW;oBAC3B,KAAK;oBACL,YAAY;oBACZ,OAAO,EAAE,WAAW,CAAC,KAAM,CAAC,EAAE,CAAC;oBAC/B,IAAI,EAAE,OAAO,EAAE,OAAO;oBACtB,EAAE;oBACF,OAAO;iBACR;aACF;SACF,EACD,EAAE,UAAU,EAAE,CAAC,EAAE,CAClB,CAAA;QACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAA;QACzD,OAAO,QAAiB,CAAA;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,mBAAmB,CAAC,GAAgB,EAAE;YAC1C,GAAG,UAAU;YACb,OAAO;YACP,KAAK,EAAE,UAAU,CAAC,KAAM;SACzB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"sendCalls.js","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const version = '2.29.3';
1
+ export const version = '2.30.0-jxom-send-calls-fallback-20250515091127';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../errors/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../errors/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,gDAAgD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getCallsStatus.d.ts","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAInE,MAAM,MAAM,wBAAwB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,IAAI,CACF,8BAA8B,CAC5B,mBAAmB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EACnD,MAAM,EACN,MAAM,EACN,SAAS,GAAG,UAAU,CACvB,EACD,QAAQ,CACT,GAAG;IACF,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;CACtD,CACF,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,SAAS,CAAA;AAElE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAClC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EAE/C,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAyCnC"}
1
+ {"version":3,"file":"getCallsStatus.d.ts","sourceRoot":"","sources":["../../../actions/wallet/getCallsStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AAG5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAOnE,MAAM,MAAM,wBAAwB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,IAAI,CACF,8BAA8B,CAC5B,mBAAmB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EACnD,MAAM,EACN,MAAM,EACN,SAAS,GAAG,UAAU,CACvB,EACD,QAAQ,CACT,GAAG;IACF,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;CACtD,CACF,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,SAAS,CAAA;AAElE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAClC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EAE/C,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,wBAAwB,CAAC,CA+EnC"}
@@ -9,10 +9,12 @@ import type { Chain, DeriveChain } from '../../types/chain.js';
9
9
  import type { WalletSendCallsParameters } from '../../types/eip1193.js';
10
10
  import type { Prettify } from '../../types/utils.js';
11
11
  import type { RequestErrorType } from '../../utils/buildRequest.js';
12
+ export declare const fallbackMagicIdentifier = "0x5792579257925792579257925792579257925792579257925792579257925792";
12
13
  export type SendCallsParameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined, chainOverride extends Chain | undefined = Chain | undefined, calls extends readonly unknown[] = readonly unknown[], _chain extends Chain | undefined = DeriveChain<chain, chainOverride>> = {
13
14
  chain?: chainOverride | Chain | undefined;
14
15
  calls: Calls<Narrow<calls>>;
15
16
  capabilities?: ExtractCapabilities<'sendCalls', 'Request'> | undefined;
17
+ experimental_fallback?: boolean | undefined;
16
18
  forceAtomic?: boolean | undefined;
17
19
  id?: string | undefined;
18
20
  version?: WalletSendCallsParameters[number]['version'] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"sendCalls.d.ts","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAG5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAInE,MAAM,MAAM,mBAAmB,CAC7B,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EACzD,aAAa,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EAC3D,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EAErD,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,IAClE;IACF,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAAA;IACzC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3B,YAAY,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;IACtE,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,OAAO,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CACnE,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE/D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,YAAY,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,SAAS,CAAA;IACzE,EAAE,EAAE,MAAM,CAAA;CACX,CAAC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,SAAS,CAC7B,KAAK,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EACtC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EAC/C,aAAa,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAEnD,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,GACpE,OAAO,CAAC,mBAAmB,CAAC,CA6D9B"}
1
+ {"version":3,"file":"sendCalls.d.ts","sourceRoot":"","sources":["../../../actions/wallet/sendCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAO5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAOnE,eAAO,MAAM,uBAAuB,uEACkC,CAAA;AAEtE,MAAM,MAAM,mBAAmB,CAC7B,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EACzD,aAAa,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EAC3D,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EAErD,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,IAClE;IACF,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAAA;IACzC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3B,YAAY,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;IACtE,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC3C,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,OAAO,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CACnE,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE/D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,YAAY,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,SAAS,CAAA;IACzE,EAAE,EAAE,MAAM,CAAA;CACX,CAAC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,SAAS,CAC7B,KAAK,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EACtC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EAC/C,aAAa,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAEnD,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,GACpE,OAAO,CAAC,mBAAmB,CAAC,CA4H9B"}
@@ -1,2 +1,2 @@
1
- export declare const version = "2.29.3";
1
+ export declare const version = "2.30.0-jxom-send-calls-fallback-20250515091127";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../errors/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../errors/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,mDAAmD,CAAA"}
@@ -5,10 +5,15 @@ import type { Account } from '../../types/account.js'
5
5
  import type { ExtractCapabilities } from '../../types/capabilities.js'
6
6
  import type { Chain } from '../../types/chain.js'
7
7
  import type { WalletGetCallsStatusReturnType } from '../../types/eip1193.js'
8
+ import type { Hex } from '../../types/misc.js'
9
+ import type { RpcTransactionReceipt } from '../../types/rpc.js'
8
10
  import type { Prettify } from '../../types/utils.js'
9
11
  import type { RequestErrorType } from '../../utils/buildRequest.js'
12
+ import { sliceHex } from '../../utils/data/slice.js'
13
+ import { trim } from '../../utils/data/trim.js'
10
14
  import { hexToBigInt, hexToNumber } from '../../utils/encoding/fromHex.js'
11
15
  import { receiptStatuses } from '../../utils/formatters/transactionReceipt.js'
16
+ import { fallbackMagicIdentifier } from './sendCalls.js'
12
17
 
13
18
  export type GetCallsStatusParameters = { id: string }
14
19
 
@@ -56,16 +61,54 @@ export async function getCallsStatus<
56
61
  client: Client<Transport, chain, account>,
57
62
  parameters: GetCallsStatusParameters,
58
63
  ): Promise<GetCallsStatusReturnType> {
64
+ async function getStatus(id: Hex) {
65
+ const isTransactions = id.endsWith(fallbackMagicIdentifier.slice(2))
66
+ if (isTransactions) {
67
+ const chainId = trim(sliceHex(id, -64, -32))
68
+ const hashes = sliceHex(id, 0, -64)
69
+ .slice(2)
70
+ .match(/.{1,64}/g)
71
+
72
+ const receipts = await Promise.all(
73
+ hashes!.map((hash) =>
74
+ client.request(
75
+ {
76
+ method: 'eth_getTransactionReceipt',
77
+ params: [`0x${hash}`],
78
+ },
79
+ { dedupe: true },
80
+ ),
81
+ ),
82
+ )
83
+
84
+ const status = (() => {
85
+ if (receipts.some((r) => r === null)) return 100 // pending
86
+ if (receipts.every((r) => r?.status === '0x1')) return 200 // success
87
+ if (receipts.every((r) => r?.status === '0x0')) return 500 // complete failure
88
+ return 600 // partial failure
89
+ })()
90
+
91
+ return {
92
+ atomic: false,
93
+ chainId: hexToNumber(chainId),
94
+ receipts: receipts.filter(Boolean) as RpcTransactionReceipt[],
95
+ status,
96
+ version: '2.0.0',
97
+ }
98
+ }
99
+ return client.request({
100
+ method: 'wallet_getCallsStatus',
101
+ params: [id],
102
+ })
103
+ }
104
+
59
105
  const {
60
106
  atomic = false,
61
107
  chainId,
62
108
  receipts,
63
109
  version = '2.0.0',
64
110
  ...response
65
- } = await client.request({
66
- method: 'wallet_getCallsStatus',
67
- params: [parameters.id],
68
- })
111
+ } = await getStatus(parameters.id as Hex)
69
112
  const [status, statusCode] = (() => {
70
113
  const statusCode = response.status
71
114
  if (statusCode >= 100 && statusCode < 200)
@@ -3,18 +3,29 @@ import { parseAccount } from '../../accounts/utils/parseAccount.js'
3
3
  import type { Client } from '../../clients/createClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
5
5
  import { AccountNotFoundError } from '../../errors/account.js'
6
- import type { BaseError } from '../../errors/base.js'
6
+ import { BaseError } from '../../errors/base.js'
7
+ import {
8
+ AtomicityNotSupportedError,
9
+ UnsupportedNonOptionalCapabilityError,
10
+ } from '../../errors/rpc.js'
7
11
  import type { ErrorType } from '../../errors/utils.js'
8
12
  import type { Account, GetAccountParameter } from '../../types/account.js'
9
13
  import type { Call, Calls } from '../../types/calls.js'
10
14
  import type { ExtractCapabilities } from '../../types/capabilities.js'
11
15
  import type { Chain, DeriveChain } from '../../types/chain.js'
12
16
  import type { WalletSendCallsParameters } from '../../types/eip1193.js'
17
+ import type { Hex } from '../../types/misc.js'
13
18
  import type { Prettify } from '../../types/utils.js'
14
19
  import { encodeFunctionData } from '../../utils/abi/encodeFunctionData.js'
15
20
  import type { RequestErrorType } from '../../utils/buildRequest.js'
21
+ import { concat } from '../../utils/data/concat.js'
22
+ import { hexToBigInt } from '../../utils/encoding/fromHex.js'
16
23
  import { numberToHex } from '../../utils/encoding/toHex.js'
17
24
  import { getTransactionError } from '../../utils/errors/getTransactionError.js'
25
+ import { sendTransaction } from './sendTransaction.js'
26
+
27
+ export const fallbackMagicIdentifier =
28
+ '0x5792579257925792579257925792579257925792579257925792579257925792'
18
29
 
19
30
  export type SendCallsParameters<
20
31
  chain extends Chain | undefined = Chain | undefined,
@@ -27,6 +38,7 @@ export type SendCallsParameters<
27
38
  chain?: chainOverride | Chain | undefined
28
39
  calls: Calls<Narrow<calls>>
29
40
  capabilities?: ExtractCapabilities<'sendCalls', 'Request'> | undefined
41
+ experimental_fallback?: boolean | undefined
30
42
  forceAtomic?: boolean | undefined
31
43
  id?: string | undefined
32
44
  version?: WalletSendCallsParameters[number]['version'] | undefined
@@ -84,6 +96,7 @@ export async function sendCalls<
84
96
  account: account_ = client.account,
85
97
  capabilities,
86
98
  chain = client.chain,
99
+ experimental_fallback,
87
100
  forceAtomic = false,
88
101
  id,
89
102
  version = '2.0.0',
@@ -134,6 +147,68 @@ export async function sendCalls<
134
147
  if (typeof response === 'string') return { id: response }
135
148
  return response as never
136
149
  } catch (err) {
150
+ const error = err as BaseError
151
+
152
+ // If the transport does not support EIP-5792, fall back to
153
+ // `eth_sendTransaction`.
154
+ if (
155
+ experimental_fallback &&
156
+ (error.name === 'MethodNotFoundRpcError' ||
157
+ error.name === 'MethodNotSupportedRpcError' ||
158
+ error.details
159
+ .toLowerCase()
160
+ .includes('does not exist / is not available') ||
161
+ error.details.toLowerCase().includes('missing or invalid. request()') ||
162
+ error.details
163
+ .toLowerCase()
164
+ .includes('did not match any variant of untagged enum'))
165
+ ) {
166
+ if (capabilities) {
167
+ const hasNonOptionalCapability = Object.values(capabilities).some(
168
+ (capability) => !capability.optional,
169
+ )
170
+ if (hasNonOptionalCapability) {
171
+ const message =
172
+ 'non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.'
173
+ throw new UnsupportedNonOptionalCapabilityError(
174
+ new BaseError(message, {
175
+ details: message,
176
+ }),
177
+ )
178
+ }
179
+ }
180
+ if (forceAtomic && calls.length > 1) {
181
+ const message =
182
+ '`forceAtomic` is not supported on fallback to `eth_sendTransaction`.'
183
+ throw new AtomicityNotSupportedError(
184
+ new BaseError(message, {
185
+ details: message,
186
+ }),
187
+ )
188
+ }
189
+
190
+ const promises: Promise<Hex>[] = []
191
+ for (const call of calls) {
192
+ const promise = sendTransaction(client, {
193
+ account,
194
+ chain,
195
+ data: call.data,
196
+ to: call.to,
197
+ value: call.value ? hexToBigInt(call.value) : undefined,
198
+ })
199
+ promises.push(promise)
200
+ await new Promise((resolve) => setTimeout(resolve, 32))
201
+ }
202
+ const hashes = await Promise.all(promises)
203
+ return {
204
+ id: concat([
205
+ ...hashes,
206
+ numberToHex(chain!.id, { size: 32 }),
207
+ fallbackMagicIdentifier,
208
+ ]),
209
+ }
210
+ }
211
+
137
212
  throw getTransactionError(err as BaseError, {
138
213
  ...parameters,
139
214
  account,
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.29.3'
1
+ export const version = '2.30.0-jxom-send-calls-fallback-20250515091127'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.29.3",
4
+ "version": "2.30.0-jxom-send-calls-fallback-20250515091127",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",