thirdweb 5.83.2-nightly-332536bdee05b6fb3b36d33761381826279b48f6-20250113000321 → 5.84.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 (322) hide show
  1. package/dist/cjs/ai/chat.js +29 -0
  2. package/dist/cjs/ai/chat.js.map +1 -0
  3. package/dist/cjs/ai/common.js +69 -0
  4. package/dist/cjs/ai/common.js.map +1 -0
  5. package/dist/cjs/ai/execute.js +43 -0
  6. package/dist/cjs/ai/execute.js.map +1 -0
  7. package/dist/cjs/ai/index.js +8 -0
  8. package/dist/cjs/ai/index.js.map +1 -0
  9. package/dist/cjs/auth/is-erc6492-signature.js +2 -2
  10. package/dist/cjs/auth/is-erc6492-signature.js.map +1 -1
  11. package/dist/cjs/auth/parse-erc6492-signature.js +10 -4
  12. package/dist/cjs/auth/parse-erc6492-signature.js.map +1 -1
  13. package/dist/cjs/auth/verify-hash.js +12 -11
  14. package/dist/cjs/auth/verify-hash.js.map +1 -1
  15. package/dist/cjs/auth/verify-signature.js +13 -5
  16. package/dist/cjs/auth/verify-signature.js.map +1 -1
  17. package/dist/cjs/auth/verify-typed-data.js +2 -2
  18. package/dist/cjs/auth/verify-typed-data.js.map +1 -1
  19. package/dist/cjs/contract/deployment/utils/create-2-factory.js +4 -3
  20. package/dist/cjs/contract/deployment/utils/create-2-factory.js.map +1 -1
  21. package/dist/cjs/contract/verification/constructor-params.js +5 -12
  22. package/dist/cjs/contract/verification/constructor-params.js.map +1 -1
  23. package/dist/cjs/exports/ai.js +5 -0
  24. package/dist/cjs/exports/ai.js.map +1 -0
  25. package/dist/cjs/exports/utils.js +9 -6
  26. package/dist/cjs/exports/utils.js.map +1 -1
  27. package/dist/cjs/exports/wallets/engine.js +6 -0
  28. package/dist/cjs/exports/wallets/engine.js.map +1 -0
  29. package/dist/cjs/exports/wallets.js +3 -1
  30. package/dist/cjs/exports/wallets.js.map +1 -1
  31. package/dist/cjs/extensions/ens/resolve-l2-name.js +10 -3
  32. package/dist/cjs/extensions/ens/resolve-l2-name.js.map +1 -1
  33. package/dist/cjs/extensions/erc1155/read/getNFTs.js +2 -2
  34. package/dist/cjs/extensions/erc1155/read/getNFTs.js.map +1 -1
  35. package/dist/cjs/extensions/erc1155/write/mintTo.js +2 -2
  36. package/dist/cjs/extensions/erc1155/write/mintTo.js.map +1 -1
  37. package/dist/cjs/extensions/erc1155/write/mintToBatch.js +2 -2
  38. package/dist/cjs/extensions/erc1155/write/mintToBatch.js.map +1 -1
  39. package/dist/cjs/extensions/erc1155/write/sigMint.js +2 -2
  40. package/dist/cjs/extensions/erc1155/write/sigMint.js.map +1 -1
  41. package/dist/cjs/extensions/modules/ClaimableERC1155/setClaimConditions.js +3 -2
  42. package/dist/cjs/extensions/modules/ClaimableERC1155/setClaimConditions.js.map +1 -1
  43. package/dist/cjs/extensions/modules/MintableERC1155/mintWithRole.js +2 -2
  44. package/dist/cjs/extensions/modules/MintableERC1155/mintWithRole.js.map +1 -1
  45. package/dist/cjs/extensions/modules/MintableERC1155/mintWithSignature.js +2 -2
  46. package/dist/cjs/extensions/modules/MintableERC1155/mintWithSignature.js.map +1 -1
  47. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js +10 -131
  48. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  49. package/dist/cjs/react/core/hooks/wallets/useSendToken.js +2 -1
  50. package/dist/cjs/react/core/hooks/wallets/useSendToken.js.map +1 -1
  51. package/dist/cjs/react/native/hooks/wallets/useAutoConnect.js.map +1 -1
  52. package/dist/cjs/react/web/hooks/wallets/useAutoConnect.js +1 -1
  53. package/dist/cjs/react/web/hooks/wallets/useAutoConnect.js.map +1 -1
  54. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +3 -1
  55. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  56. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +2 -1
  57. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  58. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
  59. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
  60. package/dist/cjs/react/web/ui/ConnectWallet/useConnectModal.js +1 -1
  61. package/dist/cjs/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
  62. package/dist/cjs/react/web/wallets/in-app/WalletAuth.js +1 -1
  63. package/dist/cjs/react/web/wallets/in-app/WalletAuth.js.map +1 -1
  64. package/dist/cjs/utils/abi/encodeAbiParameters.js +10 -11
  65. package/dist/cjs/utils/abi/encodeAbiParameters.js.map +1 -1
  66. package/dist/cjs/utils/ens/isValidENSName.js +50 -0
  67. package/dist/cjs/utils/ens/isValidENSName.js.map +1 -0
  68. package/dist/cjs/utils/extensions/drops/convert-quantity.js +2 -2
  69. package/dist/cjs/utils/extensions/drops/convert-quantity.js.map +1 -1
  70. package/dist/cjs/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js +3 -3
  71. package/dist/cjs/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js.map +1 -1
  72. package/dist/cjs/utils/timeoutPromise.js.map +1 -0
  73. package/dist/cjs/version.js +1 -1
  74. package/dist/cjs/version.js.map +1 -1
  75. package/dist/cjs/wallets/connection/autoConnect.js +54 -0
  76. package/dist/cjs/wallets/connection/autoConnect.js.map +1 -0
  77. package/dist/cjs/wallets/connection/autoConnectCore.js +135 -0
  78. package/dist/cjs/wallets/connection/autoConnectCore.js.map +1 -0
  79. package/dist/cjs/wallets/connection/types.js.map +1 -0
  80. package/dist/cjs/{react/web/wallets → wallets}/defaultWallets.js +2 -2
  81. package/dist/cjs/wallets/defaultWallets.js.map +1 -0
  82. package/dist/cjs/wallets/engine/index.js +143 -0
  83. package/dist/cjs/wallets/engine/index.js.map +1 -0
  84. package/dist/cjs/wallets/in-app/web/lib/get-url-token.js +1 -1
  85. package/dist/cjs/wallets/in-app/web/lib/get-url-token.js.map +1 -1
  86. package/dist/cjs/wallets/smart/lib/signing.js +1 -1
  87. package/dist/esm/ai/chat.js +26 -0
  88. package/dist/esm/ai/chat.js.map +1 -0
  89. package/dist/esm/ai/common.js +66 -0
  90. package/dist/esm/ai/common.js.map +1 -0
  91. package/dist/esm/ai/execute.js +40 -0
  92. package/dist/esm/ai/execute.js.map +1 -0
  93. package/dist/esm/ai/index.js +3 -0
  94. package/dist/esm/ai/index.js.map +1 -0
  95. package/dist/esm/auth/is-erc6492-signature.js +2 -2
  96. package/dist/esm/auth/is-erc6492-signature.js.map +1 -1
  97. package/dist/esm/auth/parse-erc6492-signature.js +10 -4
  98. package/dist/esm/auth/parse-erc6492-signature.js.map +1 -1
  99. package/dist/esm/auth/verify-hash.js +12 -11
  100. package/dist/esm/auth/verify-hash.js.map +1 -1
  101. package/dist/esm/auth/verify-signature.js +13 -5
  102. package/dist/esm/auth/verify-signature.js.map +1 -1
  103. package/dist/esm/auth/verify-typed-data.js +2 -2
  104. package/dist/esm/auth/verify-typed-data.js.map +1 -1
  105. package/dist/esm/contract/deployment/utils/create-2-factory.js +4 -3
  106. package/dist/esm/contract/deployment/utils/create-2-factory.js.map +1 -1
  107. package/dist/esm/contract/verification/constructor-params.js +5 -12
  108. package/dist/esm/contract/verification/constructor-params.js.map +1 -1
  109. package/dist/esm/exports/ai.js +2 -0
  110. package/dist/esm/exports/ai.js.map +1 -0
  111. package/dist/esm/exports/utils.js +3 -1
  112. package/dist/esm/exports/utils.js.map +1 -1
  113. package/dist/esm/exports/wallets/engine.js +2 -0
  114. package/dist/esm/exports/wallets/engine.js.map +1 -0
  115. package/dist/esm/exports/wallets.js +1 -0
  116. package/dist/esm/exports/wallets.js.map +1 -1
  117. package/dist/esm/extensions/ens/resolve-l2-name.js +11 -4
  118. package/dist/esm/extensions/ens/resolve-l2-name.js.map +1 -1
  119. package/dist/esm/extensions/erc1155/read/getNFTs.js +1 -1
  120. package/dist/esm/extensions/erc1155/read/getNFTs.js.map +1 -1
  121. package/dist/esm/extensions/erc1155/write/mintTo.js +1 -1
  122. package/dist/esm/extensions/erc1155/write/mintTo.js.map +1 -1
  123. package/dist/esm/extensions/erc1155/write/mintToBatch.js +1 -1
  124. package/dist/esm/extensions/erc1155/write/mintToBatch.js.map +1 -1
  125. package/dist/esm/extensions/erc1155/write/sigMint.js +1 -1
  126. package/dist/esm/extensions/erc1155/write/sigMint.js.map +1 -1
  127. package/dist/esm/extensions/modules/ClaimableERC1155/setClaimConditions.js +2 -1
  128. package/dist/esm/extensions/modules/ClaimableERC1155/setClaimConditions.js.map +1 -1
  129. package/dist/esm/extensions/modules/MintableERC1155/mintWithRole.js +1 -1
  130. package/dist/esm/extensions/modules/MintableERC1155/mintWithRole.js.map +1 -1
  131. package/dist/esm/extensions/modules/MintableERC1155/mintWithSignature.js +1 -1
  132. package/dist/esm/extensions/modules/MintableERC1155/mintWithSignature.js.map +1 -1
  133. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js +10 -130
  134. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  135. package/dist/esm/react/core/hooks/wallets/useSendToken.js +2 -1
  136. package/dist/esm/react/core/hooks/wallets/useSendToken.js.map +1 -1
  137. package/dist/esm/react/native/hooks/wallets/useAutoConnect.js.map +1 -1
  138. package/dist/esm/react/web/hooks/wallets/useAutoConnect.js +1 -1
  139. package/dist/esm/react/web/hooks/wallets/useAutoConnect.js.map +1 -1
  140. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +3 -1
  141. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  142. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +2 -1
  143. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  144. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
  145. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
  146. package/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js +1 -1
  147. package/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
  148. package/dist/esm/react/web/wallets/in-app/WalletAuth.js +1 -1
  149. package/dist/esm/react/web/wallets/in-app/WalletAuth.js.map +1 -1
  150. package/dist/esm/utils/abi/encodeAbiParameters.js +10 -11
  151. package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
  152. package/dist/esm/utils/ens/isValidENSName.js +47 -0
  153. package/dist/esm/utils/ens/isValidENSName.js.map +1 -0
  154. package/dist/esm/utils/extensions/drops/convert-quantity.js +1 -1
  155. package/dist/esm/utils/extensions/drops/convert-quantity.js.map +1 -1
  156. package/dist/esm/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js +1 -1
  157. package/dist/esm/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js.map +1 -1
  158. package/dist/esm/utils/timeoutPromise.js.map +1 -0
  159. package/dist/esm/version.js +1 -1
  160. package/dist/esm/version.js.map +1 -1
  161. package/dist/esm/wallets/connection/autoConnect.js +50 -0
  162. package/dist/esm/wallets/connection/autoConnect.js.map +1 -0
  163. package/dist/esm/wallets/connection/autoConnectCore.js +130 -0
  164. package/dist/esm/wallets/connection/autoConnectCore.js.map +1 -0
  165. package/dist/esm/wallets/connection/types.js.map +1 -0
  166. package/dist/esm/{react/web/wallets → wallets}/defaultWallets.js +2 -2
  167. package/dist/esm/wallets/defaultWallets.js.map +1 -0
  168. package/dist/esm/wallets/engine/index.js +140 -0
  169. package/dist/esm/wallets/engine/index.js.map +1 -0
  170. package/dist/esm/wallets/in-app/web/lib/get-url-token.js +1 -1
  171. package/dist/esm/wallets/in-app/web/lib/get-url-token.js.map +1 -1
  172. package/dist/esm/wallets/smart/lib/signing.js +1 -1
  173. package/dist/types/ai/chat.d.ts +24 -0
  174. package/dist/types/ai/chat.d.ts.map +1 -0
  175. package/dist/types/ai/common.d.ts +22 -0
  176. package/dist/types/ai/common.d.ts.map +1 -0
  177. package/dist/types/ai/execute.d.ts +29 -0
  178. package/dist/types/ai/execute.d.ts.map +1 -0
  179. package/dist/types/ai/index.d.ts +4 -0
  180. package/dist/types/ai/index.d.ts.map +1 -0
  181. package/dist/types/auth/parse-erc6492-signature.d.ts.map +1 -1
  182. package/dist/types/auth/verify-hash.d.ts +2 -2
  183. package/dist/types/auth/verify-hash.d.ts.map +1 -1
  184. package/dist/types/auth/verify-signature.d.ts +6 -3
  185. package/dist/types/auth/verify-signature.d.ts.map +1 -1
  186. package/dist/types/auth/verify-typed-data.d.ts +5 -4
  187. package/dist/types/auth/verify-typed-data.d.ts.map +1 -1
  188. package/dist/types/contract/deployment/utils/create-2-factory.d.ts.map +1 -1
  189. package/dist/types/contract/verification/constructor-params.d.ts +2 -2
  190. package/dist/types/contract/verification/constructor-params.d.ts.map +1 -1
  191. package/dist/types/event/types.d.ts +3 -2
  192. package/dist/types/event/types.d.ts.map +1 -1
  193. package/dist/types/exports/ai.d.ts +2 -0
  194. package/dist/types/exports/ai.d.ts.map +1 -0
  195. package/dist/types/exports/react.d.ts +1 -1
  196. package/dist/types/exports/react.d.ts.map +1 -1
  197. package/dist/types/exports/react.native.d.ts +1 -1
  198. package/dist/types/exports/react.native.d.ts.map +1 -1
  199. package/dist/types/exports/utils.d.ts +2 -1
  200. package/dist/types/exports/utils.d.ts.map +1 -1
  201. package/dist/types/exports/wallets/engine.d.ts +2 -0
  202. package/dist/types/exports/wallets/engine.d.ts.map +1 -0
  203. package/dist/types/exports/wallets.d.ts +2 -0
  204. package/dist/types/exports/wallets.d.ts.map +1 -1
  205. package/dist/types/extensions/ens/resolve-l2-name.d.ts.map +1 -1
  206. package/dist/types/extensions/erc1155/write/mintTo.d.ts +1 -1
  207. package/dist/types/extensions/erc1155/write/mintTo.d.ts.map +1 -1
  208. package/dist/types/extensions/erc1155/write/mintToBatch.d.ts +1 -1
  209. package/dist/types/extensions/erc1155/write/mintToBatch.d.ts.map +1 -1
  210. package/dist/types/extensions/modules/ClaimableERC1155/setClaimConditions.d.ts.map +1 -1
  211. package/dist/types/extensions/modules/MintableERC1155/mintWithRole.d.ts +1 -1
  212. package/dist/types/extensions/modules/MintableERC1155/mintWithRole.d.ts.map +1 -1
  213. package/dist/types/extensions/modules/MintableERC1155/mintWithSignature.d.ts +1 -1
  214. package/dist/types/extensions/modules/MintableERC1155/mintWithSignature.d.ts.map +1 -1
  215. package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts +1 -13
  216. package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  217. package/dist/types/react/core/hooks/wallets/useSendToken.d.ts.map +1 -1
  218. package/dist/types/react/native/hooks/wallets/useAutoConnect.d.ts +1 -1
  219. package/dist/types/react/native/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  220. package/dist/types/react/native/ui/AutoConnect/AutoConnect.d.ts +1 -1
  221. package/dist/types/react/web/hooks/wallets/useAutoConnect.d.ts +1 -1
  222. package/dist/types/react/web/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  223. package/dist/types/react/web/ui/AutoConnect/AutoConnect.d.ts +1 -1
  224. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts +2 -0
  225. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  226. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts +1 -0
  227. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
  228. package/dist/types/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.d.ts.map +1 -1
  229. package/dist/types/react/web/ui/ConnectWallet/useConnectModal.d.ts.map +1 -1
  230. package/dist/types/react/web/wallets/in-app/WalletAuth.d.ts.map +1 -1
  231. package/dist/types/utils/ens/isValidENSName.d.ts +14 -0
  232. package/dist/types/utils/ens/isValidENSName.d.ts.map +1 -0
  233. package/dist/types/utils/timeoutPromise.d.ts.map +1 -0
  234. package/dist/types/version.d.ts +1 -1
  235. package/dist/types/version.d.ts.map +1 -1
  236. package/dist/types/wallets/connection/autoConnect.d.ts +27 -0
  237. package/dist/types/wallets/connection/autoConnect.d.ts.map +1 -0
  238. package/dist/types/wallets/connection/autoConnectCore.d.ts +32 -0
  239. package/dist/types/wallets/connection/autoConnectCore.d.ts.map +1 -0
  240. package/dist/types/{react/core/hooks → wallets}/connection/types.d.ts +5 -5
  241. package/dist/types/wallets/connection/types.d.ts.map +1 -0
  242. package/dist/types/wallets/defaultWallets.d.ts +11 -0
  243. package/dist/types/wallets/defaultWallets.d.ts.map +1 -0
  244. package/dist/types/wallets/engine/index.d.ts +54 -0
  245. package/dist/types/wallets/engine/index.d.ts.map +1 -0
  246. package/dist/types/wallets/smart/lib/signing.d.ts +1 -1
  247. package/package.json +9 -1
  248. package/src/ai/chat.test.ts +31 -0
  249. package/src/ai/chat.ts +26 -0
  250. package/src/ai/common.ts +114 -0
  251. package/src/ai/execute.test.ts +43 -0
  252. package/src/ai/execute.ts +44 -0
  253. package/src/ai/index.ts +3 -0
  254. package/src/auth/is-erc6492-signature.ts +2 -2
  255. package/src/auth/parse-erc6492-signature.ts +10 -4
  256. package/src/auth/verify-hash.ts +16 -20
  257. package/src/auth/verify-signature.test.ts +48 -2
  258. package/src/auth/verify-signature.ts +24 -7
  259. package/src/auth/verify-typed-data.ts +9 -7
  260. package/src/contract/deployment/utils/create-2-factory.ts +4 -3
  261. package/src/contract/verification/constructor-params.ts +8 -15
  262. package/src/event/types.ts +6 -5
  263. package/src/exports/ai.ts +1 -0
  264. package/src/exports/react.native.ts +1 -1
  265. package/src/exports/react.ts +1 -1
  266. package/src/exports/utils.ts +4 -1
  267. package/src/exports/wallets/engine.ts +4 -0
  268. package/src/exports/wallets.ts +2 -0
  269. package/src/extensions/ens/resolve-l2-name.ts +21 -5
  270. package/src/extensions/erc1155/read/getNFTs.ts +1 -1
  271. package/src/extensions/erc1155/write/mintTo.ts +1 -1
  272. package/src/extensions/erc1155/write/mintToBatch.ts +1 -1
  273. package/src/extensions/erc1155/write/sigMint.ts +1 -1
  274. package/src/extensions/modules/ClaimableERC1155/setClaimConditions.ts +2 -1
  275. package/src/extensions/modules/MintableERC1155/mintWithRole.ts +1 -1
  276. package/src/extensions/modules/MintableERC1155/mintWithSignature.ts +1 -1
  277. package/src/react/core/hooks/wallets/useAutoConnect.ts +12 -158
  278. package/src/react/core/hooks/wallets/useAutoConnectCore.test.tsx +1 -31
  279. package/src/react/core/hooks/wallets/useSendToken.ts +2 -1
  280. package/src/react/native/hooks/wallets/useAutoConnect.ts +1 -1
  281. package/src/react/native/ui/AutoConnect/AutoConnect.tsx +1 -1
  282. package/src/react/web/hooks/wallets/useAutoConnect.ts +2 -2
  283. package/src/react/web/ui/AutoConnect/AutoConnect.tsx +1 -1
  284. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +3 -1
  285. package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +2 -1
  286. package/src/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.tsx +1 -1
  287. package/src/react/web/ui/ConnectWallet/useConnectModal.tsx +1 -1
  288. package/src/react/web/wallets/in-app/WalletAuth.tsx +1 -1
  289. package/src/utils/abi/encodeAbiParameters.ts +15 -11
  290. package/src/utils/ens/isValidENSName.test.ts +39 -0
  291. package/src/utils/ens/isValidENSName.ts +54 -0
  292. package/src/utils/extensions/drops/convert-quantity.ts +1 -1
  293. package/src/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.ts +1 -1
  294. package/src/version.ts +1 -1
  295. package/src/wallets/connection/autoConnect.test.ts +67 -0
  296. package/src/wallets/connection/autoConnect.ts +58 -0
  297. package/src/wallets/connection/autoConnectCore.test.ts +403 -0
  298. package/src/wallets/connection/autoConnectCore.ts +184 -0
  299. package/src/{react/core/hooks → wallets}/connection/types.ts +5 -5
  300. package/src/{react/web/wallets → wallets}/defaultWallets.ts +5 -10
  301. package/src/wallets/engine/engine-account.test.ts +69 -0
  302. package/src/wallets/engine/index.ts +198 -0
  303. package/src/wallets/in-app/web/lib/get-url-token.ts +1 -1
  304. package/src/wallets/smart/lib/signing.ts +1 -1
  305. package/src/wallets/smart/smart-wallet-integration.test.ts +1 -0
  306. package/dist/cjs/react/core/hooks/connection/types.js.map +0 -1
  307. package/dist/cjs/react/core/utils/timeoutPromise.js.map +0 -1
  308. package/dist/cjs/react/web/wallets/defaultWallets.js.map +0 -1
  309. package/dist/esm/react/core/hooks/connection/types.js.map +0 -1
  310. package/dist/esm/react/core/utils/timeoutPromise.js.map +0 -1
  311. package/dist/esm/react/web/wallets/defaultWallets.js.map +0 -1
  312. package/dist/types/react/core/hooks/connection/types.d.ts.map +0 -1
  313. package/dist/types/react/core/utils/timeoutPromise.d.ts.map +0 -1
  314. package/dist/types/react/web/wallets/defaultWallets.d.ts +0 -11
  315. package/dist/types/react/web/wallets/defaultWallets.d.ts.map +0 -1
  316. /package/dist/cjs/{react/core/utils → utils}/timeoutPromise.js +0 -0
  317. /package/dist/cjs/{react/core/hooks → wallets}/connection/types.js +0 -0
  318. /package/dist/esm/{react/core/utils → utils}/timeoutPromise.js +0 -0
  319. /package/dist/esm/{react/core/hooks → wallets}/connection/types.js +0 -0
  320. /package/dist/types/{react/core/utils → utils}/timeoutPromise.d.ts +0 -0
  321. /package/src/{react/core/utils → utils}/timeoutPromise.test.ts +0 -0
  322. /package/src/{react/core/utils → utils}/timeoutPromise.ts +0 -0
@@ -0,0 +1,114 @@
1
+ import type { Chain } from "../chains/types.js";
2
+ import { getCachedChain } from "../chains/utils.js";
3
+ import type { ThirdwebClient } from "../client/client.js";
4
+ import {
5
+ type PreparedTransaction,
6
+ prepareTransaction,
7
+ } from "../transaction/prepare-transaction.js";
8
+ import type { Address } from "../utils/address.js";
9
+ import { toBigInt } from "../utils/bigint.js";
10
+ import type { Hex } from "../utils/encoding/hex.js";
11
+ import { getClientFetch } from "../utils/fetch.js";
12
+ import type { Account } from "../wallets/interfaces/wallet.js";
13
+
14
+ const NEBULA_API_URL = "https://nebula-api.thirdweb.com";
15
+
16
+ export type Input = {
17
+ client: ThirdwebClient;
18
+ prompt: string | string[];
19
+ account?: Account;
20
+ context?: {
21
+ chains?: Chain[];
22
+ walletAddresses?: string[];
23
+ contractAddresses?: string[];
24
+ };
25
+ sessionId?: string;
26
+ };
27
+
28
+ export type Output = {
29
+ message: string;
30
+ sessionId: string;
31
+ transactions: PreparedTransaction[];
32
+ };
33
+
34
+ type ApiResponse = {
35
+ message: string;
36
+ session_id: string;
37
+ actions?: {
38
+ type: "init" | "presence" | "sign_transaction";
39
+ source: string;
40
+ data: string;
41
+ }[];
42
+ };
43
+
44
+ export async function nebulaFetch(
45
+ mode: "execute" | "chat",
46
+ input: Input,
47
+ ): Promise<Output> {
48
+ const fetch = getClientFetch(input.client);
49
+ const response = await fetch(`${NEBULA_API_URL}/${mode}`, {
50
+ method: "POST",
51
+ headers: {
52
+ "Content-Type": "application/json",
53
+ },
54
+ body: JSON.stringify({
55
+ message: input.prompt, // TODO: support array of messages
56
+ session_id: input.sessionId,
57
+ ...(input.account
58
+ ? {
59
+ execute_config: {
60
+ mode: "client",
61
+ signer_wallet_address: input.account.address,
62
+ },
63
+ }
64
+ : {}),
65
+ ...(input.context
66
+ ? {
67
+ context_filter: {
68
+ chain_ids:
69
+ input.context.chains?.map((c) => c.id.toString()) || [],
70
+ signer_wallet_address: input.context.walletAddresses || [],
71
+ contract_addresses: input.context.contractAddresses || [],
72
+ },
73
+ }
74
+ : {}),
75
+ }),
76
+ });
77
+ if (!response.ok) {
78
+ const error = await response.text();
79
+ throw new Error(`Nebula API error: ${error}`);
80
+ }
81
+ const data = (await response.json()) as ApiResponse;
82
+
83
+ // parse transactions if present
84
+ let transactions: PreparedTransaction[] = [];
85
+ if (data.actions) {
86
+ transactions = data.actions
87
+ .map((action) => {
88
+ // only parse sign_transaction actions
89
+ if (action.type === "sign_transaction") {
90
+ const tx = JSON.parse(action.data) as {
91
+ chainId: number;
92
+ to: Address | undefined;
93
+ value: Hex;
94
+ data: Hex;
95
+ };
96
+ return prepareTransaction({
97
+ chain: getCachedChain(tx.chainId),
98
+ client: input.client,
99
+ to: tx.to,
100
+ value: tx.value ? toBigInt(tx.value) : undefined,
101
+ data: tx.data,
102
+ });
103
+ }
104
+ return undefined;
105
+ })
106
+ .filter((tx) => tx !== undefined);
107
+ }
108
+
109
+ return {
110
+ message: data.message,
111
+ sessionId: data.session_id,
112
+ transactions,
113
+ };
114
+ }
@@ -0,0 +1,43 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { TEST_CLIENT } from "../../test/src/test-clients.js";
3
+ import { TEST_ACCOUNT_A, TEST_ACCOUNT_B } from "../../test/src/test-wallets.js";
4
+ import { sepolia } from "../chains/chain-definitions/sepolia.js";
5
+ import { getContract } from "../contract/contract.js";
6
+ import * as Nebula from "./index.js";
7
+
8
+ describe("execute", () => {
9
+ it("should execute a tx", async () => {
10
+ await expect(
11
+ Nebula.execute({
12
+ client: TEST_CLIENT,
13
+ prompt: `send 0.0001 ETH to ${TEST_ACCOUNT_B.address}`,
14
+ account: TEST_ACCOUNT_A,
15
+ context: {
16
+ chains: [sepolia],
17
+ walletAddresses: [TEST_ACCOUNT_A.address],
18
+ },
19
+ }),
20
+ ).rejects.toThrow(/insufficient funds for gas/); // shows that the tx was sent
21
+ });
22
+
23
+ // TODO make this work reliably
24
+ it.skip("should execute a contract call", async () => {
25
+ const nftContract = getContract({
26
+ client: TEST_CLIENT,
27
+ chain: sepolia,
28
+ address: "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8",
29
+ });
30
+
31
+ const response = await Nebula.execute({
32
+ client: TEST_CLIENT,
33
+ prompt: `approve 1 token of token id 0 to ${TEST_ACCOUNT_B.address} using the approve function`,
34
+ account: TEST_ACCOUNT_A,
35
+ context: {
36
+ chains: [nftContract.chain],
37
+ walletAddresses: [TEST_ACCOUNT_A.address],
38
+ contractAddresses: [nftContract.address],
39
+ },
40
+ });
41
+ expect(response.transactionHash).toBeDefined();
42
+ });
43
+ });
@@ -0,0 +1,44 @@
1
+ import { sendTransaction } from "../transaction/actions/send-transaction.js";
2
+ import type { SendTransactionResult } from "../transaction/types.js";
3
+ import type { Account } from "../wallets/interfaces/wallet.js";
4
+ import { type Input, nebulaFetch } from "./common.js";
5
+
6
+ /**
7
+ * Execute a transaction based on a prompt.
8
+ *
9
+ * @param input - The input for the transaction.
10
+ * @returns The transaction hash.
11
+ * @beta
12
+ * @nebula
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { Nebula } from "thirdweb/ai";
17
+ *
18
+ * const result = await Nebula.execute({
19
+ * client: TEST_CLIENT,
20
+ * prompt: "send 0.0001 ETH to vitalik.eth",
21
+ * account: TEST_ACCOUNT_A,
22
+ * context: {
23
+ * chains: [sepolia],
24
+ * },
25
+ * });
26
+ * ```
27
+ */
28
+ export async function execute(
29
+ input: Input & { account: Account },
30
+ ): Promise<SendTransactionResult> {
31
+ const result = await nebulaFetch("execute", input);
32
+ // TODO: optionally only return the transaction without executing it?
33
+ if (result.transactions.length === 0) {
34
+ throw new Error(result.message);
35
+ }
36
+ const tx = result.transactions[0];
37
+ if (!tx) {
38
+ throw new Error(result.message);
39
+ }
40
+ return sendTransaction({
41
+ transaction: tx,
42
+ account: input.account,
43
+ });
44
+ }
@@ -0,0 +1,3 @@
1
+ export { chat } from "./chat.js";
2
+ export { execute } from "./execute.js";
3
+ export type { Input, Output } from "./common.js";
@@ -1,4 +1,4 @@
1
- import { sliceHex } from "viem";
1
+ import * as ox__Hex from "ox/Hex";
2
2
  import type { Hex } from "../utils/encoding/hex.js";
3
3
  import { ERC_6492_MAGIC_VALUE } from "./constants.js";
4
4
 
@@ -19,5 +19,5 @@ import { ERC_6492_MAGIC_VALUE } from "./constants.js";
19
19
  * @auth
20
20
  */
21
21
  export function isErc6492Signature(signature: Hex): boolean {
22
- return sliceHex(signature, -32) === ERC_6492_MAGIC_VALUE;
22
+ return ox__Hex.slice(signature, -32) === ERC_6492_MAGIC_VALUE;
23
23
  }
@@ -1,4 +1,6 @@
1
- import { decodeAbiParameters, isErc6492Signature } from "viem";
1
+ import * as ox__AbiParameters from "ox/AbiParameters";
2
+ import * as ox__Address from "ox/Address";
3
+ import { WrappedSignature as ox__WrappedSignature } from "ox/erc6492";
2
4
  import type { Hex } from "../utils/encoding/hex.js";
3
5
  import type { OneOf } from "../utils/type-utils.js";
4
6
  import type { Erc6492Signature } from "./types.js";
@@ -29,13 +31,17 @@ export type ParseErc6492SignatureReturnType = OneOf<
29
31
  export function parseErc6492Signature(
30
32
  signature: Hex,
31
33
  ): ParseErc6492SignatureReturnType {
32
- if (!isErc6492Signature(signature)) {
34
+ if (!ox__WrappedSignature.validate(signature)) {
33
35
  return { signature };
34
36
  }
35
37
 
36
- const [address, data, originalSignature] = decodeAbiParameters(
38
+ const [address, data, originalSignature] = ox__AbiParameters.decode(
37
39
  [{ type: "address" }, { type: "bytes" }, { type: "bytes" }],
38
40
  signature,
39
41
  );
40
- return { address: address, data, signature: originalSignature };
42
+ return {
43
+ address: ox__Address.checksum(address),
44
+ data,
45
+ signature: originalSignature,
46
+ };
41
47
  }
@@ -1,12 +1,8 @@
1
- import {
2
- type Signature,
3
- encodeDeployData,
4
- encodeFunctionData,
5
- isErc6492Signature,
6
- serializeSignature,
7
- universalSignatureValidatorAbi,
8
- universalSignatureValidatorByteCode,
9
- } from "viem";
1
+ import * as ox__Abi from "ox/Abi";
2
+ import * as ox__AbiConstructor from "ox/AbiConstructor";
3
+ import * as ox__AbiFunction from "ox/AbiFunction";
4
+ import * as ox__Signature from "ox/Signature";
5
+ import { WrappedSignature as ox__WrappedSignature } from "ox/erc6492";
10
6
  import type { Chain } from "../chains/types.js";
11
7
  import type { ThirdwebClient } from "../client/client.js";
12
8
  import { type ThirdwebContract, getContract } from "../contract/contract.js";
@@ -20,7 +16,7 @@ import { serializeErc6492Signature } from "./serialize-erc6492-signature.js";
20
16
 
21
17
  export type VerifyHashParams = {
22
18
  hash: Hex;
23
- signature: string | Uint8Array | Signature;
19
+ signature: string | Uint8Array | ox__Signature.Signature;
24
20
  address: string;
25
21
  client: ThirdwebClient;
26
22
  chain: Chain;
@@ -71,7 +67,7 @@ export async function verifyHash({
71
67
  const signatureHex = (() => {
72
68
  if (isHex(signature)) return signature;
73
69
  if (typeof signature === "object" && "r" in signature && "s" in signature)
74
- return serializeSignature(signature);
70
+ return ox__Signature.toHex(signature);
75
71
  if (signature instanceof Uint8Array) return fromBytes(signature, "hex");
76
72
  // We should never hit this but TS doesn't know that
77
73
  throw new Error(
@@ -85,7 +81,7 @@ export async function verifyHash({
85
81
  if (!accountFactory) return signatureHex;
86
82
 
87
83
  // If this sigature was already wrapped for ERC-6492, carry on
88
- if (isErc6492Signature(signatureHex)) return signatureHex;
84
+ if (ox__WrappedSignature.validate(signatureHex)) return signatureHex;
89
85
 
90
86
  // Otherwise, serialize the signature for ERC-6492 validation
91
87
  return serializeErc6492Signature({
@@ -100,23 +96,23 @@ export async function verifyHash({
100
96
  data: Hex;
101
97
  };
102
98
  const zkSyncChain = await isZkSyncChain(chain);
99
+ const abi = ox__Abi.from(ox__WrappedSignature.universalSignatureValidatorAbi);
103
100
  if (zkSyncChain) {
104
101
  // zksync chains dont support deploying code with eth_call
105
102
  // need to call a deployed contract instead
106
103
  verificationData = {
107
104
  to: ZKSYNC_VALIDATOR_ADDRESS,
108
- data: encodeFunctionData({
109
- abi: universalSignatureValidatorAbi,
110
- functionName: "isValidSig",
111
- args: [address, hash, wrappedSignature],
112
- }),
105
+ data: ox__AbiFunction.encodeData(
106
+ ox__AbiFunction.fromAbi(abi, "isValidSig"),
107
+ [address, hash, wrappedSignature],
108
+ ),
113
109
  };
114
110
  } else {
111
+ const validatorConstructor = ox__AbiConstructor.fromAbi(abi);
115
112
  verificationData = {
116
- data: encodeDeployData({
117
- abi: universalSignatureValidatorAbi,
113
+ data: ox__AbiConstructor.encode(validatorConstructor, {
118
114
  args: [address, hash, wrappedSignature],
119
- bytecode: universalSignatureValidatorByteCode,
115
+ bytecode: ox__WrappedSignature.universalSignatureValidatorBytecode,
120
116
  }),
121
117
  };
122
118
  }
@@ -1,10 +1,16 @@
1
+ import * as ox__Bytes from "ox/Bytes";
1
2
  import { describe, expect, it, test } from "vitest";
2
3
  import { FORKED_ETHEREUM_CHAIN } from "../../test/src/chains.js";
3
4
  import { TEST_CLIENT } from "../../test/src/test-clients.js";
4
5
  import { TEST_ACCOUNT_A } from "../../test/src/test-wallets.js";
5
- import { mainnet } from "../chains/chain-definitions/ethereum.js";
6
+ import { ethereum, mainnet } from "../chains/chain-definitions/ethereum.js";
6
7
  import { sepolia } from "../chains/chain-definitions/sepolia.js";
7
- import { verifyEOASignature, verifySignature } from "./verify-signature.js";
8
+ import { smartWallet } from "../wallets/smart/smart-wallet.js";
9
+ import {
10
+ verifyContractWalletSignature,
11
+ verifyEOASignature,
12
+ verifySignature,
13
+ } from "./verify-signature.js";
8
14
 
9
15
  describe("verifyEOASignature", () => {
10
16
  test("should return true for a valid signature", async () => {
@@ -98,3 +104,43 @@ describe.runIf(process.env.TW_SECRET_KEY)(
98
104
  });
99
105
  },
100
106
  );
107
+
108
+ describe.runIf(process.env.TW_SECRET_KEY)(
109
+ "verifyContractWalletSignature",
110
+ async () => {
111
+ const message = "Hakuna matata";
112
+ const wallet = smartWallet({
113
+ chain: ethereum,
114
+ gasless: true,
115
+ });
116
+ const smartAccount = await wallet.connect({
117
+ client: TEST_CLIENT,
118
+ personalAccount: TEST_ACCOUNT_A,
119
+ });
120
+
121
+ test("should verify a smart account signature", async () => {
122
+ const rawSignature = await smartAccount.signMessage({ message });
123
+ const result = await verifyContractWalletSignature({
124
+ signature: rawSignature,
125
+ message,
126
+ address: smartAccount.address,
127
+ chain: ethereum,
128
+ client: TEST_CLIENT,
129
+ });
130
+ expect(result).toBe(true);
131
+ });
132
+
133
+ test("should verify a smart account signature as bytes", async () => {
134
+ const rawSignature = await smartAccount.signMessage({ message });
135
+ const bytesSignature = ox__Bytes.fromHex(rawSignature);
136
+ const result = await verifyContractWalletSignature({
137
+ signature: bytesSignature,
138
+ message,
139
+ address: smartAccount.address,
140
+ chain: ethereum,
141
+ client: TEST_CLIENT,
142
+ });
143
+ expect(result).toBe(true);
144
+ });
145
+ },
146
+ );
@@ -1,4 +1,6 @@
1
- import { type SignableMessage, type Signature, recoverAddress } from "viem";
1
+ import * as ox__Bytes from "ox/Bytes";
2
+ import * as ox__Secp256k1 from "ox/Secp256k1";
3
+ import * as ox__Signature from "ox/Signature";
2
4
  import type { Chain } from "../chains/types.js";
3
5
  import type { ThirdwebClient } from "../client/client.js";
4
6
  import { type Hex, isHex } from "../utils/encoding/hex.js";
@@ -6,12 +8,19 @@ import { hashMessage } from "../utils/hashing/hashMessage.js";
6
8
  import type { Prettify } from "../utils/type-utils.js";
7
9
  import { verifyHash } from "./verify-hash.js";
8
10
 
11
+ type Message = Prettify<
12
+ | string
13
+ | {
14
+ raw: Hex | Uint8Array;
15
+ }
16
+ >;
17
+
9
18
  /**
10
19
  * @auth
11
20
  */
12
21
  export type VerifyEOASignatureParams = {
13
- message: string | SignableMessage;
14
- signature: string | Uint8Array | Signature;
22
+ message: string | Message;
23
+ signature: string | Uint8Array;
15
24
  address: string;
16
25
  };
17
26
 
@@ -39,9 +48,9 @@ export async function verifyEOASignature(options: VerifyEOASignatureParams) {
39
48
  return false;
40
49
  }
41
50
 
42
- const recoveredAddress = await recoverAddress({
43
- hash: messageHash,
44
- signature: options.signature,
51
+ const recoveredAddress = ox__Secp256k1.recoverAddress({
52
+ payload: messageHash,
53
+ signature: ox__Signature.fromHex(options.signature),
45
54
  });
46
55
 
47
56
  if (recoveredAddress.toLowerCase() === options.address.toLowerCase()) {
@@ -103,9 +112,17 @@ export async function verifyContractWalletSignature({
103
112
  accountFactory,
104
113
  }: VerifyContractWalletSignatureParams) {
105
114
  const messageHash = hashMessage(message);
115
+
116
+ const parsedSignature = (() => {
117
+ if (ox__Bytes.validate(signature)) {
118
+ return ox__Bytes.toHex(signature);
119
+ }
120
+ return signature;
121
+ })();
122
+
106
123
  return verifyHash({
107
124
  hash: messageHash,
108
- signature,
125
+ signature: parsedSignature,
109
126
  address,
110
127
  client,
111
128
  chain,
@@ -1,5 +1,5 @@
1
- import type { Signature, TypedData, TypedDataDefinition } from "viem";
2
- import { hashTypedData } from "viem";
1
+ import type * as ox__Signature from "ox/Signature";
2
+ import * as ox__TypedData from "ox/TypedData";
3
3
  import type { Chain } from "../chains/types.js";
4
4
  import type { ThirdwebClient } from "../client/client.js";
5
5
  import type { Hex } from "../utils/encoding/hex.js";
@@ -7,12 +7,14 @@ import type { HashTypedDataParams } from "../utils/hashing/hashTypedData.js";
7
7
  import { type VerifyHashParams, verifyHash } from "./verify-hash.js";
8
8
 
9
9
  export type VerifyTypedDataParams<
10
- typedData extends TypedData | Record<string, unknown> = TypedData,
10
+ typedData extends
11
+ | ox__TypedData.TypedData
12
+ | Record<string, unknown> = ox__TypedData.TypedData,
11
13
  primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
12
14
  > = Omit<VerifyHashParams, "hash"> &
13
- TypedDataDefinition<typedData, primaryType> & {
15
+ ox__TypedData.Definition<typedData, primaryType> & {
14
16
  address: string;
15
- signature: string | Uint8Array | Signature;
17
+ signature: string | Uint8Array | ox__Signature.Signature;
16
18
  client: ThirdwebClient;
17
19
  chain: Chain;
18
20
  accountFactory?: {
@@ -80,7 +82,7 @@ export type VerifyTypedDataParams<
80
82
  * @auth
81
83
  */
82
84
  export async function verifyTypedData<
83
- typedData extends TypedData | Record<string, unknown>,
85
+ typedData extends ox__TypedData.TypedData | Record<string, unknown>,
84
86
  primaryType extends keyof typedData | "EIP712Domain",
85
87
  >({
86
88
  address,
@@ -93,7 +95,7 @@ export async function verifyTypedData<
93
95
  primaryType,
94
96
  types,
95
97
  }: VerifyTypedDataParams<typedData, primaryType>): Promise<boolean> {
96
- const messageHash = hashTypedData({
98
+ const messageHash = ox__TypedData.getSignPayload({
97
99
  message,
98
100
  domain,
99
101
  primaryType,
@@ -1,4 +1,4 @@
1
- import { getContractAddress } from "viem";
1
+ import * as ox__ContractAddress from "ox/ContractAddress";
2
2
  import { getGasPrice } from "../../../gas/get-gas-price.js";
3
3
  import { eth_getBalance } from "../../../rpc/actions/eth_getBalance.js";
4
4
  import { eth_sendRawTransaction } from "../../../rpc/actions/eth_sendRawTransaction.js";
@@ -6,6 +6,7 @@ import { getRpcClient } from "../../../rpc/rpc.js";
6
6
  import { sendTransaction } from "../../../transaction/actions/send-transaction.js";
7
7
  import { waitForReceipt } from "../../../transaction/actions/wait-for-tx-receipt.js";
8
8
  import { prepareTransaction } from "../../../transaction/prepare-transaction.js";
9
+ import { getAddress } from "../../../utils/address.js";
9
10
  import { isEIP155Enforced } from "../../../utils/any-evm/is-eip155-enforced.js";
10
11
  import { getKeylessTransaction } from "../../../utils/any-evm/keyless-transaction.js";
11
12
  import { isContractDeployed } from "../../../utils/bytecode/is-contract-deployed.js";
@@ -226,7 +227,7 @@ async function _getCreate2FactoryDeploymentInfo(
226
227
  },
227
228
  signature: SIGNATURE,
228
229
  });
229
- const create2FactoryAddress = getContractAddress({
230
+ const create2FactoryAddress = ox__ContractAddress.from({
230
231
  from: deploymentTransaction.signerAddress,
231
232
  nonce: 0n,
232
233
  });
@@ -234,7 +235,7 @@ async function _getCreate2FactoryDeploymentInfo(
234
235
  return {
235
236
  ...deploymentTransaction,
236
237
  valueToSend: gasPrice * gas,
237
- predictedAddress: create2FactoryAddress,
238
+ predictedAddress: getAddress(create2FactoryAddress),
238
239
  };
239
240
  }
240
241
 
@@ -1,5 +1,6 @@
1
- import type { Abi } from "abitype";
2
- import { decodeAbiParameters } from "viem";
1
+ import type * as ox__Abi from "ox/Abi";
2
+ import * as ox__AbiConstructor from "ox/AbiConstructor";
3
+ import * as ox__AbiParameters from "ox/AbiParameters";
3
4
  import { eth_getTransactionByHash } from "../../rpc/actions/eth_getTransactionByHash.js";
4
5
  import { getRpcClient } from "../../rpc/rpc.js";
5
6
  import type { ThirdwebContract } from "../contract.js";
@@ -10,19 +11,9 @@ type FetchConstructorParamsOptions = {
10
11
  contract: ThirdwebContract;
11
12
  explorerApiUrl: string;
12
13
  explorerApiKey: string;
13
- abi: Abi;
14
+ abi: ox__Abi.Abi;
14
15
  };
15
16
 
16
- // TODO: move to abi helpers (?)
17
- function extractConstructorParamsFromAbi(abi: Abi) {
18
- for (const input of abi) {
19
- if (input.type === "constructor") {
20
- return input.inputs || [];
21
- }
22
- }
23
- return [];
24
- }
25
-
26
17
  const RequestStatus = {
27
18
  OK: "1",
28
19
  NOTOK: "0",
@@ -37,7 +28,8 @@ const RequestStatus = {
37
28
  export async function fetchConstructorParams(
38
29
  options: FetchConstructorParamsOptions,
39
30
  ): Promise<string> {
40
- const constructorParamTypes = extractConstructorParamsFromAbi(options.abi);
31
+ const abiConstructor = ox__AbiConstructor.fromAbi(options.abi);
32
+ const constructorParamTypes = ox__AbiParameters.from(abiConstructor.inputs);
41
33
  if (constructorParamTypes.length === 0) {
42
34
  return "";
43
35
  }
@@ -114,7 +106,8 @@ export async function fetchConstructorParams(
114
106
  try {
115
107
  // sanity check that the constructor params are valid
116
108
  // TODO: should we sanity check after each attempt?
117
- decodeAbiParameters(constructorParamTypes, `0x${constructorArgs}`);
109
+
110
+ ox__AbiParameters.decode(constructorParamTypes, `0x${constructorArgs}`);
118
111
  } catch {
119
112
  throw new Error(
120
113
  "Verifying this contract requires it to be published. Run `npx thirdweb publish` to publish this contract, then try again.",
@@ -1,5 +1,6 @@
1
1
  import type { AbiParameter, AbiParameterToPrimitiveType } from "abitype";
2
- import type { Hex, LogTopic } from "viem";
2
+ import type * as ox__Hex from "ox/Hex";
3
+ import type { Log as ox__Log } from "ox/Log";
3
4
  import type { Filter, MaybeRequired, Prettify } from "../utils/type-utils.js";
4
5
 
5
6
  //////////////////////////////////////////////////////////////////////
@@ -83,11 +84,11 @@ type _HasUnnamedAbiParameter<TAbiParameters extends readonly AbiParameter[]> =
83
84
  * @internal
84
85
  */
85
86
  type LogTopicType<
86
- TPrimitiveType = Hex,
87
- TTopic extends LogTopic = LogTopic,
88
- > = TTopic extends Hex
87
+ TPrimitiveType = ox__Hex.Hex,
88
+ TTopic extends ox__Log["topics"][0] = ox__Log["topics"][0],
89
+ > = TTopic extends ox__Hex.Hex
89
90
  ? TPrimitiveType
90
- : TTopic extends Hex[]
91
+ : TTopic extends ox__Hex.Hex[]
91
92
  ? TPrimitiveType[]
92
93
  : TTopic extends null
93
94
  ? null
@@ -0,0 +1 @@
1
+ export * as Nebula from "../ai/index.js";
@@ -86,7 +86,7 @@ export {
86
86
 
87
87
  // Components
88
88
  export { AutoConnect } from "../react/native/ui/AutoConnect/AutoConnect.js";
89
- export type { AutoConnectProps } from "../react/core/hooks/connection/types.js";
89
+ export type { AutoConnectProps } from "../wallets/connection/types.js";
90
90
 
91
91
  export { TransactionButton } from "../react/native/ui/transaction/TransactionButton.js";
92
92
  export type { TransactionButtonProps } from "../react/core/hooks/transaction/transaction-button-utils.js";
@@ -121,7 +121,7 @@ export {
121
121
  } from "../react/core/hooks/pay/usePostOnrampQuote.js";
122
122
 
123
123
  export { AutoConnect } from "../react/web/ui/AutoConnect/AutoConnect.js";
124
- export type { AutoConnectProps } from "../react/core/hooks/connection/types.js";
124
+ export type { AutoConnectProps } from "../wallets/connection/types.js";
125
125
 
126
126
  // auth
127
127
  export type { SiweAuthOptions } from "../react/core/hooks/auth/useSiweAuth.js";
@@ -167,7 +167,7 @@ export { stringify } from "../utils/json.js";
167
167
  // ------------------------------------------------
168
168
  // values
169
169
  // ------------------------------------------------
170
- export { maxUint256 } from "viem";
170
+ export { maxUint256 } from "ox/Solidity";
171
171
 
172
172
  // ------------------------------------------------
173
173
  // jwt
@@ -208,3 +208,6 @@ export type {
208
208
 
209
209
  export { shortenLargeNumber } from "../utils/shortenLargeNumber.js";
210
210
  export { formatNumber } from "../utils/formatNumber.js";
211
+
212
+ // ENS
213
+ export { isValidENSName } from "../utils/ens/isValidENSName.js";
@@ -0,0 +1,4 @@
1
+ export {
2
+ type EngineAccountOptions,
3
+ engineAccount,
4
+ } from "../../wallets/engine/index.js";
@@ -161,4 +161,6 @@ export { injectedProvider } from "../wallets/injected/mipdStore.js";
161
161
 
162
162
  export type { ConnectionManager } from "../wallets/manager/index.js";
163
163
 
164
+ export type { AutoConnectProps } from "../wallets/connection/types.js";
165
+ export { autoConnect } from "../wallets/connection/autoConnect.js";
164
166
  export { deploySmartAccount } from "../wallets/smart/lib/signing.js";