thirdweb 5.48.1-nightly-886094fbac4f25735438a651cdb0747c6d5de6c5-20240821000347 → 5.48.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 (294) hide show
  1. package/dist/cjs/auth/verify-hash.js +1 -1
  2. package/dist/cjs/auth/verify-hash.js.map +1 -1
  3. package/dist/cjs/cli/commands/generate/generate.js +8 -8
  4. package/dist/cjs/cli/commands/generate/generate.js.map +1 -1
  5. package/dist/cjs/contract/actions/resolve-abi.js +1 -1
  6. package/dist/cjs/contract/actions/resolve-abi.js.map +1 -1
  7. package/dist/cjs/contract/verification/constructor-params.js +1 -1
  8. package/dist/cjs/contract/verification/constructor-params.js.map +1 -1
  9. package/dist/cjs/exports/react.js +3 -1
  10. package/dist/cjs/exports/react.js.map +1 -1
  11. package/dist/cjs/extensions/erc20/read/getCurrencyMetadata.js +1 -1
  12. package/dist/cjs/extensions/erc20/read/getCurrencyMetadata.js.map +1 -1
  13. package/dist/cjs/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js.map +1 -1
  14. package/dist/cjs/extensions/vote/read/proposalExists.js +1 -1
  15. package/dist/cjs/extensions/vote/read/proposalExists.js.map +1 -1
  16. package/dist/cjs/react/core/design-system/index.js +4 -4
  17. package/dist/cjs/react/core/design-system/index.js.map +1 -1
  18. package/dist/cjs/react/core/hooks/contract/useReadContract.js +4 -0
  19. package/dist/cjs/react/core/hooks/contract/useReadContract.js.map +1 -1
  20. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +1 -1
  21. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  22. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js +1 -1
  23. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  24. package/dist/cjs/react/core/hooks/wallets/useSendToken.js +1 -1
  25. package/dist/cjs/react/core/hooks/wallets/useSendToken.js.map +1 -1
  26. package/dist/cjs/react/native/ui/components/RNImage.js +8 -2
  27. package/dist/cjs/react/native/ui/components/RNImage.js.map +1 -1
  28. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
  29. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  30. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +10 -4
  31. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  32. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectModal.js +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectModal.js.map +1 -1
  34. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectModalContent.js +1 -1
  35. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectModalContent.js.map +1 -1
  36. package/dist/cjs/react/web/ui/ConnectWallet/WalletSelector.js +4 -2
  37. package/dist/cjs/react/web/ui/ConnectWallet/WalletSelector.js.map +1 -1
  38. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +1 -1
  39. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  40. package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewNFTs.js +10 -4
  41. package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewNFTs.js.map +1 -1
  42. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js +2 -2
  43. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js.map +1 -1
  44. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
  45. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
  46. package/dist/cjs/react/web/ui/ConnectWallet/useConnectModal.js +1 -1
  47. package/dist/cjs/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
  48. package/dist/cjs/react/web/wallets/in-app/WalletAuth.js +1 -1
  49. package/dist/cjs/react/web/wallets/in-app/WalletAuth.js.map +1 -1
  50. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +3 -2
  51. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  52. package/dist/cjs/react/web/wallets/shared/SocialLogin.js +5 -2
  53. package/dist/cjs/react/web/wallets/shared/SocialLogin.js.map +1 -1
  54. package/dist/cjs/storage/upload/mobile.js +1 -1
  55. package/dist/cjs/storage/upload/mobile.js.map +1 -1
  56. package/dist/cjs/utils/contract/parse-abi-params.js +15 -0
  57. package/dist/cjs/utils/contract/parse-abi-params.js.map +1 -1
  58. package/dist/cjs/utils/extensions/airdrop/fetch-proofs-erc1155.js +1 -1
  59. package/dist/cjs/utils/extensions/airdrop/fetch-proofs-erc1155.js.map +1 -1
  60. package/dist/cjs/utils/extensions/airdrop/fetch-proofs-erc20.js +1 -1
  61. package/dist/cjs/utils/extensions/airdrop/fetch-proofs-erc20.js.map +1 -1
  62. package/dist/cjs/utils/extensions/airdrop/fetch-proofs-erc721.js +1 -1
  63. package/dist/cjs/utils/extensions/airdrop/fetch-proofs-erc721.js.map +1 -1
  64. package/dist/cjs/utils/extensions/drops/fetch-proofs-for-claimers.js +1 -1
  65. package/dist/cjs/utils/extensions/drops/fetch-proofs-for-claimers.js.map +1 -1
  66. package/dist/cjs/utils/fetch.js +2 -1
  67. package/dist/cjs/utils/fetch.js.map +1 -1
  68. package/dist/cjs/utils/nft/fetchTokenMetadata.js +1 -1
  69. package/dist/cjs/utils/nft/fetchTokenMetadata.js.map +1 -1
  70. package/dist/cjs/version.js +1 -1
  71. package/dist/cjs/version.js.map +1 -1
  72. package/dist/cjs/wallets/in-app/core/authentication/getLoginPath.js +8 -7
  73. package/dist/cjs/wallets/in-app/core/authentication/getLoginPath.js.map +1 -1
  74. package/dist/cjs/wallets/in-app/core/authentication/types.js.map +1 -1
  75. package/dist/cjs/wallets/in-app/core/wallet/index.js +2 -2
  76. package/dist/cjs/wallets/in-app/core/wallet/index.js.map +1 -1
  77. package/dist/cjs/wallets/in-app/native/auth/native-auth.js +1 -1
  78. package/dist/cjs/wallets/in-app/native/helpers/auth/middleware.js +3 -3
  79. package/dist/cjs/wallets/in-app/native/helpers/auth/middleware.js.map +1 -1
  80. package/dist/cjs/wallets/in-app/native/helpers/storage/local.js +1 -1
  81. package/dist/cjs/wallets/in-app/native/helpers/storage/local.js.map +1 -1
  82. package/dist/cjs/wallets/in-app/native/helpers/wallet/retrieval.js +1 -1
  83. package/dist/cjs/wallets/in-app/native/helpers/wallet/retrieval.js.map +1 -1
  84. package/dist/cjs/wallets/in-app/web/lib/auth/index.js +3 -2
  85. package/dist/cjs/wallets/in-app/web/lib/auth/index.js.map +1 -1
  86. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js +4 -4
  87. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  88. package/dist/cjs/wallets/in-app/web/lib/web-connector.js +5 -3
  89. package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
  90. package/dist/cjs/wallets/smart/index.js +2 -2
  91. package/dist/cjs/wallets/smart/index.js.map +1 -1
  92. package/dist/cjs/wallets/smart/lib/constants.js +6 -0
  93. package/dist/cjs/wallets/smart/lib/constants.js.map +1 -1
  94. package/dist/cjs/wallets/utils/chains.js +1 -1
  95. package/dist/cjs/wallets/utils/chains.js.map +1 -1
  96. package/dist/cjs/wallets/wallet-connect/receiver/index.js +1 -1
  97. package/dist/cjs/wallets/wallet-connect/receiver/index.js.map +1 -1
  98. package/dist/esm/auth/verify-hash.js +1 -1
  99. package/dist/esm/auth/verify-hash.js.map +1 -1
  100. package/dist/esm/cli/commands/generate/generate.js +8 -8
  101. package/dist/esm/cli/commands/generate/generate.js.map +1 -1
  102. package/dist/esm/contract/actions/resolve-abi.js +1 -1
  103. package/dist/esm/contract/actions/resolve-abi.js.map +1 -1
  104. package/dist/esm/contract/verification/constructor-params.js +1 -1
  105. package/dist/esm/contract/verification/constructor-params.js.map +1 -1
  106. package/dist/esm/exports/react.js +1 -0
  107. package/dist/esm/exports/react.js.map +1 -1
  108. package/dist/esm/extensions/erc20/read/getCurrencyMetadata.js +1 -1
  109. package/dist/esm/extensions/erc20/read/getCurrencyMetadata.js.map +1 -1
  110. package/dist/esm/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js.map +1 -1
  111. package/dist/esm/extensions/vote/read/proposalExists.js +1 -1
  112. package/dist/esm/extensions/vote/read/proposalExists.js.map +1 -1
  113. package/dist/esm/react/core/design-system/index.js +4 -4
  114. package/dist/esm/react/core/design-system/index.js.map +1 -1
  115. package/dist/esm/react/core/hooks/contract/useReadContract.js +4 -0
  116. package/dist/esm/react/core/hooks/contract/useReadContract.js.map +1 -1
  117. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +1 -1
  118. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  119. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js +1 -1
  120. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  121. package/dist/esm/react/core/hooks/wallets/useSendToken.js +1 -1
  122. package/dist/esm/react/core/hooks/wallets/useSendToken.js.map +1 -1
  123. package/dist/esm/react/native/ui/components/RNImage.js +8 -2
  124. package/dist/esm/react/native/ui/components/RNImage.js.map +1 -1
  125. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
  126. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  127. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +10 -4
  128. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  129. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModal.js +1 -1
  130. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModal.js.map +1 -1
  131. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModalContent.js +1 -1
  132. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModalContent.js.map +1 -1
  133. package/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js +4 -2
  134. package/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js.map +1 -1
  135. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +1 -1
  136. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  137. package/dist/esm/react/web/ui/ConnectWallet/screens/ViewNFTs.js +10 -4
  138. package/dist/esm/react/web/ui/ConnectWallet/screens/ViewNFTs.js.map +1 -1
  139. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js +2 -2
  140. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js.map +1 -1
  141. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
  142. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
  143. package/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js +1 -1
  144. package/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
  145. package/dist/esm/react/web/wallets/in-app/WalletAuth.js +1 -1
  146. package/dist/esm/react/web/wallets/in-app/WalletAuth.js.map +1 -1
  147. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +3 -2
  148. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  149. package/dist/esm/react/web/wallets/shared/SocialLogin.js +5 -2
  150. package/dist/esm/react/web/wallets/shared/SocialLogin.js.map +1 -1
  151. package/dist/esm/storage/upload/mobile.js +1 -1
  152. package/dist/esm/storage/upload/mobile.js.map +1 -1
  153. package/dist/esm/utils/contract/parse-abi-params.js +15 -0
  154. package/dist/esm/utils/contract/parse-abi-params.js.map +1 -1
  155. package/dist/esm/utils/extensions/airdrop/fetch-proofs-erc1155.js +1 -1
  156. package/dist/esm/utils/extensions/airdrop/fetch-proofs-erc1155.js.map +1 -1
  157. package/dist/esm/utils/extensions/airdrop/fetch-proofs-erc20.js +1 -1
  158. package/dist/esm/utils/extensions/airdrop/fetch-proofs-erc20.js.map +1 -1
  159. package/dist/esm/utils/extensions/airdrop/fetch-proofs-erc721.js +1 -1
  160. package/dist/esm/utils/extensions/airdrop/fetch-proofs-erc721.js.map +1 -1
  161. package/dist/esm/utils/extensions/drops/fetch-proofs-for-claimers.js +1 -1
  162. package/dist/esm/utils/extensions/drops/fetch-proofs-for-claimers.js.map +1 -1
  163. package/dist/esm/utils/fetch.js +2 -1
  164. package/dist/esm/utils/fetch.js.map +1 -1
  165. package/dist/esm/utils/nft/fetchTokenMetadata.js +1 -1
  166. package/dist/esm/utils/nft/fetchTokenMetadata.js.map +1 -1
  167. package/dist/esm/version.js +1 -1
  168. package/dist/esm/version.js.map +1 -1
  169. package/dist/esm/wallets/in-app/core/authentication/getLoginPath.js +8 -7
  170. package/dist/esm/wallets/in-app/core/authentication/getLoginPath.js.map +1 -1
  171. package/dist/esm/wallets/in-app/core/authentication/types.js.map +1 -1
  172. package/dist/esm/wallets/in-app/core/wallet/index.js +2 -2
  173. package/dist/esm/wallets/in-app/core/wallet/index.js.map +1 -1
  174. package/dist/esm/wallets/in-app/native/auth/native-auth.js +1 -1
  175. package/dist/esm/wallets/in-app/native/helpers/auth/middleware.js +3 -3
  176. package/dist/esm/wallets/in-app/native/helpers/auth/middleware.js.map +1 -1
  177. package/dist/esm/wallets/in-app/native/helpers/storage/local.js +1 -1
  178. package/dist/esm/wallets/in-app/native/helpers/storage/local.js.map +1 -1
  179. package/dist/esm/wallets/in-app/native/helpers/wallet/retrieval.js +1 -1
  180. package/dist/esm/wallets/in-app/native/helpers/wallet/retrieval.js.map +1 -1
  181. package/dist/esm/wallets/in-app/web/lib/auth/index.js +3 -2
  182. package/dist/esm/wallets/in-app/web/lib/auth/index.js.map +1 -1
  183. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js +4 -4
  184. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  185. package/dist/esm/wallets/in-app/web/lib/web-connector.js +5 -3
  186. package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
  187. package/dist/esm/wallets/smart/index.js +2 -2
  188. package/dist/esm/wallets/smart/index.js.map +1 -1
  189. package/dist/esm/wallets/smart/lib/constants.js +6 -0
  190. package/dist/esm/wallets/smart/lib/constants.js.map +1 -1
  191. package/dist/esm/wallets/utils/chains.js +1 -1
  192. package/dist/esm/wallets/utils/chains.js.map +1 -1
  193. package/dist/esm/wallets/wallet-connect/receiver/index.js +1 -1
  194. package/dist/esm/wallets/wallet-connect/receiver/index.js.map +1 -1
  195. package/dist/types/exports/react.d.ts +1 -0
  196. package/dist/types/exports/react.d.ts.map +1 -1
  197. package/dist/types/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.d.ts.map +1 -1
  198. package/dist/types/react/core/design-system/index.d.ts.map +1 -1
  199. package/dist/types/react/core/hooks/connection/ConnectEmbedProps.d.ts +9 -0
  200. package/dist/types/react/core/hooks/connection/ConnectEmbedProps.d.ts.map +1 -1
  201. package/dist/types/react/native/ui/components/RNImage.d.ts.map +1 -1
  202. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  203. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
  204. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectModal.d.ts +0 -1
  205. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectModal.d.ts.map +1 -1
  206. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectModalContent.d.ts +1 -1
  207. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectModalContent.d.ts.map +1 -1
  208. package/dist/types/react/web/ui/ConnectWallet/WalletSelector.d.ts +1 -1
  209. package/dist/types/react/web/ui/ConnectWallet/WalletSelector.d.ts.map +1 -1
  210. package/dist/types/react/web/ui/ConnectWallet/screens/ViewNFTs.d.ts.map +1 -1
  211. package/dist/types/react/web/ui/ConnectWallet/useConnectModal.d.ts.map +1 -1
  212. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
  213. package/dist/types/react/web/wallets/shared/SocialLogin.d.ts.map +1 -1
  214. package/dist/types/utils/contract/parse-abi-params.d.ts.map +1 -1
  215. package/dist/types/utils/fetch.d.ts.map +1 -1
  216. package/dist/types/version.d.ts +1 -1
  217. package/dist/types/version.d.ts.map +1 -1
  218. package/dist/types/wallets/ecosystem/types.d.ts +1 -2
  219. package/dist/types/wallets/ecosystem/types.d.ts.map +1 -1
  220. package/dist/types/wallets/in-app/core/authentication/getLoginPath.d.ts +1 -1
  221. package/dist/types/wallets/in-app/core/authentication/getLoginPath.d.ts.map +1 -1
  222. package/dist/types/wallets/in-app/core/authentication/types.d.ts +1 -8
  223. package/dist/types/wallets/in-app/core/authentication/types.d.ts.map +1 -1
  224. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts +1 -1
  225. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts.map +1 -1
  226. package/dist/types/wallets/in-app/core/wallet/index.d.ts.map +1 -1
  227. package/dist/types/wallets/in-app/core/wallet/types.d.ts +1 -5
  228. package/dist/types/wallets/in-app/core/wallet/types.d.ts.map +1 -1
  229. package/dist/types/wallets/in-app/web/lib/auth/index.d.ts.map +1 -1
  230. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts +1 -1
  231. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts.map +1 -1
  232. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts +1 -1
  233. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
  234. package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
  235. package/package.json +1 -1
  236. package/src/auth/verify-hash.ts +1 -1
  237. package/src/cli/commands/generate/generate.ts +8 -8
  238. package/src/contract/actions/resolve-abi.ts +1 -1
  239. package/src/contract/verification/constructor-params.ts +1 -1
  240. package/src/exports/react.ts +2 -0
  241. package/src/extensions/erc20/read/getCurrencyMetadata.ts +1 -1
  242. package/src/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.ts +0 -1
  243. package/src/extensions/vote/read/proposalExists.ts +1 -1
  244. package/src/react/core/design-system/index.ts +7 -4
  245. package/src/react/core/hooks/connection/ConnectEmbedProps.ts +12 -0
  246. package/src/react/core/hooks/contract/useReadContract.ts +4 -0
  247. package/src/react/core/hooks/transaction/useSendTransaction.ts +1 -1
  248. package/src/react/core/hooks/wallets/useAutoConnect.ts +1 -1
  249. package/src/react/core/hooks/wallets/useSendToken.ts +1 -1
  250. package/src/react/core/utils/timeoutPromise.test.ts +1 -1
  251. package/src/react/native/ui/components/RNImage.tsx +11 -2
  252. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +0 -1
  253. package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +20 -6
  254. package/src/react/web/ui/ConnectWallet/Modal/ConnectModal.tsx +1 -2
  255. package/src/react/web/ui/ConnectWallet/Modal/ConnectModalContent.tsx +2 -2
  256. package/src/react/web/ui/ConnectWallet/WalletSelector.tsx +5 -3
  257. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +1 -1
  258. package/src/react/web/ui/ConnectWallet/screens/ViewNFTs.tsx +16 -6
  259. package/src/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.tsx +2 -2
  260. package/src/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.tsx +1 -1
  261. package/src/react/web/ui/ConnectWallet/useConnectModal.tsx +0 -1
  262. package/src/react/web/wallets/in-app/WalletAuth.tsx +1 -1
  263. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +3 -2
  264. package/src/react/web/wallets/shared/SocialLogin.tsx +7 -2
  265. package/src/storage/upload/mobile.ts +1 -1
  266. package/src/transaction/read-contract.test.ts +30 -0
  267. package/src/utils/contract/parse-abi-params.test.ts +12 -0
  268. package/src/utils/contract/parse-abi-params.ts +17 -0
  269. package/src/utils/encoding/hex.test.ts +40 -0
  270. package/src/utils/extensions/airdrop/fetch-proofs-erc1155.ts +1 -1
  271. package/src/utils/extensions/airdrop/fetch-proofs-erc20.ts +1 -1
  272. package/src/utils/extensions/airdrop/fetch-proofs-erc721.ts +1 -1
  273. package/src/utils/extensions/drops/fetch-proofs-for-claimers.ts +1 -1
  274. package/src/utils/fetch.ts +4 -1
  275. package/src/utils/nft/fetchTokenMetadata.ts +1 -1
  276. package/src/version.ts +1 -1
  277. package/src/wallets/ecosystem/types.ts +1 -2
  278. package/src/wallets/in-app/core/authentication/getLoginPath.ts +11 -9
  279. package/src/wallets/in-app/core/authentication/types.ts +1 -8
  280. package/src/wallets/in-app/core/interfaces/connector.ts +5 -1
  281. package/src/wallets/in-app/core/wallet/index.ts +6 -2
  282. package/src/wallets/in-app/core/wallet/types.ts +1 -5
  283. package/src/wallets/in-app/native/auth/native-auth.ts +1 -1
  284. package/src/wallets/in-app/native/helpers/auth/middleware.ts +3 -3
  285. package/src/wallets/in-app/native/helpers/storage/local.ts +1 -1
  286. package/src/wallets/in-app/native/helpers/wallet/retrieval.ts +1 -1
  287. package/src/wallets/in-app/web/lib/auth/index.ts +7 -2
  288. package/src/wallets/in-app/web/lib/auth/oauth.ts +5 -5
  289. package/src/wallets/in-app/web/lib/web-connector.ts +9 -3
  290. package/src/wallets/smart/index.ts +2 -2
  291. package/src/wallets/smart/lib/constants.ts +6 -0
  292. package/src/wallets/smart/smart-wallet-dev.test.ts +86 -0
  293. package/src/wallets/utils/chains.ts +1 -1
  294. package/src/wallets/wallet-connect/receiver/index.ts +1 -1
@@ -48,10 +48,15 @@ export function SocialLogin(props: {
48
48
 
49
49
  const handleSocialLogin = async () => {
50
50
  const walletConfig = wallet.getConfig();
51
+ const authMode =
52
+ walletConfig && "auth" in walletConfig
53
+ ? walletConfig?.auth?.mode ?? "popup"
54
+ : "popup";
55
+
51
56
  if (
52
57
  walletConfig &&
53
58
  "auth" in walletConfig &&
54
- walletConfig?.auth?.mode === "redirect" &&
59
+ authMode !== "popup" &&
55
60
  !props.isLinking // Redirect not supported for account linking (we need to maintain the aplication state)
56
61
  ) {
57
62
  return loginWithOauthRedirect({
@@ -64,7 +69,7 @@ export function SocialLogin(props: {
64
69
  }
65
70
  : undefined,
66
71
  redirectUrl: walletConfig?.auth?.redirectUrl,
67
- redirectExternally: walletConfig?.auth?.redirectExternally,
72
+ mode: walletConfig?.auth?.mode,
68
73
  });
69
74
  }
70
75
 
@@ -77,7 +77,7 @@ export async function uploadBatchMobile(
77
77
  let body: any;
78
78
  try {
79
79
  body = JSON.parse(xhr.responseText);
80
- } catch (err) {
80
+ } catch {
81
81
  return reject(
82
82
  new Error("Failed to parse JSON from upload response"),
83
83
  );
@@ -31,4 +31,34 @@ describe.runIf(process.env.TW_SECRET_KEY)("transaction: read", () => {
31
31
  );
32
32
  }
33
33
  });
34
+
35
+ it("should work with string and number, not just bigint", async () => {
36
+ /**
37
+ * The following 3 readContracts all result in the same value because
38
+ * the param is still parsed and encoded properly downstream by `numberToHex`
39
+ * See this docs for more context: "../utils/encoding/hex.test.js"
40
+ */
41
+ const [bigintResult, numberResult, stringResult] = await Promise.all([
42
+ readContract({
43
+ contract: DOODLES_CONTRACT,
44
+ method: "function ownerOf(uint256 tokenId) view returns (address)",
45
+ params: [1n],
46
+ }),
47
+ readContract({
48
+ contract: DOODLES_CONTRACT,
49
+ method: "function ownerOf(uint256 tokenId) view returns (address)",
50
+ // @ts-ignore Intentional
51
+ params: [1], // <- supposed to be a bigint
52
+ }),
53
+ readContract({
54
+ contract: DOODLES_CONTRACT,
55
+ method: "function ownerOf(uint256 tokenId) view returns (address)",
56
+ // @ts-ignore Intentional
57
+ params: ["1"], // <- supposed to be a bigint
58
+ }),
59
+ ]);
60
+
61
+ expect(bigintResult === numberResult).toBe(true);
62
+ expect(bigintResult === stringResult).toBe(true);
63
+ });
34
64
  });
@@ -156,5 +156,17 @@ describe("parseAbiParams", () => {
156
156
  const result = parseAbiParams(["bytes64"], [value]);
157
157
  expect(result).toStrictEqual([value]);
158
158
  });
159
+
160
+ it("should return a string for type string", () => {
161
+ const value = "this is a string";
162
+ const result = parseAbiParams(["string"], [value]);
163
+ expect(result).toStrictEqual(["this is a string"]);
164
+ });
165
+
166
+ it("should return the value itself if it falls through to the end", () => {
167
+ const value = { whatever: true };
168
+ const result = parseAbiParams(["non-existent-type"], [value]);
169
+ expect(result).toStrictEqual([{ whatever: true }]);
170
+ });
159
171
  });
160
172
  });
@@ -32,6 +32,17 @@ export function parseAbiParams(
32
32
  constructorParamTypes: string[],
33
33
  constructorParamValues: unknown[],
34
34
  ): Array<string | bigint | boolean> {
35
+ /**
36
+ * Internal Solidity type checklist
37
+ * 1. tuple, array -> JSON.parse | todo: Recursively parse the content
38
+ * 2. uint, int -> bigint
39
+ * 3. address -> string
40
+ * 4. string -> string
41
+ * 5. bytes, bytes32 etc. -> string
42
+ * 6. bool -> boolean
43
+ * >>> Make sure to return the original value at the end of the function <<<
44
+ */
45
+
35
46
  // Make sure they have the same length
36
47
  if (constructorParamTypes.length !== constructorParamValues.length) {
37
48
  throw new Error(
@@ -46,6 +57,9 @@ export function parseAbiParams(
46
57
  }
47
58
  return value;
48
59
  }
60
+ if (type === "string") {
61
+ return String(value);
62
+ }
49
63
  if (type === "bytes32") {
50
64
  if (!isHex(value)) {
51
65
  throw new Error(`${value} is not a valid hex string`);
@@ -86,5 +100,8 @@ export function parseAbiParams(
86
100
  "Invalid boolean value. Expecting either 'true' or 'false'",
87
101
  );
88
102
  }
103
+
104
+ // Return the value here if none of the types match
105
+ return value;
89
106
  });
90
107
  }
@@ -8,4 +8,44 @@ describe("hex.ts", () => {
8
8
  "0x0000000000000000000000000000000000000000000000000000000000000064",
9
9
  );
10
10
  });
11
+
12
+ /**
13
+ * This test is put here as a docs for the method `numberToHex` because:
14
+ *
15
+ * `numberToHex` can still work with number-convertible strings - even tho it only accepts number or bigint
16
+ * because there's is one line of code that's converting the param into bigint anyway
17
+ * ```ts
18
+ * const value = BigInt(value_);
19
+ * ```
20
+ *
21
+ * As a side effect, the following 3 return the same result:
22
+ * ```ts
23
+ * readContract({
24
+ * contract,
25
+ * method: "function tokenURI(uint256 tokenId) returns (string)",
26
+ * params: [1n],
27
+ * })
28
+ *
29
+ * readContract({
30
+ * contract,
31
+ * method: "function tokenURI(uint256 tokenId) returns (string)",
32
+ * // @ts-ignore
33
+ * params: [1],
34
+ * })
35
+ *
36
+ * readContract({
37
+ * contract,
38
+ * method: "function tokenURI(uint256 tokenId) returns (string)",
39
+ * // @ts-ignore
40
+ * params: ["1"],
41
+ * })
42
+ * ```
43
+ */
44
+ it("should work with string !!!!", () => {
45
+ // @ts-ignore Intentional
46
+ const result = numberToHex("100", { size: 32, signed: false });
47
+ expect(result).toBe(
48
+ "0x0000000000000000000000000000000000000000000000000000000000000064",
49
+ );
50
+ });
11
51
  });
@@ -81,7 +81,7 @@ export async function fetchProofsERC1155(options: {
81
81
  uri: constructedShardUri,
82
82
  });
83
83
  shardData = await shard.json();
84
- } catch (e) {
84
+ } catch {
85
85
  // if the file can't be fetched it means claimer not in merkle tree
86
86
  return null;
87
87
  }
@@ -83,7 +83,7 @@ export async function fetchProofsERC20(options: {
83
83
  uri: constructedShardUri,
84
84
  });
85
85
  shardData = await shard.json();
86
- } catch (e) {
86
+ } catch {
87
87
  // if the file can't be fetched it means claimer not in merkle tree
88
88
  return null;
89
89
  }
@@ -81,7 +81,7 @@ export async function fetchProofsERC721(options: {
81
81
  uri: constructedShardUri,
82
82
  });
83
83
  shardData = await shard.json();
84
- } catch (e) {
84
+ } catch {
85
85
  // if the file can't be fetched it means claimer not in merkle tree
86
86
  return null;
87
87
  }
@@ -53,7 +53,7 @@ export async function fetchProofsForClaimer(options: {
53
53
  uri: constructedShardUri,
54
54
  });
55
55
  shardData = await shard.json();
56
- } catch (e) {
56
+ } catch {
57
57
  // if the file can't be fetched it means claimer not in merkle tree
58
58
  return null;
59
59
  }
@@ -111,7 +111,10 @@ export function isThirdwebUrl(url: string): boolean {
111
111
 
112
112
  try {
113
113
  // special case for localhost in development only
114
- if (process.env.NODE_ENV === "development") {
114
+ if (
115
+ process.env.NODE_ENV === "development" ||
116
+ process.env.NODE_ENV === "test"
117
+ ) {
115
118
  if (hostname === "localhost") {
116
119
  IS_THIRDWEB_URL_CACHE.set(url, true);
117
120
  return true;
@@ -63,7 +63,7 @@ export async function fetchTokenMetadata(
63
63
  ),
64
64
  })
65
65
  ).json();
66
- } catch (err) {
66
+ } catch {
67
67
  // otherwise attempt the second format
68
68
  return await (
69
69
  await download({
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.48.1-nightly-886094fbac4f25735438a651cdb0747c6d5de6c5-20240821000347";
1
+ export const version = "5.48.1";
@@ -6,9 +6,8 @@ import type {
6
6
  export type EcosystemWalletCreationOptions = {
7
7
  partnerId?: string;
8
8
  auth?: {
9
- mode?: "popup" | "redirect";
9
+ mode?: "popup" | "redirect" | "window";
10
10
  redirectUrl?: string;
11
- redirectExternally?: boolean;
12
11
  };
13
12
  };
14
13
 
@@ -25,9 +25,17 @@ export const getLoginUrl = ({
25
25
  authOption: AuthOption | "wallet";
26
26
  client: ThirdwebClient;
27
27
  ecosystem?: Ecosystem;
28
- mode?: "popup" | "redirect" | "mobile";
28
+ mode?: "popup" | "redirect" | "window";
29
29
  redirectUrl?: string;
30
30
  }) => {
31
+ if (mode === "popup" && redirectUrl) {
32
+ throw new Error("Redirect URL is not supported for popup mode");
33
+ }
34
+
35
+ if (mode === "window" && !redirectUrl) {
36
+ throw new Error("Redirect URL is required for window mode");
37
+ }
38
+
31
39
  const route = getLoginOptionRoute(authOption);
32
40
  let baseUrl = `${getThirdwebBaseUrl("inAppWallet")}/api/2024-05-05/login/${route}?clientId=${client.clientId}`;
33
41
  if (ecosystem?.partnerId) {
@@ -36,20 +44,14 @@ export const getLoginUrl = ({
36
44
  baseUrl = `${baseUrl}&ecosystemId=${ecosystem.id}`;
37
45
  }
38
46
 
39
- if (mode === "redirect") {
47
+ // Always append redirectUrl to the baseUrl if mode is not popup
48
+ if (mode !== "popup") {
40
49
  const formattedRedirectUrl = new URL(redirectUrl || window.location.href);
41
50
  formattedRedirectUrl.searchParams.set("walletId", ecosystem?.id || "inApp");
42
51
  formattedRedirectUrl.searchParams.set("authProvider", authOption);
43
52
  baseUrl = `${baseUrl}&redirectUrl=${encodeURIComponent(formattedRedirectUrl.toString())}`;
44
53
  }
45
54
 
46
- if (mode === "mobile") {
47
- if (!redirectUrl) {
48
- throw new Error("Redirect URL is required for mobile authentication");
49
- }
50
- baseUrl = `${baseUrl}&redirectUrl=${encodeURIComponent(redirectUrl)}`;
51
- }
52
-
53
55
  return baseUrl;
54
56
  };
55
57
 
@@ -30,6 +30,7 @@ export type SingleStepAuthArgsType =
30
30
  openedWindow?: Window;
31
31
  closeOpenedWindow?: (window: Window) => void;
32
32
  redirectUrl?: string;
33
+ mode?: "redirect" | "popup" | "window";
33
34
  }
34
35
  | { strategy: "jwt"; jwt: string; encryptionKey: string }
35
36
  | { strategy: "auth_endpoint"; payload: string; encryptionKey: string }
@@ -46,14 +47,6 @@ export type SingleStepAuthArgsType =
46
47
  * Optional name of the passkey to create, defaults to a generated name
47
48
  */
48
49
  passkeyName?: string;
49
- /**
50
- * Optional domain, defaults to current window location.
51
- * NOTE: this is required on native platforms.
52
- */
53
- domain?: {
54
- displayName: string;
55
- hostname: string;
56
- };
57
50
  }
58
51
  | {
59
52
  strategy: "wallet";
@@ -15,7 +15,11 @@ export interface InAppConnector {
15
15
  getAccount(): Promise<Account>;
16
16
  preAuthenticate(args: PreAuthArgsType): Promise<void>;
17
17
  // Authenticate generates an auth token, when redirecting it returns void as the user is redirected to a new page and the token is stored in the callback url
18
- authenticateWithRedirect?(strategy: SocialAuthOption): void;
18
+ authenticateWithRedirect?(
19
+ strategy: SocialAuthOption,
20
+ mode?: "redirect" | "popup" | "window",
21
+ redirectUrl?: string,
22
+ ): void;
19
23
  // Login takes an auth token and connects a user with it
20
24
  loginWithAuthToken?(
21
25
  authResult: AuthStoredTokenWithCookieReturnType,
@@ -40,12 +40,16 @@ export async function connectInAppWallet(
40
40
  connector: InAppConnector,
41
41
  ): Promise<[Account, Chain]> {
42
42
  if (
43
- createOptions?.auth?.mode === "redirect" &&
43
+ createOptions?.auth?.mode !== "popup" &&
44
44
  connector.authenticateWithRedirect
45
45
  ) {
46
46
  const strategy = options.strategy;
47
47
  if (socialAuthOptions.includes(strategy as SocialAuthOption)) {
48
- connector.authenticateWithRedirect(strategy as SocialAuthOption);
48
+ connector.authenticateWithRedirect(
49
+ strategy as SocialAuthOption,
50
+ createOptions?.auth?.mode,
51
+ createOptions?.auth?.redirectUrl,
52
+ );
49
53
  }
50
54
  }
51
55
  // If we don't have authenticateWithRedirect then it's likely react native, so the default is to redirect and we can carry on
@@ -36,15 +36,11 @@ export type InAppWalletCreationOptions =
36
36
  /**
37
37
  * Whether to display the social auth prompt in a popup or redirect
38
38
  */
39
- mode?: "popup" | "redirect";
39
+ mode?: "popup" | "redirect" | "window";
40
40
  /**
41
41
  * Optional url to redirect to after authentication
42
42
  */
43
43
  redirectUrl?: string;
44
- /**
45
- * Whether to handle the redirect in a new window
46
- */
47
- redirectExternally?: boolean;
48
44
  /**
49
45
  * The domain of the passkey to use for authentication
50
46
  */
@@ -59,7 +59,7 @@ export async function authenticate(
59
59
  const loginUrl = getLoginUrl({
60
60
  authOption: auth.strategy,
61
61
  client,
62
- mode: "mobile",
62
+ mode: "window",
63
63
  redirectUrl: auth.redirectUrl,
64
64
  });
65
65
 
@@ -64,7 +64,7 @@ export async function postAuth({
64
64
  try {
65
65
  // existing device share
66
66
  await getDeviceShare(client.clientId);
67
- } catch (e) {
67
+ } catch {
68
68
  const _recoveryCode = await getRecoveryCode(
69
69
  storedToken,
70
70
  client,
@@ -116,7 +116,7 @@ export async function postAuthUserManaged(
116
116
  try {
117
117
  // existing device share
118
118
  await getDeviceShare(client.clientId);
119
- } catch (e) {
119
+ } catch {
120
120
  // trying to recreate device share from recovery code to derive wallet
121
121
  try {
122
122
  await setUpShareForNewDevice({
@@ -155,7 +155,7 @@ async function getRecoveryCode(
155
155
  }
156
156
  try {
157
157
  return await getCognitoRecoveryPasswordV2(client);
158
- } catch (e) {
158
+ } catch {
159
159
  return await getCognitoRecoveryPasswordV1(client).catch(() => {
160
160
  throw new Error("Something went wrong getting cognito recovery code");
161
161
  });
@@ -131,7 +131,7 @@ export async function getWalletUserDetails(
131
131
  try {
132
132
  const parsed = JSON.parse(result);
133
133
  return parsed;
134
- } catch (e) {
134
+ } catch {
135
135
  return undefined;
136
136
  }
137
137
  }
@@ -152,7 +152,7 @@ async function getShares<
152
152
  deviceShareToReturn = deviceShare.toRetrieve
153
153
  ? (await getDeviceShare(client.clientId)).deviceShare
154
154
  : undefined;
155
- } catch (e) {
155
+ } catch {
156
156
  throw new Error(DEVICE_SHARE_MISSING_MESSAGE);
157
157
  }
158
158
 
@@ -156,7 +156,12 @@ export async function authenticate(
156
156
  >,
157
157
  ) {
158
158
  const connector = await getInAppWalletConnector(args.client, args.ecosystem);
159
- if (args.redirect && connector.authenticateWithRedirect)
160
- return connector.authenticateWithRedirect(args.strategy);
159
+ const isRedirect = args.redirect || args.mode !== "popup";
160
+ if (isRedirect && connector.authenticateWithRedirect && args.strategy)
161
+ return connector.authenticateWithRedirect(
162
+ args.strategy as SocialAuthOption,
163
+ args.mode,
164
+ args.redirectUrl,
165
+ );
161
166
  return connector.connect(args);
162
167
  }
@@ -31,16 +31,16 @@ export const loginWithOauthRedirect = (options: {
31
31
  client: ThirdwebClient;
32
32
  ecosystem?: Ecosystem;
33
33
  redirectUrl?: string;
34
- redirectExternally?: boolean;
34
+ mode?: "redirect" | "popup" | "window";
35
35
  }): void => {
36
36
  const loginUrl = getLoginUrl({
37
37
  ...options,
38
- mode: "redirect",
38
+ mode: options.mode || "redirect",
39
39
  });
40
- if (options.redirectExternally === true) {
41
- window.open(loginUrl);
42
- } else {
40
+ if (options.mode === "redirect") {
43
41
  window.location.href = loginUrl;
42
+ } else {
43
+ window.open(loginUrl);
44
44
  }
45
45
  };
46
46
 
@@ -150,11 +150,17 @@ export class InAppWebConnector implements InAppConnector {
150
150
  });
151
151
  }
152
152
 
153
- authenticateWithRedirect(strategy: SocialAuthOption): void {
153
+ authenticateWithRedirect(
154
+ strategy: SocialAuthOption,
155
+ mode?: "redirect" | "popup" | "window",
156
+ redirectUrl?: string,
157
+ ): void {
154
158
  loginWithOauthRedirect({
155
159
  authOption: strategy,
156
160
  client: this.wallet.client,
157
161
  ecosystem: this.wallet.ecosystem,
162
+ redirectUrl,
163
+ mode,
158
164
  });
159
165
  }
160
166
 
@@ -308,8 +314,8 @@ export class InAppWebConnector implements InAppConnector {
308
314
  passkeyClient,
309
315
  storage,
310
316
  rp: {
311
- id: args.domain?.hostname ?? window.location.hostname,
312
- name: args.domain?.displayName ?? window.document.title,
317
+ id: this.passkeyDomain ?? window.location.hostname,
318
+ name: this.passkeyDomain ?? window.document.title,
313
319
  },
314
320
  });
315
321
  }
@@ -261,7 +261,7 @@ async function createSmartAccount(
261
261
  params: [originalMsgHash],
262
262
  });
263
263
  factorySupports712 = true;
264
- } catch (e) {
264
+ } catch {
265
265
  // ignore
266
266
  }
267
267
 
@@ -349,7 +349,7 @@ async function createSmartAccount(
349
349
  params: [originalMsgHash],
350
350
  });
351
351
  factorySupports712 = true;
352
- } catch (e) {
352
+ } catch {
353
353
  // ignore
354
354
  }
355
355
 
@@ -19,6 +19,9 @@ export const MANAGED_ACCOUNT_GAS_BUFFER = 50000n;
19
19
  */
20
20
  export const getDefaultBundlerUrl = (chain: Chain) => {
21
21
  const domain = getThirdwebDomains().bundler;
22
+ if (domain.startsWith("localhost:")) {
23
+ return `http://${domain}?chain=${chain.id}`;
24
+ }
22
25
  return `https://${chain.id}.${domain}/`;
23
26
  };
24
27
 
@@ -27,5 +30,8 @@ export const getDefaultBundlerUrl = (chain: Chain) => {
27
30
  */
28
31
  export const getDefaultPaymasterUrl = (chain: Chain) => {
29
32
  const domain = getThirdwebDomains().bundler;
33
+ if (domain.startsWith("localhost:")) {
34
+ return `http://${domain}?chain=${chain.id}`;
35
+ }
30
36
  return `https://${chain.id}.${domain}/`;
31
37
  };
@@ -0,0 +1,86 @@
1
+ import { beforeAll, describe, expect, it } from "vitest";
2
+ import { TEST_CLIENT } from "../../../test/src/test-clients.js";
3
+ import { arbitrumSepolia } from "../../chains/chain-definitions/arbitrum-sepolia.js";
4
+ import { type ThirdwebContract, getContract } from "../../contract/contract.js";
5
+
6
+ import { balanceOf } from "../../extensions/erc1155/__generated__/IERC1155/read/balanceOf.js";
7
+ import { claimTo } from "../../extensions/erc1155/drops/write/claimTo.js";
8
+ import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
9
+ import type { Address } from "../../utils/address.js";
10
+ import { isContractDeployed } from "../../utils/bytecode/is-contract-deployed.js";
11
+ import { setThirdwebDomains } from "../../utils/domains.js";
12
+ import type { Account, Wallet } from "../interfaces/wallet.js";
13
+ import { generateAccount } from "../utils/generateAccount.js";
14
+ import { smartWallet } from "./smart-wallet.js";
15
+
16
+ let wallet: Wallet;
17
+ let smartAccount: Account;
18
+ let smartWalletAddress: Address;
19
+ let personalAccount: Account;
20
+ let accountContract: ThirdwebContract;
21
+
22
+ const chain = arbitrumSepolia;
23
+ const client = TEST_CLIENT;
24
+ const contract = getContract({
25
+ client,
26
+ chain,
27
+ address: "0x6A7a26c9a595E6893C255C9dF0b593e77518e0c3",
28
+ });
29
+ describe.runIf(process.env.TW_SECRET_KEY).skip.sequential(
30
+ "SmartWallet policy tests",
31
+ {
32
+ retry: 0,
33
+ timeout: 240_000,
34
+ },
35
+ () => {
36
+ beforeAll(async () => {
37
+ setThirdwebDomains({
38
+ rpc: "rpc.thirdweb-dev.com",
39
+ storage: "storage.thirdweb-dev.com",
40
+ bundler: "bundler.thirdweb-dev.com",
41
+ });
42
+ personalAccount = await generateAccount({
43
+ client,
44
+ });
45
+ wallet = smartWallet({
46
+ chain,
47
+ gasless: true,
48
+ });
49
+ smartAccount = await wallet.connect({
50
+ client: TEST_CLIENT,
51
+ personalAccount,
52
+ });
53
+ smartWalletAddress = smartAccount.address as Address;
54
+ accountContract = getContract({
55
+ address: smartWalletAddress,
56
+ chain,
57
+ client,
58
+ });
59
+ });
60
+
61
+ it("can connect", async () => {
62
+ expect(smartWalletAddress).toHaveLength(42);
63
+ });
64
+
65
+ it("can execute a tx", async () => {
66
+ const tx = await sendAndConfirmTransaction({
67
+ transaction: claimTo({
68
+ contract,
69
+ quantity: 1n,
70
+ to: smartWalletAddress,
71
+ tokenId: 0n,
72
+ }),
73
+ account: smartAccount,
74
+ });
75
+ expect(tx.transactionHash).toHaveLength(66);
76
+ const isDeployed = await isContractDeployed(accountContract);
77
+ expect(isDeployed).toEqual(true);
78
+ const balance = await balanceOf({
79
+ contract,
80
+ owner: smartWalletAddress,
81
+ tokenId: 0n,
82
+ });
83
+ expect(balance).toEqual(1n);
84
+ });
85
+ },
86
+ );
@@ -16,7 +16,7 @@ export function getValidPublicRPCUrl(chain: ChainMetadata) {
16
16
  url.search = "";
17
17
  }
18
18
  return url.toString();
19
- } catch (e) {
19
+ } catch {
20
20
  return rpc;
21
21
  }
22
22
  });
@@ -344,7 +344,7 @@ export async function disconnectWalletConnectSession(options: {
344
344
  message: "Disconnected",
345
345
  },
346
346
  });
347
- } catch (error) {
347
+ } catch {
348
348
  // ignore, the session doesn't exist already
349
349
  }
350
350
  }