thirdweb 5.89.1 → 5.90.1

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 (131) hide show
  1. package/dist/cjs/chains/constants.js +17 -2
  2. package/dist/cjs/chains/constants.js.map +1 -1
  3. package/dist/cjs/exports/wallets/smart.js +2 -1
  4. package/dist/cjs/exports/wallets/smart.js.map +1 -1
  5. package/dist/cjs/gas/fee-data.js +1 -0
  6. package/dist/cjs/gas/fee-data.js.map +1 -1
  7. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +2 -0
  8. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  9. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +2 -0
  10. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  11. package/dist/cjs/storage/download.js +16 -0
  12. package/dist/cjs/storage/download.js.map +1 -1
  13. package/dist/cjs/storage/mock.js +46 -0
  14. package/dist/cjs/storage/mock.js.map +1 -0
  15. package/dist/cjs/storage/upload/web-node.js +6 -1
  16. package/dist/cjs/storage/upload/web-node.js.map +1 -1
  17. package/dist/cjs/transaction/actions/estimate-gas-cost.js +1 -1
  18. package/dist/cjs/transaction/actions/estimate-gas-cost.js.map +1 -1
  19. package/dist/cjs/utils/process.js +4 -1
  20. package/dist/cjs/utils/process.js.map +1 -1
  21. package/dist/cjs/version.js +1 -1
  22. package/dist/cjs/wallets/manager/index.js +1 -1
  23. package/dist/cjs/wallets/manager/index.js.map +1 -1
  24. package/dist/cjs/wallets/smart/index.js +1 -0
  25. package/dist/cjs/wallets/smart/index.js.map +1 -1
  26. package/dist/cjs/wallets/smart/lib/bundler.js +75 -0
  27. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  28. package/dist/cjs/wallets/smart/lib/userop.js +35 -13
  29. package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
  30. package/dist/esm/chains/constants.js +17 -2
  31. package/dist/esm/chains/constants.js.map +1 -1
  32. package/dist/esm/exports/wallets/smart.js +1 -1
  33. package/dist/esm/exports/wallets/smart.js.map +1 -1
  34. package/dist/esm/gas/fee-data.js +1 -0
  35. package/dist/esm/gas/fee-data.js.map +1 -1
  36. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +2 -0
  37. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  38. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +2 -0
  39. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  40. package/dist/esm/storage/download.js +16 -0
  41. package/dist/esm/storage/download.js.map +1 -1
  42. package/dist/esm/storage/mock.js +42 -0
  43. package/dist/esm/storage/mock.js.map +1 -0
  44. package/dist/esm/storage/upload/web-node.js +6 -1
  45. package/dist/esm/storage/upload/web-node.js.map +1 -1
  46. package/dist/esm/transaction/actions/estimate-gas-cost.js +1 -1
  47. package/dist/esm/transaction/actions/estimate-gas-cost.js.map +1 -1
  48. package/dist/esm/utils/process.js +3 -0
  49. package/dist/esm/utils/process.js.map +1 -1
  50. package/dist/esm/version.js +1 -1
  51. package/dist/esm/wallets/manager/index.js +1 -1
  52. package/dist/esm/wallets/manager/index.js.map +1 -1
  53. package/dist/esm/wallets/smart/index.js +1 -1
  54. package/dist/esm/wallets/smart/index.js.map +1 -1
  55. package/dist/esm/wallets/smart/lib/bundler.js +74 -0
  56. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  57. package/dist/esm/wallets/smart/lib/userop.js +34 -13
  58. package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
  59. package/dist/types/chains/constants.d.ts +1 -1
  60. package/dist/types/chains/constants.d.ts.map +1 -1
  61. package/dist/types/exports/wallets/smart.d.ts +1 -1
  62. package/dist/types/exports/wallets/smart.d.ts.map +1 -1
  63. package/dist/types/gas/fee-data.d.ts.map +1 -1
  64. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.d.ts.map +1 -1
  65. package/dist/types/storage/download.d.ts.map +1 -1
  66. package/dist/types/storage/mock.d.ts +11 -0
  67. package/dist/types/storage/mock.d.ts.map +1 -0
  68. package/dist/types/storage/upload/web-node.d.ts.map +1 -1
  69. package/dist/types/utils/process.d.ts +1 -0
  70. package/dist/types/utils/process.d.ts.map +1 -1
  71. package/dist/types/version.d.ts +1 -1
  72. package/dist/types/wallets/manager/index.d.ts +1 -1
  73. package/dist/types/wallets/manager/index.d.ts.map +1 -1
  74. package/dist/types/wallets/smart/index.d.ts +2 -0
  75. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  76. package/dist/types/wallets/smart/lib/bundler.d.ts +30 -1
  77. package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
  78. package/dist/types/wallets/smart/lib/userop.d.ts +8 -0
  79. package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
  80. package/package.json +7 -7
  81. package/src/adapters/viem-legacy.test.ts +1 -1
  82. package/src/auth/verify-typed-data.test.ts +2 -4
  83. package/src/chains/constants.ts +17 -2
  84. package/src/contract/actions/resolve-abi.test.ts +3 -3
  85. package/src/exports/wallets/smart.ts +1 -0
  86. package/src/extensions/erc1155/customDrop1155.test.ts +3 -14
  87. package/src/extensions/erc1155/drop1155.test.ts +3 -14
  88. package/src/extensions/erc1155/token1155.test.ts +16 -109
  89. package/src/extensions/erc20/read/getCurrencyMetadata.test.ts +1 -1
  90. package/src/extensions/erc721/customDrop721.test.ts +3 -13
  91. package/src/extensions/erc721/drop721.test.ts +3 -13
  92. package/src/extensions/erc721/read/getNFTs.test.ts +1 -1
  93. package/src/extensions/erc721/read/getOwnedTokenIds.test.ts +1 -1
  94. package/src/extensions/lens/read/resolveAddress.test.ts +1 -1
  95. package/src/extensions/prebuilts/deploy-vote.test.ts +1 -1
  96. package/src/extensions/unstoppable-domains/read/resolveAddress.test.ts +1 -1
  97. package/src/extensions/unstoppable-domains/read/resolveName.test.ts +1 -1
  98. package/src/gas/fee-data.ts +1 -0
  99. package/src/pay/convert/cryptoToFiat.test.ts +4 -4
  100. package/src/pay/convert/fiatToCrypto.test.ts +4 -4
  101. package/src/react/core/hooks/wallets/useConnect.test.tsx +3 -3
  102. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +3 -0
  103. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.tsx +3 -0
  104. package/src/react/web/ui/prebuilt/Account/balance.test.tsx +7 -13
  105. package/src/react/web/ui/prebuilt/Chain/icon.test.tsx +1 -1
  106. package/src/react/web/ui/prebuilt/NFT/description.test.tsx +1 -1
  107. package/src/react/web/ui/prebuilt/NFT/media.test.tsx +1 -1
  108. package/src/react/web/ui/prebuilt/NFT/name.test.tsx +1 -1
  109. package/src/react/web/ui/prebuilt/NFT/utils.test.ts +1 -1
  110. package/src/react/web/ui/prebuilt/Token/name.test.tsx +1 -1
  111. package/src/react/web/ui/prebuilt/Token/symbol.test.tsx +1 -1
  112. package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +1 -1
  113. package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +1 -1
  114. package/src/react/web/ui/prebuilt/thirdweb/ClaimButton/ClaimButton.test.tsx +1 -1
  115. package/src/storage/download.test.ts +1 -1
  116. package/src/storage/download.ts +17 -0
  117. package/src/storage/mock.ts +52 -0
  118. package/src/storage/upload/web-node.test.ts +2 -1
  119. package/src/storage/upload/web-node.ts +8 -1
  120. package/src/transaction/actions/encode.test.ts +1 -1
  121. package/src/transaction/actions/estimate-gas-cost.ts +1 -1
  122. package/src/utils/nft/fetch-token-metadata.test.ts +1 -1
  123. package/src/utils/process.ts +4 -0
  124. package/src/version.ts +1 -1
  125. package/src/wallets/manager/index.ts +6 -2
  126. package/src/wallets/smart/index.ts +1 -1
  127. package/src/wallets/smart/lib/bundler.ts +95 -0
  128. package/src/wallets/smart/lib/userop.ts +42 -15
  129. package/src/wallets/smart/smart-wallet-integration-v07.test.ts +25 -21
  130. package/src/wallets/smart/smart-wallet-integration.test.ts +21 -1
  131. package/src/wallets/smart/smart-wallet-modular.test.ts +1 -2
@@ -16,7 +16,6 @@ import {
16
16
  } from "../../exports/extensions/erc4337.js";
17
17
  import { claimTo } from "../../extensions/erc1155/drops/write/claimTo.js";
18
18
  import { setContractURI } from "../../extensions/marketplace/__generated__/IMarketplace/write/setContractURI.js";
19
- import { estimateGasCost } from "../../transaction/actions/estimate-gas-cost.js";
20
19
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
21
20
  import { sendBatchTransaction } from "../../transaction/actions/send-batch-transaction.js";
22
21
  import { waitForReceipt } from "../../transaction/actions/wait-for-tx-receipt.js";
@@ -27,6 +26,7 @@ import { hashTypedData } from "../../utils/hashing/hashTypedData.js";
27
26
  import { sleep } from "../../utils/sleep.js";
28
27
  import type { Account, Wallet } from "../interfaces/wallet.js";
29
28
  import { generateAccount } from "../utils/generateAccount.js";
29
+ import { estimateUserOpGasCost } from "./lib/bundler.js";
30
30
  import { predictSmartAccountAddress } from "./lib/calls.js";
31
31
  import { DEFAULT_ACCOUNT_FACTORY_V0_7 } from "./lib/constants.js";
32
32
  import {
@@ -49,11 +49,9 @@ const contract = getContract({
49
49
  address: "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8",
50
50
  });
51
51
 
52
- // FIXME: SKIP ALL OF THIS IT IS FLAKY
53
- describe.skip(
52
+ describe.sequential(
54
53
  "SmartWallet 0.7 core tests",
55
54
  {
56
- retry: 0,
57
55
  timeout: 240_000,
58
56
  },
59
57
  () => {
@@ -89,6 +87,27 @@ describe.skip(
89
87
  expect(predictedAddress).toEqual(smartWalletAddress);
90
88
  });
91
89
 
90
+ it("can estimate gas cost", async () => {
91
+ const gasCost = await estimateUserOpGasCost({
92
+ transactions: [
93
+ claimTo({
94
+ contract,
95
+ quantity: 1n,
96
+ to: smartWalletAddress,
97
+ tokenId: 0n,
98
+ }),
99
+ ],
100
+ adminAccount: personalAccount,
101
+ client: TEST_CLIENT,
102
+ smartWalletOptions: {
103
+ chain,
104
+ sponsorGas: true,
105
+ factoryAddress: DEFAULT_ACCOUNT_FACTORY_V0_7,
106
+ },
107
+ });
108
+ expect(gasCost.ether).not.toBe("0");
109
+ });
110
+
92
111
  it("can sign a msg", async () => {
93
112
  const signature = await smartAccount.signMessage({
94
113
  message: "hello world",
@@ -103,8 +122,7 @@ describe.skip(
103
122
  expect(isValid).toEqual(true);
104
123
  });
105
124
 
106
- // FIXME: flaky test - skipped
107
- it.skip("should use ERC-1271 signatures after deployment", async () => {
125
+ it("should use ERC-1271 signatures after deployment", async () => {
108
126
  await deploySmartAccount({
109
127
  chain,
110
128
  client,
@@ -137,8 +155,7 @@ describe.skip(
137
155
  expect(isValid).toEqual(true);
138
156
  });
139
157
 
140
- // FIXME: flaky test - skipped
141
- it.skip("should use ERC-1271 typed data signatures after deployment", async () => {
158
+ it("should use ERC-1271 typed data signatures after deployment", async () => {
142
159
  await deploySmartAccount({
143
160
  chain,
144
161
  client,
@@ -206,19 +223,6 @@ describe.skip(
206
223
  expect(isDeployed).toEqual(true);
207
224
  });
208
225
 
209
- it("can estimate a tx", async () => {
210
- const estimates = await estimateGasCost({
211
- transaction: claimTo({
212
- contract,
213
- quantity: 1n,
214
- to: smartWalletAddress,
215
- tokenId: 0n,
216
- }),
217
- account: smartAccount,
218
- });
219
- expect(estimates.wei.toString()).not.toBe("0");
220
- });
221
-
222
226
  it("can execute a batched tx", async () => {
223
227
  const tx = await sendBatchTransaction({
224
228
  account: smartAccount,
@@ -29,6 +29,7 @@ import { hashTypedData } from "../../utils/hashing/hashTypedData.js";
29
29
  import { sleep } from "../../utils/sleep.js";
30
30
  import type { Account, Wallet } from "../interfaces/wallet.js";
31
31
  import { generateAccount } from "../utils/generateAccount.js";
32
+ import { estimateUserOpGasCost } from "./lib/bundler.js";
32
33
  import { predictSmartAccountAddress } from "./lib/calls.js";
33
34
  import { deploySmartAccount } from "./lib/signing.js";
34
35
  import { smartWallet } from "./smart-wallet.js";
@@ -51,7 +52,6 @@ const factoryAddress = "0x564cf6453a1b0FF8DB603E92EA4BbD410dea45F3"; // pre 712
51
52
  describe.runIf(process.env.TW_SECRET_KEY).sequential(
52
53
  "SmartWallet core tests",
53
54
  {
54
- retry: 0,
55
55
  timeout: 240_000,
56
56
  },
57
57
  () => {
@@ -75,6 +75,26 @@ describe.runIf(process.env.TW_SECRET_KEY).sequential(
75
75
  });
76
76
  });
77
77
 
78
+ it("can estimate gas cost", async () => {
79
+ const gasCost = await estimateUserOpGasCost({
80
+ transactions: [
81
+ claimTo({
82
+ contract,
83
+ quantity: 1n,
84
+ to: smartWalletAddress,
85
+ tokenId: 0n,
86
+ }),
87
+ ],
88
+ adminAccount: personalAccount,
89
+ client: TEST_CLIENT,
90
+ smartWalletOptions: {
91
+ chain,
92
+ sponsorGas: true,
93
+ },
94
+ });
95
+ expect(gasCost.ether).not.toBe("0");
96
+ });
97
+
78
98
  it("can connect", async () => {
79
99
  expect(smartWalletAddress).toHaveLength(42);
80
100
  const predictedAddress = await predictSmartAccountAddress({
@@ -28,8 +28,7 @@ const client = TEST_CLIENT;
28
28
  const DEFAULT_FACTORY_ADDRESS = "0xB1846E893CA01c5Dcdaa40371C1e13f2e0Df5717";
29
29
  const DEFAULT_VALIDATOR_ADDRESS = "0x7D3631d823e0De311DC86f580946EeF2eEC81fba";
30
30
 
31
- // FIXME: This test is flaky and needs to be fixed
32
- describe.skip.sequential(
31
+ describe.sequential(
33
32
  "SmartWallet modular tests",
34
33
  {
35
34
  retry: 0,