@daimo/pay 1.16.0 → 1.16.2

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 (566) hide show
  1. package/build/index.d.ts +628 -15
  2. package/build/package.json.js +6 -4
  3. package/build/package.json.js.map +1 -1
  4. package/build/src/assets/MobileWithLogos.js +320 -1
  5. package/build/src/assets/MobileWithLogos.js.map +1 -1
  6. package/build/src/assets/ScanIconWithLogos.js +216 -10
  7. package/build/src/assets/ScanIconWithLogos.js.map +1 -1
  8. package/build/src/assets/browsers.js +963 -7
  9. package/build/src/assets/browsers.js.map +1 -1
  10. package/build/src/assets/chains.js +633 -103
  11. package/build/src/assets/chains.js.map +1 -1
  12. package/build/src/assets/coins.js +38 -1
  13. package/build/src/assets/coins.js.map +1 -1
  14. package/build/src/assets/crepe.js +35 -1
  15. package/build/src/assets/crepe.js.map +1 -1
  16. package/build/src/assets/icons.js +258 -15
  17. package/build/src/assets/icons.js.map +1 -1
  18. package/build/src/assets/logos.js +1510 -140
  19. package/build/src/assets/logos.js.map +1 -1
  20. package/build/src/assets/wallet.js +32 -1
  21. package/build/src/assets/wallet.js.map +1 -1
  22. package/build/src/assets/wave.js +41 -1
  23. package/build/src/assets/wave.js.map +1 -1
  24. package/build/src/components/Common/Alert/index.js +4 -1
  25. package/build/src/components/Common/Alert/index.js.map +1 -1
  26. package/build/src/components/Common/Alert/styles.js +4 -4
  27. package/build/src/components/Common/Alert/styles.js.map +1 -1
  28. package/build/src/components/Common/AmountInput/AmountInputField.js +29 -18
  29. package/build/src/components/Common/AmountInput/AmountInputField.js.map +1 -1
  30. package/build/src/components/Common/AmountInput/index.js +112 -99
  31. package/build/src/components/Common/AmountInput/index.js.map +1 -1
  32. package/build/src/components/Common/Avatar/index.js +63 -51
  33. package/build/src/components/Common/Avatar/index.js.map +1 -1
  34. package/build/src/components/Common/Avatar/styles.js +9 -14
  35. package/build/src/components/Common/Avatar/styles.js.map +1 -1
  36. package/build/src/components/Common/BrowserIcon/index.js +15 -14
  37. package/build/src/components/Common/BrowserIcon/index.js.map +1 -1
  38. package/build/src/components/Common/BrowserIcon/styles.js +1 -1
  39. package/build/src/components/Common/BrowserIcon/styles.js.map +1 -1
  40. package/build/src/components/Common/Button/index.js +131 -25
  41. package/build/src/components/Common/Button/index.js.map +1 -1
  42. package/build/src/components/Common/Button/styles.js +20 -24
  43. package/build/src/components/Common/Button/styles.js.map +1 -1
  44. package/build/src/components/Common/Chain/index.js +130 -14
  45. package/build/src/components/Common/Chain/index.js.map +1 -1
  46. package/build/src/components/Common/Chain/styles.js +9 -13
  47. package/build/src/components/Common/Chain/styles.js.map +1 -1
  48. package/build/src/components/Common/ChainSelectList/index.js +232 -89
  49. package/build/src/components/Common/ChainSelectList/index.js.map +1 -1
  50. package/build/src/components/Common/ChainSelectList/styles.js +11 -13
  51. package/build/src/components/Common/ChainSelectList/styles.js.map +1 -1
  52. package/build/src/components/Common/CircleTimer.js +85 -41
  53. package/build/src/components/Common/CircleTimer.js.map +1 -1
  54. package/build/src/components/Common/ConnectorList/index.js +106 -80
  55. package/build/src/components/Common/ConnectorList/index.js.map +1 -1
  56. package/build/src/components/Common/ConnectorList/styles.js +28 -36
  57. package/build/src/components/Common/ConnectorList/styles.js.map +1 -1
  58. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +16 -9
  59. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -1
  60. package/build/src/components/Common/CopyToClipboard/index.js +3 -5
  61. package/build/src/components/Common/CopyToClipboard/index.js.map +1 -1
  62. package/build/src/components/Common/CustomQRCode/QRCode.js +120 -57
  63. package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -1
  64. package/build/src/components/Common/CustomQRCode/index.js +60 -10
  65. package/build/src/components/Common/CustomQRCode/index.js.map +1 -1
  66. package/build/src/components/Common/CustomQRCode/styles.js +6 -6
  67. package/build/src/components/Common/CustomQRCode/styles.js.map +1 -1
  68. package/build/src/components/Common/FitText/index.js +24 -17
  69. package/build/src/components/Common/FitText/index.js.map +1 -1
  70. package/build/src/components/Common/Modal/index.js +481 -267
  71. package/build/src/components/Common/Modal/index.js.map +1 -1
  72. package/build/src/components/Common/Modal/styles.js +44 -48
  73. package/build/src/components/Common/Modal/styles.js.map +1 -1
  74. package/build/src/components/Common/OptionsList/index.js +75 -33
  75. package/build/src/components/Common/OptionsList/index.js.map +1 -1
  76. package/build/src/components/Common/OptionsList/styles.js +7 -8
  77. package/build/src/components/Common/OptionsList/styles.js.map +1 -1
  78. package/build/src/components/Common/OrderHeader/index.js +109 -65
  79. package/build/src/components/Common/OrderHeader/index.js.map +1 -1
  80. package/build/src/components/Common/PaymentBreakdown/index.js +29 -7
  81. package/build/src/components/Common/PaymentBreakdown/index.js.map +1 -1
  82. package/build/src/components/Common/Portal/index.js +21 -22
  83. package/build/src/components/Common/Portal/index.js.map +1 -1
  84. package/build/src/components/Common/PoweredByFooter/index.js +39 -21
  85. package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
  86. package/build/src/components/Common/ScrollArea/index.js +107 -52
  87. package/build/src/components/Common/ScrollArea/index.js.map +1 -1
  88. package/build/src/components/Common/ScrollArea/styles.js +7 -11
  89. package/build/src/components/Common/ScrollArea/styles.js.map +1 -1
  90. package/build/src/components/Common/SelectAnotherMethodButton/index.js +80 -56
  91. package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -1
  92. package/build/src/components/Common/Spinner/index.js +56 -16
  93. package/build/src/components/Common/Spinner/index.js.map +1 -1
  94. package/build/src/components/Common/Spinner/styles.js +2 -2
  95. package/build/src/components/Common/Spinner/styles.js.map +1 -1
  96. package/build/src/components/Common/SwitchButton/index.js +18 -15
  97. package/build/src/components/Common/SwitchButton/index.js.map +1 -1
  98. package/build/src/components/Common/ThemedButton/index.js +37 -16
  99. package/build/src/components/Common/ThemedButton/index.js.map +1 -1
  100. package/build/src/components/Common/ThemedButton/styles.js +2 -2
  101. package/build/src/components/Common/ThemedButton/styles.js.map +1 -1
  102. package/build/src/components/Common/TokenChainLogo/index.js +14 -8
  103. package/build/src/components/Common/TokenChainLogo/index.js.map +1 -1
  104. package/build/src/components/Common/Tooltip/index.js +115 -83
  105. package/build/src/components/Common/Tooltip/index.js.map +1 -1
  106. package/build/src/components/Common/Tooltip/styles.js +8 -8
  107. package/build/src/components/Common/Tooltip/styles.js.map +1 -1
  108. package/build/src/components/Common/WalletChainLogo/index.js +13 -6
  109. package/build/src/components/Common/WalletChainLogo/index.js.map +1 -1
  110. package/build/src/components/DaimoPayButton/index.js +171 -180
  111. package/build/src/components/DaimoPayButton/index.js.map +1 -1
  112. package/build/src/components/DaimoPayButton/styles.js +4 -4
  113. package/build/src/components/DaimoPayButton/styles.js.map +1 -1
  114. package/build/src/components/DaimoPayModal/ConnectUsing.js +50 -24
  115. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -1
  116. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +303 -163
  117. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -1
  118. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +10 -12
  119. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -1
  120. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +69 -39
  121. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
  122. package/build/src/components/DaimoPayModal/index.js +409 -416
  123. package/build/src/components/DaimoPayModal/index.js.map +1 -1
  124. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +15 -11
  125. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -1
  126. package/build/src/components/Pages/About/graphics.js +796 -130
  127. package/build/src/components/Pages/About/graphics.js.map +1 -1
  128. package/build/src/components/Pages/About/index.js +203 -110
  129. package/build/src/components/Pages/About/index.js.map +1 -1
  130. package/build/src/components/Pages/About/styles.js +11 -15
  131. package/build/src/components/Pages/About/styles.js.map +1 -1
  132. package/build/src/components/Pages/Confirmation/index.js +71 -48
  133. package/build/src/components/Pages/Confirmation/index.js.map +1 -1
  134. package/build/src/components/Pages/Connectors/index.js +50 -16
  135. package/build/src/components/Pages/Connectors/index.js.map +1 -1
  136. package/build/src/components/Pages/Connectors/styles.js +10 -10
  137. package/build/src/components/Pages/Connectors/styles.js.map +1 -1
  138. package/build/src/components/Pages/DownloadApp/index.js +23 -18
  139. package/build/src/components/Pages/DownloadApp/index.js.map +1 -1
  140. package/build/src/components/Pages/Error/index.js +27 -15
  141. package/build/src/components/Pages/Error/index.js.map +1 -1
  142. package/build/src/components/Pages/MobileConnectors/index.js +50 -44
  143. package/build/src/components/Pages/MobileConnectors/index.js.map +1 -1
  144. package/build/src/components/Pages/MobileConnectors/styles.js +9 -11
  145. package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -1
  146. package/build/src/components/Pages/Onboarding/index.js +20 -4
  147. package/build/src/components/Pages/Onboarding/index.js.map +1 -1
  148. package/build/src/components/Pages/Onboarding/styles.js +13 -13
  149. package/build/src/components/Pages/Onboarding/styles.js.map +1 -1
  150. package/build/src/components/Pages/PayWithToken/index.js +133 -122
  151. package/build/src/components/Pages/PayWithToken/index.js.map +1 -1
  152. package/build/src/components/Pages/SelectAmount/index.js +12 -5
  153. package/build/src/components/Pages/SelectAmount/index.js.map +1 -1
  154. package/build/src/components/Pages/SelectDepositAddressAmount/index.js +56 -38
  155. package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -1
  156. package/build/src/components/Pages/SelectDepositAddressChain/index.js +57 -40
  157. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -1
  158. package/build/src/components/Pages/SelectExchange/index.js +29 -24
  159. package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
  160. package/build/src/components/Pages/SelectExternalAmount/index.js +57 -41
  161. package/build/src/components/Pages/SelectExternalAmount/index.js.map +1 -1
  162. package/build/src/components/Pages/SelectMethod/index.js +200 -183
  163. package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
  164. package/build/src/components/Pages/SelectToken/index.js +72 -46
  165. package/build/src/components/Pages/SelectToken/index.js.map +1 -1
  166. package/build/src/components/Pages/SelectWalletAmount/index.js +40 -32
  167. package/build/src/components/Pages/SelectWalletAmount/index.js.map +1 -1
  168. package/build/src/components/Pages/SelectWalletChain/index.js +40 -36
  169. package/build/src/components/Pages/SelectWalletChain/index.js.map +1 -1
  170. package/build/src/components/Pages/SelectZKP/index.js +29 -24
  171. package/build/src/components/Pages/SelectZKP/index.js.map +1 -1
  172. package/build/src/components/Pages/Solana/ConnectorSolana/index.js +60 -45
  173. package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -1
  174. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +73 -61
  175. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -1
  176. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +12 -5
  177. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -1
  178. package/build/src/components/Pages/SwitchNetworks/index.js +29 -10
  179. package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -1
  180. package/build/src/components/Pages/WaitingDepositAddress/index.js +332 -184
  181. package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -1
  182. package/build/src/components/Pages/WaitingExternal/index.js +69 -46
  183. package/build/src/components/Pages/WaitingExternal/index.js.map +1 -1
  184. package/build/src/components/Pages/WaitingWallet/index.js +37 -16
  185. package/build/src/components/Pages/WaitingWallet/index.js.map +1 -1
  186. package/build/src/components/Spinners/CircleSpinner/index.js +96 -7
  187. package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -1
  188. package/build/src/components/Spinners/CircleSpinner/styles.js +6 -7
  189. package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -1
  190. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +18 -9
  191. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -1
  192. package/build/src/components/Spinners/SquircleSpinner/index.js +60 -7
  193. package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -1
  194. package/build/src/components/Spinners/SquircleSpinner/styles.js +4 -4
  195. package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -1
  196. package/build/src/components/Spinners/TokenLogoSpinner/index.js +12 -1
  197. package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -1
  198. package/build/src/components/Spinners/TokenLogoSpinner/styles.js +1 -1
  199. package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -1
  200. package/build/src/components/Spinners/WalletPaymentSpinner/index.js +27 -20
  201. package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -1
  202. package/build/src/components/Spinners/styles.js +3 -4
  203. package/build/src/components/Spinners/styles.js.map +1 -1
  204. package/build/src/constants/defaultTheme.js +1 -1
  205. package/build/src/constants/defaultTheme.js.map +1 -1
  206. package/build/src/constants/routes.js +29 -30
  207. package/build/src/constants/routes.js.map +1 -1
  208. package/build/src/defaultConfig.js +49 -46
  209. package/build/src/defaultConfig.js.map +1 -1
  210. package/build/src/defaultConnectors.js +32 -19
  211. package/build/src/defaultConnectors.js.map +1 -1
  212. package/build/src/hooks/useChainIsSupported.js +3 -5
  213. package/build/src/hooks/useChainIsSupported.js.map +1 -1
  214. package/build/src/hooks/useChains.js +3 -4
  215. package/build/src/hooks/useChains.js.map +1 -1
  216. package/build/src/hooks/useConnect.js +51 -39
  217. package/build/src/hooks/useConnect.js.map +1 -1
  218. package/build/src/hooks/useConnectCallback.js +15 -12
  219. package/build/src/hooks/useConnectCallback.js.map +1 -1
  220. package/build/src/hooks/useConnectors.js +2 -2
  221. package/build/src/hooks/useConnectors.js.map +1 -1
  222. package/build/src/hooks/useDaimoPay.js +98 -82
  223. package/build/src/hooks/useDaimoPay.js.map +1 -1
  224. package/build/src/hooks/useDaimoPayStatus.js +4 -15
  225. package/build/src/hooks/useDaimoPayStatus.js.map +1 -1
  226. package/build/src/hooks/useDaimoPayUI.js +7 -7
  227. package/build/src/hooks/useDaimoPayUI.js.map +1 -1
  228. package/build/src/hooks/useDepositAddressOptions.js +29 -25
  229. package/build/src/hooks/useDepositAddressOptions.js.map +1 -1
  230. package/build/src/hooks/useEnsFallbackConfig.js +5 -5
  231. package/build/src/hooks/useEnsFallbackConfig.js.map +1 -1
  232. package/build/src/hooks/useExternalPaymentOptions.js +57 -52
  233. package/build/src/hooks/useExternalPaymentOptions.js.map +1 -1
  234. package/build/src/hooks/useFitText.js +120 -135
  235. package/build/src/hooks/useFitText.js.map +1 -1
  236. package/build/src/hooks/useFocusTrap.js +33 -37
  237. package/build/src/hooks/useFocusTrap.js.map +1 -1
  238. package/build/src/hooks/useIsMobile.js +3 -3
  239. package/build/src/hooks/useIsMobile.js.map +1 -1
  240. package/build/src/hooks/useIsMounted.js +3 -5
  241. package/build/src/hooks/useIsMounted.js.map +1 -1
  242. package/build/src/hooks/useLastConnector.js +15 -15
  243. package/build/src/hooks/useLastConnector.js.map +1 -1
  244. package/build/src/hooks/useLocales.js +44 -42
  245. package/build/src/hooks/useLocales.js.map +1 -1
  246. package/build/src/hooks/useLockBodyScroll.js +38 -44
  247. package/build/src/hooks/useLockBodyScroll.js.map +1 -1
  248. package/build/src/hooks/useOrderUsdLimits.js +17 -19
  249. package/build/src/hooks/useOrderUsdLimits.js.map +1 -1
  250. package/build/src/hooks/usePayContext.js +3 -5
  251. package/build/src/hooks/usePayContext.js.map +1 -1
  252. package/build/src/hooks/usePaymentState.js +351 -324
  253. package/build/src/hooks/usePaymentState.js.map +1 -1
  254. package/build/src/hooks/usePrevious.js +6 -7
  255. package/build/src/hooks/usePrevious.js.map +1 -1
  256. package/build/src/hooks/useSolanaPaymentOptions.js +33 -33
  257. package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -1
  258. package/build/src/hooks/useTokenOptions.js +129 -112
  259. package/build/src/hooks/useTokenOptions.js.map +1 -1
  260. package/build/src/hooks/useUntronAvailability.js +26 -34
  261. package/build/src/hooks/useUntronAvailability.js.map +1 -1
  262. package/build/src/hooks/useWalletPaymentOptions.js +83 -78
  263. package/build/src/hooks/useWalletPaymentOptions.js.map +1 -1
  264. package/build/src/hooks/useWindowSize.js +16 -16
  265. package/build/src/hooks/useWindowSize.js.map +1 -1
  266. package/build/src/localizations/index.js +28 -31
  267. package/build/src/localizations/index.js.map +1 -1
  268. package/build/src/localizations/locales/ar-AE.js +88 -88
  269. package/build/src/localizations/locales/ar-AE.js.map +1 -1
  270. package/build/src/localizations/locales/ca-AD.js +88 -88
  271. package/build/src/localizations/locales/ca-AD.js.map +1 -1
  272. package/build/src/localizations/locales/ee-EE.js +96 -88
  273. package/build/src/localizations/locales/ee-EE.js.map +1 -1
  274. package/build/src/localizations/locales/en-US.js +134 -126
  275. package/build/src/localizations/locales/en-US.js.map +1 -1
  276. package/build/src/localizations/locales/es-ES.js +126 -126
  277. package/build/src/localizations/locales/es-ES.js.map +1 -1
  278. package/build/src/localizations/locales/fa-IR.js +88 -88
  279. package/build/src/localizations/locales/fa-IR.js.map +1 -1
  280. package/build/src/localizations/locales/fr-FR.js +88 -88
  281. package/build/src/localizations/locales/fr-FR.js.map +1 -1
  282. package/build/src/localizations/locales/ja-JP.js +88 -88
  283. package/build/src/localizations/locales/ja-JP.js.map +1 -1
  284. package/build/src/localizations/locales/pt-BR.js +96 -88
  285. package/build/src/localizations/locales/pt-BR.js.map +1 -1
  286. package/build/src/localizations/locales/ru-RU.js +92 -88
  287. package/build/src/localizations/locales/ru-RU.js.map +1 -1
  288. package/build/src/localizations/locales/tr-TR.js +96 -88
  289. package/build/src/localizations/locales/tr-TR.js.map +1 -1
  290. package/build/src/localizations/locales/vi-VN.js +96 -88
  291. package/build/src/localizations/locales/vi-VN.js.map +1 -1
  292. package/build/src/localizations/locales/zh-CN.js +88 -88
  293. package/build/src/localizations/locales/zh-CN.js.map +1 -1
  294. package/build/src/payment/paymentEffects.js +237 -265
  295. package/build/src/payment/paymentEffects.js.map +1 -1
  296. package/build/src/payment/paymentFsm.js +165 -186
  297. package/build/src/payment/paymentFsm.js.map +1 -1
  298. package/build/src/payment/paymentStore.js +8 -10
  299. package/build/src/payment/paymentStore.js.map +1 -1
  300. package/build/src/payment/paymentUtils.js +5 -9
  301. package/build/src/payment/paymentUtils.js.map +1 -1
  302. package/build/src/provider/DaimoPayProvider.js +258 -249
  303. package/build/src/provider/DaimoPayProvider.js.map +1 -1
  304. package/build/src/provider/PayContext.js +0 -1
  305. package/build/src/provider/PayContext.js.map +1 -1
  306. package/build/src/provider/PaymentProvider.js +18 -17
  307. package/build/src/provider/PaymentProvider.js.map +1 -1
  308. package/build/src/provider/SolanaContextProvider.js +6 -3
  309. package/build/src/provider/SolanaContextProvider.js.map +1 -1
  310. package/build/src/provider/Web3ContextProvider.js +23 -23
  311. package/build/src/provider/Web3ContextProvider.js.map +1 -1
  312. package/build/src/stateStore.js +28 -74
  313. package/build/src/stateStore.js.map +1 -1
  314. package/build/src/styles/defaultTheme.js +64 -73
  315. package/build/src/styles/defaultTheme.js.map +1 -1
  316. package/build/src/styles/index.js +202 -217
  317. package/build/src/styles/index.js.map +1 -1
  318. package/build/src/styles/styled/index.js +0 -10
  319. package/build/src/styles/styled/index.js.map +1 -1
  320. package/build/src/styles/themes/base.js +136 -136
  321. package/build/src/styles/themes/base.js.map +1 -1
  322. package/build/src/styles/themes/index.js.map +1 -1
  323. package/build/src/styles/themes/midnight.js +71 -71
  324. package/build/src/styles/themes/midnight.js.map +1 -1
  325. package/build/src/styles/themes/minimal.js +75 -75
  326. package/build/src/styles/themes/minimal.js.map +1 -1
  327. package/build/src/styles/themes/nouns.js +76 -76
  328. package/build/src/styles/themes/nouns.js.map +1 -1
  329. package/build/src/styles/themes/retro.js +88 -88
  330. package/build/src/styles/themes/retro.js.map +1 -1
  331. package/build/src/styles/themes/rounded.js +84 -84
  332. package/build/src/styles/themes/rounded.js.map +1 -1
  333. package/build/src/styles/themes/soft.js +66 -66
  334. package/build/src/styles/themes/soft.js.map +1 -1
  335. package/build/src/styles/themes/web95.js +95 -95
  336. package/build/src/styles/themes/web95.js.map +1 -1
  337. package/build/src/utils/exports.js +0 -1
  338. package/build/src/utils/exports.js.map +1 -1
  339. package/build/src/utils/format.js +25 -63
  340. package/build/src/utils/format.js.map +1 -1
  341. package/build/src/utils/index.js +23 -20
  342. package/build/src/utils/index.js.map +1 -1
  343. package/build/src/utils/p3.js +8 -9
  344. package/build/src/utils/p3.js.map +1 -1
  345. package/build/src/utils/platform.js +6 -8
  346. package/build/src/utils/platform.js.map +1 -1
  347. package/build/src/utils/polling.js +31 -31
  348. package/build/src/utils/polling.js.map +1 -1
  349. package/build/src/utils/supportUrl.js +9 -9
  350. package/build/src/utils/supportUrl.js.map +1 -1
  351. package/build/src/utils/trpc.js +11 -11
  352. package/build/src/utils/trpc.js.map +1 -1
  353. package/build/src/utils/validateInput.js +9 -29
  354. package/build/src/utils/validateInput.js.map +1 -1
  355. package/build/src/wallets/index.js +13 -22
  356. package/build/src/wallets/index.js.map +1 -1
  357. package/build/src/wallets/useWallets.js +183 -181
  358. package/build/src/wallets/useWallets.js.map +1 -1
  359. package/build/src/wallets/walletConfigs.js +230 -235
  360. package/build/src/wallets/walletConfigs.js.map +1 -1
  361. package/build/src/world-mini-app/WorldPayButton.js +113 -118
  362. package/build/src/world-mini-app/WorldPayButton.js.map +1 -1
  363. package/build/src/world-mini-app/promptWorldPayment.js +49 -47
  364. package/build/src/world-mini-app/promptWorldPayment.js.map +1 -1
  365. package/build/{types.d.ts → types-7ed033b6.d.ts} +31 -11
  366. package/build/world.d.ts +89 -1
  367. package/package.json +7 -5
  368. package/build/assets/MobileWithLogos.d.ts +0 -2
  369. package/build/assets/ScanIconWithLogos.d.ts +0 -6
  370. package/build/assets/browsers.d.ts +0 -10
  371. package/build/assets/chains.d.ts +0 -28
  372. package/build/assets/coins.d.ts +0 -2
  373. package/build/assets/crepe.d.ts +0 -3
  374. package/build/assets/icons.d.ts +0 -35
  375. package/build/assets/logos.d.ts +0 -207
  376. package/build/assets/wallet.d.ts +0 -3
  377. package/build/assets/wave.d.ts +0 -2
  378. package/build/components/Common/Alert/index.d.ts +0 -6
  379. package/build/components/Common/Alert/styles.d.ts +0 -2
  380. package/build/components/Common/Alert/types.d.ts +0 -5
  381. package/build/components/Common/AmountInput/AmountInputField.d.ts +0 -8
  382. package/build/components/Common/AmountInput/index.d.ts +0 -9
  383. package/build/components/Common/Avatar/index.d.ts +0 -17
  384. package/build/components/Common/Avatar/styles.d.ts +0 -2
  385. package/build/components/Common/BrowserIcon/index.d.ts +0 -4
  386. package/build/components/Common/BrowserIcon/styles.d.ts +0 -1
  387. package/build/components/Common/BrowserIcon/types.d.ts +0 -3
  388. package/build/components/Common/Button/index.d.ts +0 -4
  389. package/build/components/Common/Button/styles.d.ts +0 -10
  390. package/build/components/Common/Button/types.d.ts +0 -15
  391. package/build/components/Common/Chain/index.d.ts +0 -9
  392. package/build/components/Common/Chain/styles.d.ts +0 -4
  393. package/build/components/Common/ChainSelectList/index.d.ts +0 -4
  394. package/build/components/Common/ChainSelectList/styles.d.ts +0 -9
  395. package/build/components/Common/CircleTimer.d.ts +0 -17
  396. package/build/components/Common/ConnectorList/index.d.ts +0 -2
  397. package/build/components/Common/ConnectorList/styles.d.ts +0 -8
  398. package/build/components/Common/CopyToClipboard/CopyToClipboardIcon.d.ts +0 -6
  399. package/build/components/Common/CopyToClipboard/index.d.ts +0 -7
  400. package/build/components/Common/CustomQRCode/QRCode.d.ts +0 -12
  401. package/build/components/Common/CustomQRCode/index.d.ts +0 -6
  402. package/build/components/Common/CustomQRCode/styles.d.ts +0 -6
  403. package/build/components/Common/CustomQRCode/types.d.ts +0 -11
  404. package/build/components/Common/DynamicContainer/index.d.ts +0 -7
  405. package/build/components/Common/FitText/index.d.ts +0 -8
  406. package/build/components/Common/LazyImage/index.d.ts +0 -8
  407. package/build/components/Common/Logo/index.d.ts +0 -8
  408. package/build/components/Common/Logo/styles.d.ts +0 -3
  409. package/build/components/Common/Modal/index.d.ts +0 -25
  410. package/build/components/Common/Modal/styles.d.ts +0 -25
  411. package/build/components/Common/OptionsList/index.d.ts +0 -17
  412. package/build/components/Common/OptionsList/styles.d.ts +0 -5
  413. package/build/components/Common/OrderHeader/index.d.ts +0 -5
  414. package/build/components/Common/PaymentBreakdown/index.d.ts +0 -6
  415. package/build/components/Common/Portal/index.d.ts +0 -2
  416. package/build/components/Common/PoweredByFooter/index.d.ts +0 -5
  417. package/build/components/Common/ScrollArea/index.d.ts +0 -9
  418. package/build/components/Common/ScrollArea/styles.d.ts +0 -3
  419. package/build/components/Common/SelectAnotherMethodButton/index.d.ts +0 -1
  420. package/build/components/Common/Spinner/index.d.ts +0 -1
  421. package/build/components/Common/Spinner/styles.d.ts +0 -1
  422. package/build/components/Common/SquareTimer.d.ts +0 -19
  423. package/build/components/Common/SwitchButton/index.d.ts +0 -6
  424. package/build/components/Common/ThemedButton/index.d.ts +0 -15
  425. package/build/components/Common/ThemedButton/styles.d.ts +0 -2
  426. package/build/components/Common/TokenChainLogo/index.d.ts +0 -7
  427. package/build/components/Common/Tooltip/index.d.ts +0 -4
  428. package/build/components/Common/Tooltip/styles.d.ts +0 -3
  429. package/build/components/Common/Tooltip/types.d.ts +0 -9
  430. package/build/components/Common/WalletChainLogo/index.d.ts +0 -6
  431. package/build/components/DaimoPayButton/index.d.ts +0 -149
  432. package/build/components/DaimoPayButton/styles.d.ts +0 -4
  433. package/build/components/DaimoPayModal/ConnectUsing.d.ts +0 -2
  434. package/build/components/DaimoPayModal/ConnectWithInjector/index.d.ts +0 -15
  435. package/build/components/DaimoPayModal/ConnectWithInjector/styles.d.ts +0 -6
  436. package/build/components/DaimoPayModal/ConnectWithQRCode.d.ts +0 -12
  437. package/build/components/DaimoPayModal/index.d.ts +0 -8
  438. package/build/components/DaimoPayThemeProvider/DaimoPayThemeProvider.d.ts +0 -16
  439. package/build/components/Pages/About/graphics.d.ts +0 -11
  440. package/build/components/Pages/About/index.d.ts +0 -3
  441. package/build/components/Pages/About/styles.d.ts +0 -8
  442. package/build/components/Pages/Confirmation/index.d.ts +0 -3
  443. package/build/components/Pages/Connectors/index.d.ts +0 -3
  444. package/build/components/Pages/Connectors/styles.d.ts +0 -9
  445. package/build/components/Pages/DownloadApp/index.d.ts +0 -2
  446. package/build/components/Pages/Error/index.d.ts +0 -1
  447. package/build/components/Pages/MobileConnectors/index.d.ts +0 -3
  448. package/build/components/Pages/MobileConnectors/styles.d.ts +0 -5
  449. package/build/components/Pages/Onboarding/index.d.ts +0 -3
  450. package/build/components/Pages/Onboarding/styles.d.ts +0 -9
  451. package/build/components/Pages/PayWithToken/index.d.ts +0 -3
  452. package/build/components/Pages/SelectAmount/index.d.ts +0 -3
  453. package/build/components/Pages/SelectDepositAddressAmount/index.d.ts +0 -3
  454. package/build/components/Pages/SelectDepositAddressChain/index.d.ts +0 -3
  455. package/build/components/Pages/SelectExchange/index.d.ts +0 -3
  456. package/build/components/Pages/SelectExternalAmount/index.d.ts +0 -3
  457. package/build/components/Pages/SelectMethod/index.d.ts +0 -1
  458. package/build/components/Pages/SelectMethod/styles.d.ts +0 -9
  459. package/build/components/Pages/SelectToken/index.d.ts +0 -1
  460. package/build/components/Pages/SelectWalletAmount/index.d.ts +0 -3
  461. package/build/components/Pages/SelectWalletChain/index.d.ts +0 -3
  462. package/build/components/Pages/SelectZKP/index.d.ts +0 -3
  463. package/build/components/Pages/Solana/ConnectorSolana/index.d.ts +0 -4
  464. package/build/components/Pages/Solana/PayWithSolanaToken/index.d.ts +0 -3
  465. package/build/components/Pages/Solana/SelectSolanaAmount/index.d.ts +0 -3
  466. package/build/components/Pages/SwitchNetworks/index.d.ts +0 -3
  467. package/build/components/Pages/WaitingDepositAddress/index.d.ts +0 -1
  468. package/build/components/Pages/WaitingExternal/index.d.ts +0 -3
  469. package/build/components/Pages/WaitingWallet/index.d.ts +0 -3
  470. package/build/components/Spinners/CircleSpinner/index.d.ts +0 -9
  471. package/build/components/Spinners/CircleSpinner/styles.d.ts +0 -5
  472. package/build/components/Spinners/ExternalPaymentSpinner/index.d.ts +0 -5
  473. package/build/components/Spinners/SquircleSpinner/index.d.ts +0 -5
  474. package/build/components/Spinners/SquircleSpinner/styles.d.ts +0 -4
  475. package/build/components/Spinners/TokenLogoSpinner/index.d.ts +0 -5
  476. package/build/components/Spinners/TokenLogoSpinner/styles.d.ts +0 -1
  477. package/build/components/Spinners/WalletPaymentSpinner/index.d.ts +0 -5
  478. package/build/components/Spinners/styles.d.ts +0 -2
  479. package/build/constants/defaultTheme.d.ts +0 -4
  480. package/build/constants/routes.d.ts +0 -28
  481. package/build/defaultConfig.d.ts +0 -17
  482. package/build/defaultConnectors.d.ts +0 -14
  483. package/build/hooks/useChainIsSupported.d.ts +0 -2
  484. package/build/hooks/useChains.d.ts +0 -3
  485. package/build/hooks/useConnect.d.ts +0 -110
  486. package/build/hooks/useConnectCallback.d.ts +0 -8
  487. package/build/hooks/useConnectors.d.ts +0 -3
  488. package/build/hooks/useDaimoPay.d.ts +0 -94
  489. package/build/hooks/useDaimoPayStatus.d.ts +0 -15
  490. package/build/hooks/useDaimoPayUI.d.ts +0 -6
  491. package/build/hooks/useDepositAddressOptions.d.ts +0 -10
  492. package/build/hooks/useEnsFallbackConfig.d.ts +0 -2
  493. package/build/hooks/useExternalPaymentOptions.d.ts +0 -12
  494. package/build/hooks/useFitText.d.ts +0 -14
  495. package/build/hooks/useFocusTrap.d.ts +0 -1
  496. package/build/hooks/useGoogleFont.d.ts +0 -3
  497. package/build/hooks/useIsMobile.d.ts +0 -5
  498. package/build/hooks/useIsMounted.d.ts +0 -3
  499. package/build/hooks/useLastConnector.d.ts +0 -4
  500. package/build/hooks/useLocalStorage.d.ts +0 -7
  501. package/build/hooks/useLocales.d.ts +0 -2
  502. package/build/hooks/useLockBodyScroll.d.ts +0 -1
  503. package/build/hooks/useModal.d.ts +0 -8
  504. package/build/hooks/useOrderUsdLimits.d.ts +0 -7
  505. package/build/hooks/usePayContext.d.ts +0 -2
  506. package/build/hooks/usePaymentState.d.ts +0 -67
  507. package/build/hooks/usePrevious.d.ts +0 -1
  508. package/build/hooks/useSolanaPaymentOptions.d.ts +0 -13
  509. package/build/hooks/useTokenOptions.d.ts +0 -5
  510. package/build/hooks/useUntronAvailability.d.ts +0 -14
  511. package/build/hooks/useWalletPaymentOptions.d.ts +0 -31
  512. package/build/hooks/useWindowSize.d.ts +0 -4
  513. package/build/localizations/index.d.ts +0 -2
  514. package/build/localizations/locales/ar-AE.d.ts +0 -3
  515. package/build/localizations/locales/ca-AD.d.ts +0 -3
  516. package/build/localizations/locales/ee-EE.d.ts +0 -3
  517. package/build/localizations/locales/en-US.d.ts +0 -128
  518. package/build/localizations/locales/es-ES.d.ts +0 -3
  519. package/build/localizations/locales/fa-IR.d.ts +0 -3
  520. package/build/localizations/locales/fr-FR.d.ts +0 -3
  521. package/build/localizations/locales/index.d.ts +0 -3
  522. package/build/localizations/locales/ja-JP.d.ts +0 -91
  523. package/build/localizations/locales/pt-BR.d.ts +0 -3
  524. package/build/localizations/locales/ru-RU.d.ts +0 -3
  525. package/build/localizations/locales/tr-TR.d.ts +0 -3
  526. package/build/localizations/locales/vi-VN.d.ts +0 -3
  527. package/build/localizations/locales/zh-CN.d.ts +0 -3
  528. package/build/payment/paymentEffects.d.ts +0 -12
  529. package/build/payment/paymentFsm.d.ts +0 -131
  530. package/build/payment/paymentStore.d.ts +0 -14
  531. package/build/payment/paymentUtils.d.ts +0 -6
  532. package/build/provider/DaimoPayProvider.d.ts +0 -24
  533. package/build/provider/PayContext.d.ts +0 -66
  534. package/build/provider/PaymentProvider.d.ts +0 -8
  535. package/build/provider/SolanaContextProvider.d.ts +0 -6
  536. package/build/provider/Web3ContextProvider.d.ts +0 -24
  537. package/build/stateStore.d.ts +0 -66
  538. package/build/styles/defaultTheme.d.ts +0 -3
  539. package/build/styles/index.d.ts +0 -1
  540. package/build/styles/styled/index.d.ts +0 -12
  541. package/build/styles/themes/base.d.ts +0 -129
  542. package/build/styles/themes/index.d.ts +0 -673
  543. package/build/styles/themes/midnight.d.ts +0 -74
  544. package/build/styles/themes/minimal.d.ts +0 -94
  545. package/build/styles/themes/nouns.d.ts +0 -79
  546. package/build/styles/themes/retro.d.ts +0 -89
  547. package/build/styles/themes/rounded.d.ts +0 -86
  548. package/build/styles/themes/soft.d.ts +0 -69
  549. package/build/styles/themes/web95.d.ts +0 -91
  550. package/build/styles/types.d.ts +0 -80
  551. package/build/utils/exports.d.ts +0 -1
  552. package/build/utils/format.d.ts +0 -49
  553. package/build/utils/index.d.ts +0 -17
  554. package/build/utils/localstorage.d.ts +0 -9
  555. package/build/utils/p3.d.ts +0 -2
  556. package/build/utils/platform.d.ts +0 -2
  557. package/build/utils/polling.d.ts +0 -13
  558. package/build/utils/supportUrl.d.ts +0 -2
  559. package/build/utils/trpc.d.ts +0 -4
  560. package/build/utils/validateInput.d.ts +0 -16
  561. package/build/utils/wallets.d.ts +0 -24
  562. package/build/wallets/index.d.ts +0 -5
  563. package/build/wallets/useWallets.d.ts +0 -16
  564. package/build/wallets/walletConfigs.d.ts +0 -29
  565. package/build/world-mini-app/WorldPayButton.d.ts +0 -84
  566. package/build/world-mini-app/promptWorldPayment.d.ts +0 -9
@@ -15,333 +15,360 @@ import { useSolanaPaymentOptions } from './useSolanaPaymentOptions.js';
15
15
  import { useUntronAvailability } from './useUntronAvailability.js';
16
16
  import { useWalletPaymentOptions } from './useWalletPaymentOptions.js';
17
17
 
18
- function usePaymentState({ trpc, lockPayParams, setRoute, log, redirectReturnUrl, }) {
19
- const pay = useDaimoPay();
20
- // Browser state.
21
- const [platform, setPlatform] = useState();
22
- useEffect(() => {
23
- setPlatform(detectPlatform(window.navigator.userAgent));
24
- }, []);
25
- // Wallet state.
26
- const { address: ethWalletAddress } = useAccount();
27
- const { data: senderEnsName } = useEnsName({
28
- chainId: ethereum.chainId,
29
- address: ethWalletAddress,
30
- });
31
- const { sendTransactionAsync } = useSendTransaction();
32
- const { writeContractAsync } = useWriteContract();
33
- // Solana wallet state.
34
- const solanaWallet = useWallet();
35
- const { connection } = useConnection();
36
- const solanaPubKey = solanaWallet.publicKey?.toBase58();
37
- // Solana bridging is only supported on CCTPv1 chains.
38
- const destChainId = pay.order == null ? null : getOrderDestChainId(pay.order);
39
- const showSolanaPaymentMethod = destChainId != null && isCCTPV1Chain(destChainId);
40
- // From DaimoPayButton props
41
- const [buttonProps, setButtonProps] = useState();
42
- const [currPayParams, setCurrPayParams] = useState();
43
- const [paymentWaitingMessage, setPaymentWaitingMessage] = useState();
44
- const [isDepositFlow, setIsDepositFlow] = useState(false);
45
- // UI state. Selection for external payment (Binance, etc) vs wallet payment.
46
- const externalPaymentOptions = useExternalPaymentOptions({
47
- trpc,
48
- // allow <DaimoPayButton payId={...} paymentOptions={override} />
49
- filterIds: buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions,
50
- platform,
51
- usdRequired: pay.order?.destFinalCallTokenAmount.usd,
52
- mode: pay.order?.mode,
53
- });
54
- const walletPaymentOptions = useWalletPaymentOptions({
55
- trpc,
56
- address: ethWalletAddress,
57
- usdRequired: pay.order?.destFinalCallTokenAmount.usd,
58
- destChainId: pay.order?.destFinalCallTokenAmount.token.chainId,
59
- destAddress: pay.order?.destFinalCall.to,
60
- preferredChains: pay.order?.metadata.payer?.preferredChains,
61
- preferredTokens: pay.order?.metadata.payer?.preferredTokens,
62
- evmChains: pay.order?.metadata.payer?.evmChains,
63
- passthroughTokens: pay.order?.metadata.payer?.passthroughTokens,
64
- isDepositFlow,
65
- log,
18
+ function usePaymentState({
19
+ trpc,
20
+ lockPayParams,
21
+ setRoute,
22
+ log,
23
+ redirectReturnUrl
24
+ }) {
25
+ const pay = useDaimoPay();
26
+ const [platform, setPlatform] = useState();
27
+ useEffect(() => {
28
+ setPlatform(detectPlatform(window.navigator.userAgent));
29
+ }, []);
30
+ const { address: ethWalletAddress } = useAccount();
31
+ const { data: senderEnsName } = useEnsName({
32
+ chainId: ethereum.chainId,
33
+ address: ethWalletAddress
34
+ });
35
+ const { sendTransactionAsync } = useSendTransaction();
36
+ const { writeContractAsync } = useWriteContract();
37
+ const solanaWallet = useWallet();
38
+ const { connection } = useConnection();
39
+ const solanaPubKey = solanaWallet.publicKey?.toBase58();
40
+ const destChainId = pay.order == null ? null : getOrderDestChainId(pay.order);
41
+ const showSolanaPaymentMethod = destChainId != null && isCCTPV1Chain(destChainId);
42
+ const [buttonProps, setButtonProps] = useState();
43
+ const [currPayParams, setCurrPayParams] = useState();
44
+ const [paymentWaitingMessage, setPaymentWaitingMessage] = useState();
45
+ const [isDepositFlow, setIsDepositFlow] = useState(false);
46
+ const externalPaymentOptions = useExternalPaymentOptions({
47
+ trpc,
48
+ // allow <DaimoPayButton payId={...} paymentOptions={override} />
49
+ filterIds: buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions,
50
+ platform,
51
+ usdRequired: pay.order?.destFinalCallTokenAmount.usd,
52
+ mode: pay.order?.mode
53
+ });
54
+ const walletPaymentOptions = useWalletPaymentOptions({
55
+ trpc,
56
+ address: ethWalletAddress,
57
+ usdRequired: pay.order?.destFinalCallTokenAmount.usd,
58
+ destChainId: pay.order?.destFinalCallTokenAmount.token.chainId,
59
+ destAddress: pay.order?.destFinalCall.to,
60
+ preferredChains: pay.order?.metadata.payer?.preferredChains,
61
+ preferredTokens: pay.order?.metadata.payer?.preferredTokens,
62
+ evmChains: pay.order?.metadata.payer?.evmChains,
63
+ passthroughTokens: pay.order?.metadata.payer?.passthroughTokens,
64
+ isDepositFlow,
65
+ log
66
+ });
67
+ const solanaPaymentOptions = useSolanaPaymentOptions({
68
+ trpc,
69
+ address: solanaPubKey,
70
+ usdRequired: pay.order?.destFinalCallTokenAmount.usd,
71
+ isDepositFlow,
72
+ showSolanaPaymentMethod
73
+ });
74
+ const depositAddressOptions = useDepositAddressOptions({
75
+ trpc,
76
+ usdRequired: pay.order?.destFinalCallTokenAmount.usd,
77
+ mode: pay.order?.mode
78
+ });
79
+ const { available: untronAvailable } = useUntronAvailability({ trpc });
80
+ const chainOrderUsdLimits = useOrderUsdLimits({ trpc });
81
+ const [selectedExternalOption, setSelectedExternalOption] = useState();
82
+ const [selectedTokenOption, setSelectedTokenOption] = useState();
83
+ const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] = useState();
84
+ const [selectedDepositAddressOption, setSelectedDepositAddressOption] = useState();
85
+ const [selectedWallet, setSelectedWallet] = useState();
86
+ const [selectedWalletDeepLink, setSelectedWalletDeepLink] = useState();
87
+ const getOrderUsdLimit = () => {
88
+ const DEFAULT_USD_LIMIT = 2e4;
89
+ if (pay.order == null || chainOrderUsdLimits.loading) {
90
+ return DEFAULT_USD_LIMIT;
91
+ }
92
+ const destChainId2 = pay.order.destFinalCallTokenAmount.token.chainId;
93
+ return destChainId2 in chainOrderUsdLimits.limits ? chainOrderUsdLimits.limits[destChainId2] : DEFAULT_USD_LIMIT;
94
+ };
95
+ const payWithToken = async (walletOption) => {
96
+ assert(
97
+ ethWalletAddress != null,
98
+ `[PAY TOKEN] null ethWalletAddress when paying on ethereum`
99
+ );
100
+ assert(
101
+ pay.paymentState === "preview" || pay.paymentState === "unhydrated" || pay.paymentState === "payment_unpaid",
102
+ `[PAY TOKEN] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`
103
+ );
104
+ let hydratedOrder;
105
+ const { required, fees } = walletOption;
106
+ const paymentAmount = BigInt(required.amount) + BigInt(fees.amount);
107
+ if (pay.paymentState !== "payment_unpaid") {
108
+ assert(
109
+ required.token.token === fees.token.token,
110
+ `[PAY TOKEN] required token ${debugJson(required)} does not match fees token ${debugJson(fees)}`
111
+ );
112
+ const res = await pay.hydrateOrder(ethWalletAddress);
113
+ hydratedOrder = res.order;
114
+ log(
115
+ `[PAY TOKEN] hydrated order: ${debugJson(
116
+ hydratedOrder
117
+ )}, paying ${paymentAmount} of token ${required.token.token}`
118
+ );
119
+ } else {
120
+ hydratedOrder = pay.order;
121
+ }
122
+ const paymentTxHash = await (async () => {
123
+ const dest = walletOption.passthroughAddress ?? hydratedOrder.intentAddr;
124
+ try {
125
+ if (required.token.token === zeroAddress) {
126
+ return await sendTransactionAsync({
127
+ to: dest,
128
+ value: paymentAmount
129
+ });
130
+ } else {
131
+ return await writeContractAsync({
132
+ abi: erc20Abi,
133
+ address: getAddress(required.token.token),
134
+ functionName: "transfer",
135
+ args: [dest, paymentAmount]
136
+ });
137
+ }
138
+ } catch (e) {
139
+ console.error(`[PAY TOKEN] error sending token: ${e}`);
140
+ throw e;
141
+ }
142
+ })();
143
+ if (!isHex(paymentTxHash) || paymentTxHash.length !== 66) {
144
+ log(
145
+ `[PAY TOKEN] wallet bug detected. ignoring invalid payment txHash: ${paymentTxHash}`
146
+ );
147
+ return { success: true };
148
+ }
149
+ try {
150
+ await pay.payEthSource({
151
+ paymentTxHash,
152
+ sourceChainId: required.token.chainId,
153
+ payerAddress: ethWalletAddress,
154
+ sourceToken: getAddress(required.token.token),
155
+ sourceAmount: paymentAmount
156
+ });
157
+ return { txHash: paymentTxHash, success: true };
158
+ } catch {
159
+ console.error(
160
+ `[PAY TOKEN] could not verify payment tx on chain: ${paymentTxHash}`
161
+ );
162
+ return { txHash: paymentTxHash, success: false };
163
+ }
164
+ };
165
+ const payWithSolanaToken = async (inputToken) => {
166
+ const payerPublicKey = solanaWallet.publicKey;
167
+ assert(
168
+ payerPublicKey != null,
169
+ "[PAY SOLANA] null payerPublicKey when paying on solana"
170
+ );
171
+ assert(
172
+ pay.order?.id != null,
173
+ "[PAY SOLANA] null orderId when paying on solana"
174
+ );
175
+ assert(
176
+ pay.paymentState === "preview" || pay.paymentState === "unhydrated" || pay.paymentState === "payment_unpaid",
177
+ `[PAY SOLANA] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`
178
+ );
179
+ let hydratedOrder;
180
+ if (pay.paymentState !== "payment_unpaid") {
181
+ const res = await pay.hydrateOrder();
182
+ hydratedOrder = res.order;
183
+ log(
184
+ `[PAY SOLANA] Hydrated order: ${JSON.stringify(
185
+ hydratedOrder
186
+ )}, checking out with Solana ${inputToken}`
187
+ );
188
+ } else {
189
+ hydratedOrder = pay.order;
190
+ }
191
+ const paymentTxHash = await (async () => {
192
+ try {
193
+ const serializedTx = await trpc.getSolanaSwapAndBurnTx.query({
194
+ orderId: pay.order.id.toString(),
195
+ userPublicKey: assertNotNull(
196
+ payerPublicKey,
197
+ "[PAY SOLANA] wallet.publicKey cannot be null"
198
+ ).toString(),
199
+ inputTokenMint: inputToken
200
+ });
201
+ const tx = VersionedTransaction.deserialize(hexToBytes(serializedTx));
202
+ const txHash = await solanaWallet.sendTransaction(tx, connection);
203
+ return txHash;
204
+ } catch (e) {
205
+ console.error(e);
206
+ throw e;
207
+ }
208
+ })();
209
+ try {
210
+ await pay.paySolanaSource({
211
+ paymentTxHash,
212
+ sourceToken: inputToken
213
+ });
214
+ return { txHash: paymentTxHash, success: true };
215
+ } catch {
216
+ console.error(
217
+ `[PAY SOLANA] could not verify payment tx on chain: ${paymentTxHash}`
218
+ );
219
+ return { txHash: paymentTxHash, success: false };
220
+ }
221
+ };
222
+ const payWithExternal = async (option) => {
223
+ assert(pay.order != null, "[PAY EXTERNAL] order cannot be null");
224
+ assert(platform != null, "[PAY EXTERNAL] platform cannot be null");
225
+ const { order } = await pay.hydrateOrder();
226
+ const externalPaymentOptionData = await trpc.getExternalPaymentOptionData.query({
227
+ id: order.id.toString(),
228
+ externalPaymentOption: option,
229
+ platform,
230
+ redirectReturnUrl
66
231
  });
67
- const solanaPaymentOptions = useSolanaPaymentOptions({
68
- trpc,
69
- address: solanaPubKey,
70
- usdRequired: pay.order?.destFinalCallTokenAmount.usd,
71
- isDepositFlow,
72
- showSolanaPaymentMethod,
232
+ assert(
233
+ externalPaymentOptionData != null,
234
+ "[PAY EXTERNAL] missing externalPaymentOptionData"
235
+ );
236
+ log(
237
+ `[PAY EXTERNAL] hydrated order: ${debugJson(
238
+ order
239
+ )}, checking out with external payment: ${option}`
240
+ );
241
+ setPaymentWaitingMessage(externalPaymentOptionData.waitingMessage);
242
+ return externalPaymentOptionData.url;
243
+ };
244
+ const payWithDepositAddress = async (option) => {
245
+ const { order } = await pay.hydrateOrder();
246
+ log(
247
+ `[PAY DEPOSIT ADDRESS] hydrated order ${order.id} for ${order.usdValue} USD, checking out with deposit address: ${option}`
248
+ );
249
+ const result = await trpc.getDepositAddressForOrder.query({
250
+ orderId: order.id.toString(),
251
+ option
73
252
  });
74
- const depositAddressOptions = useDepositAddressOptions({
75
- trpc,
76
- usdRequired: pay.order?.destFinalCallTokenAmount.usd,
77
- mode: pay.order?.mode,
253
+ return "error" in result ? null : result;
254
+ };
255
+ const { isIOS } = useIsMobile();
256
+ const openInWalletBrowser = (wallet, amountUsd) => {
257
+ const paymentState = pay.paymentState;
258
+ assert(
259
+ paymentState === "payment_unpaid",
260
+ `[OPEN IN WALLET BROWSER] paymentState is ${paymentState}, must be payment_unpaid`
261
+ );
262
+ assert(
263
+ wallet.getDaimoPayDeeplink != null,
264
+ `openInWalletBrowser: missing deeplink for ${wallet.name}`
265
+ );
266
+ const payId = writeDaimoPayOrderID(pay.order.id);
267
+ const deeplink = wallet.getDaimoPayDeeplink(payId);
268
+ if (!isIOS) {
269
+ window.open(deeplink, "_blank");
270
+ }
271
+ setSelectedWallet(wallet);
272
+ setSelectedWalletDeepLink(deeplink);
273
+ setRoute(ROUTES.WAITING_WALLET, {
274
+ amountUsd,
275
+ payId,
276
+ wallet_name: wallet.name
78
277
  });
79
- // Poll for Untron receiver availability so components can disable unsupported chains promptly.
80
- const { available: untronAvailable } = useUntronAvailability({ trpc });
81
- const chainOrderUsdLimits = useOrderUsdLimits({ trpc });
82
- const [selectedExternalOption, setSelectedExternalOption] = useState();
83
- const [selectedTokenOption, setSelectedTokenOption] = useState();
84
- const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] = useState();
85
- const [selectedDepositAddressOption, setSelectedDepositAddressOption] = useState();
86
- const [selectedWallet, setSelectedWallet] = useState();
87
- const [selectedWalletDeepLink, setSelectedWalletDeepLink] = useState();
88
- const getOrderUsdLimit = () => {
89
- const DEFAULT_USD_LIMIT = 20000;
90
- if (pay.order == null || chainOrderUsdLimits.loading) {
91
- return DEFAULT_USD_LIMIT;
92
- }
93
- const destChainId = pay.order.destFinalCallTokenAmount.token.chainId;
94
- return destChainId in chainOrderUsdLimits.limits
95
- ? chainOrderUsdLimits.limits[destChainId]
96
- : DEFAULT_USD_LIMIT;
97
- };
98
- /** Commit to a token + amount = initiate payment. */
99
- const payWithToken = async (walletOption) => {
100
- assert(ethWalletAddress != null, `[PAY TOKEN] null ethWalletAddress when paying on ethereum`);
101
- assert(pay.paymentState === "preview" ||
102
- pay.paymentState === "unhydrated" ||
103
- pay.paymentState === "payment_unpaid", `[PAY TOKEN] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`);
104
- let hydratedOrder;
105
- const { required, fees } = walletOption;
106
- const paymentAmount = BigInt(required.amount) + BigInt(fees.amount);
107
- if (pay.paymentState !== "payment_unpaid") {
108
- assert(required.token.token === fees.token.token, `[PAY TOKEN] required token ${debugJson(required)} does not match fees token ${debugJson(fees)}`);
109
- // Will refund to ethWalletAddress if refundAddress was not set in payParams
110
- const res = await pay.hydrateOrder(ethWalletAddress);
111
- hydratedOrder = res.order;
112
- log(`[PAY TOKEN] hydrated order: ${debugJson(hydratedOrder)}, paying ${paymentAmount} of token ${required.token.token}`);
113
- }
114
- else {
115
- hydratedOrder = pay.order;
116
- }
117
- const paymentTxHash = await (async () => {
118
- const dest = walletOption.passthroughAddress ?? hydratedOrder.intentAddr;
119
- try {
120
- if (required.token.token === zeroAddress) {
121
- return await sendTransactionAsync({
122
- to: dest,
123
- value: paymentAmount,
124
- });
125
- }
126
- else {
127
- return await writeContractAsync({
128
- abi: erc20Abi,
129
- address: getAddress(required.token.token),
130
- functionName: "transfer",
131
- args: [dest, paymentAmount],
132
- });
133
- }
134
- }
135
- catch (e) {
136
- console.error(`[PAY TOKEN] error sending token: ${e}`);
137
- throw e;
138
- }
139
- })();
140
- // Special case. Handle Rabby bug, where it returns the *Safe signature*
141
- // instead of a txHash for a queued, unsubmitted Safe transaction.
142
- if (!isHex(paymentTxHash) || paymentTxHash.length !== 66) {
143
- log(`[PAY TOKEN] wallet bug detected. ignoring invalid payment txHash: ${paymentTxHash}`);
144
- return { success: true };
145
- }
146
- try {
147
- await pay.payEthSource({
148
- paymentTxHash,
149
- sourceChainId: required.token.chainId,
150
- payerAddress: ethWalletAddress,
151
- sourceToken: getAddress(required.token.token),
152
- sourceAmount: paymentAmount,
153
- });
154
- return { txHash: paymentTxHash, success: true };
155
- }
156
- catch {
157
- console.error(`[PAY TOKEN] could not verify payment tx on chain: ${paymentTxHash}`);
158
- return { txHash: paymentTxHash, success: false };
159
- }
160
- };
161
- const payWithSolanaToken = async (inputToken) => {
162
- const payerPublicKey = solanaWallet.publicKey;
163
- assert(payerPublicKey != null, "[PAY SOLANA] null payerPublicKey when paying on solana");
164
- assert(pay.order?.id != null, "[PAY SOLANA] null orderId when paying on solana");
165
- assert(pay.paymentState === "preview" ||
166
- pay.paymentState === "unhydrated" ||
167
- pay.paymentState === "payment_unpaid", `[PAY SOLANA] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`);
168
- let hydratedOrder;
169
- if (pay.paymentState !== "payment_unpaid") {
170
- const res = await pay.hydrateOrder();
171
- hydratedOrder = res.order;
172
- log(`[PAY SOLANA] Hydrated order: ${JSON.stringify(hydratedOrder)}, checking out with Solana ${inputToken}`);
173
- }
174
- else {
175
- hydratedOrder = pay.order;
176
- }
177
- const paymentTxHash = await (async () => {
178
- try {
179
- const serializedTx = await trpc.getSolanaSwapAndBurnTx.query({
180
- orderId: pay.order.id.toString(),
181
- userPublicKey: assertNotNull(payerPublicKey, "[PAY SOLANA] wallet.publicKey cannot be null").toString(),
182
- inputTokenMint: inputToken,
183
- });
184
- const tx = VersionedTransaction.deserialize(hexToBytes(serializedTx));
185
- const txHash = await solanaWallet.sendTransaction(tx, connection);
186
- return txHash;
187
- }
188
- catch (e) {
189
- console.error(e);
190
- throw e;
191
- }
192
- })();
193
- try {
194
- await pay.paySolanaSource({
195
- paymentTxHash: paymentTxHash,
196
- sourceToken: inputToken,
197
- });
198
- return { txHash: paymentTxHash, success: true };
199
- }
200
- catch {
201
- console.error(`[PAY SOLANA] could not verify payment tx on chain: ${paymentTxHash}`);
202
- return { txHash: paymentTxHash, success: false };
203
- }
204
- };
205
- const payWithExternal = async (option) => {
206
- assert(pay.order != null, "[PAY EXTERNAL] order cannot be null");
207
- assert(platform != null, "[PAY EXTERNAL] platform cannot be null");
208
- const { order } = await pay.hydrateOrder();
209
- const externalPaymentOptionData = await trpc.getExternalPaymentOptionData.query({
210
- id: order.id.toString(),
211
- externalPaymentOption: option,
212
- platform,
213
- redirectReturnUrl,
214
- });
215
- assert(externalPaymentOptionData != null, "[PAY EXTERNAL] missing externalPaymentOptionData");
216
- log(`[PAY EXTERNAL] hydrated order: ${debugJson(order)}, checking out with external payment: ${option}`);
217
- setPaymentWaitingMessage(externalPaymentOptionData.waitingMessage);
218
- return externalPaymentOptionData.url;
219
- };
220
- const payWithDepositAddress = async (option) => {
221
- const { order } = await pay.hydrateOrder();
222
- log(`[PAY DEPOSIT ADDRESS] hydrated order ${order.id} for ${order.usdValue} USD, checking out with deposit address: ${option}`);
223
- const result = await trpc.getDepositAddressForOrder.query({
224
- orderId: order.id.toString(),
225
- option,
226
- });
227
- return "error" in result ? null : result;
228
- };
229
- const { isIOS } = useIsMobile();
230
- const openInWalletBrowser = (wallet, amountUsd) => {
231
- const paymentState = pay.paymentState;
232
- assert(paymentState === "payment_unpaid", `[OPEN IN WALLET BROWSER] paymentState is ${paymentState}, must be payment_unpaid`);
233
- assert(wallet.getDaimoPayDeeplink != null, `openInWalletBrowser: missing deeplink for ${wallet.name}`);
234
- const payId = writeDaimoPayOrderID(pay.order.id);
235
- const deeplink = wallet.getDaimoPayDeeplink(payId);
236
- // If we are in IOS, we don't open the deeplink in a new window, because it
237
- // will not work, the link will be opened in the page WAITING_WALLET
238
- if (!isIOS) {
239
- window.open(deeplink, "_blank");
240
- }
241
- setSelectedWallet(wallet);
242
- setSelectedWalletDeepLink(deeplink);
243
- setRoute(ROUTES.WAITING_WALLET, {
244
- amountUsd,
245
- payId,
246
- wallet_name: wallet.name,
247
- });
248
- };
249
- /** User picked a different deposit amount. */
250
- const setChosenUsd = (usd) => {
251
- assert(pay.paymentState === "preview", "[SET CHOSEN USD] paymentState is not preview");
252
- // Too expensive to make an API call to regenerate preview order each time
253
- // the user changes the amount. Instead, we modify the order in memory.
254
- pay.setChosenUsd(usd);
255
- };
256
- const setPayId = useCallback(async (payId) => {
257
- if (lockPayParams || payId == null)
258
- return;
259
- const id = readDaimoPayOrderID(payId).toString();
260
- if (pay.order?.id && BigInt(id) == pay.order.id) {
261
- // Already loaded, ignore.
262
- return;
263
- }
264
- pay.reset();
265
- pay.setPayId(payId);
266
- }, [lockPayParams, pay]);
267
- /** Called whenever params change. */
268
- const setPayParams = async (payParams) => {
269
- if (lockPayParams)
270
- return;
271
- assert(payParams != null, "[SET PAY PARAMS] payParams cannot be null");
272
- log("[SET PAY PARAMS] setting payParams", payParams);
273
- pay.reset();
274
- await pay.createPreviewOrder(payParams);
275
- setCurrPayParams(payParams);
276
- setIsDepositFlow(payParams.toUnits == null);
277
- };
278
- const generatePreviewOrder = async () => {
279
- pay.reset();
280
- if (currPayParams == null)
281
- return;
282
- await pay.createPreviewOrder(currPayParams);
283
- };
284
- const resetOrder = useCallback(async (payParams) => {
285
- const mergedPayParams = payParams != null && currPayParams != null
286
- ? { ...currPayParams, ...payParams }
287
- : currPayParams;
288
- // Clear the old order & state
289
- pay.reset();
290
- setSelectedExternalOption(undefined);
291
- setSelectedTokenOption(undefined);
292
- setSelectedSolanaTokenOption(undefined);
293
- setSelectedDepositAddressOption(undefined);
294
- setSelectedWallet(undefined);
295
- setSelectedWalletDeepLink(undefined);
296
- setPaymentWaitingMessage(undefined);
297
- // Set the new payParams
298
- if (mergedPayParams) {
299
- await pay.createPreviewOrder(mergedPayParams);
300
- setCurrPayParams(mergedPayParams);
301
- setIsDepositFlow(mergedPayParams.toUnits == null);
302
- }
303
- setRoute(ROUTES.SELECT_METHOD);
304
- }, [setRoute, pay, currPayParams]);
305
- const [tokenMode, setTokenMode] = useState("evm");
306
- return {
307
- buttonProps,
308
- setButtonProps,
309
- setPayId,
310
- setPayParams,
311
- tokenMode,
312
- setTokenMode,
313
- generatePreviewOrder,
314
- isDepositFlow,
315
- paymentWaitingMessage,
316
- selectedExternalOption,
317
- selectedTokenOption,
318
- selectedSolanaTokenOption,
319
- externalPaymentOptions,
320
- showSolanaPaymentMethod,
321
- selectedWallet,
322
- selectedWalletDeepLink,
323
- walletPaymentOptions,
324
- solanaPaymentOptions,
325
- depositAddressOptions,
326
- selectedDepositAddressOption,
327
- getOrderUsdLimit,
328
- resetOrder,
329
- setSelectedWallet,
330
- setSelectedWalletDeepLink,
331
- setPaymentWaitingMessage,
332
- setSelectedExternalOption,
333
- setSelectedTokenOption,
334
- setSelectedSolanaTokenOption,
335
- setSelectedDepositAddressOption,
336
- setChosenUsd,
337
- payWithToken,
338
- payWithExternal,
339
- payWithDepositAddress,
340
- payWithSolanaToken,
341
- openInWalletBrowser,
342
- senderEnsName: senderEnsName ?? undefined,
343
- untronAvailable,
344
- };
278
+ };
279
+ const setChosenUsd = (usd) => {
280
+ assert(
281
+ pay.paymentState === "preview",
282
+ "[SET CHOSEN USD] paymentState is not preview"
283
+ );
284
+ pay.setChosenUsd(usd);
285
+ };
286
+ const setPayId = useCallback(
287
+ async (payId) => {
288
+ if (lockPayParams || payId == null) return;
289
+ const id = readDaimoPayOrderID(payId).toString();
290
+ if (pay.order?.id && BigInt(id) == pay.order.id) {
291
+ return;
292
+ }
293
+ pay.reset();
294
+ pay.setPayId(payId);
295
+ },
296
+ [lockPayParams, pay]
297
+ );
298
+ const setPayParams = async (payParams) => {
299
+ if (lockPayParams) return;
300
+ assert(payParams != null, "[SET PAY PARAMS] payParams cannot be null");
301
+ log("[SET PAY PARAMS] setting payParams", payParams);
302
+ pay.reset();
303
+ await pay.createPreviewOrder(payParams);
304
+ setCurrPayParams(payParams);
305
+ setIsDepositFlow(payParams.toUnits == null);
306
+ };
307
+ const generatePreviewOrder = async () => {
308
+ pay.reset();
309
+ if (currPayParams == null) return;
310
+ await pay.createPreviewOrder(currPayParams);
311
+ };
312
+ const resetOrder = useCallback(
313
+ async (payParams) => {
314
+ const mergedPayParams = payParams != null && currPayParams != null ? { ...currPayParams, ...payParams } : currPayParams;
315
+ pay.reset();
316
+ setSelectedExternalOption(void 0);
317
+ setSelectedTokenOption(void 0);
318
+ setSelectedSolanaTokenOption(void 0);
319
+ setSelectedDepositAddressOption(void 0);
320
+ setSelectedWallet(void 0);
321
+ setSelectedWalletDeepLink(void 0);
322
+ setPaymentWaitingMessage(void 0);
323
+ if (mergedPayParams) {
324
+ await pay.createPreviewOrder(mergedPayParams);
325
+ setCurrPayParams(mergedPayParams);
326
+ setIsDepositFlow(mergedPayParams.toUnits == null);
327
+ }
328
+ setRoute(ROUTES.SELECT_METHOD);
329
+ },
330
+ [setRoute, pay, currPayParams]
331
+ );
332
+ const [tokenMode, setTokenMode] = useState("evm");
333
+ return {
334
+ buttonProps,
335
+ setButtonProps,
336
+ setPayId,
337
+ setPayParams,
338
+ tokenMode,
339
+ setTokenMode,
340
+ generatePreviewOrder,
341
+ isDepositFlow,
342
+ paymentWaitingMessage,
343
+ selectedExternalOption,
344
+ selectedTokenOption,
345
+ selectedSolanaTokenOption,
346
+ externalPaymentOptions,
347
+ showSolanaPaymentMethod,
348
+ selectedWallet,
349
+ selectedWalletDeepLink,
350
+ walletPaymentOptions,
351
+ solanaPaymentOptions,
352
+ depositAddressOptions,
353
+ selectedDepositAddressOption,
354
+ getOrderUsdLimit,
355
+ resetOrder,
356
+ setSelectedWallet,
357
+ setSelectedWalletDeepLink,
358
+ setPaymentWaitingMessage,
359
+ setSelectedExternalOption,
360
+ setSelectedTokenOption,
361
+ setSelectedSolanaTokenOption,
362
+ setSelectedDepositAddressOption,
363
+ setChosenUsd,
364
+ payWithToken,
365
+ payWithExternal,
366
+ payWithDepositAddress,
367
+ payWithSolanaToken,
368
+ openInWalletBrowser,
369
+ senderEnsName: senderEnsName ?? void 0,
370
+ untronAvailable
371
+ };
345
372
  }
346
373
 
347
374
  export { usePaymentState };