thirdweb 5.99.3 → 5.100.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 (348) hide show
  1. package/dist/cjs/bridge/Buy.js +17 -13
  2. package/dist/cjs/bridge/Buy.js.map +1 -1
  3. package/dist/cjs/bridge/Chains.js +2 -2
  4. package/dist/cjs/bridge/Chains.js.map +1 -1
  5. package/dist/cjs/bridge/Onramp.js +152 -0
  6. package/dist/cjs/bridge/Onramp.js.map +1 -0
  7. package/dist/cjs/bridge/OnrampStatus.js +78 -0
  8. package/dist/cjs/bridge/OnrampStatus.js.map +1 -0
  9. package/dist/cjs/bridge/Routes.js +2 -2
  10. package/dist/cjs/bridge/Routes.js.map +1 -1
  11. package/dist/cjs/bridge/Sell.js +18 -14
  12. package/dist/cjs/bridge/Sell.js.map +1 -1
  13. package/dist/cjs/bridge/Status.js +15 -2
  14. package/dist/cjs/bridge/Status.js.map +1 -1
  15. package/dist/cjs/bridge/Transfer.js +229 -0
  16. package/dist/cjs/bridge/Transfer.js.map +1 -0
  17. package/dist/cjs/bridge/index.js +3 -1
  18. package/dist/cjs/bridge/index.js.map +1 -1
  19. package/dist/cjs/bridge/types/BridgeAction.js +3 -0
  20. package/dist/cjs/bridge/types/BridgeAction.js.map +1 -0
  21. package/dist/cjs/bridge/types/Token.js +3 -0
  22. package/dist/cjs/bridge/types/Token.js.map +1 -0
  23. package/dist/cjs/extensions/ens/resolve-l2-name.js +0 -2
  24. package/dist/cjs/extensions/ens/resolve-l2-name.js.map +1 -1
  25. package/dist/cjs/pay/buyWithCrypto/getQuote.js +159 -53
  26. package/dist/cjs/pay/buyWithCrypto/getQuote.js.map +1 -1
  27. package/dist/cjs/pay/buyWithCrypto/getStatus.js +160 -14
  28. package/dist/cjs/pay/buyWithCrypto/getStatus.js.map +1 -1
  29. package/dist/cjs/pay/buyWithCrypto/getTransfer.js +95 -37
  30. package/dist/cjs/pay/buyWithCrypto/getTransfer.js.map +1 -1
  31. package/dist/cjs/pay/buyWithFiat/getQuote.js +129 -33
  32. package/dist/cjs/pay/buyWithFiat/getQuote.js.map +1 -1
  33. package/dist/cjs/pay/buyWithFiat/getStatus.js +71 -20
  34. package/dist/cjs/pay/buyWithFiat/getStatus.js.map +1 -1
  35. package/dist/cjs/pay/utils/commonTypes.js +1 -1
  36. package/dist/cjs/pay/utils/commonTypes.js.map +1 -1
  37. package/dist/cjs/pay/utils/definitions.js +1 -43
  38. package/dist/cjs/pay/utils/definitions.js.map +1 -1
  39. package/dist/cjs/react/core/hooks/pay/useBuyWithFiatStatus.js +1 -3
  40. package/dist/cjs/react/core/hooks/pay/useBuyWithFiatStatus.js.map +1 -1
  41. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +44 -38
  42. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  43. package/dist/cjs/react/core/utils/wallet.js +15 -0
  44. package/dist/cjs/react/core/utils/wallet.js.map +1 -1
  45. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js +1 -1
  46. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  47. package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -23
  48. package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
  49. package/dist/cjs/react/web/ui/ConnectWallet/locale/en.js +1 -1
  50. package/dist/cjs/react/web/ui/ConnectWallet/locale/en.js.map +1 -1
  51. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +1 -1
  52. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  53. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js +0 -177
  54. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js.map +1 -1
  55. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js +2 -10
  56. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js.map +1 -1
  57. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +5 -8
  58. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  59. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +0 -15
  60. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
  61. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.js +0 -60
  62. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.js.map +1 -1
  63. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.js +3 -1
  64. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.js.map +1 -1
  65. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js +1 -1
  66. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js.map +1 -1
  67. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.js +4 -4
  68. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.js.map +1 -1
  69. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js +83 -34
  70. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js.map +1 -1
  71. package/dist/cjs/react/web/ui/TransactionButton/DepositScreen.js +133 -0
  72. package/dist/cjs/react/web/ui/TransactionButton/DepositScreen.js.map +1 -0
  73. package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js +4 -3
  74. package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -1
  75. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js +9 -1
  76. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
  77. package/dist/cjs/utils/any-evm/zksync/constants.js +1 -0
  78. package/dist/cjs/utils/any-evm/zksync/constants.js.map +1 -1
  79. package/dist/cjs/utils/domains.js +3 -0
  80. package/dist/cjs/utils/domains.js.map +1 -1
  81. package/dist/cjs/version.js +1 -1
  82. package/dist/cjs/version.js.map +1 -1
  83. package/dist/esm/bridge/Buy.js +17 -13
  84. package/dist/esm/bridge/Buy.js.map +1 -1
  85. package/dist/esm/bridge/Chains.js +2 -2
  86. package/dist/esm/bridge/Chains.js.map +1 -1
  87. package/dist/esm/bridge/Onramp.js +147 -0
  88. package/dist/esm/bridge/Onramp.js.map +1 -0
  89. package/dist/esm/bridge/OnrampStatus.js +75 -0
  90. package/dist/esm/bridge/OnrampStatus.js.map +1 -0
  91. package/dist/esm/bridge/Routes.js +2 -2
  92. package/dist/esm/bridge/Routes.js.map +1 -1
  93. package/dist/esm/bridge/Sell.js +18 -14
  94. package/dist/esm/bridge/Sell.js.map +1 -1
  95. package/dist/esm/bridge/Status.js +15 -2
  96. package/dist/esm/bridge/Status.js.map +1 -1
  97. package/dist/esm/bridge/Transfer.js +226 -0
  98. package/dist/esm/bridge/Transfer.js.map +1 -0
  99. package/dist/esm/bridge/index.js +2 -0
  100. package/dist/esm/bridge/index.js.map +1 -1
  101. package/dist/esm/bridge/types/BridgeAction.js +2 -0
  102. package/dist/esm/bridge/types/BridgeAction.js.map +1 -0
  103. package/dist/esm/bridge/types/Token.js +2 -0
  104. package/dist/esm/bridge/types/Token.js.map +1 -0
  105. package/dist/esm/extensions/ens/resolve-l2-name.js +0 -2
  106. package/dist/esm/extensions/ens/resolve-l2-name.js.map +1 -1
  107. package/dist/esm/pay/buyWithCrypto/getQuote.js +159 -53
  108. package/dist/esm/pay/buyWithCrypto/getQuote.js.map +1 -1
  109. package/dist/esm/pay/buyWithCrypto/getStatus.js +160 -14
  110. package/dist/esm/pay/buyWithCrypto/getStatus.js.map +1 -1
  111. package/dist/esm/pay/buyWithCrypto/getTransfer.js +95 -37
  112. package/dist/esm/pay/buyWithCrypto/getTransfer.js.map +1 -1
  113. package/dist/esm/pay/buyWithFiat/getQuote.js +129 -33
  114. package/dist/esm/pay/buyWithFiat/getQuote.js.map +1 -1
  115. package/dist/esm/pay/buyWithFiat/getStatus.js +71 -20
  116. package/dist/esm/pay/buyWithFiat/getStatus.js.map +1 -1
  117. package/dist/esm/pay/utils/commonTypes.js +1 -1
  118. package/dist/esm/pay/utils/commonTypes.js.map +1 -1
  119. package/dist/esm/pay/utils/definitions.js +0 -35
  120. package/dist/esm/pay/utils/definitions.js.map +1 -1
  121. package/dist/esm/react/core/hooks/pay/useBuyWithFiatStatus.js +1 -3
  122. package/dist/esm/react/core/hooks/pay/useBuyWithFiatStatus.js.map +1 -1
  123. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +44 -38
  124. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  125. package/dist/esm/react/core/utils/wallet.js +15 -0
  126. package/dist/esm/react/core/utils/wallet.js.map +1 -1
  127. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js +1 -1
  128. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  129. package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -23
  130. package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
  131. package/dist/esm/react/web/ui/ConnectWallet/locale/en.js +1 -1
  132. package/dist/esm/react/web/ui/ConnectWallet/locale/en.js.map +1 -1
  133. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +1 -1
  134. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  135. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js +4 -180
  136. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js.map +1 -1
  137. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js +2 -10
  138. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.js.map +1 -1
  139. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +5 -8
  140. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  141. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +2 -16
  142. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
  143. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.js +0 -59
  144. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.js.map +1 -1
  145. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.js +3 -1
  146. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.js.map +1 -1
  147. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js +1 -1
  148. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.js.map +1 -1
  149. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.js +1 -1
  150. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.js.map +1 -1
  151. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js +84 -34
  152. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js.map +1 -1
  153. package/dist/esm/react/web/ui/TransactionButton/DepositScreen.js +130 -0
  154. package/dist/esm/react/web/ui/TransactionButton/DepositScreen.js.map +1 -0
  155. package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js +4 -3
  156. package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -1
  157. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js +9 -1
  158. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
  159. package/dist/esm/utils/any-evm/zksync/constants.js +1 -0
  160. package/dist/esm/utils/any-evm/zksync/constants.js.map +1 -1
  161. package/dist/esm/utils/domains.js +3 -0
  162. package/dist/esm/utils/domains.js.map +1 -1
  163. package/dist/esm/version.js +1 -1
  164. package/dist/esm/version.js.map +1 -1
  165. package/dist/types/bridge/Buy.d.ts +11 -9
  166. package/dist/types/bridge/Buy.d.ts.map +1 -1
  167. package/dist/types/bridge/Onramp.d.ts +123 -0
  168. package/dist/types/bridge/Onramp.d.ts.map +1 -0
  169. package/dist/types/bridge/OnrampStatus.d.ts +108 -0
  170. package/dist/types/bridge/OnrampStatus.d.ts.map +1 -0
  171. package/dist/types/bridge/Sell.d.ts +13 -11
  172. package/dist/types/bridge/Sell.d.ts.map +1 -1
  173. package/dist/types/bridge/Status.d.ts.map +1 -1
  174. package/dist/types/bridge/Transfer.d.ts +199 -0
  175. package/dist/types/bridge/Transfer.d.ts.map +1 -0
  176. package/dist/types/bridge/index.d.ts +7 -3
  177. package/dist/types/bridge/index.d.ts.map +1 -1
  178. package/dist/types/bridge/types/BridgeAction.d.ts +2 -0
  179. package/dist/types/bridge/types/BridgeAction.d.ts.map +1 -0
  180. package/dist/types/bridge/types/Quote.d.ts +3 -65
  181. package/dist/types/bridge/types/Quote.d.ts.map +1 -1
  182. package/dist/types/bridge/types/Route.d.ts +38 -17
  183. package/dist/types/bridge/types/Route.d.ts.map +1 -1
  184. package/dist/types/bridge/types/Status.d.ts +15 -0
  185. package/dist/types/bridge/types/Status.d.ts.map +1 -1
  186. package/dist/types/bridge/types/Token.d.ts +11 -0
  187. package/dist/types/bridge/types/Token.d.ts.map +1 -0
  188. package/dist/types/extensions/ens/resolve-l2-name.d.ts.map +1 -1
  189. package/dist/types/pay/buyWithCrypto/commonTypes.d.ts +0 -9
  190. package/dist/types/pay/buyWithCrypto/commonTypes.d.ts.map +1 -1
  191. package/dist/types/pay/buyWithCrypto/getQuote.d.ts.map +1 -1
  192. package/dist/types/pay/buyWithCrypto/getStatus.d.ts +1 -1
  193. package/dist/types/pay/buyWithCrypto/getStatus.d.ts.map +1 -1
  194. package/dist/types/pay/buyWithCrypto/getTransfer.d.ts.map +1 -1
  195. package/dist/types/pay/buyWithFiat/getQuote.d.ts.map +1 -1
  196. package/dist/types/pay/buyWithFiat/getStatus.d.ts +1 -12
  197. package/dist/types/pay/buyWithFiat/getStatus.d.ts.map +1 -1
  198. package/dist/types/pay/utils/commonTypes.d.ts +1 -1
  199. package/dist/types/pay/utils/commonTypes.d.ts.map +1 -1
  200. package/dist/types/pay/utils/definitions.d.ts +0 -35
  201. package/dist/types/pay/utils/definitions.d.ts.map +1 -1
  202. package/dist/types/react/core/hooks/pay/useBuyWithFiatStatus.d.ts.map +1 -1
  203. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts +1 -0
  204. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  205. package/dist/types/react/core/utils/wallet.d.ts.map +1 -1
  206. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  207. package/dist/types/react/web/ui/ConnectWallet/TransactionsScreen.d.ts.map +1 -1
  208. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.d.ts +1 -30
  209. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.d.ts.map +1 -1
  210. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts +2 -0
  211. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts.map +1 -1
  212. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts +2 -0
  213. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts.map +1 -1
  214. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.d.ts +0 -5
  215. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.d.ts.map +1 -1
  216. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.d.ts +1 -3
  217. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.d.ts.map +1 -1
  218. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.d.ts.map +1 -1
  219. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.d.ts +0 -1
  220. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.d.ts.map +1 -1
  221. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.d.ts +8 -4
  222. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.d.ts.map +1 -1
  223. package/dist/types/react/web/ui/TransactionButton/DepositScreen.d.ts +15 -0
  224. package/dist/types/react/web/ui/TransactionButton/DepositScreen.d.ts.map +1 -0
  225. package/dist/types/react/web/ui/TransactionButton/ExecutingScreen.d.ts.map +1 -1
  226. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts +1 -0
  227. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts.map +1 -1
  228. package/dist/types/utils/any-evm/zksync/constants.d.ts.map +1 -1
  229. package/dist/types/utils/domains.d.ts +6 -0
  230. package/dist/types/utils/domains.d.ts.map +1 -1
  231. package/dist/types/version.d.ts +1 -1
  232. package/dist/types/version.d.ts.map +1 -1
  233. package/package.json +15 -15
  234. package/src/bridge/Buy.ts +19 -13
  235. package/src/bridge/Chains.ts +2 -2
  236. package/src/bridge/Onramp.test.ts +118 -0
  237. package/src/bridge/Onramp.ts +244 -0
  238. package/src/bridge/OnrampStatus.ts +133 -0
  239. package/src/bridge/Routes.ts +2 -2
  240. package/src/bridge/Sell.ts +20 -14
  241. package/src/bridge/Status.ts +15 -2
  242. package/src/bridge/Transfer.test.ts +76 -0
  243. package/src/bridge/Transfer.ts +270 -0
  244. package/src/bridge/index.ts +12 -3
  245. package/src/bridge/types/BridgeAction.ts +1 -0
  246. package/src/bridge/types/Quote.ts +3 -65
  247. package/src/bridge/types/Route.ts +42 -17
  248. package/src/bridge/types/Status.ts +15 -1
  249. package/src/bridge/types/Token.ts +11 -0
  250. package/src/extensions/ens/resolve-l2-name.ts +0 -2
  251. package/src/pay/buyWithCrypto/commonTypes.ts +0 -10
  252. package/src/pay/buyWithCrypto/getQuote.ts +210 -100
  253. package/src/pay/buyWithCrypto/getStatus.ts +213 -20
  254. package/src/pay/buyWithCrypto/getTransfer.ts +129 -61
  255. package/src/pay/buyWithFiat/getQuote.ts +184 -33
  256. package/src/pay/buyWithFiat/getStatus.ts +101 -42
  257. package/src/pay/convert/cryptoToFiat.test.ts +7 -5
  258. package/src/pay/convert/fiatToCrypto.test.ts +6 -4
  259. package/src/pay/utils/commonTypes.ts +1 -1
  260. package/src/pay/utils/definitions.ts +0 -48
  261. package/src/react/core/hooks/pay/useBuyWithFiatStatus.ts +0 -2
  262. package/src/react/core/hooks/transaction/useSendTransaction.ts +53 -52
  263. package/src/react/core/utils/wallet.ts +15 -0
  264. package/src/react/web/hooks/transaction/useSendTransaction.tsx +1 -0
  265. package/src/react/web/ui/ConnectWallet/TransactionsScreen.tsx +5 -64
  266. package/src/react/web/ui/ConnectWallet/locale/en.ts +1 -1
  267. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +3 -1
  268. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.tsx +3 -510
  269. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.tsx +2 -12
  270. package/src/react/web/ui/ConnectWallet/screens/Buy/main/types.ts +2 -0
  271. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +19 -20
  272. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.tsx +1 -37
  273. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.test.ts +1 -95
  274. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.ts +0 -69
  275. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.tsx +3 -1
  276. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/fetchBalancesForWallet.tsx +1 -1
  277. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.ts +1 -3
  278. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.ts +118 -63
  279. package/src/react/web/ui/TransactionButton/DepositScreen.tsx +295 -0
  280. package/src/react/web/ui/TransactionButton/ExecutingScreen.tsx +4 -5
  281. package/src/react/web/ui/TransactionButton/TransactionModal.tsx +20 -1
  282. package/src/utils/any-evm/zksync/constants.ts +1 -0
  283. package/src/utils/domain.test.ts +1 -0
  284. package/src/utils/domains.ts +8 -0
  285. package/src/version.ts +1 -1
  286. package/dist/cjs/bridge/constants.js +0 -5
  287. package/dist/cjs/bridge/constants.js.map +0 -1
  288. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js +0 -37
  289. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js.map +0 -1
  290. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +0 -86
  291. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +0 -1
  292. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +0 -25
  293. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +0 -1
  294. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +0 -54
  295. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +0 -1
  296. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.js +0 -52
  297. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.js.map +0 -1
  298. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +0 -81
  299. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +0 -1
  300. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +0 -17
  301. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +0 -1
  302. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.js +0 -138
  303. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.js.map +0 -1
  304. package/dist/esm/bridge/constants.js +0 -2
  305. package/dist/esm/bridge/constants.js.map +0 -1
  306. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js +0 -34
  307. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js.map +0 -1
  308. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +0 -83
  309. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +0 -1
  310. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +0 -22
  311. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +0 -1
  312. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +0 -51
  313. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +0 -1
  314. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.js +0 -48
  315. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.js.map +0 -1
  316. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +0 -78
  317. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +0 -1
  318. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +0 -14
  319. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +0 -1
  320. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.js +0 -135
  321. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.js.map +0 -1
  322. package/dist/types/bridge/constants.d.ts +0 -2
  323. package/dist/types/bridge/constants.d.ts.map +0 -1
  324. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.d.ts +0 -26
  325. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.d.ts.map +0 -1
  326. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts +0 -16
  327. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts.map +0 -1
  328. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts +0 -23
  329. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts.map +0 -1
  330. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts +0 -10
  331. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts.map +0 -1
  332. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.d.ts +0 -9
  333. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.d.ts.map +0 -1
  334. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts +0 -14
  335. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts.map +0 -1
  336. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts +0 -14
  337. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts.map +0 -1
  338. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.d.ts +0 -21
  339. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.d.ts.map +0 -1
  340. package/src/bridge/constants.ts +0 -1
  341. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.tsx +0 -142
  342. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.tsx +0 -170
  343. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.tsx +0 -63
  344. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.tsx +0 -163
  345. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.tsx +0 -127
  346. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.tsx +0 -138
  347. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.tsx +0 -45
  348. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.ts +0 -191
@@ -1,5 +1,5 @@
1
+ import { getThirdwebBaseUrl } from "../utils/domains.js";
1
2
  import { getClientFetch } from "../utils/fetch.js";
2
- import { UNIVERSAL_BRIDGE_URL } from "./constants.js";
3
3
  /**
4
4
  * Retrieves a Universal Bridge quote for the provided sell intent. The quote will specify the expected `destinationAmount` that will be received in exchange for the specified `originAmount`, which is specified with the `sellAmountWei` option.
5
5
  *
@@ -102,7 +102,7 @@ export async function status(options) {
102
102
  const { transactionHash, client } = options;
103
103
  const chainId = "chainId" in options ? options.chainId : options.chain.id;
104
104
  const clientFetch = getClientFetch(client);
105
- const url = new URL(`${UNIVERSAL_BRIDGE_URL}/status`);
105
+ const url = new URL(`${getThirdwebBaseUrl("bridge")}/v1/status`);
106
106
  url.searchParams.set("transactionHash", transactionHash);
107
107
  url.searchParams.set("chainId", chainId.toString());
108
108
  const response = await clientFetch(url.toString());
@@ -114,6 +114,7 @@ export async function status(options) {
114
114
  if (data.status === "FAILED") {
115
115
  return {
116
116
  status: "FAILED",
117
+ paymentId: data.paymentId,
117
118
  transactions: data.transactions,
118
119
  };
119
120
  }
@@ -126,11 +127,18 @@ export async function status(options) {
126
127
  originTokenAddress: data.originTokenAddress,
127
128
  destinationTokenAddress: data.destinationTokenAddress,
128
129
  transactions: data.transactions,
130
+ originToken: data.originToken,
131
+ destinationToken: data.destinationToken,
132
+ sender: data.sender,
133
+ receiver: data.receiver,
134
+ paymentId: data.paymentId,
135
+ purchaseData: data.purchaseData,
129
136
  };
130
137
  }
131
138
  if (data.status === "NOT_FOUND") {
132
139
  return {
133
140
  status: "NOT_FOUND",
141
+ paymentId: data.paymentId,
134
142
  transactions: [],
135
143
  };
136
144
  }
@@ -143,6 +151,11 @@ export async function status(options) {
143
151
  originTokenAddress: data.originTokenAddress,
144
152
  destinationTokenAddress: data.destinationTokenAddress,
145
153
  transactions: data.transactions,
154
+ originToken: data.originToken,
155
+ destinationToken: data.destinationToken,
156
+ sender: data.sender,
157
+ receiver: data.receiver,
158
+ paymentId: data.paymentId,
146
159
  purchaseData: data.purchaseData,
147
160
  };
148
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Status.js","sourceRoot":"","sources":["../../../src/bridge/Status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAuB;IAClD,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAE1E,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,oBAAoB,SAAS,CAAC,CAAC;IACtD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACzD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,OAAO,MAAM,SAAS,CAAC,aAAa,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAqB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QACvC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Status.js","sourceRoot":"","sources":["../../../src/bridge/Status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAuB;IAClD,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAE1E,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACzD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,OAAO,MAAM,SAAS,CAAC,aAAa,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAqB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QACvC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,226 @@
1
+ import { defineChain } from "../chains/utils.js";
2
+ import { getThirdwebBaseUrl } from "../utils/domains.js";
3
+ import { getClientFetch } from "../utils/fetch.js";
4
+ import { stringify } from "../utils/json.js";
5
+ /**
6
+ * Prepares a **finalized** Universal Bridge quote for the provided transfer request with transaction data.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { Bridge, NATIVE_TOKEN_ADDRESS } from "thirdweb";
11
+ *
12
+ * const quote = await Bridge.Transfer.prepare({
13
+ * chainId: 1,
14
+ * tokenAddress: NATIVE_TOKEN_ADDRESS,
15
+ * amount: toWei("0.01"),
16
+ * sender: "0x...",
17
+ * receiver: "0x...",
18
+ * client: thirdwebClient,
19
+ * });
20
+ * ```
21
+ *
22
+ * This will return a quote that might look like:
23
+ * ```typescript
24
+ * {
25
+ * originAmount: 10000026098875381n,
26
+ * destinationAmount: 10000000000000000n,
27
+ * blockNumber: 22026509n,
28
+ * timestamp: 1741730936680,
29
+ * estimatedExecutionTimeMs: 1000
30
+ * steps: [
31
+ * {
32
+ * originToken: {
33
+ * chainId: 1,
34
+ * address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
35
+ * symbol: "ETH",
36
+ * name: "Ethereum",
37
+ * decimals: 18,
38
+ * priceUsd: 2000,
39
+ * iconUri: "https://..."
40
+ * },
41
+ * destinationToken: {
42
+ * chainId: 1,
43
+ * address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
44
+ * symbol: "ETH",
45
+ * name: "Ethereum",
46
+ * decimals: 18,
47
+ * priceUsd: 2000,
48
+ * iconUri: "https://..."
49
+ * },
50
+ * originAmount: 10000026098875381n,
51
+ * destinationAmount: 10000000000000000n,
52
+ * estimatedExecutionTimeMs: 1000
53
+ * transactions: [
54
+ * {
55
+ * action: "approval",
56
+ * id: "0x",
57
+ * to: "0x...",
58
+ * data: "0x...",
59
+ * chainId: 1,
60
+ * type: "eip1559"
61
+ * },
62
+ * {
63
+ * action: "transfer",
64
+ * to: "0x...",
65
+ * value: 10000026098875381n,
66
+ * data: "0x...",
67
+ * chainId: 1,
68
+ * type: "eip1559"
69
+ * }
70
+ * ]
71
+ * }
72
+ * ],
73
+ * expiration: 1741730936680,
74
+ * intent: {
75
+ * chainId: 1,
76
+ * tokenAddress: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
77
+ * amount: 10000000000000000n,
78
+ * sender: "0x...",
79
+ * receiver: "0x..."
80
+ * }
81
+ * }
82
+ * ```
83
+ *
84
+ * ## Sending the transactions
85
+ * The `transactions` array is a series of [ox](https://oxlib.sh) EIP-1559 transactions that must be executed one after the other in order to fulfill the complete route. There are a few things to keep in mind when executing these transactions:
86
+ * - Approvals will have the `approval` action specified. You can perform approvals with `sendAndConfirmTransaction`, then proceed to the next transaction.
87
+ * - All transactions are assumed to be executed by the `sender` address, regardless of which chain they are on. The final transaction will use the `receiver` as the recipient address.
88
+ * - If an `expiration` timestamp is provided, all transactions must be executed before that time to guarantee successful execution at the specified price.
89
+ *
90
+ * NOTE: To get the status of each non-approval transaction, use `Bridge.status` rather than checking for transaction inclusion. This function will ensure full completion of the transfer.
91
+ *
92
+ * You can access this functions input and output types with `Transfer.prepare.Options` and `Transfer.prepare.Result`, respectively.
93
+ *
94
+ * You can include arbitrary data to be included on any webhooks and status responses with the `purchaseData` option.
95
+ *
96
+ * ```ts
97
+ * const quote = await Bridge.Transfer.prepare({
98
+ * chainId: 1,
99
+ * tokenAddress: NATIVE_TOKEN_ADDRESS,
100
+ * amount: toWei("0.01"),
101
+ * sender: "0x...",
102
+ * receiver: "0x...",
103
+ * purchaseData: {
104
+ * reference: "payment-123",
105
+ * metadata: {
106
+ * note: "Transfer to Alice"
107
+ * }
108
+ * },
109
+ * client: thirdwebClient,
110
+ * });
111
+ * ```
112
+ *
113
+ * ## Fees
114
+ * There may be fees associated with the transfer. These fees are paid by the `feePayer` address, which defaults to the `sender` address. You can specify a different address with the `feePayer` option. If you do not specify an option or explicitly specify `sender`, the fees will be added to the input amount. If you specify the `receiver` as the fee payer the fees will be subtracted from the destination amount.
115
+ *
116
+ * For example, if you were to request a transfer with `feePayer` set to `receiver`:
117
+ * ```typescript
118
+ * const quote = await Bridge.Transfer.prepare({
119
+ * chainId: 1,
120
+ * tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
121
+ * amount: 100_000_000n, // 100 USDC
122
+ * sender: "0x...",
123
+ * receiver: "0x...",
124
+ * feePayer: "receiver",
125
+ * client: thirdwebClient,
126
+ * });
127
+ * ```
128
+ *
129
+ * The returned quote might look like:
130
+ * ```typescript
131
+ * {
132
+ * originAmount: 100_000_000n, // 100 USDC
133
+ * destinationAmount: 99_970_000n, // 99.97 USDC
134
+ * ...
135
+ * }
136
+ * ```
137
+ *
138
+ * If you were to request a transfer with `feePayer` set to `sender`:
139
+ * ```typescript
140
+ * const quote = await Bridge.Transfer.prepare({
141
+ * chainId: 1,
142
+ * tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
143
+ * amount: 100_000_000n, // 100 USDC
144
+ * sender: "0x...",
145
+ * receiver: "0x...",
146
+ * feePayer: "sender",
147
+ * client: thirdwebClient,
148
+ * });
149
+ * ```
150
+ *
151
+ * The returned quote might look like:
152
+ * ```typescript
153
+ * {
154
+ * originAmount: 100_030_000n, // 100.03 USDC
155
+ * destinationAmount: 100_000_000n, // 100 USDC
156
+ * ...
157
+ * }
158
+ * ```
159
+ *
160
+ * @param options - The options for the quote.
161
+ * @param options.chainId - The chain ID of the token.
162
+ * @param options.tokenAddress - The address of the token.
163
+ * @param options.amount - The amount of the token to transfer.
164
+ * @param options.sender - The address of the sender.
165
+ * @param options.receiver - The address of the recipient.
166
+ * @param options.purchaseData - Arbitrary data to be passed to the transfer function and included with any webhooks or status calls.
167
+ * @param options.client - Your thirdweb client.
168
+ * @param [options.feePayer] - The address that will pay the fees for the transfer. If not specified, the sender will be used. Values can be "sender" or "receiver".
169
+ *
170
+ * @returns A promise that resolves to a finalized quote and transactions for the requested transfer.
171
+ *
172
+ * @throws Will throw an error if there is an issue fetching the quote.
173
+ * @bridge Transfer
174
+ * @beta
175
+ */
176
+ export async function prepare(options) {
177
+ const { chainId, tokenAddress, sender, receiver, client, amount, purchaseData, feePayer, } = options;
178
+ const clientFetch = getClientFetch(client);
179
+ const url = new URL(`${getThirdwebBaseUrl("bridge")}/v1/transfer/prepare`);
180
+ const response = await clientFetch(url.toString(), {
181
+ method: "POST",
182
+ headers: {
183
+ "Content-Type": "application/json",
184
+ },
185
+ body: stringify({
186
+ transferAmountWei: amount.toString(), // legacy
187
+ amount: amount.toString(),
188
+ chainId: chainId.toString(),
189
+ tokenAddress,
190
+ sender,
191
+ receiver,
192
+ purchaseData,
193
+ feePayer,
194
+ }),
195
+ });
196
+ if (!response.ok) {
197
+ const errorJson = await response.json();
198
+ throw new Error(`${errorJson.code} | ${errorJson.message} - ${errorJson.correlationId}`);
199
+ }
200
+ const { data } = await response.json();
201
+ return {
202
+ originAmount: BigInt(data.originAmount),
203
+ destinationAmount: BigInt(data.destinationAmount),
204
+ blockNumber: data.blockNumber ? BigInt(data.blockNumber) : undefined,
205
+ timestamp: data.timestamp,
206
+ estimatedExecutionTimeMs: data.estimatedExecutionTimeMs,
207
+ steps: data.steps.map((step) => ({
208
+ ...step,
209
+ transactions: step.transactions.map((transaction) => ({
210
+ ...transaction,
211
+ value: transaction.value ? BigInt(transaction.value) : undefined,
212
+ client,
213
+ chain: defineChain(transaction.chainId),
214
+ })),
215
+ })),
216
+ intent: {
217
+ chainId,
218
+ tokenAddress,
219
+ amount,
220
+ sender,
221
+ receiver,
222
+ feePayer,
223
+ },
224
+ };
225
+ }
226
+ //# sourceMappingURL=Transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transfer.js","sourceRoot":"","sources":["../../../src/bridge/Transfer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0KG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAwB;IAExB,MAAM,EACJ,OAAO,EACP,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,EACN,YAAY,EACZ,QAAQ,GACT,GAAG,OAAO,CAAC;IAEZ,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,SAAS,CAAC;YACd,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS;YAC/C,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;YACzB,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;YAC3B,YAAY;YACZ,MAAM;YACN,QAAQ;YACR,YAAY;YACZ,QAAQ;SACT,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,OAAO,MAAM,SAAS,CAAC,aAAa,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAA4B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChE,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QACvC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QACpE,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI;YACP,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACpD,GAAG,WAAW;gBACd,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,MAAM;gBACN,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;aACxC,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,MAAM,EAAE;YACN,OAAO;YACP,YAAY;YACZ,MAAM;YACN,MAAM;YACN,QAAQ;YACR,QAAQ;SACT;KACF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export * as Buy from "./Buy.js";
2
2
  export * as Sell from "./Sell.js";
3
+ export * as Transfer from "./Transfer.js";
4
+ export * as Onramp from "./Onramp.js";
3
5
  export { status } from "./Status.js";
4
6
  export { routes } from "./Routes.js";
5
7
  export { chains } from "./Chains.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BridgeAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BridgeAction.js","sourceRoot":"","sources":["../../../../src/bridge/types/BridgeAction.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Token.js","sourceRoot":"","sources":["../../../../src/bridge/types/Token.ts"],"names":[],"mappings":""}
@@ -3,7 +3,6 @@ import * as ox__Bytes from "ox/Bytes";
3
3
  import * as ox__Ens from "ox/Ens";
4
4
  import * as ox__Hash from "ox/Hash";
5
5
  import * as ox__Hex from "ox/Hex";
6
- import { keccak256 } from "viem";
7
6
  import { getContract } from "../../contract/contract.js";
8
7
  import { withCache } from "../../utils/promise/withCache.js";
9
8
  import { name } from "./__generated__/L2Resolver/read/name.js";
@@ -20,7 +19,6 @@ const convertReverseNodeToBytes = (address, chainId) => {
20
19
  const chainCoinType = cointype.toString(16).toLocaleUpperCase();
21
20
  const reverseNode = ox__Ens.namehash(`${chainCoinType.toLocaleUpperCase()}.reverse`);
22
21
  const addressReverseNode = ox__Hash.keccak256(ox__AbiParameters.encodePacked(["bytes32", "bytes32"], [reverseNode, addressNode]));
23
- keccak256;
24
22
  return addressReverseNode;
25
23
  };
26
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-l2-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-l2-name.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,iBAAiB,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,SAAS,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,yCAAyC,CAAC;AAY/D;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,CAAC,OAAgB,EAAE,OAAe,EAAE,EAAE;IACtE,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,EAAa,CAAC;IAChE,oFAAoF;IACpF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CACnC,QAAQ,CAAC,SAAS,CAChB,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAC1D,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAClC,GAAG,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAC/C,CAAC;IAEF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAC3C,iBAAiB,CAAC,YAAY,CAC5B,CAAC,SAAS,EAAE,SAAS,CAAC,EACtB,CAAC,WAAW,EAAE,WAAW,CAAC,CAC3B,CACF,CAAC;IACF,SAAS,CAAC;IACV,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,SAAS,CACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,yBAAyB,CAC3C,OAAO,EACP,aAAa,CAAC,EAAE,IAAI,CAAC,CACtB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;YAC9B,QAAQ;YACR,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,IAAI,OAAO,EAAE;QAChD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resolve-l2-name.js","sourceRoot":"","sources":["../../../../src/extensions/ens/resolve-l2-name.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,iBAAiB,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,SAAS,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,yCAAyC,CAAC;AAY/D;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,CAAC,OAAgB,EAAE,OAAe,EAAE,EAAE;IACtE,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,EAAa,CAAC;IAChE,oFAAoF;IACpF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CACnC,QAAQ,CAAC,SAAS,CAChB,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAC1D,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAClC,GAAG,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAC/C,CAAC;IAEF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAC3C,iBAAiB,CAAC,YAAY,CAC5B,CAAC,SAAS,EAAE,SAAS,CAAC,EACtB,CAAC,WAAW,EAAE,WAAW,CAAC,CAC3B,CACF,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEpE,OAAO,SAAS,CACd,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,MAAM;YACN,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,yBAAyB,CAC3C,OAAO,EACP,aAAa,CAAC,EAAE,IAAI,CAAC,CACtB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;YAC9B,QAAQ;YACR,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EACD;QACE,QAAQ,EAAE,YAAY,aAAa,IAAI,OAAO,EAAE;QAChD,aAAa;QACb,SAAS,EAAE,EAAE,GAAG,IAAI;KACrB,CACF,CAAC;AACJ,CAAC"}
@@ -1,7 +1,10 @@
1
+ import { Value } from "ox";
2
+ import * as ox__AbiFunction from "ox/AbiFunction";
3
+ import * as Bridge from "../../bridge/index.js";
1
4
  import { getCachedChain } from "../../chains/utils.js";
2
- import { getClientFetch } from "../../utils/fetch.js";
3
- import { stringify } from "../../utils/json.js";
4
- import { getPayBuyWithCryptoQuoteEndpoint } from "../utils/definitions.js";
5
+ import { NATIVE_TOKEN_ADDRESS } from "../../constants/addresses.js";
6
+ import { getContract } from "../../contract/contract.js";
7
+ import { decimals } from "../../extensions/erc20/read/decimals.js";
5
8
  /**
6
9
  * Get a quote of type [`BuyWithCryptoQuote`](https://portal.thirdweb.com/references/typescript/v5/BuyWithCryptoQuote) to buy any given token with crypto.
7
10
  * This quote contains the information about the swap such as token amounts, processing fees, estimated time etc.
@@ -32,65 +35,168 @@ import { getPayBuyWithCryptoQuoteEndpoint } from "../utils/definitions.js";
32
35
  */
33
36
  export async function getBuyWithCryptoQuote(params) {
34
37
  try {
35
- const clientFetch = getClientFetch(params.client);
36
- const response = await clientFetch(getPayBuyWithCryptoQuoteEndpoint(), {
37
- method: "POST",
38
- headers: {
39
- Accept: "application/json",
40
- "Content-Type": "application/json",
41
- },
42
- body: stringify({
43
- fromAddress: params.fromAddress,
44
- toAddress: params.toAddress,
45
- fromChainId: params.fromChainId.toString(),
46
- fromTokenAddress: params.fromTokenAddress,
47
- toChainId: params.toChainId.toString(),
48
- toTokenAddress: params.toTokenAddress,
49
- fromAmount: params.fromAmount,
50
- toAmount: params.toAmount,
51
- maxSlippageBPS: params.maxSlippageBPS,
52
- intentId: params.intentId,
53
- purchaseData: params.purchaseData,
54
- }),
55
- });
56
- // Assuming the response directly matches the SwapResponse interface
57
- if (!response.ok) {
58
- const errorObj = await response.json();
59
- if (errorObj && "error" in errorObj) {
60
- throw errorObj;
38
+ const quote = await (async () => {
39
+ if (params.toAmount) {
40
+ const destinationTokenContract = getContract({
41
+ address: params.toTokenAddress,
42
+ chain: getCachedChain(params.toChainId),
43
+ client: params.client,
44
+ });
45
+ const tokenDecimals = destinationTokenContract.address.toLowerCase() ===
46
+ NATIVE_TOKEN_ADDRESS
47
+ ? 18
48
+ : await decimals({
49
+ contract: destinationTokenContract,
50
+ });
51
+ const amount = Value.from(params.toAmount, tokenDecimals);
52
+ return Bridge.Buy.prepare({
53
+ sender: params.fromAddress,
54
+ receiver: params.toAddress,
55
+ originChainId: params.fromChainId,
56
+ originTokenAddress: params.fromTokenAddress,
57
+ destinationChainId: params.toChainId,
58
+ destinationTokenAddress: params.toTokenAddress,
59
+ amount: amount,
60
+ purchaseData: params.purchaseData,
61
+ client: params.client,
62
+ });
61
63
  }
62
- throw new Error(`HTTP error! status: ${response.status}`);
63
- }
64
- const data = (await response.json())
65
- .result;
64
+ else if (params.fromAmount) {
65
+ const originTokenContract = getContract({
66
+ address: params.fromTokenAddress,
67
+ chain: getCachedChain(params.fromChainId),
68
+ client: params.client,
69
+ });
70
+ const tokenDecimals = await decimals({
71
+ contract: originTokenContract,
72
+ });
73
+ const amount = Value.from(params.fromAmount, tokenDecimals);
74
+ return Bridge.Sell.prepare({
75
+ sender: params.fromAddress,
76
+ receiver: params.toAddress,
77
+ originChainId: params.fromChainId,
78
+ originTokenAddress: params.fromTokenAddress,
79
+ destinationChainId: params.toChainId,
80
+ destinationTokenAddress: params.toTokenAddress,
81
+ amount: amount,
82
+ purchaseData: params.purchaseData,
83
+ client: params.client,
84
+ });
85
+ }
86
+ throw new Error("Invalid quote request, must provide either `fromAmount` or `toAmount`");
87
+ })();
66
88
  // check if the fromAddress already has approval for the given amount
67
- const approvalData = data.approval;
89
+ const firstStep = quote.steps[0];
90
+ if (!firstStep) {
91
+ throw new Error("This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.");
92
+ }
93
+ const approvalTxs = firstStep.transactions.filter((tx) => tx.action === "approval");
94
+ if (approvalTxs.length > 1) {
95
+ throw new Error("This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.");
96
+ }
97
+ const approvalTx = approvalTxs[0];
98
+ const txs = firstStep.transactions.filter((tx) => tx.action !== "approval");
99
+ if (txs.length > 1) {
100
+ throw new Error("This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.");
101
+ }
102
+ const tx = txs[0];
103
+ if (!tx) {
104
+ throw new Error("This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.");
105
+ }
106
+ let approvalData;
107
+ if (approvalTx) {
108
+ const abiFunction = ox__AbiFunction.from([
109
+ "function approve(address spender, uint256 amount)",
110
+ ]);
111
+ const [spender, amount] = ox__AbiFunction.decodeData(abiFunction, approvalTx.data);
112
+ approvalData = {
113
+ chainId: firstStep.originToken.chainId,
114
+ tokenAddress: firstStep.originToken.address,
115
+ spenderAddress: spender,
116
+ amountWei: amount.toString(),
117
+ };
118
+ }
68
119
  const swapRoute = {
69
120
  transactionRequest: {
70
- chain: getCachedChain(data.transactionRequest.chainId),
71
- client: params.client,
72
- data: data.transactionRequest.data,
73
- to: data.transactionRequest.to,
74
- value: BigInt(data.transactionRequest.value),
121
+ ...tx,
75
122
  extraGas: 50000n, // extra gas buffer
76
123
  },
77
124
  approvalData,
78
125
  swapDetails: {
79
- fromAddress: data.fromAddress,
80
- toAddress: data.toAddress,
81
- fromToken: data.fromToken,
82
- toToken: data.toToken,
83
- fromAmount: data.fromAmount,
84
- fromAmountWei: data.fromAmountWei,
85
- toAmountMinWei: data.toAmountMinWei,
86
- toAmountMin: data.toAmountMin,
87
- toAmountWei: data.toAmountWei,
88
- toAmount: data.toAmount,
89
- estimated: data.estimated,
90
- maxSlippageBPS: data.maxSlippageBPS,
126
+ fromAddress: quote.intent.sender,
127
+ toAddress: quote.intent.receiver,
128
+ fromToken: {
129
+ tokenAddress: firstStep.originToken.address,
130
+ chainId: firstStep.originToken.chainId,
131
+ decimals: firstStep.originToken.decimals,
132
+ symbol: firstStep.originToken.symbol,
133
+ name: firstStep.originToken.name,
134
+ priceUSDCents: firstStep.originToken.priceUsd * 100,
135
+ },
136
+ toToken: {
137
+ tokenAddress: firstStep.destinationToken.address,
138
+ chainId: firstStep.destinationToken.chainId,
139
+ decimals: firstStep.destinationToken.decimals,
140
+ symbol: firstStep.destinationToken.symbol,
141
+ name: firstStep.destinationToken.name,
142
+ priceUSDCents: firstStep.destinationToken.priceUsd * 100,
143
+ },
144
+ fromAmount: Value.format(quote.originAmount, firstStep.originToken.decimals).toString(),
145
+ fromAmountWei: quote.originAmount.toString(),
146
+ toAmountMinWei: quote.destinationAmount.toString(),
147
+ toAmountMin: Value.format(quote.destinationAmount, firstStep.destinationToken.decimals).toString(),
148
+ toAmountWei: quote.destinationAmount.toString(),
149
+ toAmount: Value.format(quote.destinationAmount, firstStep.destinationToken.decimals).toString(),
150
+ estimated: {
151
+ fromAmountUSDCents: Number(Value.format(quote.originAmount, firstStep.originToken.decimals)) *
152
+ firstStep.originToken.priceUsd *
153
+ 100,
154
+ toAmountMinUSDCents: Number(Value.format(quote.destinationAmount, firstStep.destinationToken.decimals)) *
155
+ firstStep.destinationToken.priceUsd *
156
+ 100,
157
+ toAmountUSDCents: Number(Value.format(quote.destinationAmount, firstStep.destinationToken.decimals)) *
158
+ firstStep.destinationToken.priceUsd *
159
+ 100,
160
+ slippageBPS: 0,
161
+ feesUSDCents: 0,
162
+ gasCostUSDCents: 0,
163
+ durationSeconds: firstStep.estimatedExecutionTimeMs / 1000,
164
+ },
165
+ maxSlippageBPS: 0,
91
166
  },
92
- paymentTokens: data.paymentTokens,
93
- processingFees: data.processingFees,
167
+ paymentTokens: [
168
+ {
169
+ token: {
170
+ tokenAddress: firstStep.originToken.address,
171
+ chainId: firstStep.originToken.chainId,
172
+ decimals: firstStep.originToken.decimals,
173
+ symbol: firstStep.originToken.symbol,
174
+ name: firstStep.originToken.name,
175
+ priceUSDCents: firstStep.originToken.priceUsd * 100,
176
+ },
177
+ amountWei: quote.originAmount.toString(),
178
+ amount: Value.format(quote.originAmount, firstStep.originToken.decimals).toString(),
179
+ amountUSDCents: Number(Value.format(quote.originAmount, firstStep.originToken.decimals)) *
180
+ firstStep.originToken.priceUsd *
181
+ 100,
182
+ },
183
+ ],
184
+ // TODO (UB): add develope and platform fees in API
185
+ processingFees: [
186
+ {
187
+ token: {
188
+ tokenAddress: firstStep.originToken.address,
189
+ chainId: firstStep.originToken.chainId,
190
+ decimals: firstStep.originToken.decimals,
191
+ symbol: firstStep.originToken.symbol,
192
+ name: firstStep.originToken.name,
193
+ priceUSDCents: firstStep.originToken.priceUsd * 100,
194
+ },
195
+ amountUSDCents: 0,
196
+ amountWei: "0",
197
+ amount: "0",
198
+ },
199
+ ],
94
200
  client: params.client,
95
201
  };
96
202
  return swapRoute;
@@ -1 +1 @@
1
- {"version":3,"file":"getQuote.js","sourceRoot":"","sources":["../../../../src/pay/buyWithCrypto/getQuote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getQuote.js","sourceRoot":"","sources":["../../../../src/pay/buyWithCrypto/getQuote.ts"],"names":[],"mappings":"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"}