thirdweb 5.105.21 → 5.105.23

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 (145) hide show
  1. package/dist/cjs/extensions/erc1155/read/getOwnedNFTs.js +1 -0
  2. package/dist/cjs/extensions/erc1155/read/getOwnedNFTs.js.map +1 -1
  3. package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js +1 -0
  4. package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
  5. package/dist/cjs/insight/get-nfts.js +3 -3
  6. package/dist/cjs/insight/get-nfts.js.map +1 -1
  7. package/dist/cjs/insight/get-tokens.js +3 -2
  8. package/dist/cjs/insight/get-tokens.js.map +1 -1
  9. package/dist/cjs/react/web/wallets/shared/WalletConnectConnection.js +7 -33
  10. package/dist/cjs/react/web/wallets/shared/WalletConnectConnection.js.map +1 -1
  11. package/dist/cjs/transaction/actions/estimate-gas.js +3 -24
  12. package/dist/cjs/transaction/actions/estimate-gas.js.map +1 -1
  13. package/dist/cjs/utils/web/isMobile.js +0 -2
  14. package/dist/cjs/utils/web/isMobile.js.map +1 -1
  15. package/dist/cjs/version.js +1 -1
  16. package/dist/cjs/wallets/coinbase/coinbase-web.js +56 -0
  17. package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
  18. package/dist/cjs/wallets/create-wallet.js +21 -4
  19. package/dist/cjs/wallets/create-wallet.js.map +1 -1
  20. package/dist/cjs/wallets/eip5792/get-calls-status.js +40 -63
  21. package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
  22. package/dist/cjs/wallets/eip5792/get-capabilities.js +14 -49
  23. package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
  24. package/dist/cjs/wallets/eip5792/send-calls.js +34 -48
  25. package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
  26. package/dist/cjs/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.js +1 -5
  27. package/dist/cjs/wallets/in-app/core/eip5792/in-app-wallet-calls.js.map +1 -0
  28. package/dist/cjs/wallets/in-app/core/eip7702/minimal-account.js +650 -5
  29. package/dist/cjs/wallets/in-app/core/eip7702/minimal-account.js.map +1 -1
  30. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +32 -1
  31. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  32. package/dist/cjs/wallets/injected/index.js +55 -0
  33. package/dist/cjs/wallets/injected/index.js.map +1 -1
  34. package/dist/cjs/wallets/smart/index.js +61 -0
  35. package/dist/cjs/wallets/smart/index.js.map +1 -1
  36. package/dist/cjs/wallets/wallet-connect/controller.js +27 -25
  37. package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
  38. package/dist/esm/extensions/erc1155/read/getOwnedNFTs.js +1 -0
  39. package/dist/esm/extensions/erc1155/read/getOwnedNFTs.js.map +1 -1
  40. package/dist/esm/extensions/erc721/read/getOwnedNFTs.js +1 -0
  41. package/dist/esm/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
  42. package/dist/esm/insight/get-nfts.js +3 -3
  43. package/dist/esm/insight/get-nfts.js.map +1 -1
  44. package/dist/esm/insight/get-tokens.js +3 -2
  45. package/dist/esm/insight/get-tokens.js.map +1 -1
  46. package/dist/esm/react/web/wallets/shared/WalletConnectConnection.js +8 -34
  47. package/dist/esm/react/web/wallets/shared/WalletConnectConnection.js.map +1 -1
  48. package/dist/esm/transaction/actions/estimate-gas.js +3 -24
  49. package/dist/esm/transaction/actions/estimate-gas.js.map +1 -1
  50. package/dist/esm/utils/web/isMobile.js +2 -2
  51. package/dist/esm/utils/web/isMobile.js.map +1 -1
  52. package/dist/esm/version.js +1 -1
  53. package/dist/esm/wallets/coinbase/coinbase-web.js +56 -0
  54. package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
  55. package/dist/esm/wallets/create-wallet.js +21 -4
  56. package/dist/esm/wallets/create-wallet.js.map +1 -1
  57. package/dist/esm/wallets/eip5792/get-calls-status.js +39 -63
  58. package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
  59. package/dist/esm/wallets/eip5792/get-capabilities.js +13 -49
  60. package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
  61. package/dist/esm/wallets/eip5792/send-calls.js +33 -48
  62. package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
  63. package/dist/esm/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.js +1 -5
  64. package/dist/esm/wallets/in-app/core/eip5792/in-app-wallet-calls.js.map +1 -0
  65. package/dist/esm/wallets/in-app/core/eip7702/minimal-account.js +650 -5
  66. package/dist/esm/wallets/in-app/core/eip7702/minimal-account.js.map +1 -1
  67. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +32 -1
  68. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  69. package/dist/esm/wallets/injected/index.js +56 -1
  70. package/dist/esm/wallets/injected/index.js.map +1 -1
  71. package/dist/esm/wallets/smart/index.js +61 -0
  72. package/dist/esm/wallets/smart/index.js.map +1 -1
  73. package/dist/esm/wallets/wallet-connect/controller.js +27 -25
  74. package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
  75. package/dist/types/bridge/Webhook.d.ts +2 -2
  76. package/dist/types/insight/get-nfts.d.ts +1 -0
  77. package/dist/types/insight/get-nfts.d.ts.map +1 -1
  78. package/dist/types/insight/get-tokens.d.ts +1 -0
  79. package/dist/types/insight/get-tokens.d.ts.map +1 -1
  80. package/dist/types/react/core/hooks/wallets/useWaitForCallsReceipt.d.ts +1 -1
  81. package/dist/types/react/core/utils/storage.d.ts +1 -1
  82. package/dist/types/react/web/utils/storage.d.ts +1 -1
  83. package/dist/types/react/web/wallets/shared/WalletConnectConnection.d.ts.map +1 -1
  84. package/dist/types/transaction/actions/estimate-gas.d.ts.map +1 -1
  85. package/dist/types/utils/web/isMobile.d.ts +0 -8
  86. package/dist/types/utils/web/isMobile.d.ts.map +1 -1
  87. package/dist/types/version.d.ts +1 -1
  88. package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -1
  89. package/dist/types/wallets/create-wallet.d.ts.map +1 -1
  90. package/dist/types/wallets/eip5792/get-calls-status.d.ts +2 -1
  91. package/dist/types/wallets/eip5792/get-calls-status.d.ts.map +1 -1
  92. package/dist/types/wallets/eip5792/get-capabilities.d.ts +1 -0
  93. package/dist/types/wallets/eip5792/get-capabilities.d.ts.map +1 -1
  94. package/dist/types/wallets/eip5792/send-calls.d.ts +6 -1
  95. package/dist/types/wallets/eip5792/send-calls.d.ts.map +1 -1
  96. package/dist/types/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.d.ts +3 -2
  97. package/dist/types/wallets/in-app/core/eip5792/in-app-wallet-calls.d.ts.map +1 -0
  98. package/dist/types/wallets/in-app/core/eip7702/minimal-account.d.ts.map +1 -1
  99. package/dist/types/wallets/in-app/core/wallet/enclave-wallet.d.ts.map +1 -1
  100. package/dist/types/wallets/injected/index.d.ts.map +1 -1
  101. package/dist/types/wallets/interfaces/wallet.d.ts +22 -0
  102. package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
  103. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  104. package/dist/types/wallets/wallet-connect/controller.d.ts.map +1 -1
  105. package/package.json +3 -3
  106. package/src/extensions/erc1155/read/getOwnedNFTs.ts +1 -0
  107. package/src/extensions/erc721/read/getOwnedNFTs.ts +1 -0
  108. package/src/insight/get-nfts.ts +4 -3
  109. package/src/insight/get-tokens.ts +4 -2
  110. package/src/react/web/wallets/shared/WalletConnectConnection.tsx +11 -46
  111. package/src/transaction/actions/estimate-gas.ts +14 -42
  112. package/src/utils/web/isMobile.ts +2 -2
  113. package/src/version.ts +1 -1
  114. package/src/wallets/coinbase/coinbase-web.ts +66 -0
  115. package/src/wallets/create-wallet.ts +53 -31
  116. package/src/wallets/eip5792/get-calls-status.test.ts +156 -146
  117. package/src/wallets/eip5792/get-calls-status.ts +44 -73
  118. package/src/wallets/eip5792/get-capabilities.test.ts +216 -205
  119. package/src/wallets/eip5792/get-capabilities.ts +23 -64
  120. package/src/wallets/eip5792/send-calls.test.ts +183 -189
  121. package/src/wallets/eip5792/send-calls.ts +53 -71
  122. package/src/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.ts +4 -8
  123. package/src/wallets/in-app/core/eip7702/minimal-account.ts +666 -5
  124. package/src/wallets/in-app/core/wallet/enclave-wallet.ts +36 -1
  125. package/src/wallets/injected/index.ts +63 -0
  126. package/src/wallets/interfaces/wallet.ts +31 -0
  127. package/src/wallets/smart/index.ts +69 -1
  128. package/src/wallets/wallet-connect/controller.ts +28 -25
  129. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +0 -1
  130. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +0 -41
  131. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +0 -1
  132. package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js +0 -30
  133. package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js.map +0 -1
  134. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +0 -1
  135. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +0 -38
  136. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +0 -1
  137. package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js +0 -27
  138. package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js.map +0 -1
  139. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts.map +0 -1
  140. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts +0 -20
  141. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts.map +0 -1
  142. package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts +0 -20
  143. package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts.map +0 -1
  144. package/src/wallets/in-app/core/eip5972/in-app-wallet-capabilities.ts +0 -47
  145. package/src/wallets/smart/lib/smart-wallet-capabilities.ts +0 -32
@@ -4,24 +4,14 @@ import type { Chain } from "../../chains/types.js";
4
4
  import type { ThirdwebClient } from "../../client/client.js";
5
5
  import { encode } from "../../transaction/actions/encode.js";
6
6
  import type { PreparedTransaction } from "../../transaction/prepare-transaction.js";
7
- import { type Address, getAddress } from "../../utils/address.js";
7
+ import { getAddress } from "../../utils/address.js";
8
8
  import { type Hex, numberToHex } from "../../utils/encoding/hex.js";
9
- import { stringify } from "../../utils/json.js";
10
9
  import {
11
10
  type PromisedObject,
12
11
  resolvePromisedValue,
13
12
  } from "../../utils/promise/resolve-promised-value.js";
14
13
  import type { OneOf, Prettify } from "../../utils/type-utils.js";
15
- import {
16
- type CoinbaseWalletCreationOptions,
17
- isCoinbaseSDKWallet,
18
- } from "../coinbase/coinbase-web.js";
19
- import { isInAppWallet } from "../in-app/core/wallet/index.js";
20
- import { getInjectedProvider } from "../injected/index.js";
21
- import type { Ethereum } from "../interfaces/ethereum.js";
22
- import type { Wallet } from "../interfaces/wallet.js";
23
- import { isSmartWallet } from "../smart/index.js";
24
- import { isWalletConnect } from "../wallet-connect/controller.js";
14
+ import type { Account, Wallet } from "../interfaces/wallet.js";
25
15
  import type { WalletId } from "../wallet-types.js";
26
16
  import type {
27
17
  EIP5792Call,
@@ -129,19 +119,7 @@ export type SendCallsResult = Prettify<{
129
119
  export async function sendCalls<const ID extends WalletId>(
130
120
  options: SendCallsOptions<ID>,
131
121
  ): Promise<SendCallsResult> {
132
- const {
133
- wallet,
134
- calls,
135
- capabilities,
136
- version = "2.0.0",
137
- chain = wallet.getChain(),
138
- } = options;
139
-
140
- if (!chain) {
141
- throw new Error(
142
- `Cannot send calls, no active chain found for wallet: ${wallet.id}`,
143
- );
144
- }
122
+ const { wallet, chain } = options;
145
123
 
146
124
  const account = wallet.getAccount();
147
125
  if (!account) {
@@ -154,17 +132,44 @@ export async function sendCalls<const ID extends WalletId>(
154
132
  if (!firstCall) {
155
133
  throw new Error("No calls to send");
156
134
  }
157
- const client = firstCall.client;
158
135
 
159
- // These conveniently operate the same
160
- if (isSmartWallet(wallet) || isInAppWallet(wallet)) {
161
- const { inAppWalletSendCalls } = await import(
162
- "../in-app/core/eip5972/in-app-wallet-calls.js"
163
- );
164
- const id = await inAppWalletSendCalls({ account, calls });
165
- return { chain, client, id, wallet };
136
+ const callChain = firstCall.chain || chain;
137
+
138
+ if (wallet.getChain()?.id !== callChain.id) {
139
+ await wallet.switchChain(callChain);
166
140
  }
167
141
 
142
+ // check internal implementations
143
+ if (account.sendCalls) {
144
+ const { wallet: _, ...optionsWithoutWallet } = options;
145
+ const result = await account.sendCalls(optionsWithoutWallet);
146
+ return {
147
+ ...result,
148
+ wallet,
149
+ };
150
+ }
151
+
152
+ throw new Error(
153
+ `Cannot send calls, wallet ${wallet.id} does not support EIP-5792`,
154
+ );
155
+ }
156
+
157
+ export async function toProviderCallParams(
158
+ options: Omit<SendCallsOptions, "wallet">,
159
+ account: Account,
160
+ ): Promise<{ callParams: ViemWalletSendCallsParameters; chain: Chain }> {
161
+ const firstCall = options.calls[0];
162
+ if (!firstCall) {
163
+ throw new Error("No calls to send");
164
+ }
165
+
166
+ const {
167
+ calls,
168
+ capabilities,
169
+ version = "2.0.0",
170
+ chain = firstCall.chain,
171
+ } = options;
172
+
168
173
  const preparedCalls: EIP5792Call[] = await Promise.all(
169
174
  calls.map(async (call) => {
170
175
  const { to, value } = call;
@@ -178,18 +183,26 @@ export async function sendCalls<const ID extends WalletId>(
178
183
  resolvePromisedValue(value),
179
184
  ]);
180
185
 
186
+ if (_to) {
187
+ return {
188
+ data: _data as Hex,
189
+ to: getAddress(_to),
190
+ value:
191
+ typeof _value === "bigint" || typeof _value === "number"
192
+ ? numberToHex(_value)
193
+ : undefined,
194
+ };
195
+ }
196
+
181
197
  return {
182
198
  data: _data as Hex,
183
- to: _to as Address,
184
- value:
185
- typeof _value === "bigint" || typeof _value === "number"
186
- ? numberToHex(_value)
187
- : undefined,
199
+ to: undefined,
200
+ value: undefined,
188
201
  };
189
202
  }),
190
203
  );
191
204
 
192
- const injectedWalletCallParams: WalletSendCallsParameters = [
205
+ const injectedWalletCallParams: ViemWalletSendCallsParameters = [
193
206
  {
194
207
  // see: https://eips.ethereum.org/EIPS/eip-5792#wallet_sendcalls
195
208
  atomicRequired: options.atomicRequired ?? false,
@@ -201,36 +214,5 @@ export async function sendCalls<const ID extends WalletId>(
201
214
  },
202
215
  ];
203
216
 
204
- if (isWalletConnect(wallet)) {
205
- throw new Error("sendCalls is not yet supported for Wallet Connect");
206
- }
207
-
208
- let provider: Ethereum;
209
- if (isCoinbaseSDKWallet(wallet)) {
210
- const { getCoinbaseWebProvider } = await import(
211
- "../coinbase/coinbase-web.js"
212
- );
213
- const config = wallet.getConfig() as CoinbaseWalletCreationOptions;
214
- provider = (await getCoinbaseWebProvider(config)) as Ethereum;
215
- } else {
216
- provider = getInjectedProvider(wallet.id);
217
- }
218
-
219
- try {
220
- const callId = await provider.request({
221
- method: "wallet_sendCalls",
222
- params: injectedWalletCallParams as ViemWalletSendCallsParameters, // The viem type definition is slightly different
223
- });
224
- if (typeof callId === "object" && "id" in callId) {
225
- return { chain, client, id: callId.id, wallet };
226
- }
227
- return { chain, client, id: callId, wallet };
228
- } catch (error) {
229
- if (/unsupport|not support/i.test((error as Error).message)) {
230
- throw new Error(
231
- `${wallet.id} errored calling wallet_sendCalls, with error: ${error instanceof Error ? error.message : stringify(error)}`,
232
- );
233
- }
234
- throw error;
235
- }
217
+ return { callParams: injectedWalletCallParams, chain };
236
218
  }
@@ -1,3 +1,4 @@
1
+ import type { Chain } from "../../../../chains/types.js";
1
2
  import type { ThirdwebClient } from "../../../../client/client.js";
2
3
  import { eth_getTransactionReceipt } from "../../../../rpc/actions/eth_getTransactionReceipt.js";
3
4
  import { getRpcClient } from "../../../../rpc/rpc.js";
@@ -11,7 +12,7 @@ import type {
11
12
  GetCallsStatusResponse,
12
13
  WalletCallReceipt,
13
14
  } from "../../../eip5792/types.js";
14
- import type { Account, Wallet } from "../../../interfaces/wallet.js";
15
+ import type { Account } from "../../../interfaces/wallet.js";
15
16
 
16
17
  const bundlesToTransactions = new LruMap<Hex[]>(1000);
17
18
 
@@ -52,16 +53,11 @@ export async function inAppWalletSendCalls(args: {
52
53
  * @internal
53
54
  */
54
55
  export async function inAppWalletGetCallsStatus(args: {
55
- wallet: Wallet;
56
+ chain: Chain;
56
57
  client: ThirdwebClient;
57
58
  id: string;
58
59
  }): Promise<GetCallsStatusResponse> {
59
- const { wallet, client, id } = args;
60
-
61
- const chain = wallet.getChain();
62
- if (!chain) {
63
- throw new Error("Failed to get calls status, no active chain found");
64
- }
60
+ const { chain, client, id } = args;
65
61
 
66
62
  const bundle = bundlesToTransactions.get(id);
67
63
  if (!bundle) {