thirdweb 5.50.0 → 5.50.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 (337) hide show
  1. package/dist/cjs/contract/deployment/deploy-via-autofactory.js +11 -0
  2. package/dist/cjs/contract/deployment/deploy-via-autofactory.js.map +1 -1
  3. package/dist/cjs/contract/deployment/publisher.js +3 -0
  4. package/dist/cjs/contract/deployment/publisher.js.map +1 -1
  5. package/dist/cjs/contract/deployment/utils/bootstrap.js +41 -1
  6. package/dist/cjs/contract/deployment/utils/bootstrap.js.map +1 -1
  7. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js +43 -0
  8. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js.map +1 -0
  9. package/dist/cjs/contract/deployment/zksync/zkDeployCreate2Factory.js +55 -0
  10. package/dist/cjs/contract/deployment/zksync/zkDeployCreate2Factory.js.map +1 -0
  11. package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js +86 -0
  12. package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -0
  13. package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js +41 -0
  14. package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js.map +1 -0
  15. package/dist/cjs/exports/extensions/erc4337.js +16 -1
  16. package/dist/cjs/exports/extensions/erc4337.js.map +1 -1
  17. package/dist/cjs/exports/extensions/permissions.js +11 -3
  18. package/dist/cjs/exports/extensions/permissions.js.map +1 -1
  19. package/dist/cjs/exports/extensions/thirdweb.js +9 -2
  20. package/dist/cjs/exports/extensions/thirdweb.js.map +1 -1
  21. package/dist/cjs/extensions/erc4337/account/addAdmin.js +16 -0
  22. package/dist/cjs/extensions/erc4337/account/addAdmin.js.map +1 -1
  23. package/dist/cjs/extensions/erc4337/account/addSessionKey.js +16 -0
  24. package/dist/cjs/extensions/erc4337/account/addSessionKey.js.map +1 -1
  25. package/dist/cjs/extensions/erc4337/account/removeAdmin.js +16 -0
  26. package/dist/cjs/extensions/erc4337/account/removeAdmin.js.map +1 -1
  27. package/dist/cjs/extensions/erc4337/account/removeSessionKey.js +16 -0
  28. package/dist/cjs/extensions/erc4337/account/removeSessionKey.js.map +1 -1
  29. package/dist/cjs/extensions/permissions/read/getAllMembers.js +18 -0
  30. package/dist/cjs/extensions/permissions/read/getAllMembers.js.map +1 -1
  31. package/dist/cjs/extensions/permissions/read/getRoleAdmin.js +3 -0
  32. package/dist/cjs/extensions/permissions/read/getRoleAdmin.js.map +1 -1
  33. package/dist/cjs/extensions/permissions/read/getRoleMember.js +3 -0
  34. package/dist/cjs/extensions/permissions/read/getRoleMember.js.map +1 -1
  35. package/dist/cjs/extensions/permissions/read/getRoleMemberCount.js +3 -0
  36. package/dist/cjs/extensions/permissions/read/getRoleMemberCount.js.map +1 -1
  37. package/dist/cjs/extensions/permissions/read/hasRole.js +3 -0
  38. package/dist/cjs/extensions/permissions/read/hasRole.js.map +1 -1
  39. package/dist/cjs/extensions/permissions/write/{grant.js → grantRole.js} +4 -1
  40. package/dist/cjs/extensions/permissions/write/grantRole.js.map +1 -0
  41. package/dist/cjs/extensions/permissions/write/renounceRole.js +3 -0
  42. package/dist/cjs/extensions/permissions/write/renounceRole.js.map +1 -1
  43. package/dist/cjs/extensions/permissions/write/revokeRole.js +3 -0
  44. package/dist/cjs/extensions/permissions/write/revokeRole.js.map +1 -1
  45. package/dist/cjs/extensions/prebuilts/deploy-published.js +39 -13
  46. package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
  47. package/dist/cjs/extensions/thirdweb/read/contractType.js +49 -0
  48. package/dist/cjs/extensions/thirdweb/read/contractType.js.map +1 -0
  49. package/dist/cjs/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js +33 -0
  50. package/dist/cjs/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js.map +1 -0
  51. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js +6 -5
  52. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  53. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +3 -0
  54. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  55. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +37 -30
  56. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  57. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +22 -17
  58. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  59. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +44 -25
  60. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  61. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +13 -2
  62. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  63. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +2 -2
  64. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  65. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +16 -11
  66. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  67. package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +8 -4
  68. package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
  69. package/dist/cjs/stories/ConnectButton/hideButtons.stories.js +74 -0
  70. package/dist/cjs/stories/ConnectButton/hideButtons.stories.js.map +1 -0
  71. package/dist/cjs/stories/{ConnectButton.stories.js → ConnectButton/themes.stories.js} +4 -5
  72. package/dist/cjs/stories/ConnectButton/themes.stories.js.map +1 -0
  73. package/dist/cjs/transaction/actions/send-transaction.js +8 -0
  74. package/dist/cjs/transaction/actions/send-transaction.js.map +1 -1
  75. package/dist/cjs/transaction/actions/zksync/getEip721Domain.js +4 -3
  76. package/dist/cjs/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  77. package/dist/cjs/transaction/extract-error.js +4 -2
  78. package/dist/cjs/transaction/extract-error.js.map +1 -1
  79. package/dist/cjs/utils/abi/encodeAbiParameters.js +1 -1
  80. package/dist/cjs/utils/abi/encodeAbiParameters.js.map +1 -1
  81. package/dist/cjs/utils/any-evm/deploy-metadata.js +9 -2
  82. package/dist/cjs/utils/any-evm/deploy-metadata.js.map +1 -1
  83. package/dist/cjs/utils/any-evm/zksync/computeDeploymentAddress.js +15 -0
  84. package/dist/cjs/utils/any-evm/zksync/computeDeploymentAddress.js.map +1 -0
  85. package/dist/cjs/utils/any-evm/zksync/constants.js +43 -0
  86. package/dist/cjs/utils/any-evm/zksync/constants.js.map +1 -0
  87. package/dist/cjs/utils/any-evm/zksync/create2Address.js +21 -0
  88. package/dist/cjs/utils/any-evm/zksync/create2Address.js.map +1 -0
  89. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js +10 -0
  90. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js.map +1 -0
  91. package/dist/cjs/version.js +1 -1
  92. package/dist/cjs/wallets/smart/index.js +2 -2
  93. package/dist/cjs/wallets/smart/index.js.map +1 -1
  94. package/dist/cjs/wallets/smart/lib/utils.js +0 -7
  95. package/dist/cjs/wallets/smart/lib/utils.js.map +1 -1
  96. package/dist/esm/contract/deployment/deploy-via-autofactory.js +11 -0
  97. package/dist/esm/contract/deployment/deploy-via-autofactory.js.map +1 -1
  98. package/dist/esm/contract/deployment/publisher.js +3 -0
  99. package/dist/esm/contract/deployment/publisher.js.map +1 -1
  100. package/dist/esm/contract/deployment/utils/bootstrap.js +41 -1
  101. package/dist/esm/contract/deployment/utils/bootstrap.js.map +1 -1
  102. package/dist/esm/contract/deployment/zksync/zkDeployContract.js +40 -0
  103. package/dist/esm/contract/deployment/zksync/zkDeployContract.js.map +1 -0
  104. package/dist/esm/contract/deployment/zksync/zkDeployCreate2Factory.js +52 -0
  105. package/dist/esm/contract/deployment/zksync/zkDeployCreate2Factory.js.map +1 -0
  106. package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js +83 -0
  107. package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -0
  108. package/dist/esm/contract/deployment/zksync/zkDeployProxy.js +38 -0
  109. package/dist/esm/contract/deployment/zksync/zkDeployProxy.js.map +1 -0
  110. package/dist/esm/exports/extensions/erc4337.js +14 -13
  111. package/dist/esm/exports/extensions/erc4337.js.map +1 -1
  112. package/dist/esm/exports/extensions/permissions.js +8 -8
  113. package/dist/esm/exports/extensions/permissions.js.map +1 -1
  114. package/dist/esm/exports/extensions/thirdweb.js +5 -0
  115. package/dist/esm/exports/extensions/thirdweb.js.map +1 -1
  116. package/dist/esm/extensions/erc4337/account/addAdmin.js +16 -1
  117. package/dist/esm/extensions/erc4337/account/addAdmin.js.map +1 -1
  118. package/dist/esm/extensions/erc4337/account/addSessionKey.js +16 -1
  119. package/dist/esm/extensions/erc4337/account/addSessionKey.js.map +1 -1
  120. package/dist/esm/extensions/erc4337/account/removeAdmin.js +16 -1
  121. package/dist/esm/extensions/erc4337/account/removeAdmin.js.map +1 -1
  122. package/dist/esm/extensions/erc4337/account/removeSessionKey.js +16 -1
  123. package/dist/esm/extensions/erc4337/account/removeSessionKey.js.map +1 -1
  124. package/dist/esm/extensions/permissions/read/getAllMembers.js +19 -2
  125. package/dist/esm/extensions/permissions/read/getAllMembers.js.map +1 -1
  126. package/dist/esm/extensions/permissions/read/getRoleAdmin.js +1 -0
  127. package/dist/esm/extensions/permissions/read/getRoleAdmin.js.map +1 -1
  128. package/dist/esm/extensions/permissions/read/getRoleMember.js +1 -0
  129. package/dist/esm/extensions/permissions/read/getRoleMember.js.map +1 -1
  130. package/dist/esm/extensions/permissions/read/getRoleMemberCount.js +1 -0
  131. package/dist/esm/extensions/permissions/read/getRoleMemberCount.js.map +1 -1
  132. package/dist/esm/extensions/permissions/read/hasRole.js +1 -0
  133. package/dist/esm/extensions/permissions/read/hasRole.js.map +1 -1
  134. package/dist/esm/extensions/permissions/write/{grant.js → grantRole.js} +2 -1
  135. package/dist/esm/extensions/permissions/write/grantRole.js.map +1 -0
  136. package/dist/esm/extensions/permissions/write/renounceRole.js +1 -0
  137. package/dist/esm/extensions/permissions/write/renounceRole.js.map +1 -1
  138. package/dist/esm/extensions/permissions/write/revokeRole.js +1 -0
  139. package/dist/esm/extensions/permissions/write/revokeRole.js.map +1 -1
  140. package/dist/esm/extensions/prebuilts/deploy-published.js +39 -13
  141. package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
  142. package/dist/esm/extensions/thirdweb/read/contractType.js +45 -0
  143. package/dist/esm/extensions/thirdweb/read/contractType.js.map +1 -0
  144. package/dist/esm/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js +30 -0
  145. package/dist/esm/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js.map +1 -0
  146. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js +6 -5
  147. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  148. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +3 -0
  149. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  150. package/dist/esm/react/web/ui/ConnectWallet/Details.js +37 -30
  151. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  152. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +23 -18
  153. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  154. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +41 -24
  155. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  156. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +12 -2
  157. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  158. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +2 -2
  159. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  160. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +17 -12
  161. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  162. package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +8 -4
  163. package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
  164. package/dist/esm/stories/ConnectButton/hideButtons.stories.js +71 -0
  165. package/dist/esm/stories/ConnectButton/hideButtons.stories.js.map +1 -0
  166. package/dist/esm/stories/{ConnectButton.stories.js → ConnectButton/themes.stories.js} +4 -5
  167. package/dist/esm/stories/ConnectButton/themes.stories.js.map +1 -0
  168. package/dist/esm/transaction/actions/send-transaction.js +8 -0
  169. package/dist/esm/transaction/actions/send-transaction.js.map +1 -1
  170. package/dist/esm/transaction/actions/zksync/getEip721Domain.js +4 -3
  171. package/dist/esm/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  172. package/dist/esm/transaction/extract-error.js +4 -2
  173. package/dist/esm/transaction/extract-error.js.map +1 -1
  174. package/dist/esm/utils/abi/encodeAbiParameters.js +1 -1
  175. package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
  176. package/dist/esm/utils/any-evm/deploy-metadata.js +9 -2
  177. package/dist/esm/utils/any-evm/deploy-metadata.js.map +1 -1
  178. package/dist/esm/utils/any-evm/zksync/computeDeploymentAddress.js +12 -0
  179. package/dist/esm/utils/any-evm/zksync/computeDeploymentAddress.js.map +1 -0
  180. package/dist/esm/utils/any-evm/zksync/constants.js +40 -0
  181. package/dist/esm/utils/any-evm/zksync/constants.js.map +1 -0
  182. package/dist/esm/utils/any-evm/zksync/create2Address.js +18 -0
  183. package/dist/esm/utils/any-evm/zksync/create2Address.js.map +1 -0
  184. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js +7 -0
  185. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js.map +1 -0
  186. package/dist/esm/version.js +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/utils.js +0 -6
  190. package/dist/esm/wallets/smart/lib/utils.js.map +1 -1
  191. package/dist/types/contract/deployment/deploy-via-autofactory.d.ts.map +1 -1
  192. package/dist/types/contract/deployment/publisher.d.ts.map +1 -1
  193. package/dist/types/contract/deployment/utils/bootstrap.d.ts +4 -2
  194. package/dist/types/contract/deployment/utils/bootstrap.d.ts.map +1 -1
  195. package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts +12 -0
  196. package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts.map +1 -0
  197. package/dist/types/contract/deployment/zksync/zkDeployCreate2Factory.d.ts +6 -0
  198. package/dist/types/contract/deployment/zksync/zkDeployCreate2Factory.d.ts.map +1 -0
  199. package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts +13 -0
  200. package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts.map +1 -0
  201. package/dist/types/contract/deployment/zksync/zkDeployProxy.d.ts +12 -0
  202. package/dist/types/contract/deployment/zksync/zkDeployProxy.d.ts.map +1 -0
  203. package/dist/types/exports/extensions/erc4337.d.ts +14 -13
  204. package/dist/types/exports/extensions/erc4337.d.ts.map +1 -1
  205. package/dist/types/exports/extensions/permissions.d.ts +8 -8
  206. package/dist/types/exports/extensions/permissions.d.ts.map +1 -1
  207. package/dist/types/exports/extensions/thirdweb.d.ts +1 -0
  208. package/dist/types/exports/extensions/thirdweb.d.ts.map +1 -1
  209. package/dist/types/extensions/erc4337/account/addAdmin.d.ts +13 -0
  210. package/dist/types/extensions/erc4337/account/addAdmin.d.ts.map +1 -1
  211. package/dist/types/extensions/erc4337/account/addSessionKey.d.ts +13 -0
  212. package/dist/types/extensions/erc4337/account/addSessionKey.d.ts.map +1 -1
  213. package/dist/types/extensions/erc4337/account/removeAdmin.d.ts +13 -0
  214. package/dist/types/extensions/erc4337/account/removeAdmin.d.ts.map +1 -1
  215. package/dist/types/extensions/erc4337/account/removeSessionKey.d.ts +13 -0
  216. package/dist/types/extensions/erc4337/account/removeSessionKey.d.ts.map +1 -1
  217. package/dist/types/extensions/permissions/read/getAllMembers.d.ts +13 -0
  218. package/dist/types/extensions/permissions/read/getAllMembers.d.ts.map +1 -1
  219. package/dist/types/extensions/permissions/read/getRoleAdmin.d.ts +1 -0
  220. package/dist/types/extensions/permissions/read/getRoleAdmin.d.ts.map +1 -1
  221. package/dist/types/extensions/permissions/read/getRoleMember.d.ts +1 -0
  222. package/dist/types/extensions/permissions/read/getRoleMember.d.ts.map +1 -1
  223. package/dist/types/extensions/permissions/read/getRoleMemberCount.d.ts +1 -0
  224. package/dist/types/extensions/permissions/read/getRoleMemberCount.d.ts.map +1 -1
  225. package/dist/types/extensions/permissions/read/hasRole.d.ts +1 -0
  226. package/dist/types/extensions/permissions/read/hasRole.d.ts.map +1 -1
  227. package/dist/types/extensions/permissions/write/{grant.d.ts → grantRole.d.ts} +2 -1
  228. package/dist/types/extensions/permissions/write/grantRole.d.ts.map +1 -0
  229. package/dist/types/extensions/permissions/write/renounceRole.d.ts +1 -0
  230. package/dist/types/extensions/permissions/write/renounceRole.d.ts.map +1 -1
  231. package/dist/types/extensions/permissions/write/revokeRole.d.ts +1 -0
  232. package/dist/types/extensions/permissions/write/revokeRole.d.ts.map +1 -1
  233. package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
  234. package/dist/types/extensions/thirdweb/read/contractType.d.ts +31 -0
  235. package/dist/types/extensions/thirdweb/read/contractType.d.ts.map +1 -0
  236. package/dist/types/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.d.ts +61 -0
  237. package/dist/types/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.d.ts.map +1 -0
  238. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts +18 -0
  239. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts.map +1 -1
  240. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts +6 -5
  241. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  242. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +3 -0
  243. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  244. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  245. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts +28 -7
  246. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
  247. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts +6 -0
  248. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
  249. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.d.ts +0 -1
  250. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.d.ts.map +1 -1
  251. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts.map +1 -1
  252. package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/index.d.ts.map +1 -1
  253. package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/types.d.ts +8 -5
  254. package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/types.d.ts.map +1 -1
  255. package/dist/types/stories/ConnectButton/hideButtons.stories.d.ts +23 -0
  256. package/dist/types/stories/ConnectButton/hideButtons.stories.d.ts.map +1 -0
  257. package/dist/types/stories/{ConnectButton.stories.d.ts → ConnectButton/themes.stories.d.ts} +3 -4
  258. package/dist/types/stories/ConnectButton/themes.stories.d.ts.map +1 -0
  259. package/dist/types/transaction/actions/send-transaction.d.ts.map +1 -1
  260. package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts.map +1 -1
  261. package/dist/types/transaction/extract-error.d.ts.map +1 -1
  262. package/dist/types/utils/any-evm/deploy-metadata.d.ts.map +1 -1
  263. package/dist/types/utils/any-evm/zksync/computeDeploymentAddress.d.ts +11 -0
  264. package/dist/types/utils/any-evm/zksync/computeDeploymentAddress.d.ts.map +1 -0
  265. package/dist/types/utils/any-evm/zksync/constants.d.ts +29 -0
  266. package/dist/types/utils/any-evm/zksync/constants.d.ts.map +1 -0
  267. package/dist/types/utils/any-evm/zksync/create2Address.d.ts +9 -0
  268. package/dist/types/utils/any-evm/zksync/create2Address.d.ts.map +1 -0
  269. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts +3 -0
  270. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts.map +1 -0
  271. package/dist/types/utils/domains.d.ts +1 -1
  272. package/dist/types/version.d.ts +1 -1
  273. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  274. package/dist/types/wallets/smart/lib/utils.d.ts +0 -2
  275. package/dist/types/wallets/smart/lib/utils.d.ts.map +1 -1
  276. package/package.json +1 -1
  277. package/src/contract/deployment/deploy-via-autofactory.ts +13 -0
  278. package/src/contract/deployment/publisher.ts +5 -0
  279. package/src/contract/deployment/utils/bootstrap.ts +56 -3
  280. package/src/contract/deployment/zksync/zkDeployContract.ts +52 -0
  281. package/src/contract/deployment/zksync/zkDeployCreate2Factory.ts +65 -0
  282. package/src/contract/deployment/zksync/zkDeployDeterministic.ts +106 -0
  283. package/src/contract/deployment/zksync/zkDeployProxy.ts +55 -0
  284. package/src/exports/extensions/erc4337.ts +35 -7
  285. package/src/exports/extensions/permissions.ts +9 -1
  286. package/src/exports/extensions/thirdweb.ts +10 -0
  287. package/src/extensions/erc4337/account/addAdmin.ts +20 -1
  288. package/src/extensions/erc4337/account/addSessionKey.ts +20 -1
  289. package/src/extensions/erc4337/account/removeAdmin.ts +20 -1
  290. package/src/extensions/erc4337/account/removeSessionKey.ts +20 -1
  291. package/src/extensions/permissions/permissions.test.ts +1 -1
  292. package/src/extensions/permissions/read/getAllMembers.ts +30 -2
  293. package/src/extensions/permissions/read/getRoleAdmin.ts +2 -0
  294. package/src/extensions/permissions/read/getRoleMember.ts +2 -0
  295. package/src/extensions/permissions/read/getRoleMemberCount.ts +2 -0
  296. package/src/extensions/permissions/read/hasRole.ts +2 -0
  297. package/src/extensions/permissions/write/{grant.ts → grantRole.ts} +2 -0
  298. package/src/extensions/permissions/write/renounceRole.ts +2 -0
  299. package/src/extensions/permissions/write/revokeRole.ts +2 -0
  300. package/src/extensions/prebuilts/deploy-published.ts +58 -26
  301. package/src/extensions/thirdweb/read/contractType.ts +46 -0
  302. package/src/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.ts +55 -0
  303. package/src/react/core/hooks/connection/ConnectButtonProps.ts +21 -0
  304. package/src/react/web/hooks/transaction/useSendTransaction.tsx +6 -5
  305. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +3 -0
  306. package/src/react/web/ui/ConnectWallet/Details.tsx +108 -73
  307. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +37 -29
  308. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +73 -33
  309. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +37 -2
  310. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.tsx +5 -10
  311. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx +27 -20
  312. package/src/react/web/ui/prebuilt/thirdweb/ClaimButton/index.tsx +8 -4
  313. package/src/react/web/ui/prebuilt/thirdweb/ClaimButton/types.ts +8 -5
  314. package/src/stories/ConnectButton/hideButtons.stories.tsx +83 -0
  315. package/src/stories/{ConnectButton.stories.ts → ConnectButton/themes.stories.tsx} +3 -4
  316. package/src/transaction/actions/send-transaction.ts +11 -0
  317. package/src/transaction/actions/to-serializable-transaction.test.ts +3 -4
  318. package/src/transaction/actions/zksync/getEip721Domain.ts +4 -2
  319. package/src/transaction/actions/zksync/send-eip712-transaction.test.ts +27 -2
  320. package/src/transaction/extract-error.ts +7 -2
  321. package/src/utils/abi/encode-abi-parameters.test.ts +1 -1
  322. package/src/utils/abi/encodeAbiParameters.ts +1 -1
  323. package/src/utils/any-evm/deploy-metadata.ts +11 -2
  324. package/src/utils/any-evm/zksync/computeDeploymentAddress.ts +24 -0
  325. package/src/utils/any-evm/zksync/constants.ts +49 -0
  326. package/src/utils/any-evm/zksync/create2Address.ts +26 -0
  327. package/src/utils/any-evm/zksync/isZkSyncChain.ts +10 -0
  328. package/src/utils/domains.ts +1 -1
  329. package/src/version.ts +1 -1
  330. package/src/wallets/smart/index.ts +2 -3
  331. package/src/wallets/smart/lib/utils.ts +0 -10
  332. package/dist/cjs/extensions/permissions/write/grant.js.map +0 -1
  333. package/dist/cjs/stories/ConnectButton.stories.js.map +0 -1
  334. package/dist/esm/extensions/permissions/write/grant.js.map +0 -1
  335. package/dist/esm/stories/ConnectButton.stories.js.map +0 -1
  336. package/dist/types/extensions/permissions/write/grant.d.ts.map +0 -1
  337. package/dist/types/stories/ConnectButton.stories.d.ts.map +0 -1
@@ -3,6 +3,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
3
3
  import { revokeRole as generatedRevokeRole } from "../__generated__/IPermissions/write/revokeRole.js";
4
4
  import { type RoleInput, getRoleHash } from "../utils.js";
5
5
 
6
+ export { isRevokeRoleSupported } from "../__generated__/IPermissions/write/revokeRole.js";
7
+
6
8
  /**
7
9
  * @extension PERMISSIONS
8
10
  */
@@ -1,12 +1,15 @@
1
- import type { AbiConstructor } from "abitype";
1
+ import type { AbiConstructor, AbiFunction } from "abitype";
2
2
  import type { Chain } from "../../chains/types.js";
3
3
  import type { ThirdwebClient } from "../../client/client.js";
4
4
  import { getContract } from "../../contract/contract.js";
5
5
  import { fetchPublishedContractMetadata } from "../../contract/deployment/publisher.js";
6
+ import { zkDeployContract } from "../../contract/deployment/zksync/zkDeployContract.js";
6
7
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
7
8
  import { simulateTransaction } from "../../transaction/actions/simulate.js";
8
9
  import { prepareContractCall } from "../../transaction/prepare-contract-call.js";
9
10
  import { resolveMethod } from "../../transaction/resolve-method.js";
11
+ import type { CompilerMetadata } from "../../utils/any-evm/deploy-metadata.js";
12
+ import { isZkSyncChain } from "../../utils/any-evm/zksync/isZkSyncChain.js";
10
13
  import type { Account } from "../../wallets/interfaces/wallet.js";
11
14
 
12
15
  /**
@@ -58,26 +61,19 @@ export async function deployPublishedContract(
58
61
  const { compilerMetadata, extendedMetadata } =
59
62
  await fetchPublishedContractMetadata({
60
63
  client,
61
- contractId,
64
+ contractId: isZkSyncChain(chain) ? `${contractId}_ZkSync` : contractId,
62
65
  publisher,
63
66
  version,
64
67
  });
65
68
 
66
69
  switch (extendedMetadata?.deployType) {
67
70
  case "standard": {
68
- const { deployContract } = await import(
69
- "../../contract/deployment/deploy-with-abi.js"
70
- );
71
- return deployContract({
71
+ return directDeploy({
72
72
  account,
73
73
  client,
74
74
  chain,
75
- bytecode: compilerMetadata.bytecode,
76
- constructorAbi:
77
- (compilerMetadata.abi.find(
78
- (i) => i.type === "constructor",
79
- ) as AbiConstructor) || [],
80
- constructorParams: contractParams,
75
+ compilerMetadata,
76
+ contractParams,
81
77
  });
82
78
  }
83
79
  case "autoFactory": {
@@ -97,16 +93,23 @@ export async function deployPublishedContract(
97
93
  constructorParams: implementationConstructorParams || [],
98
94
  publisher,
99
95
  });
96
+ const initializeFunction = compilerMetadata.abi.find(
97
+ (i) =>
98
+ i.type === "function" &&
99
+ i.name ===
100
+ (extendedMetadata.factoryDeploymentData
101
+ ?.implementationInitializerFunction || "initialize"),
102
+ ) as AbiFunction;
103
+ if (!initializeFunction) {
104
+ throw new Error(`Could not find initialize function for ${contractId}`);
105
+ }
100
106
  const initializeTransaction = prepareContractCall({
101
107
  contract: getContract({
102
108
  client,
103
109
  chain,
104
110
  address: implementationContract.address,
105
111
  }),
106
- method: resolveMethod(
107
- extendedMetadata.factoryDeploymentData
108
- ?.implementationInitializerFunction || "initialize",
109
- ),
112
+ method: initializeFunction,
110
113
  params: contractParams,
111
114
  });
112
115
 
@@ -154,19 +157,12 @@ export async function deployPublishedContract(
154
157
  }
155
158
  case undefined: {
156
159
  // Default to standard deployment if none was specified
157
- const { deployContract } = await import(
158
- "../../contract/deployment/deploy-with-abi.js"
159
- );
160
- return deployContract({
160
+ return directDeploy({
161
161
  account,
162
162
  client,
163
163
  chain,
164
- bytecode: compilerMetadata.bytecode,
165
- constructorAbi:
166
- (compilerMetadata.abi.find(
167
- (i) => i.type === "constructor",
168
- ) as AbiConstructor) || [],
169
- constructorParams: contractParams,
164
+ compilerMetadata,
165
+ contractParams,
170
166
  });
171
167
  }
172
168
  default:
@@ -176,3 +172,39 @@ export async function deployPublishedContract(
176
172
  );
177
173
  }
178
174
  }
175
+
176
+ async function directDeploy(options: {
177
+ account: Account;
178
+ client: ThirdwebClient;
179
+ chain: Chain;
180
+ compilerMetadata: CompilerMetadata;
181
+ contractParams: unknown[];
182
+ }) {
183
+ const { account, client, chain, compilerMetadata, contractParams } = options;
184
+
185
+ if (isZkSyncChain(chain)) {
186
+ return zkDeployContract({
187
+ account,
188
+ client,
189
+ chain,
190
+ bytecode: compilerMetadata.bytecode,
191
+ abi: compilerMetadata.abi,
192
+ params: contractParams,
193
+ });
194
+ }
195
+
196
+ const { deployContract } = await import(
197
+ "../../contract/deployment/deploy-with-abi.js"
198
+ );
199
+ return deployContract({
200
+ account,
201
+ client,
202
+ chain,
203
+ bytecode: compilerMetadata.bytecode,
204
+ constructorAbi:
205
+ (compilerMetadata.abi.find(
206
+ (i) => i.type === "constructor",
207
+ ) as AbiConstructor) || [],
208
+ constructorParams: contractParams,
209
+ });
210
+ }
@@ -0,0 +1,46 @@
1
+ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
+ import { hexToString } from "../../../utils/encoding/hex.js";
3
+ import * as ContractTypeGenerated from "../__generated__/IThirdwebContract/read/contractType.js";
4
+
5
+ /**
6
+ * Checks if the `contractType` method is supported by the given contract.
7
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
8
+ * @returns A boolean indicating if the `contractType` method is supported.
9
+ * @extension THIRDWEB
10
+ * @example
11
+ * ```ts
12
+ * import { isContractTypeSupported } from "thirdweb/extensions/thirdweb";
13
+ *
14
+ * const supported = isContractTypeSupported(["0x..."]);
15
+ * ```
16
+ */
17
+ export function isContractTypeSupported(availableSelectors: string[]) {
18
+ return ContractTypeGenerated.isContractTypeSupported(availableSelectors);
19
+ }
20
+
21
+ /**
22
+ * Calls the "contractType" function on the contract.
23
+ * @param options - The options for the contractType function.
24
+ * @returns The parsed result of the function call.
25
+ * @extension THIRDWEB
26
+ * @example
27
+ * ```ts
28
+ * import { contractType } from "thirdweb/extensions/thirdweb";
29
+ *
30
+ * const result = await contractType({
31
+ * contract,
32
+ * });
33
+ *
34
+ * ```
35
+ */
36
+ export async function contractType(options: BaseTransactionOptions) {
37
+ try {
38
+ const rawContractType = await ContractTypeGenerated.contractType(options);
39
+ const utf8 = hexToString(rawContractType);
40
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: required here
41
+ return utf8.replace(/\x00/g, "") || "custom";
42
+ } catch {
43
+ // backwards compat, if this fails for any reason we assume it's a custom contract
44
+ return "custom";
45
+ }
46
+ }
@@ -0,0 +1,55 @@
1
+ import { prepareEvent } from "../../../../../event/prepare-event.js";
2
+ import type { AbiParameterToPrimitiveType } from "abitype";
3
+
4
+ /**
5
+ * Represents the filters for the "ContractDeployed" event.
6
+ */
7
+ export type ContractDeployedEventFilters = Partial<{
8
+ deployerAddress: AbiParameterToPrimitiveType<{
9
+ type: "address";
10
+ name: "deployerAddress";
11
+ indexed: true;
12
+ }>;
13
+ bytecodeHash: AbiParameterToPrimitiveType<{
14
+ type: "bytes32";
15
+ name: "bytecodeHash";
16
+ indexed: true;
17
+ }>;
18
+ contractAddress: AbiParameterToPrimitiveType<{
19
+ type: "address";
20
+ name: "contractAddress";
21
+ indexed: true;
22
+ }>;
23
+ }>;
24
+
25
+ /**
26
+ * Creates an event object for the ContractDeployed event.
27
+ * @param filters - Optional filters to apply to the event.
28
+ * @returns The prepared event object.
29
+ * @extension ZKSYNC
30
+ * @example
31
+ * ```ts
32
+ * import { getContractEvents } from "thirdweb";
33
+ * import { contractDeployedEvent } from "thirdweb/extensions/zksync";
34
+ *
35
+ * const events = await getContractEvents({
36
+ * contract,
37
+ * events: [
38
+ * contractDeployedEvent({
39
+ * deployerAddress: ...,
40
+ * bytecodeHash: ...,
41
+ * contractAddress: ...,
42
+ * })
43
+ * ],
44
+ * });
45
+ * ```
46
+ */
47
+ export function contractDeployedEvent(
48
+ filters: ContractDeployedEventFilters = {},
49
+ ) {
50
+ return prepareEvent({
51
+ signature:
52
+ "event ContractDeployed(address indexed deployerAddress, bytes32 indexed bytecodeHash, address indexed contractAddress)",
53
+ filters,
54
+ });
55
+ }
@@ -288,6 +288,27 @@ export type ConnectButton_detailsModalOptions = {
288
288
  * Use custom avatar URL for the connected wallet image in the `ConnectButton` Details Modal, overriding ENS avatar or Blobbie icon.
289
289
  */
290
290
  connectedAccountAvatarUrl?: string;
291
+
292
+ /**
293
+ * Hide the "Send Funds" button in the `ConnectButton` Details Modal.
294
+ *
295
+ * By default the "Send Funds" button is shown.
296
+ */
297
+ hideSendFunds?: boolean;
298
+
299
+ /**
300
+ * Hide the "Receive Funds" button in the `ConnectButton` Details Modal.
301
+ *
302
+ * By default the "Receive Funds" button is shown.
303
+ */
304
+ hideReceiveFunds?: boolean;
305
+
306
+ /**
307
+ * Hide the "Buy Funds" button in the `ConnectButton` Details Modal.
308
+ *
309
+ * By default the "Buy Funds" button is shown.
310
+ */
311
+ hideBuyFunds?: boolean;
291
312
  };
292
313
 
293
314
  /**
@@ -19,7 +19,7 @@ import { TransactionModal } from "../../ui/TransactionButton/TransactionModal.js
19
19
  * Refer to [`SendTransactionConfig`](https://portal.thirdweb.com/references/typescript/v5/SendTransactionConfig) for more details.
20
20
  * @example
21
21
  *
22
- * ### Using a prepared contract call
22
+ * ### Sending a prepared contract call
23
23
  *
24
24
  * ```tsx
25
25
  * import { useSendTransaction } from "thirdweb/react";
@@ -83,11 +83,12 @@ import { TransactionModal } from "../../ui/TransactionButton/TransactionModal.js
83
83
  * const { mutate: sendTx, data: transactionResult } = useSendTransaction();
84
84
  *
85
85
  * const onClick = () => {
86
+ * // Send 0.1 SepoliaETH to an address
86
87
  * const transaction = prepareTransaction({
87
- * contract,
88
- * to: "0x...",
89
- * value: toWei("0.1"),
90
- * }),
88
+ * to: "0x...",
89
+ * value: toWei("0.1"),
90
+ * chain: sepolia,
91
+ * client: thirdwebClient,
91
92
  * });
92
93
  * sendTx(transaction);
93
94
  * };
@@ -544,6 +544,9 @@ function ConnectButtonInner(
544
544
  showAllWallets: props.showAllWallets,
545
545
  walletConnect: props.walletConnect,
546
546
  wallets: props.wallets,
547
+ hideReceiveFunds: props.detailsModal?.hideReceiveFunds,
548
+ hideSendFunds: props.detailsModal?.hideSendFunds,
549
+ hideBuyFunds: props.detailsModal?.hideBuyFunds,
547
550
  }}
548
551
  />
549
552
  );
@@ -373,6 +373,11 @@ function DetailsModal(props: {
373
373
  const avatarSrc =
374
374
  props.detailsModal?.connectedAccountAvatarUrl ?? ensAvatarQuery.data;
375
375
 
376
+ const { hideSendFunds, hideReceiveFunds, hideBuyFunds } =
377
+ props.detailsModal || {};
378
+
379
+ const hideAllButtons = hideSendFunds && hideReceiveFunds && hideBuyFunds;
380
+
376
381
  const avatarContent = (
377
382
  <Container
378
383
  style={{
@@ -438,7 +443,16 @@ function DetailsModal(props: {
438
443
  let content = (
439
444
  <div>
440
445
  <Spacer y="xs" />
441
- <Container p="lg" gap="sm" flex="row" center="y">
446
+ <Container
447
+ px="lg"
448
+ gap="sm"
449
+ flex="row"
450
+ center="y"
451
+ style={{
452
+ paddingTop: spacing.lg,
453
+ paddingBottom: hideAllButtons ? spacing.md : spacing.lg,
454
+ }}
455
+ >
442
456
  {props.detailsModal?.hideSwitchWallet ? (
443
457
  avatarContent
444
458
  ) : (
@@ -481,81 +495,99 @@ function DetailsModal(props: {
481
495
  <InAppWalletUserInfo client={client} locale={locale} />
482
496
  </Container>
483
497
  </Container>
484
- <Container px="lg">
485
- {/* Send, Receive, Swap */}
486
- <Container
487
- style={{
488
- display: "grid",
489
- gridTemplateColumns: "1fr 1fr 1fr",
490
- gap: spacing.xs,
491
- }}
492
- >
493
- <Button
494
- variant="outline"
495
- style={{
496
- fontSize: fontSize.sm,
497
- display: "flex",
498
- gap: spacing.xs,
499
- alignItems: "center",
500
- padding: spacing.sm,
501
- }}
502
- onClick={() => {
503
- setScreen("send");
504
- }}
505
- >
506
- <Container color="secondaryText" flex="row" center="both">
507
- <PaperPlaneIcon
508
- width={iconSize.sm}
509
- height={iconSize.sm}
510
- style={{
511
- transform: "translateY(-10%) rotate(-45deg) ",
512
- }}
513
- />
514
- </Container>
515
-
516
- {locale.send}
517
- </Button>
518
498
 
519
- <Button
520
- variant="outline"
521
- style={{
522
- fontSize: fontSize.sm,
523
- display: "flex",
524
- gap: spacing.xs,
525
- alignItems: "center",
526
- padding: spacing.sm,
527
- }}
528
- onClick={() => {
529
- setScreen("receive");
530
- }}
531
- >
532
- <Container color="secondaryText" flex="row" center="both">
533
- <PinBottomIcon width={iconSize.sm} height={iconSize.sm} />{" "}
499
+ {!hideAllButtons && (
500
+ <>
501
+ <Container px="lg">
502
+ {/* Send, Receive, Swap */}
503
+ <Container
504
+ style={{
505
+ display: "flex",
506
+ gap: spacing.xs,
507
+ }}
508
+ >
509
+ {!hideSendFunds && (
510
+ <Button
511
+ variant="outline"
512
+ style={{
513
+ fontSize: fontSize.sm,
514
+ display: "flex",
515
+ gap: spacing.xs,
516
+ alignItems: "center",
517
+ padding: spacing.sm,
518
+ flex: 1,
519
+ }}
520
+ onClick={() => {
521
+ setScreen("send");
522
+ }}
523
+ >
524
+ <Container color="secondaryText" flex="row" center="both">
525
+ <PaperPlaneIcon
526
+ width={iconSize.sm}
527
+ height={iconSize.sm}
528
+ style={{
529
+ transform: "translateY(-10%) rotate(-45deg) ",
530
+ }}
531
+ />
532
+ </Container>
533
+
534
+ {locale.send}
535
+ </Button>
536
+ )}
537
+
538
+ {!hideReceiveFunds && (
539
+ <Button
540
+ variant="outline"
541
+ style={{
542
+ fontSize: fontSize.sm,
543
+ display: "flex",
544
+ gap: spacing.xs,
545
+ alignItems: "center",
546
+ padding: spacing.sm,
547
+ flex: 1,
548
+ }}
549
+ onClick={() => {
550
+ setScreen("receive");
551
+ }}
552
+ >
553
+ <Container color="secondaryText" flex="row" center="both">
554
+ <PinBottomIcon
555
+ width={iconSize.sm}
556
+ height={iconSize.sm}
557
+ />{" "}
558
+ </Container>
559
+ {locale.receive}{" "}
560
+ </Button>
561
+ )}
562
+
563
+ {!hideBuyFunds && (
564
+ <Button
565
+ variant="outline"
566
+ style={{
567
+ fontSize: fontSize.sm,
568
+ display: "flex",
569
+ gap: spacing.xs,
570
+ alignItems: "center",
571
+ padding: spacing.sm,
572
+ flex: 1,
573
+ }}
574
+ onClick={() => {
575
+ setScreen("buy");
576
+ }}
577
+ >
578
+ <Container color="secondaryText" flex="row" center="both">
579
+ <PlusIcon width={iconSize.sm} height={iconSize.sm} />
580
+ </Container>
581
+ {locale.buy}
582
+ </Button>
583
+ )}
534
584
  </Container>
535
- {locale.receive}{" "}
536
- </Button>
585
+ </Container>
586
+
587
+ <Spacer y="md" />
588
+ </>
589
+ )}
537
590
 
538
- <Button
539
- variant="outline"
540
- style={{
541
- fontSize: fontSize.sm,
542
- display: "flex",
543
- gap: spacing.xs,
544
- alignItems: "center",
545
- padding: spacing.sm,
546
- }}
547
- onClick={() => {
548
- setScreen("buy");
549
- }}
550
- >
551
- <Container color="secondaryText" flex="row" center="both">
552
- <PlusIcon width={iconSize.sm} height={iconSize.sm} />
553
- </Container>
554
- {locale.buy}
555
- </Button>
556
- </Container>
557
- </Container>
558
- <Spacer y="md" />
559
591
  <Container px="md">
560
592
  <Container
561
593
  flex="column"
@@ -1122,6 +1154,9 @@ export type DetailsModalConnectOptions = {
1122
1154
  chains?: Chain[];
1123
1155
  recommendedWallets?: Wallet[];
1124
1156
  showAllWallets?: boolean;
1157
+ hideSendFunds?: boolean;
1158
+ hideReceiveFunds?: boolean;
1159
+ hideBuyFunds?: boolean;
1125
1160
  };
1126
1161
 
1127
1162
  export type UseWalletDetailsModalOptions = {
@@ -59,7 +59,11 @@ import {
59
59
  type PaymentMethods,
60
60
  useEnabledPaymentMethods,
61
61
  } from "./main/useEnabledPaymentMethods.js";
62
- import { useUISelectionStates } from "./main/useUISelectionStates.js";
62
+ import {
63
+ useFiatCurrencySelectionStates,
64
+ useFromTokenSelectionStates,
65
+ useToTokenSelectionStates,
66
+ } from "./main/useUISelectionStates.js";
63
67
  import { openOnrampPopup } from "./openOnRamppopup.js";
64
68
  import { BuyTokenInput } from "./swap/BuyTokenInput.js";
65
69
  import { FiatFees, SwapFees } from "./swap/Fees.js";
@@ -134,33 +138,26 @@ function BuyScreenContent(props: BuyScreenContentProps) {
134
138
  id: "main",
135
139
  });
136
140
 
137
- const [hasEditedAmount, setHasEditedAmount] = useState(false);
138
-
139
- const onDone = useCallback(() => {
140
- setScreen({ id: "main" });
141
- props.onDone();
142
- }, [props.onDone]);
143
-
144
- // UI selection
145
141
  const {
146
142
  tokenAmount,
147
143
  setTokenAmount,
148
144
  toChain,
149
145
  setToChain,
150
146
  deferredTokenAmount,
151
- fromChain,
152
- setFromChain,
153
147
  toToken,
154
148
  setToToken,
155
- fromToken,
156
- setFromToken,
157
- selectedCurrency,
158
- setSelectedCurrency,
159
- } = useUISelectionStates({
149
+ } = useToTokenSelectionStates({
160
150
  payOptions,
161
151
  supportedDestinations,
162
152
  });
163
153
 
154
+ const [hasEditedAmount, setHasEditedAmount] = useState(false);
155
+
156
+ const onDone = useCallback(() => {
157
+ setScreen({ id: "main" });
158
+ props.onDone();
159
+ }, [props.onDone]);
160
+
164
161
  // check if the screen is expanded or not
165
162
 
166
163
  // update supportedSources whenever toToken or toChain is updated
@@ -186,21 +183,24 @@ function BuyScreenContent(props: BuyScreenContentProps) {
186
183
  }
187
184
 
188
185
  const supportedSources = supportedSourcesQuery.data;
189
- if (supportedSources[0]?.chain) {
190
- setFromChain(supportedSources[0]?.chain);
191
- }
192
186
 
193
187
  return createSupportedTokens(
194
188
  supportedSources,
195
189
  payOptions,
196
190
  props.supportedTokens,
197
191
  );
198
- }, [
199
- props.supportedTokens,
200
- supportedSourcesQuery.data,
201
- payOptions,
202
- setFromChain,
203
- ]);
192
+ }, [props.supportedTokens, supportedSourcesQuery.data, payOptions]);
193
+
194
+ const { fromChain, setFromChain, fromToken, setFromToken } =
195
+ useFromTokenSelectionStates({
196
+ payOptions,
197
+ supportedSources: supportedSourcesQuery.data || [],
198
+ });
199
+
200
+ const { selectedCurrency, setSelectedCurrency } =
201
+ useFiatCurrencySelectionStates({
202
+ payOptions,
203
+ });
204
204
 
205
205
  const enabledPaymentMethods = useEnabledPaymentMethods({
206
206
  payOptions: props.payOptions,
@@ -1081,13 +1081,21 @@ function SwapScreenContent(props: {
1081
1081
 
1082
1082
  function showSwapFlow() {
1083
1083
  if (
1084
- (props.payOptions.mode === "transaction" ||
1085
- props.payOptions.mode === "direct_payment") &&
1084
+ props.payOptions.mode === "direct_payment" &&
1085
+ !isNotEnoughBalance &&
1086
+ !swapRequired
1087
+ ) {
1088
+ // same currency, just direct transfer
1089
+ setScreen({
1090
+ id: "transfer-flow",
1091
+ });
1092
+ } else if (
1093
+ props.payOptions.mode === "transaction" &&
1086
1094
  !isNotEnoughBalance &&
1087
1095
  !swapRequired
1088
1096
  ) {
1089
1097
  if (payer.account.address !== receiverAddress) {
1090
- // same currency, just transfer, but from another wallet
1098
+ // needs transfer from another wallet before executing the transaction
1091
1099
  setScreen({
1092
1100
  id: "transfer-flow",
1093
1101
  });
@@ -1130,7 +1138,7 @@ function SwapScreenContent(props: {
1130
1138
  Fees
1131
1139
  </Text>
1132
1140
  <Spacer y="lg" />
1133
- <SwapFees quote={quoteQuery.data} align="left" />
1141
+ <SwapFees quote={quoteQuery.data} />
1134
1142
  </div>
1135
1143
  )}
1136
1144
  </Drawer>