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,15 +1,16 @@
1
- import type { Hash } from "viem";
1
+ import { Value } from "ox";
2
+ import * as ox__AbiFunction from "ox/AbiFunction";
3
+ import * as Bridge from "../../bridge/index.js";
2
4
  import { getCachedChain } from "../../chains/utils.js";
3
5
  import type { ThirdwebClient } from "../../client/client.js";
6
+ import { NATIVE_TOKEN_ADDRESS } from "../../constants/addresses.js";
7
+ import { getContract } from "../../contract/contract.js";
8
+ import { decimals } from "../../extensions/erc20/read/decimals.js";
4
9
  import type { PrepareTransactionOptions } from "../../transaction/prepare-transaction.js";
5
- import { getClientFetch } from "../../utils/fetch.js";
6
- import { stringify } from "../../utils/json.js";
7
- import { getPayBuyWithCryptoQuoteEndpoint } from "../utils/definitions.js";
8
10
  import type {
9
11
  QuoteApprovalInfo,
10
12
  QuotePaymentToken,
11
13
  QuoteTokenInfo,
12
- QuoteTransactionRequest,
13
14
  } from "./commonTypes.js";
14
15
 
15
16
  /**
@@ -105,44 +106,6 @@ export type GetBuyWithCryptoQuoteParams = {
105
106
  }
106
107
  );
107
108
 
108
- /**
109
- * @buyCrypto
110
- */
111
- type BuyWithCryptoQuoteRouteResponse = {
112
- transactionRequest: QuoteTransactionRequest;
113
- approval?: QuoteApprovalInfo;
114
-
115
- fromAddress: string;
116
- toAddress: string;
117
-
118
- fromToken: QuoteTokenInfo;
119
- toToken: QuoteTokenInfo;
120
-
121
- fromAmountWei: string;
122
- fromAmount: string;
123
-
124
- toAmountMinWei: string;
125
- toAmountMin: string;
126
- toAmountWei: string;
127
- toAmount: string;
128
-
129
- paymentTokens: QuotePaymentToken[];
130
- processingFees: QuotePaymentToken[];
131
-
132
- estimated: {
133
- fromAmountUSDCents: number;
134
- toAmountMinUSDCents: number;
135
- toAmountUSDCents: number;
136
- slippageBPS: number;
137
- feesUSDCents: number;
138
- gasCostUSDCents?: number;
139
- durationSeconds?: number;
140
- };
141
-
142
- maxSlippageBPS: number;
143
- bridge?: string;
144
- };
145
-
146
109
  /**
147
110
  * @buyCrypto
148
111
  */
@@ -215,76 +178,223 @@ export async function getBuyWithCryptoQuote(
215
178
  params: GetBuyWithCryptoQuoteParams,
216
179
  ): Promise<BuyWithCryptoQuote> {
217
180
  try {
218
- const clientFetch = getClientFetch(params.client);
219
-
220
- const response = await clientFetch(getPayBuyWithCryptoQuoteEndpoint(), {
221
- method: "POST",
222
- headers: {
223
- Accept: "application/json",
224
- "Content-Type": "application/json",
225
- },
226
- body: stringify({
227
- fromAddress: params.fromAddress,
228
- toAddress: params.toAddress,
229
- fromChainId: params.fromChainId.toString(),
230
- fromTokenAddress: params.fromTokenAddress,
231
- toChainId: params.toChainId.toString(),
232
- toTokenAddress: params.toTokenAddress,
233
- fromAmount: params.fromAmount,
234
- toAmount: params.toAmount,
235
- maxSlippageBPS: params.maxSlippageBPS,
236
- intentId: params.intentId,
237
- purchaseData: params.purchaseData,
238
- }),
239
- });
240
-
241
- // Assuming the response directly matches the SwapResponse interface
242
- if (!response.ok) {
243
- const errorObj = await response.json();
244
- if (errorObj && "error" in errorObj) {
245
- throw errorObj;
181
+ const quote = await (async () => {
182
+ if (params.toAmount) {
183
+ const destinationTokenContract = getContract({
184
+ address: params.toTokenAddress,
185
+ chain: getCachedChain(params.toChainId),
186
+ client: params.client,
187
+ });
188
+ const tokenDecimals =
189
+ destinationTokenContract.address.toLowerCase() ===
190
+ NATIVE_TOKEN_ADDRESS
191
+ ? 18
192
+ : await decimals({
193
+ contract: destinationTokenContract,
194
+ });
195
+ const amount = Value.from(params.toAmount, tokenDecimals);
196
+ return Bridge.Buy.prepare({
197
+ sender: params.fromAddress,
198
+ receiver: params.toAddress,
199
+ originChainId: params.fromChainId,
200
+ originTokenAddress: params.fromTokenAddress,
201
+ destinationChainId: params.toChainId,
202
+ destinationTokenAddress: params.toTokenAddress,
203
+ amount: amount,
204
+ purchaseData: params.purchaseData,
205
+ client: params.client,
206
+ });
207
+ } else if (params.fromAmount) {
208
+ const originTokenContract = getContract({
209
+ address: params.fromTokenAddress,
210
+ chain: getCachedChain(params.fromChainId),
211
+ client: params.client,
212
+ });
213
+ const tokenDecimals = await decimals({
214
+ contract: originTokenContract,
215
+ });
216
+ const amount = Value.from(params.fromAmount, tokenDecimals);
217
+ return Bridge.Sell.prepare({
218
+ sender: params.fromAddress,
219
+ receiver: params.toAddress,
220
+ originChainId: params.fromChainId,
221
+ originTokenAddress: params.fromTokenAddress,
222
+ destinationChainId: params.toChainId,
223
+ destinationTokenAddress: params.toTokenAddress,
224
+ amount: amount,
225
+ purchaseData: params.purchaseData,
226
+ client: params.client,
227
+ });
246
228
  }
247
- throw new Error(`HTTP error! status: ${response.status}`);
229
+ throw new Error(
230
+ "Invalid quote request, must provide either `fromAmount` or `toAmount`",
231
+ );
232
+ })();
233
+
234
+ // check if the fromAddress already has approval for the given amount
235
+ const firstStep = quote.steps[0];
236
+ if (!firstStep) {
237
+ throw new Error(
238
+ "This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.",
239
+ );
240
+ }
241
+ const approvalTxs = firstStep.transactions.filter(
242
+ (tx) => tx.action === "approval",
243
+ );
244
+ if (approvalTxs.length > 1) {
245
+ throw new Error(
246
+ "This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.",
247
+ );
248
248
  }
249
+ const approvalTx = approvalTxs[0];
249
250
 
250
- const data: BuyWithCryptoQuoteRouteResponse = (await response.json())
251
- .result;
251
+ const txs = firstStep.transactions.filter((tx) => tx.action !== "approval");
252
+ if (txs.length > 1) {
253
+ throw new Error(
254
+ "This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.",
255
+ );
256
+ }
257
+ const tx = txs[0];
258
+ if (!tx) {
259
+ throw new Error(
260
+ "This quote is incompatible with getBuyWithCryptoQuote. Please use Bridge.Buy.prepare instead.",
261
+ );
262
+ }
252
263
 
253
- // check if the fromAddress already has approval for the given amount
254
- const approvalData = data.approval;
264
+ let approvalData: QuoteApprovalInfo | undefined;
265
+ if (approvalTx) {
266
+ const abiFunction = ox__AbiFunction.from([
267
+ "function approve(address spender, uint256 amount)",
268
+ ]);
269
+ const [spender, amount] = ox__AbiFunction.decodeData(
270
+ abiFunction,
271
+ approvalTx.data,
272
+ );
273
+ approvalData = {
274
+ chainId: firstStep.originToken.chainId,
275
+ tokenAddress: firstStep.originToken.address,
276
+ spenderAddress: spender,
277
+ amountWei: amount.toString(),
278
+ };
279
+ }
255
280
 
256
281
  const swapRoute: BuyWithCryptoQuote = {
257
282
  transactionRequest: {
258
- chain: getCachedChain(data.transactionRequest.chainId),
259
- client: params.client,
260
- data: data.transactionRequest.data as Hash,
261
- to: data.transactionRequest.to,
262
- value: BigInt(data.transactionRequest.value),
283
+ ...tx,
263
284
  extraGas: 50000n, // extra gas buffer
264
285
  },
265
286
  approvalData,
266
287
  swapDetails: {
267
- fromAddress: data.fromAddress,
268
- toAddress: data.toAddress,
269
-
270
- fromToken: data.fromToken,
271
- toToken: data.toToken,
272
-
273
- fromAmount: data.fromAmount,
274
- fromAmountWei: data.fromAmountWei,
275
-
276
- toAmountMinWei: data.toAmountMinWei,
277
- toAmountMin: data.toAmountMin,
278
-
279
- toAmountWei: data.toAmountWei,
280
- toAmount: data.toAmount,
281
- estimated: data.estimated,
282
-
283
- maxSlippageBPS: data.maxSlippageBPS,
288
+ fromAddress: quote.intent.sender,
289
+ toAddress: quote.intent.receiver,
290
+
291
+ fromToken: {
292
+ tokenAddress: firstStep.originToken.address,
293
+ chainId: firstStep.originToken.chainId,
294
+ decimals: firstStep.originToken.decimals,
295
+ symbol: firstStep.originToken.symbol,
296
+ name: firstStep.originToken.name,
297
+ priceUSDCents: firstStep.originToken.priceUsd * 100,
298
+ },
299
+ toToken: {
300
+ tokenAddress: firstStep.destinationToken.address,
301
+ chainId: firstStep.destinationToken.chainId,
302
+ decimals: firstStep.destinationToken.decimals,
303
+ symbol: firstStep.destinationToken.symbol,
304
+ name: firstStep.destinationToken.name,
305
+ priceUSDCents: firstStep.destinationToken.priceUsd * 100,
306
+ },
307
+
308
+ fromAmount: Value.format(
309
+ quote.originAmount,
310
+ firstStep.originToken.decimals,
311
+ ).toString(),
312
+ fromAmountWei: quote.originAmount.toString(),
313
+
314
+ toAmountMinWei: quote.destinationAmount.toString(),
315
+ toAmountMin: Value.format(
316
+ quote.destinationAmount,
317
+ firstStep.destinationToken.decimals,
318
+ ).toString(),
319
+
320
+ toAmountWei: quote.destinationAmount.toString(),
321
+ toAmount: Value.format(
322
+ quote.destinationAmount,
323
+ firstStep.destinationToken.decimals,
324
+ ).toString(),
325
+ estimated: {
326
+ fromAmountUSDCents:
327
+ Number(
328
+ Value.format(quote.originAmount, firstStep.originToken.decimals),
329
+ ) *
330
+ firstStep.originToken.priceUsd *
331
+ 100,
332
+ toAmountMinUSDCents:
333
+ Number(
334
+ Value.format(
335
+ quote.destinationAmount,
336
+ firstStep.destinationToken.decimals,
337
+ ),
338
+ ) *
339
+ firstStep.destinationToken.priceUsd *
340
+ 100,
341
+ toAmountUSDCents:
342
+ Number(
343
+ Value.format(
344
+ quote.destinationAmount,
345
+ firstStep.destinationToken.decimals,
346
+ ),
347
+ ) *
348
+ firstStep.destinationToken.priceUsd *
349
+ 100,
350
+ slippageBPS: 0,
351
+ feesUSDCents: 0,
352
+ gasCostUSDCents: 0,
353
+ durationSeconds: firstStep.estimatedExecutionTimeMs / 1000,
354
+ },
355
+
356
+ maxSlippageBPS: 0,
284
357
  },
285
358
 
286
- paymentTokens: data.paymentTokens,
287
- processingFees: data.processingFees,
359
+ paymentTokens: [
360
+ {
361
+ token: {
362
+ tokenAddress: firstStep.originToken.address,
363
+ chainId: firstStep.originToken.chainId,
364
+ decimals: firstStep.originToken.decimals,
365
+ symbol: firstStep.originToken.symbol,
366
+ name: firstStep.originToken.name,
367
+ priceUSDCents: firstStep.originToken.priceUsd * 100,
368
+ },
369
+ amountWei: quote.originAmount.toString(),
370
+ amount: Value.format(
371
+ quote.originAmount,
372
+ firstStep.originToken.decimals,
373
+ ).toString(),
374
+ amountUSDCents:
375
+ Number(
376
+ Value.format(quote.originAmount, firstStep.originToken.decimals),
377
+ ) *
378
+ firstStep.originToken.priceUsd *
379
+ 100,
380
+ },
381
+ ],
382
+ // TODO (UB): add develope and platform fees in API
383
+ processingFees: [
384
+ {
385
+ token: {
386
+ tokenAddress: firstStep.originToken.address,
387
+ chainId: firstStep.originToken.chainId,
388
+ decimals: firstStep.originToken.decimals,
389
+ symbol: firstStep.originToken.symbol,
390
+ name: firstStep.originToken.name,
391
+ priceUSDCents: firstStep.originToken.priceUsd * 100,
392
+ },
393
+ amountUSDCents: 0,
394
+ amountWei: "0",
395
+ amount: "0",
396
+ },
397
+ ],
288
398
  client: params.client,
289
399
  };
290
400
 
@@ -1,10 +1,12 @@
1
+ import { type Status, status as bridgeStatus } from "../../bridge/index.js";
2
+ import type { Token } from "../../bridge/types/Token.js";
1
3
  import type { ThirdwebClient } from "../../client/client.js";
2
- import { getClientFetch } from "../../utils/fetch.js";
4
+ import type { Hex } from "../../utils/encoding/hex.js";
5
+ import { toTokens } from "../../utils/units.js";
3
6
  import type {
4
7
  PayOnChainTransactionDetails,
5
8
  PayTokenInfo,
6
9
  } from "../utils/commonTypes.js";
7
- import { getPayBuyWithCryptoStatusUrl } from "../utils/definitions.js";
8
10
 
9
11
  // TODO: add JSDoc description for all properties
10
12
 
@@ -123,7 +125,7 @@ export type ValidBuyWithCryptoStatus = Exclude<
123
125
  * }});
124
126
  * ```
125
127
  * @returns Object of type [`BuyWithCryptoStatus`](https://portal.thirdweb.com/references/typescript/v5/BuyWithCryptoStatus)
126
- * @deprecated
128
+ * @deprecated use Bridge.status instead
127
129
  * @buyCrypto
128
130
  */
129
131
  export async function getBuyWithCryptoStatus(
@@ -133,26 +135,217 @@ export async function getBuyWithCryptoStatus(
133
135
  if (!buyWithCryptoTransaction.transactionHash) {
134
136
  throw new Error("Transaction hash is required");
135
137
  }
136
- const queryString = new URLSearchParams({
137
- transactionHash: buyWithCryptoTransaction.transactionHash,
138
- chainId: buyWithCryptoTransaction.chainId.toString(),
139
- }).toString();
140
- const url = `${getPayBuyWithCryptoStatusUrl()}?${queryString}`;
141
-
142
- const response = await getClientFetch(buyWithCryptoTransaction.client)(url);
143
-
144
- // Assuming the response directly matches the BuyWithCryptoStatus interface
145
- if (!response.ok) {
146
- const error = await response.text().catch(() => null);
147
- throw new Error(
148
- `HTTP error! status: ${response.status} - ${response.statusText}: ${error || "unknown error"}`,
149
- );
150
- }
138
+ const result = await bridgeStatus({
139
+ transactionHash: buyWithCryptoTransaction.transactionHash as Hex,
140
+ chainId: buyWithCryptoTransaction.chainId,
141
+ client: buyWithCryptoTransaction.client,
142
+ });
143
+
144
+ switch (result.status) {
145
+ case "COMPLETED": {
146
+ const originTransaction = result.transactions?.find(
147
+ (tx) => tx.chainId === buyWithCryptoTransaction.chainId,
148
+ );
149
+ const destinationTransaction = result.transactions?.find(
150
+ (tx) => tx.chainId !== buyWithCryptoTransaction.chainId,
151
+ );
151
152
 
152
- const data: BuyWithCryptoStatus = (await response.json()).result;
153
- return data;
153
+ return toBuyWithCryptoStatus({
154
+ originTransaction,
155
+ destinationTransaction,
156
+ originAmount: result.originAmount,
157
+ destinationAmount: result.destinationAmount,
158
+ originTokenAddress: result.originTokenAddress,
159
+ destinationTokenAddress: result.destinationTokenAddress,
160
+ originChainId: result.originChainId,
161
+ destinationChainId: result.destinationChainId,
162
+ status: result.status,
163
+ sender: result.sender,
164
+ receiver: result.receiver,
165
+ paymentId: result.paymentId,
166
+ originToken: result.originToken,
167
+ destinationToken: result.destinationToken,
168
+ purchaseData: result.purchaseData as object | undefined,
169
+ });
170
+ }
171
+ case "PENDING": {
172
+ return toBuyWithCryptoStatus({
173
+ originAmount: result.originAmount,
174
+ originTokenAddress: result.originTokenAddress,
175
+ destinationTokenAddress: result.destinationTokenAddress,
176
+ originChainId: result.originChainId,
177
+ destinationChainId: result.destinationChainId,
178
+ status: result.status,
179
+ sender: result.sender,
180
+ receiver: result.receiver,
181
+ paymentId: result.paymentId,
182
+ originToken: result.originToken,
183
+ destinationToken: result.destinationToken,
184
+ purchaseData: result.purchaseData as object | undefined,
185
+ });
186
+ }
187
+ case "FAILED": {
188
+ const originTransaction = result.transactions?.find(
189
+ (tx) => tx.chainId === buyWithCryptoTransaction.chainId,
190
+ );
191
+ const destinationTransaction = result.transactions?.find(
192
+ (tx) => tx.chainId !== buyWithCryptoTransaction.chainId,
193
+ );
194
+ return toBuyWithCryptoStatus({
195
+ originTransaction,
196
+ destinationTransaction,
197
+ originAmount: BigInt(0), // TODO: get from API
198
+ originTokenAddress: "", // TODO: get from API
199
+ destinationTokenAddress: "", // TODO: get from API
200
+ originChainId: 0, // TODO: get from API
201
+ destinationChainId: 0, // TODO: get from API
202
+ status: result.status,
203
+ sender: "",
204
+ receiver: "",
205
+ paymentId: "",
206
+ originToken: undefined,
207
+ destinationToken: undefined,
208
+ purchaseData: result.purchaseData as object | undefined,
209
+ });
210
+ }
211
+ default: {
212
+ return {
213
+ status: "NOT_FOUND",
214
+ };
215
+ }
216
+ }
154
217
  } catch (error) {
155
218
  console.error("Fetch error:", error);
156
219
  throw new Error(`Fetch failed: ${error}`);
157
220
  }
158
221
  }
222
+
223
+ function toBuyWithCryptoStatus(args: {
224
+ originTransaction?: Status["transactions"][number];
225
+ destinationTransaction?: Status["transactions"][number];
226
+ originAmount: bigint;
227
+ originTokenAddress: string;
228
+ destinationAmount?: bigint;
229
+ destinationTokenAddress: string;
230
+ originChainId: number;
231
+ destinationChainId: number;
232
+ status: Status["status"];
233
+ purchaseData?: object;
234
+ sender: string;
235
+ receiver: string;
236
+ paymentId: string;
237
+ originToken?: Token;
238
+ destinationToken?: Token;
239
+ }): BuyWithCryptoStatus {
240
+ const {
241
+ originTransaction,
242
+ destinationTransaction,
243
+ status,
244
+ purchaseData,
245
+ originAmount,
246
+ destinationAmount,
247
+ originTokenAddress,
248
+ destinationTokenAddress,
249
+ originChainId,
250
+ destinationChainId,
251
+ sender,
252
+ receiver,
253
+ originToken,
254
+ destinationToken,
255
+ } = args;
256
+ return {
257
+ fromAddress: sender,
258
+ toAddress: receiver,
259
+ quote: {
260
+ createdAt: new Date().toISOString(),
261
+ estimated: {
262
+ fromAmountUSDCents: 0,
263
+ toAmountMinUSDCents: 0,
264
+ toAmountUSDCents: 0,
265
+ slippageBPS: 0,
266
+ feesUSDCents: 0,
267
+ gasCostUSDCents: 0,
268
+ durationSeconds: 0,
269
+ },
270
+ fromAmount: originToken
271
+ ? toTokens(originAmount, originToken.decimals).toString()
272
+ : "",
273
+ fromAmountWei: originAmount.toString(),
274
+ toAmount:
275
+ destinationToken && destinationAmount
276
+ ? toTokens(destinationAmount, destinationToken.decimals).toString()
277
+ : "",
278
+ toAmountWei: destinationAmount ? destinationAmount.toString() : "",
279
+ toAmountMin: destinationToken
280
+ ? toTokens(
281
+ destinationAmount ?? BigInt(0),
282
+ destinationToken.decimals,
283
+ ).toString()
284
+ : "",
285
+ toAmountMinWei: destinationAmount ? destinationAmount.toString() : "",
286
+ fromToken: {
287
+ tokenAddress: originTokenAddress,
288
+ chainId: originChainId,
289
+ decimals: originToken?.decimals ?? 18,
290
+ name: originToken?.name ?? "",
291
+ symbol: originToken?.symbol ?? "",
292
+ priceUSDCents: 0,
293
+ },
294
+ toToken: {
295
+ tokenAddress: destinationTokenAddress,
296
+ chainId: destinationChainId,
297
+ decimals: destinationToken?.decimals ?? 18,
298
+ name: destinationToken?.name ?? "",
299
+ symbol: destinationToken?.symbol ?? "",
300
+ priceUSDCents: 0,
301
+ },
302
+ },
303
+ swapType:
304
+ originTransaction?.chainId === destinationTransaction?.chainId
305
+ ? "SAME_CHAIN"
306
+ : "CROSS_CHAIN", // TODO transfer type?
307
+ status: status,
308
+ subStatus: status === "COMPLETED" ? "SUCCESS" : "NONE",
309
+ purchaseData: purchaseData as object | undefined,
310
+ bridge: "STARPORT",
311
+ destination: {
312
+ amount: destinationToken
313
+ ? toTokens(
314
+ destinationAmount ?? BigInt(0),
315
+ destinationToken.decimals,
316
+ ).toString()
317
+ : "",
318
+ amountWei: destinationAmount?.toString() ?? "",
319
+ token: {
320
+ tokenAddress: destinationTokenAddress,
321
+ chainId: destinationChainId,
322
+ decimals: destinationToken?.decimals ?? 18,
323
+ name: destinationToken?.name ?? "",
324
+ symbol: destinationToken?.symbol ?? "",
325
+ priceUSDCents: 0,
326
+ },
327
+ amountUSDCents: 0,
328
+ completedAt: new Date().toISOString(),
329
+ explorerLink: "",
330
+ transactionHash: destinationTransaction?.transactionHash ?? "",
331
+ },
332
+ source: {
333
+ amount: originToken
334
+ ? toTokens(originAmount, originToken.decimals).toString()
335
+ : "",
336
+ amountWei: originAmount.toString(),
337
+ token: {
338
+ tokenAddress: originTokenAddress,
339
+ chainId: originChainId,
340
+ decimals: originToken?.decimals ?? 18,
341
+ name: originToken?.name ?? "",
342
+ symbol: originToken?.symbol ?? "",
343
+ priceUSDCents: 0,
344
+ },
345
+ amountUSDCents: 0,
346
+ completedAt: new Date().toISOString(),
347
+ explorerLink: "",
348
+ transactionHash: originTransaction?.transactionHash ?? "",
349
+ },
350
+ };
351
+ }