@daimo/pay 1.19.9 → 1.19.11

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 (366) hide show
  1. package/package.json +2 -2
  2. package/build/index.d.ts +0 -619
  3. package/build/package.json.js +0 -118
  4. package/build/package.json.js.map +0 -1
  5. package/build/src/assets/MobileWithLogos.js +0 -329
  6. package/build/src/assets/MobileWithLogos.js.map +0 -1
  7. package/build/src/assets/ScanIconWithLogos.js +0 -243
  8. package/build/src/assets/ScanIconWithLogos.js.map +0 -1
  9. package/build/src/assets/browsers.js +0 -969
  10. package/build/src/assets/browsers.js.map +0 -1
  11. package/build/src/assets/chains.js +0 -661
  12. package/build/src/assets/chains.js.map +0 -1
  13. package/build/src/assets/icons.js +0 -273
  14. package/build/src/assets/icons.js.map +0 -1
  15. package/build/src/assets/logos.js +0 -1694
  16. package/build/src/assets/logos.js.map +0 -1
  17. package/build/src/assets/wave.js +0 -46
  18. package/build/src/assets/wave.js.map +0 -1
  19. package/build/src/components/Common/Alert/index.js +0 -13
  20. package/build/src/components/Common/Alert/index.js.map +0 -1
  21. package/build/src/components/Common/Alert/styles.js +0 -55
  22. package/build/src/components/Common/Alert/styles.js.map +0 -1
  23. package/build/src/components/Common/AmountInput/AmountInputField.js +0 -62
  24. package/build/src/components/Common/AmountInput/AmountInputField.js.map +0 -1
  25. package/build/src/components/Common/AmountInput/index.js +0 -166
  26. package/build/src/components/Common/AmountInput/index.js.map +0 -1
  27. package/build/src/components/Common/Avatar/index.js +0 -78
  28. package/build/src/components/Common/Avatar/index.js.map +0 -1
  29. package/build/src/components/Common/Avatar/styles.js +0 -54
  30. package/build/src/components/Common/Avatar/styles.js.map +0 -1
  31. package/build/src/components/Common/BrowserIcon/index.js +0 -29
  32. package/build/src/components/Common/BrowserIcon/index.js.map +0 -1
  33. package/build/src/components/Common/BrowserIcon/styles.js +0 -20
  34. package/build/src/components/Common/BrowserIcon/styles.js.map +0 -1
  35. package/build/src/components/Common/Button/index.js +0 -144
  36. package/build/src/components/Common/Button/index.js.map +0 -1
  37. package/build/src/components/Common/Button/styles.js +0 -287
  38. package/build/src/components/Common/Button/styles.js.map +0 -1
  39. package/build/src/components/Common/Chain/index.js +0 -141
  40. package/build/src/components/Common/Chain/index.js.map +0 -1
  41. package/build/src/components/Common/Chain/styles.js +0 -90
  42. package/build/src/components/Common/Chain/styles.js.map +0 -1
  43. package/build/src/components/Common/ChainSelectList/index.js +0 -250
  44. package/build/src/components/Common/ChainSelectList/index.js.map +0 -1
  45. package/build/src/components/Common/ChainSelectList/styles.js +0 -226
  46. package/build/src/components/Common/ChainSelectList/styles.js.map +0 -1
  47. package/build/src/components/Common/CircleTimer.js +0 -92
  48. package/build/src/components/Common/CircleTimer.js.map +0 -1
  49. package/build/src/components/Common/ConnectorList/index.js +0 -121
  50. package/build/src/components/Common/ConnectorList/index.js.map +0 -1
  51. package/build/src/components/Common/ConnectorList/styles.js +0 -344
  52. package/build/src/components/Common/ConnectorList/styles.js.map +0 -1
  53. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +0 -78
  54. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +0 -1
  55. package/build/src/components/Common/CustomQRCode/QRCode.js +0 -132
  56. package/build/src/components/Common/CustomQRCode/QRCode.js.map +0 -1
  57. package/build/src/components/Common/CustomQRCode/index.js +0 -89
  58. package/build/src/components/Common/CustomQRCode/index.js.map +0 -1
  59. package/build/src/components/Common/CustomQRCode/styles.js +0 -142
  60. package/build/src/components/Common/CustomQRCode/styles.js.map +0 -1
  61. package/build/src/components/Common/FitText/index.js +0 -34
  62. package/build/src/components/Common/FitText/index.js.map +0 -1
  63. package/build/src/components/Common/Modal/index.js +0 -558
  64. package/build/src/components/Common/Modal/index.js.map +0 -1
  65. package/build/src/components/Common/Modal/styles.js +0 -665
  66. package/build/src/components/Common/Modal/styles.js.map +0 -1
  67. package/build/src/components/Common/OptionsList/index.js +0 -145
  68. package/build/src/components/Common/OptionsList/index.js.map +0 -1
  69. package/build/src/components/Common/OptionsList/styles.js +0 -138
  70. package/build/src/components/Common/OptionsList/styles.js.map +0 -1
  71. package/build/src/components/Common/OrderHeader/index.js +0 -148
  72. package/build/src/components/Common/OrderHeader/index.js.map +0 -1
  73. package/build/src/components/Common/PaymentBreakdown/index.js +0 -70
  74. package/build/src/components/Common/PaymentBreakdown/index.js.map +0 -1
  75. package/build/src/components/Common/Portal/index.js +0 -30
  76. package/build/src/components/Common/Portal/index.js.map +0 -1
  77. package/build/src/components/Common/PoweredByFooter/index.js +0 -39
  78. package/build/src/components/Common/PoweredByFooter/index.js.map +0 -1
  79. package/build/src/components/Common/ScrollArea/index.js +0 -120
  80. package/build/src/components/Common/ScrollArea/index.js.map +0 -1
  81. package/build/src/components/Common/ScrollArea/styles.js +0 -169
  82. package/build/src/components/Common/ScrollArea/styles.js.map +0 -1
  83. package/build/src/components/Common/SelectAnotherMethodButton/index.js +0 -96
  84. package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +0 -1
  85. package/build/src/components/Common/Spinner/index.js +0 -64
  86. package/build/src/components/Common/Spinner/index.js.map +0 -1
  87. package/build/src/components/Common/Spinner/styles.js +0 -22
  88. package/build/src/components/Common/Spinner/styles.js.map +0 -1
  89. package/build/src/components/Common/SwitchButton/index.js +0 -43
  90. package/build/src/components/Common/SwitchButton/index.js.map +0 -1
  91. package/build/src/components/Common/ThemedButton/index.js +0 -46
  92. package/build/src/components/Common/ThemedButton/index.js.map +0 -1
  93. package/build/src/components/Common/ThemedButton/styles.js +0 -152
  94. package/build/src/components/Common/ThemedButton/styles.js.map +0 -1
  95. package/build/src/components/Common/TokenChainLogo/index.js +0 -62
  96. package/build/src/components/Common/TokenChainLogo/index.js.map +0 -1
  97. package/build/src/components/Common/Tooltip/index.js +0 -129
  98. package/build/src/components/Common/Tooltip/index.js.map +0 -1
  99. package/build/src/components/Common/Tooltip/styles.js +0 -81
  100. package/build/src/components/Common/Tooltip/styles.js.map +0 -1
  101. package/build/src/components/Common/WalletChainLogo/index.js +0 -31
  102. package/build/src/components/Common/WalletChainLogo/index.js.map +0 -1
  103. package/build/src/components/DaimoPayButton/index.js +0 -196
  104. package/build/src/components/DaimoPayButton/index.js.map +0 -1
  105. package/build/src/components/DaimoPayButton/styles.js +0 -50
  106. package/build/src/components/DaimoPayButton/styles.js.map +0 -1
  107. package/build/src/components/DaimoPayModal/ConnectUsing.js +0 -70
  108. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +0 -1
  109. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +0 -339
  110. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +0 -1
  111. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +0 -131
  112. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +0 -1
  113. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +0 -89
  114. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +0 -1
  115. package/build/src/components/DaimoPayModal/index.js +0 -605
  116. package/build/src/components/DaimoPayModal/index.js.map +0 -1
  117. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +0 -25
  118. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +0 -1
  119. package/build/src/components/Pages/About/graphics.js +0 -853
  120. package/build/src/components/Pages/About/graphics.js.map +0 -1
  121. package/build/src/components/Pages/About/index.js +0 -222
  122. package/build/src/components/Pages/About/index.js.map +0 -1
  123. package/build/src/components/Pages/About/styles.js +0 -140
  124. package/build/src/components/Pages/About/styles.js.map +0 -1
  125. package/build/src/components/Pages/Confirmation/index.js +0 -126
  126. package/build/src/components/Pages/Confirmation/index.js.map +0 -1
  127. package/build/src/components/Pages/Connectors/index.js +0 -26
  128. package/build/src/components/Pages/Connectors/index.js.map +0 -1
  129. package/build/src/components/Pages/Error/index.js +0 -57
  130. package/build/src/components/Pages/Error/index.js.map +0 -1
  131. package/build/src/components/Pages/MobileConnectors/index.js +0 -108
  132. package/build/src/components/Pages/MobileConnectors/index.js.map +0 -1
  133. package/build/src/components/Pages/MobileConnectors/styles.js +0 -64
  134. package/build/src/components/Pages/MobileConnectors/styles.js.map +0 -1
  135. package/build/src/components/Pages/Onboarding/index.js +0 -34
  136. package/build/src/components/Pages/Onboarding/index.js.map +0 -1
  137. package/build/src/components/Pages/Onboarding/styles.js +0 -229
  138. package/build/src/components/Pages/Onboarding/styles.js.map +0 -1
  139. package/build/src/components/Pages/PayWithToken/index.js +0 -157
  140. package/build/src/components/Pages/PayWithToken/index.js.map +0 -1
  141. package/build/src/components/Pages/SelectAmount/index.js +0 -24
  142. package/build/src/components/Pages/SelectAmount/index.js.map +0 -1
  143. package/build/src/components/Pages/SelectDepositAddressAmount/index.js +0 -79
  144. package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +0 -1
  145. package/build/src/components/Pages/SelectDepositAddressChain/index.js +0 -80
  146. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +0 -1
  147. package/build/src/components/Pages/SelectExchange/index.js +0 -62
  148. package/build/src/components/Pages/SelectExchange/index.js.map +0 -1
  149. package/build/src/components/Pages/SelectExternalAmount/index.js +0 -80
  150. package/build/src/components/Pages/SelectExternalAmount/index.js.map +0 -1
  151. package/build/src/components/Pages/SelectMethod/index.js +0 -315
  152. package/build/src/components/Pages/SelectMethod/index.js.map +0 -1
  153. package/build/src/components/Pages/SelectToken/index.js +0 -99
  154. package/build/src/components/Pages/SelectToken/index.js.map +0 -1
  155. package/build/src/components/Pages/SelectWalletAmount/index.js +0 -71
  156. package/build/src/components/Pages/SelectWalletAmount/index.js.map +0 -1
  157. package/build/src/components/Pages/SelectWalletChain/index.js +0 -55
  158. package/build/src/components/Pages/SelectWalletChain/index.js.map +0 -1
  159. package/build/src/components/Pages/SelectZKP/index.js +0 -41
  160. package/build/src/components/Pages/SelectZKP/index.js.map +0 -1
  161. package/build/src/components/Pages/Solana/ConnectorSolana/index.js +0 -94
  162. package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +0 -1
  163. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +0 -92
  164. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +0 -1
  165. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +0 -24
  166. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +0 -1
  167. package/build/src/components/Pages/SwitchNetworks/index.js +0 -45
  168. package/build/src/components/Pages/SwitchNetworks/index.js.map +0 -1
  169. package/build/src/components/Pages/WaitingDepositAddress/index.js +0 -586
  170. package/build/src/components/Pages/WaitingDepositAddress/index.js.map +0 -1
  171. package/build/src/components/Pages/WaitingExternal/index.js +0 -174
  172. package/build/src/components/Pages/WaitingExternal/index.js.map +0 -1
  173. package/build/src/components/Pages/WaitingWallet/index.js +0 -49
  174. package/build/src/components/Pages/WaitingWallet/index.js.map +0 -1
  175. package/build/src/components/Pages/Warning/index.js +0 -56
  176. package/build/src/components/Pages/Warning/index.js.map +0 -1
  177. package/build/src/components/Spinners/CircleSpinner/index.js +0 -104
  178. package/build/src/components/Spinners/CircleSpinner/index.js.map +0 -1
  179. package/build/src/components/Spinners/CircleSpinner/styles.js +0 -117
  180. package/build/src/components/Spinners/CircleSpinner/styles.js.map +0 -1
  181. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +0 -29
  182. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +0 -1
  183. package/build/src/components/Spinners/SquircleSpinner/index.js +0 -68
  184. package/build/src/components/Spinners/SquircleSpinner/index.js.map +0 -1
  185. package/build/src/components/Spinners/SquircleSpinner/styles.js +0 -66
  186. package/build/src/components/Spinners/SquircleSpinner/styles.js.map +0 -1
  187. package/build/src/components/Spinners/TokenLogoSpinner/index.js +0 -24
  188. package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +0 -1
  189. package/build/src/components/Spinners/TokenLogoSpinner/styles.js +0 -40
  190. package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +0 -1
  191. package/build/src/components/Spinners/WalletPaymentSpinner/index.js +0 -37
  192. package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +0 -1
  193. package/build/src/components/Spinners/styles.js +0 -32
  194. package/build/src/components/Spinners/styles.js.map +0 -1
  195. package/build/src/constants/defaultTheme.js +0 -6
  196. package/build/src/constants/defaultTheme.js.map +0 -1
  197. package/build/src/constants/limits.js +0 -4
  198. package/build/src/constants/limits.js.map +0 -1
  199. package/build/src/constants/paymentOptions.js +0 -61
  200. package/build/src/constants/paymentOptions.js.map +0 -1
  201. package/build/src/constants/routes.js +0 -31
  202. package/build/src/constants/routes.js.map +0 -1
  203. package/build/src/constants/wallets.js +0 -7
  204. package/build/src/constants/wallets.js.map +0 -1
  205. package/build/src/defaultConfig.js +0 -65
  206. package/build/src/defaultConfig.js.map +0 -1
  207. package/build/src/defaultConnectors.js +0 -37
  208. package/build/src/defaultConnectors.js.map +0 -1
  209. package/build/src/hooks/useChainIsSupported.js +0 -10
  210. package/build/src/hooks/useChainIsSupported.js.map +0 -1
  211. package/build/src/hooks/useChains.js +0 -10
  212. package/build/src/hooks/useChains.js.map +0 -1
  213. package/build/src/hooks/useConnect.js +0 -61
  214. package/build/src/hooks/useConnect.js.map +0 -1
  215. package/build/src/hooks/useConnectCallback.js +0 -21
  216. package/build/src/hooks/useConnectCallback.js.map +0 -1
  217. package/build/src/hooks/useConnectors.js +0 -20
  218. package/build/src/hooks/useConnectors.js.map +0 -1
  219. package/build/src/hooks/useDaimoPay.js +0 -131
  220. package/build/src/hooks/useDaimoPay.js.map +0 -1
  221. package/build/src/hooks/useDaimoPayStatus.js +0 -12
  222. package/build/src/hooks/useDaimoPayStatus.js.map +0 -1
  223. package/build/src/hooks/useDaimoPayUI.js +0 -15
  224. package/build/src/hooks/useDaimoPayUI.js.map +0 -1
  225. package/build/src/hooks/useEnsFallbackConfig.js +0 -16
  226. package/build/src/hooks/useEnsFallbackConfig.js.map +0 -1
  227. package/build/src/hooks/useFitText.js +0 -133
  228. package/build/src/hooks/useFitText.js.map +0 -1
  229. package/build/src/hooks/useFocusTrap.js +0 -53
  230. package/build/src/hooks/useFocusTrap.js.map +0 -1
  231. package/build/src/hooks/useIsMobile.js +0 -11
  232. package/build/src/hooks/useIsMobile.js.map +0 -1
  233. package/build/src/hooks/useIsMounted.js +0 -10
  234. package/build/src/hooks/useIsMounted.js.map +0 -1
  235. package/build/src/hooks/useLastConnector.js +0 -24
  236. package/build/src/hooks/useLastConnector.js.map +0 -1
  237. package/build/src/hooks/useLocales.js +0 -60
  238. package/build/src/hooks/useLocales.js.map +0 -1
  239. package/build/src/hooks/useLockBodyScroll.js +0 -47
  240. package/build/src/hooks/useLockBodyScroll.js.map +0 -1
  241. package/build/src/hooks/useOrderUsdLimits.js +0 -24
  242. package/build/src/hooks/useOrderUsdLimits.js.map +0 -1
  243. package/build/src/hooks/usePayContext.js +0 -11
  244. package/build/src/hooks/usePayContext.js.map +0 -1
  245. package/build/src/hooks/usePaymentOptions.js +0 -183
  246. package/build/src/hooks/usePaymentOptions.js.map +0 -1
  247. package/build/src/hooks/usePaymentState.js +0 -399
  248. package/build/src/hooks/usePaymentState.js.map +0 -1
  249. package/build/src/hooks/usePrevious.js +0 -13
  250. package/build/src/hooks/usePrevious.js.map +0 -1
  251. package/build/src/hooks/useTokenOptions.js +0 -156
  252. package/build/src/hooks/useTokenOptions.js.map +0 -1
  253. package/build/src/hooks/useUntronAvailability.js +0 -32
  254. package/build/src/hooks/useUntronAvailability.js.map +0 -1
  255. package/build/src/hooks/useWindowSize.js +0 -23
  256. package/build/src/hooks/useWindowSize.js.map +0 -1
  257. package/build/src/index.js +0 -14
  258. package/build/src/index.js.map +0 -1
  259. package/build/src/localizations/index.js +0 -48
  260. package/build/src/localizations/index.js.map +0 -1
  261. package/build/src/localizations/locales/ar-AE.js +0 -95
  262. package/build/src/localizations/locales/ar-AE.js.map +0 -1
  263. package/build/src/localizations/locales/ca-AD.js +0 -93
  264. package/build/src/localizations/locales/ca-AD.js.map +0 -1
  265. package/build/src/localizations/locales/ee-EE.js +0 -101
  266. package/build/src/localizations/locales/ee-EE.js.map +0 -1
  267. package/build/src/localizations/locales/en-US.js +0 -145
  268. package/build/src/localizations/locales/en-US.js.map +0 -1
  269. package/build/src/localizations/locales/es-ES.js +0 -138
  270. package/build/src/localizations/locales/es-ES.js.map +0 -1
  271. package/build/src/localizations/locales/fa-IR.js +0 -93
  272. package/build/src/localizations/locales/fa-IR.js.map +0 -1
  273. package/build/src/localizations/locales/fr-FR.js +0 -93
  274. package/build/src/localizations/locales/fr-FR.js.map +0 -1
  275. package/build/src/localizations/locales/ja-JP.js +0 -93
  276. package/build/src/localizations/locales/ja-JP.js.map +0 -1
  277. package/build/src/localizations/locales/pt-BR.js +0 -145
  278. package/build/src/localizations/locales/pt-BR.js.map +0 -1
  279. package/build/src/localizations/locales/ru-RU.js +0 -97
  280. package/build/src/localizations/locales/ru-RU.js.map +0 -1
  281. package/build/src/localizations/locales/tr-TR.js +0 -101
  282. package/build/src/localizations/locales/tr-TR.js.map +0 -1
  283. package/build/src/localizations/locales/vi-VN.js +0 -101
  284. package/build/src/localizations/locales/vi-VN.js.map +0 -1
  285. package/build/src/localizations/locales/zh-CN.js +0 -93
  286. package/build/src/localizations/locales/zh-CN.js.map +0 -1
  287. package/build/src/payment/paymentEffects.js +0 -270
  288. package/build/src/payment/paymentEffects.js.map +0 -1
  289. package/build/src/payment/paymentFsm.js +0 -234
  290. package/build/src/payment/paymentFsm.js.map +0 -1
  291. package/build/src/payment/paymentStore.js +0 -18
  292. package/build/src/payment/paymentStore.js.map +0 -1
  293. package/build/src/payment/paymentUtils.js +0 -10
  294. package/build/src/payment/paymentUtils.js.map +0 -1
  295. package/build/src/provider/DaimoPayProvider.js +0 -300
  296. package/build/src/provider/DaimoPayProvider.js.map +0 -1
  297. package/build/src/provider/PayContext.js +0 -6
  298. package/build/src/provider/PayContext.js.map +0 -1
  299. package/build/src/provider/PaymentProvider.js +0 -35
  300. package/build/src/provider/PaymentProvider.js.map +0 -1
  301. package/build/src/provider/SolanaContextProvider.js +0 -14
  302. package/build/src/provider/SolanaContextProvider.js.map +0 -1
  303. package/build/src/provider/Web3ContextProvider.js +0 -36
  304. package/build/src/provider/Web3ContextProvider.js.map +0 -1
  305. package/build/src/stateStore.js +0 -36
  306. package/build/src/stateStore.js.map +0 -1
  307. package/build/src/styles/defaultTheme.js +0 -80
  308. package/build/src/styles/defaultTheme.js.map +0 -1
  309. package/build/src/styles/index.js +0 -313
  310. package/build/src/styles/index.js.map +0 -1
  311. package/build/src/styles/styled/index.js +0 -6
  312. package/build/src/styles/styled/index.js.map +0 -1
  313. package/build/src/styles/themes/base.js +0 -141
  314. package/build/src/styles/themes/base.js.map +0 -1
  315. package/build/src/styles/themes/index.js +0 -13
  316. package/build/src/styles/themes/index.js.map +0 -1
  317. package/build/src/styles/themes/midnight.js +0 -76
  318. package/build/src/styles/themes/midnight.js.map +0 -1
  319. package/build/src/styles/themes/minimal.js +0 -96
  320. package/build/src/styles/themes/minimal.js.map +0 -1
  321. package/build/src/styles/themes/nouns.js +0 -81
  322. package/build/src/styles/themes/nouns.js.map +0 -1
  323. package/build/src/styles/themes/retro.js +0 -106
  324. package/build/src/styles/themes/retro.js.map +0 -1
  325. package/build/src/styles/themes/rounded.js +0 -106
  326. package/build/src/styles/themes/rounded.js.map +0 -1
  327. package/build/src/styles/themes/soft.js +0 -71
  328. package/build/src/styles/themes/soft.js.map +0 -1
  329. package/build/src/styles/themes/web95.js +0 -132
  330. package/build/src/styles/themes/web95.js.map +0 -1
  331. package/build/src/utils/exports.js +0 -6
  332. package/build/src/utils/exports.js.map +0 -1
  333. package/build/src/utils/format.js +0 -48
  334. package/build/src/utils/format.js.map +0 -1
  335. package/build/src/utils/index.js +0 -42
  336. package/build/src/utils/index.js.map +0 -1
  337. package/build/src/utils/p3.js +0 -15
  338. package/build/src/utils/p3.js.map +0 -1
  339. package/build/src/utils/platform.js +0 -11
  340. package/build/src/utils/platform.js.map +0 -1
  341. package/build/src/utils/polling.js +0 -44
  342. package/build/src/utils/polling.js.map +0 -1
  343. package/build/src/utils/supportUrl.js +0 -16
  344. package/build/src/utils/supportUrl.js.map +0 -1
  345. package/build/src/utils/trpc.js +0 -19
  346. package/build/src/utils/trpc.js.map +0 -1
  347. package/build/src/utils/validateInput.js +0 -16
  348. package/build/src/utils/validateInput.js.map +0 -1
  349. package/build/src/wallets/index.js +0 -21
  350. package/build/src/wallets/index.js.map +0 -1
  351. package/build/src/wallets/useWallets.js +0 -278
  352. package/build/src/wallets/useWallets.js.map +0 -1
  353. package/build/src/wallets/walletConfigs.js +0 -190
  354. package/build/src/wallets/walletConfigs.js.map +0 -1
  355. package/build/src/world-mini-app/WorldPayButton.js +0 -165
  356. package/build/src/world-mini-app/WorldPayButton.js.map +0 -1
  357. package/build/src/world-mini-app/promptWorldPayment.js +0 -59
  358. package/build/src/world-mini-app/promptWorldPayment.js.map +0 -1
  359. package/build/src/world-mini-app/useWithdrawToWorld.js +0 -76
  360. package/build/src/world-mini-app/useWithdrawToWorld.js.map +0 -1
  361. package/build/src/world-mini-app/useWorldSignIn.js +0 -74
  362. package/build/src/world-mini-app/useWorldSignIn.js.map +0 -1
  363. package/build/src/world.js +0 -4
  364. package/build/src/world.js.map +0 -1
  365. package/build/types-26343050.d.ts +0 -65
  366. package/build/world.d.ts +0 -108
@@ -1,399 +0,0 @@
1
- import { ethereum, isHydrated, readDaimoPayOrderID, assert, debugJson, isNativeToken, assertNotNull, writeDaimoPayOrderID } from '@daimo/pay-common';
2
- import { useWallet, useConnection } from '@solana/wallet-adapter-react';
3
- import { VersionedTransaction } from '@solana/web3.js';
4
- import { useState, useEffect, useCallback } from 'react';
5
- import { getAddress, erc20Abi, isHex, hexToBytes } from 'viem';
6
- import { useAccount, useEnsName, useSendTransaction, useWriteContract } from 'wagmi';
7
- import { DEFAULT_USD_LIMIT } from '../constants/limits.js';
8
- import { inferTopLevelFromArray, DEFAULT_TOP_OPTIONS_ORDER, TOP_LEVEL_PAYMENT_OPTIONS } from '../constants/paymentOptions.js';
9
- import { ROUTES } from '../constants/routes.js';
10
- import { detectPlatform } from '../utils/platform.js';
11
- import { useDaimoPay } from './useDaimoPay.js';
12
- import useIsMobile from './useIsMobile.js';
13
- import { useOrderUsdLimits } from './useOrderUsdLimits.js';
14
- import { usePaymentOptions } from './usePaymentOptions.js';
15
- import { useUntronAvailability } from './useUntronAvailability.js';
16
-
17
- function getTopLevelOptions(paymentOptions) {
18
- if (!paymentOptions || paymentOptions.length === 0) return [];
19
- const topLevelOptions = TOP_LEVEL_PAYMENT_OPTIONS;
20
- const isString = (opt) => typeof opt === "string";
21
- const stringOptions = paymentOptions.filter(isString);
22
- const topLevel = stringOptions.filter(
23
- (opt) => topLevelOptions.includes(opt)
24
- );
25
- const specific = stringOptions.filter(
26
- (opt) => !topLevelOptions.includes(opt)
27
- );
28
- if (topLevel.length && specific.length) {
29
- throw new Error(
30
- `invalid paymentOptions: cannot mix top-level options ${JSON.stringify(topLevel)} with specific options ${JSON.stringify(specific)}. use either ["AllWallets", "AllExchanges", ...] or ["MiniPay", "Binance", ...], not both`
31
- );
32
- }
33
- const flattened = paymentOptions.map(
34
- (opt) => Array.isArray(opt) ? inferTopLevelFromArray(opt) ?? "AllWallets" : opt
35
- );
36
- return flattened.filter(
37
- (opt) => topLevelOptions.includes(opt)
38
- );
39
- }
40
- function usePaymentState({
41
- trpc,
42
- lockPayParams,
43
- setRoute,
44
- log,
45
- redirectReturnUrl
46
- }) {
47
- const pay = useDaimoPay();
48
- const [platform, setPlatform] = useState();
49
- useEffect(() => {
50
- setPlatform(detectPlatform(window.navigator.userAgent));
51
- }, []);
52
- const { address: ethWalletAddress } = useAccount();
53
- const { data: senderEnsName } = useEnsName({
54
- chainId: ethereum.chainId,
55
- address: ethWalletAddress
56
- });
57
- const { sendTransactionAsync } = useSendTransaction();
58
- const { writeContractAsync } = useWriteContract();
59
- const solanaWallet = useWallet();
60
- const { connection } = useConnection();
61
- const solanaPubKey = solanaWallet.publicKey?.toBase58();
62
- const [buttonProps, setButtonProps] = useState();
63
- const [currPayParams, setCurrPayParams] = useState();
64
- const [paymentWaitingMessage, setPaymentWaitingMessage] = useState();
65
- const [isDepositFlow, setIsDepositFlow] = useState(false);
66
- const hydratedOrderId = pay.order != null && isHydrated(pay.order) ? pay.order.id : void 0;
67
- const {
68
- externalPaymentOptions,
69
- walletPaymentOptions,
70
- solanaPaymentOptions,
71
- depositAddressOptions
72
- } = usePaymentOptions({
73
- trpc,
74
- appId: currPayParams?.appId,
75
- orderId: hydratedOrderId,
76
- isDepositFlow,
77
- usdRequired: pay.order?.destFinalCallTokenAmount.usd,
78
- solanaPubKey,
79
- ethWalletAddress,
80
- platform,
81
- filterIds: buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions,
82
- preferredChains: pay.order?.metadata.payer?.preferredChains,
83
- preferredTokens: pay.order?.metadata.payer?.preferredTokens,
84
- evmChains: pay.order?.metadata.payer?.evmChains,
85
- destChainId: pay.order?.destFinalCallTokenAmount.token.chainId,
86
- passthroughTokens: pay.order?.metadata.payer?.passthroughTokens,
87
- destAddress: pay.order?.destFinalCall.to,
88
- log
89
- });
90
- const { available: untronAvailable } = useUntronAvailability({ trpc });
91
- const chainOrderUsdLimits = useOrderUsdLimits({ trpc });
92
- const [selectedExternalOption, setSelectedExternalOption] = useState();
93
- const [selectedTokenOption, setSelectedTokenOption] = useState();
94
- const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] = useState();
95
- const [selectedDepositAddressOption, setSelectedDepositAddressOption] = useState();
96
- const [selectedWallet, setSelectedWallet] = useState();
97
- const [selectedWalletDeepLink, setSelectedWalletDeepLink] = useState();
98
- const getOrderUsdLimit = () => {
99
- if (pay.order == null || chainOrderUsdLimits.loading) {
100
- return DEFAULT_USD_LIMIT;
101
- }
102
- const destChainId = pay.order.destFinalCallTokenAmount.token.chainId;
103
- return destChainId in chainOrderUsdLimits.limits ? chainOrderUsdLimits.limits[destChainId] : DEFAULT_USD_LIMIT;
104
- };
105
- const payWithToken = async (walletOption) => {
106
- assert(
107
- ethWalletAddress != null,
108
- `[PAY TOKEN] null ethWalletAddress when paying on ethereum`
109
- );
110
- assert(
111
- pay.paymentState === "preview" || pay.paymentState === "unhydrated" || pay.paymentState === "payment_unpaid",
112
- `[PAY TOKEN] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`
113
- );
114
- let hydratedOrder;
115
- const { required, fees } = walletOption;
116
- const paymentAmount = BigInt(required.amount) + BigInt(fees.amount);
117
- if (pay.paymentState !== "payment_unpaid") {
118
- assert(
119
- required.token.token === fees.token.token,
120
- `[PAY TOKEN] required token ${debugJson(required)} does not match fees token ${debugJson(fees)}`
121
- );
122
- const res = await pay.hydrateOrder(ethWalletAddress);
123
- hydratedOrder = res.order;
124
- log(
125
- `[PAY TOKEN] hydrated order: ${debugJson(
126
- hydratedOrder
127
- )}, paying ${paymentAmount} of token ${required.token.token}`
128
- );
129
- } else {
130
- hydratedOrder = pay.order;
131
- }
132
- const paymentTxHash = await (async () => {
133
- const dest = walletOption.passthroughAddress ?? hydratedOrder.intentAddr;
134
- try {
135
- if (isNativeToken(
136
- required.token.chainId,
137
- getAddress(required.token.token)
138
- )) {
139
- return await sendTransactionAsync({
140
- to: dest,
141
- value: paymentAmount
142
- });
143
- } else {
144
- return await writeContractAsync({
145
- abi: erc20Abi,
146
- address: getAddress(required.token.token),
147
- functionName: "transfer",
148
- args: [dest, paymentAmount]
149
- });
150
- }
151
- } catch (e) {
152
- console.error(`[PAY TOKEN] error sending token: ${e}`);
153
- throw e;
154
- }
155
- })();
156
- if (!isHex(paymentTxHash) || paymentTxHash.length !== 66) {
157
- log(
158
- `[PAY TOKEN] wallet bug detected. ignoring invalid payment txHash: ${paymentTxHash}`
159
- );
160
- return { success: true };
161
- }
162
- try {
163
- await pay.payEthSource({
164
- paymentTxHash,
165
- sourceChainId: required.token.chainId,
166
- payerAddress: ethWalletAddress,
167
- sourceToken: getAddress(required.token.token),
168
- sourceAmount: paymentAmount
169
- });
170
- return { txHash: paymentTxHash, success: true };
171
- } catch {
172
- console.error(
173
- `[PAY TOKEN] could not verify payment tx on chain: ${paymentTxHash}`
174
- );
175
- return { txHash: paymentTxHash, success: false };
176
- }
177
- };
178
- const payWithSolanaToken = async (inputToken) => {
179
- const payerPublicKey = solanaWallet.publicKey;
180
- assert(
181
- payerPublicKey != null,
182
- "[PAY SOLANA] null payerPublicKey when paying on solana"
183
- );
184
- assert(
185
- pay.order?.id != null,
186
- "[PAY SOLANA] null orderId when paying on solana"
187
- );
188
- assert(
189
- pay.paymentState === "preview" || pay.paymentState === "unhydrated" || pay.paymentState === "payment_unpaid",
190
- `[PAY SOLANA] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`
191
- );
192
- let hydratedOrder;
193
- if (pay.paymentState !== "payment_unpaid") {
194
- const res = await pay.hydrateOrder();
195
- hydratedOrder = res.order;
196
- log(
197
- `[PAY SOLANA] Hydrated order: ${JSON.stringify(
198
- hydratedOrder
199
- )}, checking out with Solana ${inputToken}`
200
- );
201
- } else {
202
- hydratedOrder = pay.order;
203
- }
204
- const paymentTxHash = await (async () => {
205
- try {
206
- const serializedTx = await trpc.getSolanaSwapAndBurnTx.query({
207
- orderId: pay.order.id.toString(),
208
- userPublicKey: assertNotNull(
209
- payerPublicKey,
210
- "[PAY SOLANA] wallet.publicKey cannot be null"
211
- ).toString(),
212
- inputTokenMint: inputToken
213
- });
214
- const tx = VersionedTransaction.deserialize(hexToBytes(serializedTx));
215
- const txHash = await solanaWallet.sendTransaction(tx, connection);
216
- return txHash;
217
- } catch (e) {
218
- console.error(e);
219
- throw e;
220
- }
221
- })();
222
- try {
223
- await pay.paySolanaSource({
224
- paymentTxHash,
225
- sourceToken: inputToken
226
- });
227
- return { txHash: paymentTxHash, success: true };
228
- } catch {
229
- console.error(
230
- `[PAY SOLANA] could not verify payment tx on chain: ${paymentTxHash}`
231
- );
232
- return { txHash: paymentTxHash, success: false };
233
- }
234
- };
235
- const payWithExternal = async (option) => {
236
- assert(pay.order != null, "[PAY EXTERNAL] order cannot be null");
237
- assert(platform != null, "[PAY EXTERNAL] platform cannot be null");
238
- const { order } = await pay.hydrateOrder();
239
- const externalPaymentOptionData = await trpc.getExternalPaymentOptionData.query({
240
- id: order.id.toString(),
241
- externalPaymentOption: option,
242
- platform,
243
- redirectReturnUrl
244
- });
245
- assert(
246
- externalPaymentOptionData != null,
247
- "[PAY EXTERNAL] missing externalPaymentOptionData"
248
- );
249
- log(
250
- `[PAY EXTERNAL] hydrated order: ${debugJson(
251
- order
252
- )}, checking out with external payment: ${option}`
253
- );
254
- setPaymentWaitingMessage(externalPaymentOptionData.waitingMessage);
255
- return externalPaymentOptionData.url;
256
- };
257
- const payWithDepositAddress = async (option) => {
258
- const { order } = await pay.hydrateOrder();
259
- log(
260
- `[PAY DEPOSIT ADDRESS] hydrated order ${order.id} for ${order.usdValue} USD, checking out with deposit address: ${option}`
261
- );
262
- const result = await trpc.getDepositAddressForOrder.query({
263
- orderId: order.id.toString(),
264
- option
265
- });
266
- return "error" in result ? null : result;
267
- };
268
- const { isIOS, isAndroid } = useIsMobile();
269
- const openInWalletBrowser = async (wallet, amountUsd) => {
270
- const paymentState = pay.paymentState;
271
- assert(
272
- paymentState === "preview" || paymentState === "unhydrated" || paymentState === "payment_unpaid",
273
- `[OPEN IN WALLET BROWSER] paymentState is ${paymentState}, must be preview or unhydrated or payment_unpaid`
274
- );
275
- assert(
276
- wallet.getDaimoPayDeeplink != null,
277
- `openInWalletBrowser: missing deeplink for ${wallet.name}`
278
- );
279
- if (pay.paymentState !== "payment_unpaid") {
280
- await pay.hydrateOrder();
281
- }
282
- const payId = writeDaimoPayOrderID(pay.order.id);
283
- const platform2 = isIOS ? "ios" : isAndroid ? "android" : "other";
284
- const deeplink = wallet.getDaimoPayDeeplink(payId, platform2);
285
- if (!isIOS) {
286
- window.open(deeplink, "_blank");
287
- }
288
- setSelectedWallet(wallet);
289
- setSelectedWalletDeepLink(deeplink);
290
- setRoute(ROUTES.WAITING_WALLET, {
291
- amountUsd,
292
- payId,
293
- wallet_name: wallet.name
294
- });
295
- };
296
- const setChosenUsd = (usd) => {
297
- assert(
298
- pay.paymentState === "preview",
299
- "[SET CHOSEN USD] paymentState is not preview"
300
- );
301
- pay.setChosenUsd(usd);
302
- };
303
- const setPayId = useCallback(
304
- async (payId) => {
305
- if (payId == null) return;
306
- const id = readDaimoPayOrderID(payId).toString();
307
- if (pay.order?.id && BigInt(id) == pay.order.id) {
308
- return;
309
- }
310
- pay.reset();
311
- await pay.setPayId(payId);
312
- setIsDepositFlow(false);
313
- },
314
- [pay]
315
- );
316
- const setPayParams = async (payParams) => {
317
- if (lockPayParams) return;
318
- assert(payParams != null, "[SET PAY PARAMS] payParams cannot be null");
319
- log("[SET PAY PARAMS] setting payParams", payParams);
320
- pay.reset();
321
- setCurrPayParams(payParams);
322
- setIsDepositFlow(payParams.toUnits == null);
323
- await pay.createPreviewOrder(payParams);
324
- };
325
- const generatePreviewOrder = async () => {
326
- pay.reset();
327
- if (currPayParams == null) return;
328
- await pay.createPreviewOrder(currPayParams);
329
- };
330
- const resetOrder = useCallback(
331
- async (payParams) => {
332
- const mergedPayParams = payParams != null && currPayParams != null ? { ...currPayParams, ...payParams } : currPayParams;
333
- pay.reset();
334
- setSelectedExternalOption(void 0);
335
- setSelectedTokenOption(void 0);
336
- setSelectedSolanaTokenOption(void 0);
337
- setSelectedDepositAddressOption(void 0);
338
- setSelectedWallet(void 0);
339
- setSelectedWalletDeepLink(void 0);
340
- setPaymentWaitingMessage(void 0);
341
- if (mergedPayParams) {
342
- setCurrPayParams(mergedPayParams);
343
- setIsDepositFlow(mergedPayParams.toUnits == null);
344
- await pay.createPreviewOrder(mergedPayParams);
345
- }
346
- setRoute(ROUTES.SELECT_METHOD);
347
- },
348
- [setRoute, pay, currPayParams]
349
- );
350
- const [tokenMode, setTokenMode] = useState("evm");
351
- const topOptionsOrder = (() => {
352
- const defaultOrder = DEFAULT_TOP_OPTIONS_ORDER;
353
- const paymentOptions = buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions;
354
- const found = getTopLevelOptions(paymentOptions);
355
- return found.length ? found : defaultOrder;
356
- })();
357
- return {
358
- buttonProps,
359
- setButtonProps,
360
- topOptionsOrder,
361
- setPayId,
362
- setPayParams,
363
- tokenMode,
364
- setTokenMode,
365
- generatePreviewOrder,
366
- isDepositFlow,
367
- paymentWaitingMessage,
368
- selectedExternalOption,
369
- selectedTokenOption,
370
- selectedSolanaTokenOption,
371
- externalPaymentOptions,
372
- selectedWallet,
373
- selectedWalletDeepLink,
374
- walletPaymentOptions,
375
- solanaPaymentOptions,
376
- depositAddressOptions,
377
- selectedDepositAddressOption,
378
- getOrderUsdLimit,
379
- resetOrder,
380
- setSelectedWallet,
381
- setSelectedWalletDeepLink,
382
- setPaymentWaitingMessage,
383
- setSelectedExternalOption,
384
- setSelectedTokenOption,
385
- setSelectedSolanaTokenOption,
386
- setSelectedDepositAddressOption,
387
- setChosenUsd,
388
- payWithToken,
389
- payWithExternal,
390
- payWithDepositAddress,
391
- payWithSolanaToken,
392
- openInWalletBrowser,
393
- senderEnsName: senderEnsName ?? void 0,
394
- untronAvailable
395
- };
396
- }
397
-
398
- export { usePaymentState };
399
- //# sourceMappingURL=usePaymentState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePaymentState.js","sources":["../../../src/hooks/usePaymentState.ts"],"sourcesContent":["import {\n assert,\n assertNotNull,\n DaimoPayHydratedOrderWithOrg,\n debugJson,\n DepositAddressPaymentOptionData,\n DepositAddressPaymentOptionMetadata,\n DepositAddressPaymentOptions,\n ethereum,\n ExternalPaymentOptionMetadata,\n ExternalPaymentOptions,\n ExternalPaymentOptionsString,\n isHydrated,\n isNativeToken,\n PlatformType,\n readDaimoPayOrderID,\n SolanaPublicKey,\n WalletPaymentOption,\n writeDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { VersionedTransaction } from \"@solana/web3.js\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { erc20Abi, getAddress, Hex, hexToBytes, isHex } from \"viem\";\nimport {\n useAccount,\n useEnsName,\n useSendTransaction,\n useWriteContract,\n} from \"wagmi\";\n\nimport { PayButtonPaymentProps } from \"../components/DaimoPayButton\";\nimport { DEFAULT_USD_LIMIT } from \"../constants/limits\";\nimport {\n DEFAULT_TOP_OPTIONS_ORDER,\n inferTopLevelFromArray,\n TOP_LEVEL_PAYMENT_OPTIONS,\n} from \"../constants/paymentOptions\";\nimport { ROUTES } from \"../constants/routes\";\nimport { PayParams } from \"../payment/paymentFsm\";\nimport { detectPlatform } from \"../utils/platform\";\nimport { TrpcClient } from \"../utils/trpc\";\nimport { WalletConfigProps } from \"../wallets/walletConfigs\";\nimport { useDaimoPay } from \"./useDaimoPay\";\nimport useIsMobile from \"./useIsMobile\";\nimport { useOrderUsdLimits } from \"./useOrderUsdLimits\";\nimport { usePaymentOptions } from \"./usePaymentOptions\";\nimport { useUntronAvailability } from \"./useUntronAvailability\";\n\n/** Wallet payment details, sent to processSourcePayment after submitting tx. */\nexport type SourcePayment = Parameters<\n TrpcClient[\"processSourcePayment\"][\"mutate\"]\n>[0];\n\n/**\n * Extract the ordered list of top-level options from paymentOptions.\n * Returns an empty list if none are provided. Throws if top-level and\n * specific options are mixed.\n */\nfunction getTopLevelOptions(\n paymentOptions: (string | string[])[] | undefined,\n): ExternalPaymentOptionsString[] {\n if (!paymentOptions || paymentOptions.length === 0) return [];\n\n const topLevelOptions = TOP_LEVEL_PAYMENT_OPTIONS;\n const isString = (opt: unknown): opt is string => typeof opt === \"string\";\n\n const stringOptions = paymentOptions.filter(isString);\n const topLevel = stringOptions.filter((opt) =>\n topLevelOptions.includes(opt as ExternalPaymentOptionsString),\n );\n const specific = stringOptions.filter(\n (opt) => !topLevelOptions.includes(opt as ExternalPaymentOptionsString),\n );\n\n if (topLevel.length && specific.length) {\n throw new Error(\n `invalid paymentOptions: cannot mix top-level options ${JSON.stringify(topLevel)} with specific options ${JSON.stringify(specific)}. ` +\n `use either [\"AllWallets\", \"AllExchanges\", ...] or [\"MiniPay\", \"Binance\", ...], not both`,\n );\n }\n\n // Flatten nested arrays and infer a top-level entry when needed\n const flattened = paymentOptions.map((opt) =>\n Array.isArray(opt)\n ? (inferTopLevelFromArray(opt as string[]) ?? \"AllWallets\")\n : opt,\n );\n\n // Keep only top-level options, preserving order\n return flattened.filter((opt) =>\n topLevelOptions.includes(opt as ExternalPaymentOptionsString),\n ) as ExternalPaymentOptionsString[];\n}\n\n/** Creates (or loads) a payment and manages the corresponding modal. */\nexport interface PaymentState {\n generatePreviewOrder: () => void;\n resetOrder: (payParams?: Partial<PayParams>) => Promise<void>;\n\n /// DaimoPayButton props\n buttonProps: PayButtonPaymentProps | undefined;\n setButtonProps: (props: PayButtonPaymentProps | undefined) => void;\n /// Order of top-level payment options in SelectMethod\n topOptionsOrder: string[];\n\n /// Pay ID for loading an existing order\n setPayId: (id: string | undefined) => Promise<void>;\n /// Pay params for creating an order on the fly,\n setPayParams: (payParams: PayParams | undefined) => Promise<void>;\n\n /// True if the user is entering an amount (deposit) vs preset (checkout).\n isDepositFlow: boolean;\n paymentWaitingMessage: string | undefined;\n selectedWallet: WalletConfigProps | undefined;\n selectedWalletDeepLink: string | undefined;\n /// External payment options, loaded from server and filtered by EITHER\n /// 1. the DaimoPayButton paymentOptions, or 2. those of daimoPayOrder\n externalPaymentOptions: ReturnType<\n typeof usePaymentOptions\n >[\"externalPaymentOptions\"];\n walletPaymentOptions: ReturnType<\n typeof usePaymentOptions\n >[\"walletPaymentOptions\"];\n solanaPaymentOptions: ReturnType<\n typeof usePaymentOptions\n >[\"solanaPaymentOptions\"];\n depositAddressOptions: ReturnType<\n typeof usePaymentOptions\n >[\"depositAddressOptions\"];\n /** Whether Untron receivers are currently available. `null` when unknown. */\n untronAvailable: boolean | null;\n selectedExternalOption: ExternalPaymentOptionMetadata | undefined;\n selectedTokenOption: WalletPaymentOption | undefined;\n selectedSolanaTokenOption: WalletPaymentOption | undefined;\n selectedDepositAddressOption: DepositAddressPaymentOptionMetadata | undefined;\n getOrderUsdLimit: () => number;\n setPaymentWaitingMessage: (message: string | undefined) => void;\n tokenMode: \"evm\" | \"solana\" | \"all\";\n setTokenMode: (mode: \"evm\" | \"solana\" | \"all\") => void;\n setSelectedWallet: (wallet: WalletConfigProps | undefined) => void;\n setSelectedWalletDeepLink: (deepLink: string | undefined) => void;\n setSelectedExternalOption: (\n option: ExternalPaymentOptionMetadata | undefined,\n ) => void;\n setSelectedTokenOption: (option: WalletPaymentOption | undefined) => void;\n setSelectedSolanaTokenOption: (\n option: WalletPaymentOption | undefined,\n ) => void;\n setSelectedDepositAddressOption: (\n option: DepositAddressPaymentOptionMetadata | undefined,\n ) => void;\n setChosenUsd: (usd: number) => void;\n payWithToken: (\n walletOption: WalletPaymentOption,\n ) => Promise<{ txHash?: Hex; success: boolean }>;\n payWithExternal: (option: ExternalPaymentOptions) => Promise<string>;\n payWithDepositAddress: (\n option: DepositAddressPaymentOptions,\n ) => Promise<DepositAddressPaymentOptionData | null>;\n payWithSolanaToken: (\n inputToken: SolanaPublicKey,\n ) => Promise<{ txHash: string; success: boolean }>;\n openInWalletBrowser: (\n wallet: WalletConfigProps,\n amountUsd?: number,\n ) => Promise<void>;\n senderEnsName: string | undefined;\n}\n\nexport function usePaymentState({\n trpc,\n lockPayParams,\n setRoute,\n log,\n redirectReturnUrl,\n}: {\n trpc: TrpcClient;\n lockPayParams: boolean;\n setRoute: (route: ROUTES, data?: Record<string, any>) => void;\n log: (...args: any[]) => void;\n redirectReturnUrl?: string;\n}): PaymentState {\n const pay = useDaimoPay();\n\n // Browser state.\n const [platform, setPlatform] = useState<PlatformType>();\n useEffect(() => {\n setPlatform(detectPlatform(window.navigator.userAgent));\n }, []);\n\n // Wallet state.\n const { address: ethWalletAddress } = useAccount();\n const { data: senderEnsName } = useEnsName({\n chainId: ethereum.chainId,\n address: ethWalletAddress,\n });\n const { sendTransactionAsync } = useSendTransaction();\n const { writeContractAsync } = useWriteContract();\n\n // Solana wallet state.\n const solanaWallet = useWallet();\n const { connection } = useConnection();\n const solanaPubKey = solanaWallet.publicKey?.toBase58();\n\n // From DaimoPayButton props\n const [buttonProps, setButtonProps] = useState<PayButtonPaymentProps>();\n const [currPayParams, setCurrPayParams] = useState<PayParams>();\n\n const [paymentWaitingMessage, setPaymentWaitingMessage] = useState<string>();\n const [isDepositFlow, setIsDepositFlow] = useState<boolean>(false);\n\n // UI state. Selection for external payment (Binance, etc) vs wallet payment.\n // Pass orderId only when order is hydrated; always pass appId when available\n const hydratedOrderId =\n pay.order != null && isHydrated(pay.order) ? pay.order.id : undefined;\n const {\n externalPaymentOptions,\n walletPaymentOptions,\n solanaPaymentOptions,\n depositAddressOptions,\n } = usePaymentOptions({\n trpc,\n appId: currPayParams?.appId,\n orderId: hydratedOrderId,\n isDepositFlow,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n solanaPubKey,\n ethWalletAddress,\n platform,\n filterIds:\n buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions,\n preferredChains: pay.order?.metadata.payer?.preferredChains,\n preferredTokens: pay.order?.metadata.payer?.preferredTokens,\n evmChains: pay.order?.metadata.payer?.evmChains,\n destChainId: pay.order?.destFinalCallTokenAmount.token.chainId,\n passthroughTokens: pay.order?.metadata.payer?.passthroughTokens,\n destAddress: pay.order?.destFinalCall.to,\n log,\n });\n\n // Poll for Untron receiver availability so components can disable unsupported chains promptly.\n const { available: untronAvailable } = useUntronAvailability({ trpc });\n\n const chainOrderUsdLimits = useOrderUsdLimits({ trpc });\n\n const [selectedExternalOption, setSelectedExternalOption] =\n useState<ExternalPaymentOptionMetadata>();\n\n const [selectedTokenOption, setSelectedTokenOption] =\n useState<WalletPaymentOption>();\n\n const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] =\n useState<WalletPaymentOption>();\n\n const [selectedDepositAddressOption, setSelectedDepositAddressOption] =\n useState<DepositAddressPaymentOptionMetadata>();\n\n const [selectedWallet, setSelectedWallet] = useState<WalletConfigProps>();\n const [selectedWalletDeepLink, setSelectedWalletDeepLink] =\n useState<string>();\n\n const getOrderUsdLimit = () => {\n if (pay.order == null || chainOrderUsdLimits.loading) {\n return DEFAULT_USD_LIMIT;\n }\n const destChainId = pay.order.destFinalCallTokenAmount.token.chainId;\n return destChainId in chainOrderUsdLimits.limits\n ? chainOrderUsdLimits.limits[destChainId]\n : DEFAULT_USD_LIMIT;\n };\n\n /** Commit to a token + amount = initiate payment. */\n const payWithToken = async (\n walletOption: WalletPaymentOption,\n ): Promise<{ txHash?: Hex; success: boolean }> => {\n assert(\n ethWalletAddress != null,\n `[PAY TOKEN] null ethWalletAddress when paying on ethereum`,\n );\n assert(\n pay.paymentState === \"preview\" ||\n pay.paymentState === \"unhydrated\" ||\n pay.paymentState === \"payment_unpaid\",\n `[PAY TOKEN] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`,\n );\n\n let hydratedOrder: DaimoPayHydratedOrderWithOrg;\n const { required, fees } = walletOption;\n const paymentAmount = BigInt(required.amount) + BigInt(fees.amount);\n if (pay.paymentState !== \"payment_unpaid\") {\n assert(\n required.token.token === fees.token.token,\n `[PAY TOKEN] required token ${debugJson(required)} does not match fees token ${debugJson(fees)}`,\n );\n\n // Will refund to ethWalletAddress if refundAddress was not set in payParams\n const res = await pay.hydrateOrder(ethWalletAddress);\n hydratedOrder = res.order;\n\n log(\n `[PAY TOKEN] hydrated order: ${debugJson(\n hydratedOrder,\n )}, paying ${paymentAmount} of token ${required.token.token}`,\n );\n } else {\n hydratedOrder = pay.order;\n }\n\n const paymentTxHash = await (async () => {\n const dest = walletOption.passthroughAddress ?? hydratedOrder.intentAddr;\n try {\n if (\n isNativeToken(\n required.token.chainId,\n getAddress(required.token.token),\n )\n ) {\n return await sendTransactionAsync({\n to: dest,\n value: paymentAmount,\n });\n } else {\n return await writeContractAsync({\n abi: erc20Abi,\n address: getAddress(required.token.token),\n functionName: \"transfer\",\n args: [dest, paymentAmount],\n });\n }\n } catch (e) {\n console.error(`[PAY TOKEN] error sending token: ${e}`);\n throw e;\n }\n })();\n\n // Special case. Handle Rabby bug, where it returns the *Safe signature*\n // instead of a txHash for a queued, unsubmitted Safe transaction.\n if (!isHex(paymentTxHash) || paymentTxHash.length !== 66) {\n log(\n `[PAY TOKEN] wallet bug detected. ignoring invalid payment txHash: ${paymentTxHash}`,\n );\n return { success: true };\n }\n\n try {\n await pay.payEthSource({\n paymentTxHash,\n sourceChainId: required.token.chainId,\n payerAddress: ethWalletAddress,\n sourceToken: getAddress(required.token.token),\n sourceAmount: paymentAmount,\n });\n return { txHash: paymentTxHash, success: true };\n } catch {\n console.error(\n `[PAY TOKEN] could not verify payment tx on chain: ${paymentTxHash}`,\n );\n return { txHash: paymentTxHash, success: false };\n }\n };\n\n const payWithSolanaToken = async (\n inputToken: SolanaPublicKey,\n ): Promise<{ txHash: string; success: boolean }> => {\n const payerPublicKey = solanaWallet.publicKey;\n assert(\n payerPublicKey != null,\n \"[PAY SOLANA] null payerPublicKey when paying on solana\",\n );\n assert(\n pay.order?.id != null,\n \"[PAY SOLANA] null orderId when paying on solana\",\n );\n assert(\n pay.paymentState === \"preview\" ||\n pay.paymentState === \"unhydrated\" ||\n pay.paymentState === \"payment_unpaid\",\n `[PAY SOLANA] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`,\n );\n\n let hydratedOrder: DaimoPayHydratedOrderWithOrg;\n if (pay.paymentState !== \"payment_unpaid\") {\n const res = await pay.hydrateOrder();\n hydratedOrder = res.order;\n\n log(\n `[PAY SOLANA] Hydrated order: ${JSON.stringify(\n hydratedOrder,\n )}, checking out with Solana ${inputToken}`,\n );\n } else {\n hydratedOrder = pay.order;\n }\n\n const paymentTxHash = await (async () => {\n try {\n const serializedTx = await trpc.getSolanaSwapAndBurnTx.query({\n orderId: pay.order.id.toString(),\n userPublicKey: assertNotNull(\n payerPublicKey,\n \"[PAY SOLANA] wallet.publicKey cannot be null\",\n ).toString(),\n inputTokenMint: inputToken,\n });\n const tx = VersionedTransaction.deserialize(hexToBytes(serializedTx));\n const txHash = await solanaWallet.sendTransaction(tx, connection);\n return txHash;\n } catch (e) {\n console.error(e);\n throw e;\n }\n })();\n\n try {\n await pay.paySolanaSource({\n paymentTxHash: paymentTxHash,\n sourceToken: inputToken,\n });\n return { txHash: paymentTxHash, success: true };\n } catch {\n console.error(\n `[PAY SOLANA] could not verify payment tx on chain: ${paymentTxHash}`,\n );\n return { txHash: paymentTxHash, success: false };\n }\n };\n\n const payWithExternal = async (option: ExternalPaymentOptions) => {\n assert(pay.order != null, \"[PAY EXTERNAL] order cannot be null\");\n assert(platform != null, \"[PAY EXTERNAL] platform cannot be null\");\n\n const { order } = await pay.hydrateOrder();\n const externalPaymentOptionData =\n await trpc.getExternalPaymentOptionData.query({\n id: order.id.toString(),\n externalPaymentOption: option,\n platform,\n redirectReturnUrl,\n });\n assert(\n externalPaymentOptionData != null,\n \"[PAY EXTERNAL] missing externalPaymentOptionData\",\n );\n\n log(\n `[PAY EXTERNAL] hydrated order: ${debugJson(\n order,\n )}, checking out with external payment: ${option}`,\n );\n\n setPaymentWaitingMessage(externalPaymentOptionData.waitingMessage);\n\n return externalPaymentOptionData.url;\n };\n\n const payWithDepositAddress = async (\n option: DepositAddressPaymentOptions,\n ) => {\n const { order } = await pay.hydrateOrder();\n\n log(\n `[PAY DEPOSIT ADDRESS] hydrated order ${order.id} for ${order.usdValue} USD, checking out with deposit address: ${option}`,\n );\n\n const result = await trpc.getDepositAddressForOrder.query({\n orderId: order.id.toString(),\n option,\n });\n\n return \"error\" in result ? null : result;\n };\n\n const { isIOS, isAndroid } = useIsMobile();\n\n const openInWalletBrowser = async (\n wallet: WalletConfigProps,\n amountUsd?: number,\n ) => {\n const paymentState = pay.paymentState;\n assert(\n paymentState === \"preview\" ||\n paymentState === \"unhydrated\" ||\n paymentState === \"payment_unpaid\",\n `[OPEN IN WALLET BROWSER] paymentState is ${paymentState}, must be preview or unhydrated or payment_unpaid`,\n );\n assert(\n wallet.getDaimoPayDeeplink != null,\n `openInWalletBrowser: missing deeplink for ${wallet.name}`,\n );\n\n // hydrate order if not already hydrated\n if (pay.paymentState !== \"payment_unpaid\") {\n await pay.hydrateOrder();\n }\n\n const payId = writeDaimoPayOrderID(pay.order.id);\n const platform = isIOS ? \"ios\" : isAndroid ? \"android\" : \"other\";\n const deeplink = wallet.getDaimoPayDeeplink(payId, platform);\n // If we are in IOS, we don't open the deeplink in a new window, because it\n // will not work, the link will be opened in the page WAITING_WALLET\n if (!isIOS) {\n window.open(deeplink, \"_blank\");\n }\n setSelectedWallet(wallet);\n setSelectedWalletDeepLink(deeplink);\n setRoute(ROUTES.WAITING_WALLET, {\n amountUsd,\n payId,\n wallet_name: wallet.name,\n });\n };\n\n /** User picked a different deposit amount. */\n const setChosenUsd = (usd: number) => {\n assert(\n pay.paymentState === \"preview\",\n \"[SET CHOSEN USD] paymentState is not preview\",\n );\n\n // Too expensive to make an API call to regenerate preview order each time\n // the user changes the amount. Instead, we modify the order in memory.\n pay.setChosenUsd(usd);\n };\n\n const setPayId = useCallback(\n async (payId: string | undefined) => {\n if (payId == null) return;\n const id = readDaimoPayOrderID(payId).toString();\n\n if (pay.order?.id && BigInt(id) == pay.order.id) {\n // Already loaded, ignore.\n return;\n }\n\n pay.reset();\n await pay.setPayId(payId);\n setIsDepositFlow(false);\n },\n [pay],\n );\n\n /** Called whenever params change. */\n const setPayParams = async (payParams: PayParams | undefined) => {\n if (lockPayParams) return;\n assert(payParams != null, \"[SET PAY PARAMS] payParams cannot be null\");\n\n log(\"[SET PAY PARAMS] setting payParams\", payParams);\n pay.reset();\n setCurrPayParams(payParams);\n setIsDepositFlow(payParams.toUnits == null);\n await pay.createPreviewOrder(payParams);\n };\n\n const generatePreviewOrder = async () => {\n pay.reset();\n if (currPayParams == null) return;\n await pay.createPreviewOrder(currPayParams);\n };\n\n const resetOrder = useCallback(\n async (payParams?: Partial<PayParams>) => {\n const mergedPayParams: PayParams | undefined =\n payParams != null && currPayParams != null\n ? { ...currPayParams, ...payParams }\n : currPayParams;\n\n // Clear the old order & state\n pay.reset();\n setSelectedExternalOption(undefined);\n setSelectedTokenOption(undefined);\n setSelectedSolanaTokenOption(undefined);\n setSelectedDepositAddressOption(undefined);\n setSelectedWallet(undefined);\n setSelectedWalletDeepLink(undefined);\n setPaymentWaitingMessage(undefined);\n\n // Set the new payParams\n if (mergedPayParams) {\n setCurrPayParams(mergedPayParams);\n setIsDepositFlow(mergedPayParams.toUnits == null);\n await pay.createPreviewOrder(mergedPayParams);\n }\n\n setRoute(ROUTES.SELECT_METHOD);\n },\n [setRoute, pay, currPayParams],\n );\n\n const [tokenMode, setTokenMode] = useState<\"evm\" | \"solana\" | \"all\">(\"evm\");\n\n // Compute the order of top-level payment options from paymentOptions\n const topOptionsOrder = (() => {\n const defaultOrder = DEFAULT_TOP_OPTIONS_ORDER;\n const paymentOptions =\n buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions;\n const found = getTopLevelOptions(paymentOptions);\n return found.length ? found : defaultOrder;\n })();\n\n return {\n buttonProps,\n setButtonProps,\n topOptionsOrder,\n setPayId,\n setPayParams,\n tokenMode,\n setTokenMode,\n generatePreviewOrder,\n isDepositFlow,\n paymentWaitingMessage,\n selectedExternalOption,\n selectedTokenOption,\n selectedSolanaTokenOption,\n externalPaymentOptions,\n selectedWallet,\n selectedWalletDeepLink,\n walletPaymentOptions,\n solanaPaymentOptions,\n depositAddressOptions,\n selectedDepositAddressOption,\n getOrderUsdLimit,\n resetOrder,\n setSelectedWallet,\n setSelectedWalletDeepLink,\n setPaymentWaitingMessage,\n setSelectedExternalOption,\n setSelectedTokenOption,\n setSelectedSolanaTokenOption,\n setSelectedDepositAddressOption,\n setChosenUsd,\n payWithToken,\n payWithExternal,\n payWithDepositAddress,\n payWithSolanaToken,\n openInWalletBrowser,\n senderEnsName: senderEnsName ?? undefined,\n untronAvailable,\n };\n}\n"],"names":["platform"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { useRef } from 'react';
2
-
3
- function usePrevious(value, initial) {
4
- const ref = useRef({ target: value, previous: initial });
5
- if (ref.current.target !== value) {
6
- ref.current.previous = ref.current.target;
7
- ref.current.target = value;
8
- }
9
- return ref.current.previous;
10
- }
11
-
12
- export { usePrevious as default };
13
- //# sourceMappingURL=usePrevious.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePrevious.js","sources":["../../../src/hooks/usePrevious.tsx"],"sourcesContent":["import { useRef } from \"react\";\n\nexport default function usePrevious(value: any, initial?: any) {\n const ref = useRef({ target: value, previous: initial });\n\n if (ref.current.target !== value) {\n // The value changed.\n ref.current.previous = ref.current.target;\n ref.current.target = value;\n }\n\n return ref.current.previous;\n}\n"],"names":[],"mappings":";;AAEwB,SAAA,WAAA,CAAY,OAAY,OAAe,EAAA;AAC7D,EAAA,MAAM,MAAM,MAAO,CAAA,EAAE,QAAQ,KAAO,EAAA,QAAA,EAAU,SAAS,CAAA,CAAA;AAEvD,EAAI,IAAA,GAAA,CAAI,OAAQ,CAAA,MAAA,KAAW,KAAO,EAAA;AAEhC,IAAI,GAAA,CAAA,OAAA,CAAQ,QAAW,GAAA,GAAA,CAAI,OAAQ,CAAA,MAAA,CAAA;AACnC,IAAA,GAAA,CAAI,QAAQ,MAAS,GAAA,KAAA,CAAA;AAAA,GACvB;AAEA,EAAA,OAAO,IAAI,OAAQ,CAAA,QAAA,CAAA;AACrB;;;;"}
@@ -1,156 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { getChainName } from '@daimo/pay-common';
3
- import TokenChainLogo from '../components/Common/TokenChainLogo/index.js';
4
- import { ROUTES } from '../constants/routes.js';
5
- import { flattenChildren } from '../utils/index.js';
6
- import { formatUsd, roundTokenAmount } from '../utils/format.js';
7
- import { useDaimoPay } from './useDaimoPay.js';
8
- import useLocales from './useLocales.js';
9
- import { usePayContext } from './usePayContext.js';
10
-
11
- function useTokenOptions(mode) {
12
- const { setRoute, paymentState } = usePayContext();
13
- const {
14
- isDepositFlow,
15
- walletPaymentOptions,
16
- solanaPaymentOptions,
17
- setSelectedTokenOption,
18
- setSelectedSolanaTokenOption
19
- } = paymentState;
20
- const locales = useLocales();
21
- const onString = flattenChildren(locales.on).join("");
22
- const pay = useDaimoPay();
23
- const isPassthrough = !!pay.order?.metadata.payer?.passthroughTokens?.length;
24
- const nonPassthroughToken = isPassthrough ? pay.order?.destFinalCallTokenAmount.token : void 0;
25
- let optionsList = [];
26
- let isLoading = false;
27
- if (["evm", "all"].includes(mode)) {
28
- optionsList.push(
29
- ...getEvmTokenOptions(
30
- walletPaymentOptions.options ?? [],
31
- isDepositFlow,
32
- setSelectedTokenOption,
33
- setRoute,
34
- onString,
35
- nonPassthroughToken
36
- )
37
- );
38
- isLoading ||= walletPaymentOptions.isLoading;
39
- }
40
- if (["solana", "all"].includes(mode)) {
41
- optionsList.push(
42
- ...getSolanaTokenOptions(
43
- solanaPaymentOptions.options ?? [],
44
- isDepositFlow,
45
- setSelectedSolanaTokenOption,
46
- setRoute,
47
- onString
48
- )
49
- );
50
- isLoading ||= solanaPaymentOptions.isLoading;
51
- }
52
- optionsList.sort((a, b) => {
53
- const dDisabled = (a.disabled ? 1 : 0) - (b.disabled ? 1 : 0);
54
- if (dDisabled !== 0) return dDisabled;
55
- const dSort = (b.sortValue ?? 0) - (a.sortValue ?? 0);
56
- return dSort;
57
- });
58
- return { optionsList, isLoading };
59
- }
60
- function getEvmTokenOptions(options, isDepositFlow, setSelectedTokenOption, setRoute, onString, nonPassthroughToken) {
61
- return options.map((option) => {
62
- const chainName = getChainName(option.balance.token.chainId);
63
- const titlePrice = isDepositFlow ? formatUsd(option.balance.usd) : roundTokenAmount(option.required.amount, option.required.token);
64
- const title = `${titlePrice} ${option.balance.token.symbol} ${onString} ${chainName}`;
65
- const isBelowMinimum = isDepositFlow && option.balance.usd < option.minimumRequired.usd;
66
- const belowMinimumReason = `Minimum ${formatUsd(option.minimumRequired.usd, "up")}`;
67
- const balanceStr = `${roundTokenAmount(option.balance.amount, option.balance.token)} ${option.balance.token.symbol}`;
68
- let subtitle = option.disabledReason ?? (isBelowMinimum ? belowMinimumReason : null) ?? `${isDepositFlow ? "" : "Balance: "}${balanceStr}`;
69
- const disabled = option.disabledReason != null || isBelowMinimum;
70
- if (nonPassthroughToken != null) {
71
- const defaultSym = nonPassthroughToken.symbol;
72
- const optSym = option.balance.token.symbol;
73
- if (option.passthroughAddress == null && optSym !== defaultSym) {
74
- subtitle = `Convert to ${defaultSym}`;
75
- } else {
76
- subtitle = `Deposit ${optSym}`;
77
- }
78
- }
79
- const sortValue = option.balance.usd + (option.passthroughAddress == null ? 0 : 1e9);
80
- return {
81
- id: getDaimoTokenKey(option.balance.token),
82
- sortValue,
83
- title,
84
- subtitle,
85
- icons: [
86
- /* @__PURE__ */ jsx(
87
- TokenChainLogo,
88
- {
89
- token: option.balance.token
90
- },
91
- getDaimoTokenKey(option.balance.token)
92
- )
93
- ],
94
- onClick: () => {
95
- setSelectedTokenOption(option);
96
- const meta = {
97
- event: "click-token",
98
- tokenSymbol: option.balance.token.symbol,
99
- chainId: option.balance.token.chainId
100
- };
101
- if (isDepositFlow) {
102
- setRoute(ROUTES.SELECT_AMOUNT, meta);
103
- } else {
104
- setRoute(ROUTES.PAY_WITH_TOKEN, meta);
105
- }
106
- },
107
- disabled
108
- };
109
- });
110
- }
111
- function getSolanaTokenOptions(options, isDepositFlow, setSelectedSolanaTokenOption, setRoute, onString) {
112
- return options.map((option) => {
113
- const titlePrice = isDepositFlow ? formatUsd(option.balance.usd) : roundTokenAmount(option.required.amount, option.required.token);
114
- const title = `${titlePrice} ${option.balance.token.symbol} ${onString} Solana`;
115
- const isBelowMinimum = isDepositFlow && option.balance.usd < option.minimumRequired.usd;
116
- const belowMinimumReason = `Minimum ${formatUsd(option.minimumRequired.usd, "up")}`;
117
- const balanceStr = `${roundTokenAmount(option.balance.amount, option.balance.token)} ${option.balance.token.symbol}`;
118
- const subtitle = option.disabledReason ?? (isBelowMinimum ? belowMinimumReason : null) ?? `${isDepositFlow ? "" : "Balance: "}${balanceStr}`;
119
- const disabled = option.disabledReason != null || isBelowMinimum;
120
- return {
121
- id: getDaimoTokenKey(option.balance.token),
122
- sortValue: option.balance.usd,
123
- title,
124
- subtitle,
125
- icons: [
126
- /* @__PURE__ */ jsx(
127
- TokenChainLogo,
128
- {
129
- token: option.balance.token
130
- },
131
- getDaimoTokenKey(option.balance.token)
132
- )
133
- ],
134
- onClick: () => {
135
- setSelectedSolanaTokenOption(option);
136
- const meta = {
137
- event: "click-solana-token",
138
- tokenSymbol: option.balance.token.symbol,
139
- chainId: option.balance.token.chainId
140
- };
141
- if (isDepositFlow) {
142
- setRoute(ROUTES.SOLANA_SELECT_AMOUNT, meta);
143
- } else {
144
- setRoute(ROUTES.SOLANA_PAY_WITH_TOKEN, meta);
145
- }
146
- },
147
- disabled
148
- };
149
- });
150
- }
151
- function getDaimoTokenKey(token) {
152
- return `${token.chainId}-${token.token}`;
153
- }
154
-
155
- export { useTokenOptions };
156
- //# sourceMappingURL=useTokenOptions.js.map