thirdweb 5.98.1 → 5.99.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 (200) hide show
  1. package/dist/cjs/exports/react.js +11 -8
  2. package/dist/cjs/exports/react.js.map +1 -1
  3. package/dist/cjs/exports/react.native.js +11 -8
  4. package/dist/cjs/exports/react.native.js.map +1 -1
  5. package/dist/cjs/exports/wallets/eip5792.js +7 -3
  6. package/dist/cjs/exports/wallets/eip5792.js.map +1 -1
  7. package/dist/cjs/extensions/erc20/read/getCurrencyMetadata.js +2 -2
  8. package/dist/cjs/extensions/erc20/read/getCurrencyMetadata.js.map +1 -1
  9. package/dist/cjs/react/core/hooks/wallets/useCapabilities.js +5 -6
  10. package/dist/cjs/react/core/hooks/wallets/useCapabilities.js.map +1 -1
  11. package/dist/cjs/react/core/hooks/wallets/useSendAndConfirmCalls.js +99 -0
  12. package/dist/cjs/react/core/hooks/wallets/useSendAndConfirmCalls.js.map +1 -0
  13. package/dist/cjs/react/core/hooks/wallets/useSendCalls.js +32 -40
  14. package/dist/cjs/react/core/hooks/wallets/useSendCalls.js.map +1 -1
  15. package/dist/cjs/react/core/hooks/wallets/useWaitForCallsReceipt.js +38 -0
  16. package/dist/cjs/react/core/hooks/wallets/useWaitForCallsReceipt.js.map +1 -0
  17. package/dist/cjs/react/core/providers/thirdweb-provider.js +4 -3
  18. package/dist/cjs/react/core/providers/thirdweb-provider.js.map +1 -1
  19. package/dist/cjs/react/native/ui/connect/ConnectButton.js +4 -1
  20. package/dist/cjs/react/native/ui/connect/ConnectButton.js.map +1 -1
  21. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +6 -4
  22. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  23. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +1 -1
  24. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  25. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js +5 -15
  26. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js.map +1 -1
  27. package/dist/cjs/react/web/ui/PayEmbed.js +8 -1
  28. package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
  29. package/dist/cjs/version.js +1 -1
  30. package/dist/cjs/wallets/coinbase/coinbase-web.js +2 -85
  31. package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
  32. package/dist/cjs/wallets/connection/autoConnectCore.js +29 -12
  33. package/dist/cjs/wallets/connection/autoConnectCore.js.map +1 -1
  34. package/dist/cjs/wallets/eip5792/get-calls-status.js +54 -15
  35. package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
  36. package/dist/cjs/wallets/eip5792/get-capabilities.js +21 -8
  37. package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
  38. package/dist/cjs/wallets/eip5792/send-and-confirm-calls.js +41 -0
  39. package/dist/cjs/wallets/eip5792/send-and-confirm-calls.js.map +1 -0
  40. package/dist/cjs/wallets/eip5792/send-calls.js +27 -14
  41. package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
  42. package/dist/cjs/wallets/eip5792/show-calls-status.js +8 -7
  43. package/dist/cjs/wallets/eip5792/show-calls-status.js.map +1 -1
  44. package/dist/cjs/wallets/eip5792/{wait-for-bundle.js → wait-for-calls-receipt.js} +23 -10
  45. package/dist/cjs/wallets/eip5792/wait-for-calls-receipt.js.map +1 -0
  46. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js +15 -10
  47. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
  48. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +13 -3
  49. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +1 -1
  50. package/dist/cjs/wallets/in-app/core/wallet/is-in-app-signer.js +15 -0
  51. package/dist/cjs/wallets/in-app/core/wallet/is-in-app-signer.js.map +1 -0
  52. package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js +4 -2
  53. package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js.map +1 -1
  54. package/dist/esm/exports/react.js +5 -3
  55. package/dist/esm/exports/react.js.map +1 -1
  56. package/dist/esm/exports/react.native.js +5 -3
  57. package/dist/esm/exports/react.native.js.map +1 -1
  58. package/dist/esm/exports/wallets/eip5792.js +3 -1
  59. package/dist/esm/exports/wallets/eip5792.js.map +1 -1
  60. package/dist/esm/extensions/erc20/read/getCurrencyMetadata.js +2 -2
  61. package/dist/esm/extensions/erc20/read/getCurrencyMetadata.js.map +1 -1
  62. package/dist/esm/react/core/hooks/wallets/useCapabilities.js +5 -6
  63. package/dist/esm/react/core/hooks/wallets/useCapabilities.js.map +1 -1
  64. package/dist/esm/react/core/hooks/wallets/useSendAndConfirmCalls.js +96 -0
  65. package/dist/esm/react/core/hooks/wallets/useSendAndConfirmCalls.js.map +1 -0
  66. package/dist/esm/react/core/hooks/wallets/useSendCalls.js +32 -40
  67. package/dist/esm/react/core/hooks/wallets/useSendCalls.js.map +1 -1
  68. package/dist/esm/react/core/hooks/wallets/useWaitForCallsReceipt.js +35 -0
  69. package/dist/esm/react/core/hooks/wallets/useWaitForCallsReceipt.js.map +1 -0
  70. package/dist/esm/react/core/providers/thirdweb-provider.js +4 -3
  71. package/dist/esm/react/core/providers/thirdweb-provider.js.map +1 -1
  72. package/dist/esm/react/native/ui/connect/ConnectButton.js +4 -1
  73. package/dist/esm/react/native/ui/connect/ConnectButton.js.map +1 -1
  74. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +6 -4
  75. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  76. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +1 -1
  77. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  78. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js +1 -11
  79. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js.map +1 -1
  80. package/dist/esm/react/web/ui/PayEmbed.js +8 -1
  81. package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
  82. package/dist/esm/version.js +1 -1
  83. package/dist/esm/wallets/coinbase/coinbase-web.js +2 -81
  84. package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
  85. package/dist/esm/wallets/connection/autoConnectCore.js +29 -12
  86. package/dist/esm/wallets/connection/autoConnectCore.js.map +1 -1
  87. package/dist/esm/wallets/eip5792/get-calls-status.js +54 -15
  88. package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
  89. package/dist/esm/wallets/eip5792/get-capabilities.js +22 -9
  90. package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
  91. package/dist/esm/wallets/eip5792/send-and-confirm-calls.js +38 -0
  92. package/dist/esm/wallets/eip5792/send-and-confirm-calls.js.map +1 -0
  93. package/dist/esm/wallets/eip5792/send-calls.js +28 -15
  94. package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
  95. package/dist/esm/wallets/eip5792/show-calls-status.js +9 -8
  96. package/dist/esm/wallets/eip5792/show-calls-status.js.map +1 -1
  97. package/dist/esm/wallets/eip5792/{wait-for-bundle.js → wait-for-calls-receipt.js} +22 -9
  98. package/dist/esm/wallets/eip5792/wait-for-calls-receipt.js.map +1 -0
  99. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js +15 -10
  100. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
  101. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +13 -3
  102. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +1 -1
  103. package/dist/esm/wallets/in-app/core/wallet/is-in-app-signer.js +12 -0
  104. package/dist/esm/wallets/in-app/core/wallet/is-in-app-signer.js.map +1 -0
  105. package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js +4 -2
  106. package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js.map +1 -1
  107. package/dist/types/exports/react.d.ts +4 -3
  108. package/dist/types/exports/react.d.ts.map +1 -1
  109. package/dist/types/exports/react.native.d.ts +4 -3
  110. package/dist/types/exports/react.native.d.ts.map +1 -1
  111. package/dist/types/exports/wallets/eip5792.d.ts +3 -1
  112. package/dist/types/exports/wallets/eip5792.d.ts.map +1 -1
  113. package/dist/types/react/core/hooks/wallets/useCapabilities.d.ts +1 -0
  114. package/dist/types/react/core/hooks/wallets/useCapabilities.d.ts.map +1 -1
  115. package/dist/types/react/core/hooks/wallets/useSendAndConfirmCalls.d.ts +66 -0
  116. package/dist/types/react/core/hooks/wallets/useSendAndConfirmCalls.d.ts.map +1 -0
  117. package/dist/types/react/core/hooks/wallets/useSendCalls.d.ts +8 -11
  118. package/dist/types/react/core/hooks/wallets/useSendCalls.d.ts.map +1 -1
  119. package/dist/types/react/core/hooks/wallets/useWaitForCallsReceipt.d.ts +32 -0
  120. package/dist/types/react/core/hooks/wallets/useWaitForCallsReceipt.d.ts.map +1 -0
  121. package/dist/types/react/core/providers/thirdweb-provider.d.ts.map +1 -1
  122. package/dist/types/react/native/ui/connect/ConnectButton.d.ts.map +1 -1
  123. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  124. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
  125. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.d.ts.map +1 -1
  126. package/dist/types/react/web/ui/PayEmbed.d.ts +1 -1
  127. package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
  128. package/dist/types/version.d.ts +1 -1
  129. package/dist/types/wallets/coinbase/coinbase-web.d.ts +2 -30
  130. package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -1
  131. package/dist/types/wallets/connection/autoConnectCore.d.ts.map +1 -1
  132. package/dist/types/wallets/connection/types.d.ts +9 -0
  133. package/dist/types/wallets/connection/types.d.ts.map +1 -1
  134. package/dist/types/wallets/eip5792/get-calls-status.d.ts +5 -6
  135. package/dist/types/wallets/eip5792/get-calls-status.d.ts.map +1 -1
  136. package/dist/types/wallets/eip5792/get-capabilities.d.ts +2 -1
  137. package/dist/types/wallets/eip5792/get-capabilities.d.ts.map +1 -1
  138. package/dist/types/wallets/eip5792/send-and-confirm-calls.d.ts +39 -0
  139. package/dist/types/wallets/eip5792/send-and-confirm-calls.d.ts.map +1 -0
  140. package/dist/types/wallets/eip5792/send-calls.d.ts +12 -5
  141. package/dist/types/wallets/eip5792/send-calls.d.ts.map +1 -1
  142. package/dist/types/wallets/eip5792/show-calls-status.d.ts +2 -2
  143. package/dist/types/wallets/eip5792/show-calls-status.d.ts.map +1 -1
  144. package/dist/types/wallets/eip5792/types.d.ts +33 -4
  145. package/dist/types/wallets/eip5792/types.d.ts.map +1 -1
  146. package/dist/types/wallets/eip5792/{wait-for-bundle.d.ts → wait-for-calls-receipt.d.ts} +21 -9
  147. package/dist/types/wallets/eip5792/wait-for-calls-receipt.d.ts.map +1 -0
  148. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts +3 -3
  149. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts.map +1 -1
  150. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts +3 -3
  151. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts.map +1 -1
  152. package/dist/types/wallets/in-app/core/wallet/is-in-app-signer.d.ts +6 -0
  153. package/dist/types/wallets/in-app/core/wallet/is-in-app-signer.d.ts.map +1 -0
  154. package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts +2 -2
  155. package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts.map +1 -1
  156. package/package.json +1 -1
  157. package/src/exports/react.native.ts +6 -3
  158. package/src/exports/react.ts +6 -3
  159. package/src/exports/wallets/eip5792.ts +5 -3
  160. package/src/extensions/erc20/read/getCurrencyMetadata.ts +2 -2
  161. package/src/react/core/hooks/wallets/useCapabilities.ts +6 -6
  162. package/src/react/core/hooks/wallets/useSendAndConfirmCalls.ts +114 -0
  163. package/src/react/core/hooks/wallets/useSendCalls.ts +33 -50
  164. package/src/react/core/hooks/wallets/useWaitForCallsReceipt.ts +43 -0
  165. package/src/react/core/providers/thirdweb-provider.tsx +4 -3
  166. package/src/react/native/ui/connect/ConnectButton.tsx +4 -1
  167. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +11 -3
  168. package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +1 -0
  169. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.tsx +1 -21
  170. package/src/react/web/ui/PayEmbed.tsx +15 -1
  171. package/src/version.ts +1 -1
  172. package/src/wallets/coinbase/coinbase-web.ts +6 -117
  173. package/src/wallets/connection/autoConnectCore.ts +33 -12
  174. package/src/wallets/connection/types.ts +10 -0
  175. package/src/wallets/eip5792/get-calls-status.test.ts +27 -33
  176. package/src/wallets/eip5792/get-calls-status.ts +68 -19
  177. package/src/wallets/eip5792/get-capabilities.test.ts +10 -10
  178. package/src/wallets/eip5792/get-capabilities.ts +33 -11
  179. package/src/wallets/eip5792/send-and-confirm-calls.ts +48 -0
  180. package/src/wallets/eip5792/send-calls.test.ts +7 -7
  181. package/src/wallets/eip5792/send-calls.ts +43 -21
  182. package/src/wallets/eip5792/show-calls-status.test.ts +3 -3
  183. package/src/wallets/eip5792/show-calls-status.ts +13 -12
  184. package/src/wallets/eip5792/types.ts +43 -4
  185. package/src/wallets/eip5792/{wait-for-bundle.test.ts → wait-for-calls-receipt.test.ts} +19 -9
  186. package/src/wallets/eip5792/{wait-for-bundle.ts → wait-for-calls-receipt.ts} +26 -16
  187. package/src/wallets/in-app/core/eip5972/in-app-wallet-calls.ts +17 -16
  188. package/src/wallets/in-app/core/eip5972/in-app-wallet-capabilities.ts +14 -3
  189. package/src/wallets/in-app/core/wallet/is-in-app-signer.ts +21 -0
  190. package/src/wallets/smart/lib/smart-wallet-capabilities.ts +5 -2
  191. package/dist/cjs/react/core/hooks/wallets/useCallsStatus.js +0 -41
  192. package/dist/cjs/react/core/hooks/wallets/useCallsStatus.js.map +0 -1
  193. package/dist/cjs/wallets/eip5792/wait-for-bundle.js.map +0 -1
  194. package/dist/esm/react/core/hooks/wallets/useCallsStatus.js +0 -38
  195. package/dist/esm/react/core/hooks/wallets/useCallsStatus.js.map +0 -1
  196. package/dist/esm/wallets/eip5792/wait-for-bundle.js.map +0 -1
  197. package/dist/types/react/core/hooks/wallets/useCallsStatus.d.ts +0 -26
  198. package/dist/types/react/core/hooks/wallets/useCallsStatus.d.ts.map +0 -1
  199. package/dist/types/wallets/eip5792/wait-for-bundle.d.ts.map +0 -1
  200. package/src/react/core/hooks/wallets/useCallsStatus.ts +0 -48
@@ -4,20 +4,18 @@ import { watchBlockNumber } from "../../rpc/watchBlockNumber.js";
4
4
  import type { Prettify } from "../../utils/type-utils.js";
5
5
  import type { Wallet } from "../interfaces/wallet.js";
6
6
  import { getCallsStatus } from "./get-calls-status.js";
7
- import type { GetCallsStatusResponse, WalletSendCallsId } from "./types.js";
8
-
7
+ import type { GetCallsStatusResponse } from "./types.js";
9
8
  const DEFAULT_MAX_BLOCKS_WAIT_TIME = 100;
10
9
 
11
10
  const map = new Map<string, Promise<GetCallsStatusResponse>>();
12
11
 
13
- export type WaitForBundleOptions = Prettify<{
14
- bundleId: WalletSendCallsId;
15
- wallet: Wallet;
12
+ export type WaitForCallsReceiptOptions = Prettify<{
13
+ id: string;
16
14
  client: ThirdwebClient;
17
15
  chain: Chain;
16
+ wallet: Wallet;
18
17
  maxBlocksWaitTime?: number;
19
18
  }>;
20
-
21
19
  /**
22
20
  * Waits for the [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792) bundle to be confirmed.
23
21
  *
@@ -30,23 +28,35 @@ export type WaitForBundleOptions = Prettify<{
30
28
  * @beta
31
29
  * @example
32
30
  * ```ts
33
- * import { waitForBundle } from "thirdweb/wallets/eip5792";
34
- * const result = await waitForBundle({
31
+ * import { waitForCallsReceipt } from "thirdweb/wallets/eip5792";
32
+ * const result = await waitForCallsReceipt({
33
+ * client,
34
+ * chain,
35
+ * wallet,
36
+ * id: "0x123...",
37
+ * });
38
+ * ```
39
+ *
40
+ * Example with useSendCalls:
41
+ * ```ts
42
+ * const sendResult = await sendCalls({
35
43
  * client,
36
44
  * chain,
37
45
  * wallet,
38
- * bundleId: "0x123...",
46
+ * calls: [...],
39
47
  * });
48
+ * const confirmResult = await waitForCallsReceipt(sendResult);
49
+ * console.log("Transaction confirmed: ", confirmResult.receipts?.[0].transactionHash);
40
50
  * ```
41
51
  * @extension EIP5792
42
52
  */
43
- export function waitForBundle(
44
- options: WaitForBundleOptions,
53
+ export function waitForCallsReceipt(
54
+ options: WaitForCallsReceiptOptions,
45
55
  ): Promise<GetCallsStatusResponse> {
46
- const { bundleId, chain, wallet, client } = options;
56
+ const { id, chain, wallet, client } = options;
47
57
 
48
58
  const chainId = chain.id;
49
- const key = `${chainId}:calls_${bundleId}`;
59
+ const key = `${chainId}:calls_${id}`;
50
60
  const maxBlocksWaitTime =
51
61
  options.maxBlocksWaitTime ?? DEFAULT_MAX_BLOCKS_WAIT_TIME;
52
62
 
@@ -74,14 +84,14 @@ export function waitForBundle(
74
84
  const result = await getCallsStatus({
75
85
  wallet,
76
86
  client,
77
- bundleId,
87
+ id,
78
88
  });
79
-
80
- if (result.status === "CONFIRMED") {
89
+ if (result.status === "success" || result.status === "failure") {
81
90
  // stop the polling
82
91
  unwatch();
83
92
  // resolve the top level promise with the result
84
93
  resolve(result);
94
+ return;
85
95
  }
86
96
  } catch {
87
97
  // noop, we'll try again on the next blocks
@@ -10,7 +10,6 @@ import type { PreparedSendCall } from "../../../eip5792/send-calls.js";
10
10
  import type {
11
11
  GetCallsStatusResponse,
12
12
  WalletCallReceipt,
13
- WalletSendCallsId,
14
13
  } from "../../../eip5792/types.js";
15
14
  import type { Account, Wallet } from "../../../interfaces/wallet.js";
16
15
 
@@ -22,19 +21,19 @@ const bundlesToTransactions = new LruMap<Hex[]>(1000);
22
21
  export async function inAppWalletSendCalls(args: {
23
22
  account: Account;
24
23
  calls: PreparedSendCall[];
25
- }): Promise<WalletSendCallsId> {
24
+ }): Promise<string> {
26
25
  const { account, calls } = args;
27
26
 
28
27
  const hashes: Hex[] = [];
29
- const bundleId = randomBytesHex(65);
30
- bundlesToTransactions.set(bundleId, hashes);
28
+ const id = randomBytesHex(65);
29
+ bundlesToTransactions.set(id, hashes);
31
30
  if (account.sendBatchTransaction) {
32
31
  const receipt = await sendBatchTransaction({
33
32
  account,
34
33
  transactions: calls,
35
34
  });
36
35
  hashes.push(receipt.transactionHash);
37
- bundlesToTransactions.set(bundleId, hashes);
36
+ bundlesToTransactions.set(id, hashes);
38
37
  } else {
39
38
  for (const tx of calls) {
40
39
  const receipt = await sendAndConfirmTransaction({
@@ -42,11 +41,11 @@ export async function inAppWalletSendCalls(args: {
42
41
  transaction: tx,
43
42
  });
44
43
  hashes.push(receipt.transactionHash);
45
- bundlesToTransactions.set(bundleId, hashes);
44
+ bundlesToTransactions.set(id, hashes);
46
45
  }
47
46
  }
48
47
 
49
- return bundleId;
48
+ return id;
50
49
  }
51
50
 
52
51
  /**
@@ -55,22 +54,22 @@ export async function inAppWalletSendCalls(args: {
55
54
  export async function inAppWalletGetCallsStatus(args: {
56
55
  wallet: Wallet;
57
56
  client: ThirdwebClient;
58
- bundleId: string;
57
+ id: string;
59
58
  }): Promise<GetCallsStatusResponse> {
60
- const { wallet, client, bundleId } = args;
59
+ const { wallet, client, id } = args;
61
60
 
62
61
  const chain = wallet.getChain();
63
62
  if (!chain) {
64
63
  throw new Error("Failed to get calls status, no active chain found");
65
64
  }
66
65
 
67
- const bundle = bundlesToTransactions.get(bundleId);
66
+ const bundle = bundlesToTransactions.get(id);
68
67
  if (!bundle) {
69
68
  throw new Error("Failed to get calls status, unknown bundle id");
70
69
  }
71
70
 
72
71
  const request = getRpcClient({ client, chain });
73
- let status: "CONFIRMED" | "PENDING" = "CONFIRMED";
72
+ let status: "pending" | "success" | "failure" = "success";
74
73
  const receipts: (WalletCallReceipt<bigint, "success" | "reverted"> | null)[] =
75
74
  await Promise.all(
76
75
  bundle.map((hash) =>
@@ -88,7 +87,7 @@ export async function inAppWalletGetCallsStatus(args: {
88
87
  transactionHash: receipt.transactionHash,
89
88
  }))
90
89
  .catch(() => {
91
- status = "PENDING";
90
+ status = "pending";
92
91
  return null; // Return null if there's an error to filter out later
93
92
  }),
94
93
  ),
@@ -96,9 +95,11 @@ export async function inAppWalletGetCallsStatus(args: {
96
95
 
97
96
  return {
98
97
  status,
99
- receipts: receipts.filter((r) => r !== null) as WalletCallReceipt<
100
- bigint,
101
- "success" | "reverted"
102
- >[], // ts 5.5 please come we need you
98
+ statusCode: 200,
99
+ atomic: false,
100
+ chainId: chain.id,
101
+ id,
102
+ version: "2.0.0",
103
+ receipts: receipts.filter((r) => r !== null),
103
104
  };
104
105
  }
@@ -21,15 +21,26 @@ export function inAppWalletGetCapabilities(args: {
21
21
  const sponsorGas =
22
22
  config?.smartAccount && "sponsorGas" in config.smartAccount
23
23
  ? config.smartAccount.sponsorGas
24
- : false;
24
+ : config?.executionMode
25
+ ? config.executionMode.mode === "EIP4337" &&
26
+ config.executionMode.smartAccount &&
27
+ "sponsorGas" in config.executionMode.smartAccount
28
+ ? config.executionMode.smartAccount.sponsorGas
29
+ : config.executionMode.mode === "EIP7702"
30
+ ? config.executionMode.sponsorGas
31
+ : false
32
+ : false;
25
33
 
26
34
  return {
27
35
  [chain.id]: {
28
36
  paymasterService: {
29
37
  supported: sponsorGas,
30
38
  },
31
- atomicBatch: {
32
- supported: account?.sendBatchTransaction !== undefined,
39
+ atomic: {
40
+ status:
41
+ account?.sendBatchTransaction !== undefined
42
+ ? "supported"
43
+ : "unsupported",
33
44
  },
34
45
  },
35
46
  };
@@ -0,0 +1,21 @@
1
+ import { isEcosystemWallet } from "../../../../wallets/ecosystem/is-ecosystem-wallet.js";
2
+ import type { Wallet } from "../../../interfaces/wallet.js";
3
+ import { isSmartWallet } from "../../../smart/index.js";
4
+ import { isInAppWallet } from "./index.js";
5
+
6
+ export function isInAppSigner(options: {
7
+ wallet: Wallet;
8
+ connectedWallets: Wallet[];
9
+ }) {
10
+ const isInAppOrEcosystem = (w: Wallet) =>
11
+ isInAppWallet(w) || isEcosystemWallet(w);
12
+ const isSmartWalletWithAdmin =
13
+ isSmartWallet(options.wallet) &&
14
+ options.connectedWallets.some(
15
+ (w) =>
16
+ isInAppOrEcosystem(w) &&
17
+ w.getAccount()?.address?.toLowerCase() ===
18
+ options.wallet.getAdminAccount?.()?.address?.toLowerCase(),
19
+ );
20
+ return isInAppOrEcosystem(options.wallet) || isSmartWalletWithAdmin;
21
+ }
@@ -23,8 +23,11 @@ export function smartWalletGetCapabilities(args: {
23
23
  paymasterService: {
24
24
  supported: "sponsorGas" in config ? config.sponsorGas : false,
25
25
  },
26
- atomicBatch: {
27
- supported: account?.sendBatchTransaction !== undefined,
26
+ atomic: {
27
+ status:
28
+ account?.sendBatchTransaction !== undefined
29
+ ? "supported"
30
+ : "unsupported",
28
31
  },
29
32
  },
30
33
  };
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useCallsStatus = useCallsStatus;
4
- const react_query_1 = require("@tanstack/react-query");
5
- const get_calls_status_js_1 = require("../../../../wallets/eip5792/get-calls-status.js");
6
- const useActiveWallet_js_1 = require("./useActiveWallet.js");
7
- /**
8
- * A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
9
- *
10
- * This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
11
- *
12
- * @returns a React Query object.
13
- * @beta
14
- * @example
15
- * ```tsx
16
- * import { useCallsStatus } from "thirdweb/react";
17
- * const { data: status, isLoading } = useCallsStatus({ bundleId, client });
18
- * ```
19
- * @extension EIP5792
20
- */
21
- function useCallsStatus(options) {
22
- const { client, bundleId } = options;
23
- const wallet = (0, useActiveWallet_js_1.useActiveWallet)();
24
- return (0, react_query_1.useQuery)({
25
- queryKey: [
26
- "getCapabilities",
27
- wallet?.getChain()?.id || -1,
28
- wallet?.id,
29
- ],
30
- queryFn: async () => {
31
- if (!wallet) {
32
- throw new Error("Failed to get calls status, no wallet connected");
33
- }
34
- return (0, get_calls_status_js_1.getCallsStatus)({ wallet, client, bundleId });
35
- },
36
- retry: false,
37
- enabled: !!bundleId && wallet !== undefined,
38
- ...options.queryOptions,
39
- });
40
- }
41
- //# sourceMappingURL=useCallsStatus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCallsStatus.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useCallsStatus.ts"],"names":[],"mappings":";;AAoBA,wCA2BC;AA/CD,uDAAsE;AAEtE,yFAAiF;AAEjF,6DAAuD;AAEvD;;;;;;;;;;;;;GAaG;AACH,SAAgB,cAAc,CAAC,OAO9B;IACC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,IAAA,oCAAe,GAAE,CAAC;IAEjC,OAAO,IAAA,sBAAQ,EAAC;QACd,QAAQ,EAAE;YACR,iBAAiB;YACjB,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5B,MAAM,EAAE,EAAE;SACF;QACV,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,IAAA,oCAAc,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,MAAM,KAAK,SAAS;QAC3C,GAAG,OAAO,CAAC,YAAY;KACxB,CAAC,CAAC;AACL,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wait-for-bundle.js","sourceRoot":"","sources":["../../../../src/wallets/eip5792/wait-for-bundle.ts"],"names":[],"mappings":";;AA0CA,sCAuDC;AA/FD,uEAAiE;AAGjE,+DAAuD;AAGvD,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2C,CAAC;AAU/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,OAAO,UAAU,QAAQ,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GACrB,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAC;IAE5D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,mGAAmG;QACnG,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtE,oDAAoD;QACpD,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,IAAA,sCAAgB,EAAC;YAC/B,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,YAAY,EAAE,CAAC;gBACf,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;oBACtC,OAAO,EAAE,CAAC;oBACV,MAAM,CACJ,IAAI,KAAK,CAAC,8BAA8B,iBAAiB,SAAS,CAAC,CACpE,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAc,EAAC;wBAClC,MAAM;wBACN,MAAM;wBACN,QAAQ;qBACT,CAAC,CAAC;oBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,mBAAmB;wBACnB,OAAO,EAAE,CAAC;wBACV,gDAAgD;wBAChD,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;gBAC7C,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,wEAAwE;IAC1E,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,38 +0,0 @@
1
- import { useQuery } from "@tanstack/react-query";
2
- import { getCallsStatus } from "../../../../wallets/eip5792/get-calls-status.js";
3
- import { useActiveWallet } from "./useActiveWallet.js";
4
- /**
5
- * A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
6
- *
7
- * This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
8
- *
9
- * @returns a React Query object.
10
- * @beta
11
- * @example
12
- * ```tsx
13
- * import { useCallsStatus } from "thirdweb/react";
14
- * const { data: status, isLoading } = useCallsStatus({ bundleId, client });
15
- * ```
16
- * @extension EIP5792
17
- */
18
- export function useCallsStatus(options) {
19
- const { client, bundleId } = options;
20
- const wallet = useActiveWallet();
21
- return useQuery({
22
- queryKey: [
23
- "getCapabilities",
24
- wallet?.getChain()?.id || -1,
25
- wallet?.id,
26
- ],
27
- queryFn: async () => {
28
- if (!wallet) {
29
- throw new Error("Failed to get calls status, no wallet connected");
30
- }
31
- return getCallsStatus({ wallet, client, bundleId });
32
- },
33
- retry: false,
34
- enabled: !!bundleId && wallet !== undefined,
35
- ...options.queryOptions,
36
- });
37
- }
38
- //# sourceMappingURL=useCallsStatus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCallsStatus.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useCallsStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,OAO9B;IACC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE;YACR,iBAAiB;YACjB,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5B,MAAM,EAAE,EAAE;SACF;QACV,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,MAAM,KAAK,SAAS;QAC3C,GAAG,OAAO,CAAC,YAAY;KACxB,CAAC,CAAC;AACL,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wait-for-bundle.js","sourceRoot":"","sources":["../../../../src/wallets/eip5792/wait-for-bundle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2C,CAAC;AAU/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,OAAO,UAAU,QAAQ,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GACrB,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAC;IAE5D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,mGAAmG;QACnG,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtE,oDAAoD;QACpD,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,gBAAgB,CAAC;YAC/B,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,YAAY,EAAE,CAAC;gBACf,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;oBACtC,OAAO,EAAE,CAAC;oBACV,MAAM,CACJ,IAAI,KAAK,CAAC,8BAA8B,iBAAiB,SAAS,CAAC,CACpE,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;wBAClC,MAAM;wBACN,MAAM;wBACN,QAAQ;qBACT,CAAC,CAAC;oBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,mBAAmB;wBACnB,OAAO,EAAE,CAAC;wBACV,gDAAgD;wBAChD,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;gBAC7C,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,wEAAwE;IAC1E,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,26 +0,0 @@
1
- import { type UseQueryResult } from "@tanstack/react-query";
2
- import type { ThirdwebClient } from "../../../../client/client.js";
3
- import type { GetCallsStatusResponse } from "../../../../wallets/eip5792/types.js";
4
- /**
5
- * A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
6
- *
7
- * This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
8
- *
9
- * @returns a React Query object.
10
- * @beta
11
- * @example
12
- * ```tsx
13
- * import { useCallsStatus } from "thirdweb/react";
14
- * const { data: status, isLoading } = useCallsStatus({ bundleId, client });
15
- * ```
16
- * @extension EIP5792
17
- */
18
- export declare function useCallsStatus(options: {
19
- bundleId: string;
20
- client: ThirdwebClient;
21
- queryOptions?: {
22
- enabled?: boolean;
23
- retry?: number;
24
- };
25
- }): UseQueryResult<GetCallsStatusResponse>;
26
- //# sourceMappingURL=useCallsStatus.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCallsStatus.d.ts","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useCallsStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAGnF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAoBzC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wait-for-bundle.d.ts","sourceRoot":"","sources":["../../../../src/wallets/eip5792/wait-for-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM5E,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAqDjC"}
@@ -1,48 +0,0 @@
1
- import { type UseQueryResult, useQuery } from "@tanstack/react-query";
2
- import type { ThirdwebClient } from "../../../../client/client.js";
3
- import { getCallsStatus } from "../../../../wallets/eip5792/get-calls-status.js";
4
- import type { GetCallsStatusResponse } from "../../../../wallets/eip5792/types.js";
5
- import { useActiveWallet } from "./useActiveWallet.js";
6
-
7
- /**
8
- * A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
9
- *
10
- * This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
11
- *
12
- * @returns a React Query object.
13
- * @beta
14
- * @example
15
- * ```tsx
16
- * import { useCallsStatus } from "thirdweb/react";
17
- * const { data: status, isLoading } = useCallsStatus({ bundleId, client });
18
- * ```
19
- * @extension EIP5792
20
- */
21
- export function useCallsStatus(options: {
22
- bundleId: string;
23
- client: ThirdwebClient;
24
- queryOptions?: {
25
- enabled?: boolean;
26
- retry?: number;
27
- };
28
- }): UseQueryResult<GetCallsStatusResponse> {
29
- const { client, bundleId } = options;
30
- const wallet = useActiveWallet();
31
-
32
- return useQuery({
33
- queryKey: [
34
- "getCapabilities",
35
- wallet?.getChain()?.id || -1,
36
- wallet?.id,
37
- ] as const,
38
- queryFn: async () => {
39
- if (!wallet) {
40
- throw new Error("Failed to get calls status, no wallet connected");
41
- }
42
- return getCallsStatus({ wallet, client, bundleId });
43
- },
44
- retry: false,
45
- enabled: !!bundleId && wallet !== undefined,
46
- ...options.queryOptions,
47
- });
48
- }