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.
- package/dist/cjs/extensions/erc1155/read/getOwnedNFTs.js +1 -0
- package/dist/cjs/extensions/erc1155/read/getOwnedNFTs.js.map +1 -1
- package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js +1 -0
- package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
- package/dist/cjs/insight/get-nfts.js +3 -3
- package/dist/cjs/insight/get-nfts.js.map +1 -1
- package/dist/cjs/insight/get-tokens.js +3 -2
- package/dist/cjs/insight/get-tokens.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/WalletConnectConnection.js +7 -33
- package/dist/cjs/react/web/wallets/shared/WalletConnectConnection.js.map +1 -1
- package/dist/cjs/transaction/actions/estimate-gas.js +3 -24
- package/dist/cjs/transaction/actions/estimate-gas.js.map +1 -1
- package/dist/cjs/utils/web/isMobile.js +0 -2
- package/dist/cjs/utils/web/isMobile.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/coinbase/coinbase-web.js +56 -0
- package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/cjs/wallets/create-wallet.js +21 -4
- package/dist/cjs/wallets/create-wallet.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-calls-status.js +40 -63
- package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-capabilities.js +14 -49
- package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/cjs/wallets/eip5792/send-calls.js +34 -48
- package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.js +1 -5
- package/dist/cjs/wallets/in-app/core/eip5792/in-app-wallet-calls.js.map +1 -0
- package/dist/cjs/wallets/in-app/core/eip7702/minimal-account.js +650 -5
- package/dist/cjs/wallets/in-app/core/eip7702/minimal-account.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +32 -1
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/cjs/wallets/injected/index.js +55 -0
- package/dist/cjs/wallets/injected/index.js.map +1 -1
- package/dist/cjs/wallets/smart/index.js +61 -0
- package/dist/cjs/wallets/smart/index.js.map +1 -1
- package/dist/cjs/wallets/wallet-connect/controller.js +27 -25
- package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/esm/extensions/erc1155/read/getOwnedNFTs.js +1 -0
- package/dist/esm/extensions/erc1155/read/getOwnedNFTs.js.map +1 -1
- package/dist/esm/extensions/erc721/read/getOwnedNFTs.js +1 -0
- package/dist/esm/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
- package/dist/esm/insight/get-nfts.js +3 -3
- package/dist/esm/insight/get-nfts.js.map +1 -1
- package/dist/esm/insight/get-tokens.js +3 -2
- package/dist/esm/insight/get-tokens.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/WalletConnectConnection.js +8 -34
- package/dist/esm/react/web/wallets/shared/WalletConnectConnection.js.map +1 -1
- package/dist/esm/transaction/actions/estimate-gas.js +3 -24
- package/dist/esm/transaction/actions/estimate-gas.js.map +1 -1
- package/dist/esm/utils/web/isMobile.js +2 -2
- package/dist/esm/utils/web/isMobile.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/coinbase/coinbase-web.js +56 -0
- package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/esm/wallets/create-wallet.js +21 -4
- package/dist/esm/wallets/create-wallet.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-calls-status.js +39 -63
- package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-capabilities.js +13 -49
- package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/esm/wallets/eip5792/send-calls.js +33 -48
- package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/esm/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.js +1 -5
- package/dist/esm/wallets/in-app/core/eip5792/in-app-wallet-calls.js.map +1 -0
- package/dist/esm/wallets/in-app/core/eip7702/minimal-account.js +650 -5
- package/dist/esm/wallets/in-app/core/eip7702/minimal-account.js.map +1 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +32 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/esm/wallets/injected/index.js +56 -1
- package/dist/esm/wallets/injected/index.js.map +1 -1
- package/dist/esm/wallets/smart/index.js +61 -0
- package/dist/esm/wallets/smart/index.js.map +1 -1
- package/dist/esm/wallets/wallet-connect/controller.js +27 -25
- package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/types/bridge/Webhook.d.ts +2 -2
- package/dist/types/insight/get-nfts.d.ts +1 -0
- package/dist/types/insight/get-nfts.d.ts.map +1 -1
- package/dist/types/insight/get-tokens.d.ts +1 -0
- package/dist/types/insight/get-tokens.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useWaitForCallsReceipt.d.ts +1 -1
- package/dist/types/react/core/utils/storage.d.ts +1 -1
- package/dist/types/react/web/utils/storage.d.ts +1 -1
- package/dist/types/react/web/wallets/shared/WalletConnectConnection.d.ts.map +1 -1
- package/dist/types/transaction/actions/estimate-gas.d.ts.map +1 -1
- package/dist/types/utils/web/isMobile.d.ts +0 -8
- package/dist/types/utils/web/isMobile.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -1
- package/dist/types/wallets/create-wallet.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/get-calls-status.d.ts +2 -1
- package/dist/types/wallets/eip5792/get-calls-status.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/get-capabilities.d.ts +1 -0
- package/dist/types/wallets/eip5792/get-capabilities.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/send-calls.d.ts +6 -1
- package/dist/types/wallets/eip5792/send-calls.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.d.ts +3 -2
- package/dist/types/wallets/in-app/core/eip5792/in-app-wallet-calls.d.ts.map +1 -0
- package/dist/types/wallets/in-app/core/eip7702/minimal-account.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/wallet/enclave-wallet.d.ts.map +1 -1
- package/dist/types/wallets/injected/index.d.ts.map +1 -1
- package/dist/types/wallets/interfaces/wallet.d.ts +22 -0
- package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
- package/dist/types/wallets/smart/index.d.ts.map +1 -1
- package/dist/types/wallets/wallet-connect/controller.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/extensions/erc1155/read/getOwnedNFTs.ts +1 -0
- package/src/extensions/erc721/read/getOwnedNFTs.ts +1 -0
- package/src/insight/get-nfts.ts +4 -3
- package/src/insight/get-tokens.ts +4 -2
- package/src/react/web/wallets/shared/WalletConnectConnection.tsx +11 -46
- package/src/transaction/actions/estimate-gas.ts +14 -42
- package/src/utils/web/isMobile.ts +2 -2
- package/src/version.ts +1 -1
- package/src/wallets/coinbase/coinbase-web.ts +66 -0
- package/src/wallets/create-wallet.ts +53 -31
- package/src/wallets/eip5792/get-calls-status.test.ts +156 -146
- package/src/wallets/eip5792/get-calls-status.ts +44 -73
- package/src/wallets/eip5792/get-capabilities.test.ts +216 -205
- package/src/wallets/eip5792/get-capabilities.ts +23 -64
- package/src/wallets/eip5792/send-calls.test.ts +183 -189
- package/src/wallets/eip5792/send-calls.ts +53 -71
- package/src/wallets/in-app/core/{eip5972 → eip5792}/in-app-wallet-calls.ts +4 -8
- package/src/wallets/in-app/core/eip7702/minimal-account.ts +666 -5
- package/src/wallets/in-app/core/wallet/enclave-wallet.ts +36 -1
- package/src/wallets/injected/index.ts +63 -0
- package/src/wallets/interfaces/wallet.ts +31 -0
- package/src/wallets/smart/index.ts +69 -1
- package/src/wallets/wallet-connect/controller.ts +28 -25
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +0 -1
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +0 -41
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +0 -1
- package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js +0 -30
- package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js.map +0 -1
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +0 -1
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +0 -38
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +0 -1
- package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js +0 -27
- package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js.map +0 -1
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts.map +0 -1
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts +0 -20
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts.map +0 -1
- package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts +0 -20
- package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts.map +0 -1
- package/src/wallets/in-app/core/eip5972/in-app-wallet-capabilities.ts +0 -47
- 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 {
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
56
|
+
chain: Chain;
|
|
56
57
|
client: ThirdwebClient;
|
|
57
58
|
id: string;
|
|
58
59
|
}): Promise<GetCallsStatusResponse> {
|
|
59
|
-
const {
|
|
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) {
|