@daimo/pay 1.19.10 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/README.md +5 -70
  2. package/index.js +1 -0
  3. package/package.json +5 -94
  4. package/LICENSE +0 -26
  5. package/build/index.d.ts +0 -619
  6. package/build/package.json.js +0 -118
  7. package/build/package.json.js.map +0 -1
  8. package/build/src/assets/MobileWithLogos.js +0 -329
  9. package/build/src/assets/MobileWithLogos.js.map +0 -1
  10. package/build/src/assets/ScanIconWithLogos.js +0 -243
  11. package/build/src/assets/ScanIconWithLogos.js.map +0 -1
  12. package/build/src/assets/browsers.js +0 -969
  13. package/build/src/assets/browsers.js.map +0 -1
  14. package/build/src/assets/chains.js +0 -683
  15. package/build/src/assets/chains.js.map +0 -1
  16. package/build/src/assets/icons.js +0 -273
  17. package/build/src/assets/icons.js.map +0 -1
  18. package/build/src/assets/logos.js +0 -1694
  19. package/build/src/assets/logos.js.map +0 -1
  20. package/build/src/assets/wave.js +0 -46
  21. package/build/src/assets/wave.js.map +0 -1
  22. package/build/src/components/Common/Alert/index.js +0 -13
  23. package/build/src/components/Common/Alert/index.js.map +0 -1
  24. package/build/src/components/Common/Alert/styles.js +0 -55
  25. package/build/src/components/Common/Alert/styles.js.map +0 -1
  26. package/build/src/components/Common/AmountInput/AmountInputField.js +0 -62
  27. package/build/src/components/Common/AmountInput/AmountInputField.js.map +0 -1
  28. package/build/src/components/Common/AmountInput/index.js +0 -166
  29. package/build/src/components/Common/AmountInput/index.js.map +0 -1
  30. package/build/src/components/Common/Avatar/index.js +0 -78
  31. package/build/src/components/Common/Avatar/index.js.map +0 -1
  32. package/build/src/components/Common/Avatar/styles.js +0 -54
  33. package/build/src/components/Common/Avatar/styles.js.map +0 -1
  34. package/build/src/components/Common/BrowserIcon/index.js +0 -29
  35. package/build/src/components/Common/BrowserIcon/index.js.map +0 -1
  36. package/build/src/components/Common/BrowserIcon/styles.js +0 -20
  37. package/build/src/components/Common/BrowserIcon/styles.js.map +0 -1
  38. package/build/src/components/Common/Button/index.js +0 -144
  39. package/build/src/components/Common/Button/index.js.map +0 -1
  40. package/build/src/components/Common/Button/styles.js +0 -287
  41. package/build/src/components/Common/Button/styles.js.map +0 -1
  42. package/build/src/components/Common/Chain/index.js +0 -141
  43. package/build/src/components/Common/Chain/index.js.map +0 -1
  44. package/build/src/components/Common/Chain/styles.js +0 -90
  45. package/build/src/components/Common/Chain/styles.js.map +0 -1
  46. package/build/src/components/Common/ChainSelectList/index.js +0 -250
  47. package/build/src/components/Common/ChainSelectList/index.js.map +0 -1
  48. package/build/src/components/Common/ChainSelectList/styles.js +0 -226
  49. package/build/src/components/Common/ChainSelectList/styles.js.map +0 -1
  50. package/build/src/components/Common/CircleTimer.js +0 -92
  51. package/build/src/components/Common/CircleTimer.js.map +0 -1
  52. package/build/src/components/Common/ConnectorList/index.js +0 -121
  53. package/build/src/components/Common/ConnectorList/index.js.map +0 -1
  54. package/build/src/components/Common/ConnectorList/styles.js +0 -344
  55. package/build/src/components/Common/ConnectorList/styles.js.map +0 -1
  56. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +0 -78
  57. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +0 -1
  58. package/build/src/components/Common/CustomQRCode/QRCode.js +0 -132
  59. package/build/src/components/Common/CustomQRCode/QRCode.js.map +0 -1
  60. package/build/src/components/Common/CustomQRCode/index.js +0 -89
  61. package/build/src/components/Common/CustomQRCode/index.js.map +0 -1
  62. package/build/src/components/Common/CustomQRCode/styles.js +0 -142
  63. package/build/src/components/Common/CustomQRCode/styles.js.map +0 -1
  64. package/build/src/components/Common/FitText/index.js +0 -34
  65. package/build/src/components/Common/FitText/index.js.map +0 -1
  66. package/build/src/components/Common/Modal/index.js +0 -558
  67. package/build/src/components/Common/Modal/index.js.map +0 -1
  68. package/build/src/components/Common/Modal/styles.js +0 -665
  69. package/build/src/components/Common/Modal/styles.js.map +0 -1
  70. package/build/src/components/Common/OptionsList/index.js +0 -145
  71. package/build/src/components/Common/OptionsList/index.js.map +0 -1
  72. package/build/src/components/Common/OptionsList/styles.js +0 -138
  73. package/build/src/components/Common/OptionsList/styles.js.map +0 -1
  74. package/build/src/components/Common/OrderHeader/index.js +0 -148
  75. package/build/src/components/Common/OrderHeader/index.js.map +0 -1
  76. package/build/src/components/Common/PaymentBreakdown/index.js +0 -70
  77. package/build/src/components/Common/PaymentBreakdown/index.js.map +0 -1
  78. package/build/src/components/Common/Portal/index.js +0 -30
  79. package/build/src/components/Common/Portal/index.js.map +0 -1
  80. package/build/src/components/Common/PoweredByFooter/index.js +0 -39
  81. package/build/src/components/Common/PoweredByFooter/index.js.map +0 -1
  82. package/build/src/components/Common/ScrollArea/index.js +0 -120
  83. package/build/src/components/Common/ScrollArea/index.js.map +0 -1
  84. package/build/src/components/Common/ScrollArea/styles.js +0 -169
  85. package/build/src/components/Common/ScrollArea/styles.js.map +0 -1
  86. package/build/src/components/Common/SelectAnotherMethodButton/index.js +0 -96
  87. package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +0 -1
  88. package/build/src/components/Common/Spinner/index.js +0 -64
  89. package/build/src/components/Common/Spinner/index.js.map +0 -1
  90. package/build/src/components/Common/Spinner/styles.js +0 -22
  91. package/build/src/components/Common/Spinner/styles.js.map +0 -1
  92. package/build/src/components/Common/SwitchButton/index.js +0 -43
  93. package/build/src/components/Common/SwitchButton/index.js.map +0 -1
  94. package/build/src/components/Common/ThemedButton/index.js +0 -46
  95. package/build/src/components/Common/ThemedButton/index.js.map +0 -1
  96. package/build/src/components/Common/ThemedButton/styles.js +0 -152
  97. package/build/src/components/Common/ThemedButton/styles.js.map +0 -1
  98. package/build/src/components/Common/TokenChainLogo/index.js +0 -62
  99. package/build/src/components/Common/TokenChainLogo/index.js.map +0 -1
  100. package/build/src/components/Common/Tooltip/index.js +0 -129
  101. package/build/src/components/Common/Tooltip/index.js.map +0 -1
  102. package/build/src/components/Common/Tooltip/styles.js +0 -81
  103. package/build/src/components/Common/Tooltip/styles.js.map +0 -1
  104. package/build/src/components/Common/WalletChainLogo/index.js +0 -31
  105. package/build/src/components/Common/WalletChainLogo/index.js.map +0 -1
  106. package/build/src/components/DaimoPayButton/index.js +0 -196
  107. package/build/src/components/DaimoPayButton/index.js.map +0 -1
  108. package/build/src/components/DaimoPayButton/styles.js +0 -50
  109. package/build/src/components/DaimoPayButton/styles.js.map +0 -1
  110. package/build/src/components/DaimoPayModal/ConnectUsing.js +0 -70
  111. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +0 -1
  112. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +0 -339
  113. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +0 -1
  114. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +0 -131
  115. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +0 -1
  116. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +0 -89
  117. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +0 -1
  118. package/build/src/components/DaimoPayModal/index.js +0 -605
  119. package/build/src/components/DaimoPayModal/index.js.map +0 -1
  120. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +0 -25
  121. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +0 -1
  122. package/build/src/components/Pages/About/graphics.js +0 -853
  123. package/build/src/components/Pages/About/graphics.js.map +0 -1
  124. package/build/src/components/Pages/About/index.js +0 -222
  125. package/build/src/components/Pages/About/index.js.map +0 -1
  126. package/build/src/components/Pages/About/styles.js +0 -140
  127. package/build/src/components/Pages/About/styles.js.map +0 -1
  128. package/build/src/components/Pages/Confirmation/index.js +0 -126
  129. package/build/src/components/Pages/Confirmation/index.js.map +0 -1
  130. package/build/src/components/Pages/Connectors/index.js +0 -26
  131. package/build/src/components/Pages/Connectors/index.js.map +0 -1
  132. package/build/src/components/Pages/Error/index.js +0 -57
  133. package/build/src/components/Pages/Error/index.js.map +0 -1
  134. package/build/src/components/Pages/MobileConnectors/index.js +0 -108
  135. package/build/src/components/Pages/MobileConnectors/index.js.map +0 -1
  136. package/build/src/components/Pages/MobileConnectors/styles.js +0 -64
  137. package/build/src/components/Pages/MobileConnectors/styles.js.map +0 -1
  138. package/build/src/components/Pages/Onboarding/index.js +0 -34
  139. package/build/src/components/Pages/Onboarding/index.js.map +0 -1
  140. package/build/src/components/Pages/Onboarding/styles.js +0 -229
  141. package/build/src/components/Pages/Onboarding/styles.js.map +0 -1
  142. package/build/src/components/Pages/PayWithToken/index.js +0 -157
  143. package/build/src/components/Pages/PayWithToken/index.js.map +0 -1
  144. package/build/src/components/Pages/SelectAmount/index.js +0 -24
  145. package/build/src/components/Pages/SelectAmount/index.js.map +0 -1
  146. package/build/src/components/Pages/SelectDepositAddressAmount/index.js +0 -79
  147. package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +0 -1
  148. package/build/src/components/Pages/SelectDepositAddressChain/index.js +0 -80
  149. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +0 -1
  150. package/build/src/components/Pages/SelectExchange/index.js +0 -62
  151. package/build/src/components/Pages/SelectExchange/index.js.map +0 -1
  152. package/build/src/components/Pages/SelectExternalAmount/index.js +0 -80
  153. package/build/src/components/Pages/SelectExternalAmount/index.js.map +0 -1
  154. package/build/src/components/Pages/SelectMethod/index.js +0 -315
  155. package/build/src/components/Pages/SelectMethod/index.js.map +0 -1
  156. package/build/src/components/Pages/SelectToken/index.js +0 -99
  157. package/build/src/components/Pages/SelectToken/index.js.map +0 -1
  158. package/build/src/components/Pages/SelectWalletAmount/index.js +0 -71
  159. package/build/src/components/Pages/SelectWalletAmount/index.js.map +0 -1
  160. package/build/src/components/Pages/SelectWalletChain/index.js +0 -55
  161. package/build/src/components/Pages/SelectWalletChain/index.js.map +0 -1
  162. package/build/src/components/Pages/SelectZKP/index.js +0 -41
  163. package/build/src/components/Pages/SelectZKP/index.js.map +0 -1
  164. package/build/src/components/Pages/Solana/ConnectorSolana/index.js +0 -94
  165. package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +0 -1
  166. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +0 -92
  167. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +0 -1
  168. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +0 -24
  169. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +0 -1
  170. package/build/src/components/Pages/SwitchNetworks/index.js +0 -45
  171. package/build/src/components/Pages/SwitchNetworks/index.js.map +0 -1
  172. package/build/src/components/Pages/WaitingDepositAddress/index.js +0 -586
  173. package/build/src/components/Pages/WaitingDepositAddress/index.js.map +0 -1
  174. package/build/src/components/Pages/WaitingExternal/index.js +0 -174
  175. package/build/src/components/Pages/WaitingExternal/index.js.map +0 -1
  176. package/build/src/components/Pages/WaitingWallet/index.js +0 -49
  177. package/build/src/components/Pages/WaitingWallet/index.js.map +0 -1
  178. package/build/src/components/Pages/Warning/index.js +0 -56
  179. package/build/src/components/Pages/Warning/index.js.map +0 -1
  180. package/build/src/components/Spinners/CircleSpinner/index.js +0 -104
  181. package/build/src/components/Spinners/CircleSpinner/index.js.map +0 -1
  182. package/build/src/components/Spinners/CircleSpinner/styles.js +0 -117
  183. package/build/src/components/Spinners/CircleSpinner/styles.js.map +0 -1
  184. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +0 -29
  185. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +0 -1
  186. package/build/src/components/Spinners/SquircleSpinner/index.js +0 -68
  187. package/build/src/components/Spinners/SquircleSpinner/index.js.map +0 -1
  188. package/build/src/components/Spinners/SquircleSpinner/styles.js +0 -66
  189. package/build/src/components/Spinners/SquircleSpinner/styles.js.map +0 -1
  190. package/build/src/components/Spinners/TokenLogoSpinner/index.js +0 -24
  191. package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +0 -1
  192. package/build/src/components/Spinners/TokenLogoSpinner/styles.js +0 -40
  193. package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +0 -1
  194. package/build/src/components/Spinners/WalletPaymentSpinner/index.js +0 -37
  195. package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +0 -1
  196. package/build/src/components/Spinners/styles.js +0 -32
  197. package/build/src/components/Spinners/styles.js.map +0 -1
  198. package/build/src/constants/defaultTheme.js +0 -6
  199. package/build/src/constants/defaultTheme.js.map +0 -1
  200. package/build/src/constants/limits.js +0 -4
  201. package/build/src/constants/limits.js.map +0 -1
  202. package/build/src/constants/paymentOptions.js +0 -61
  203. package/build/src/constants/paymentOptions.js.map +0 -1
  204. package/build/src/constants/routes.js +0 -31
  205. package/build/src/constants/routes.js.map +0 -1
  206. package/build/src/constants/wallets.js +0 -7
  207. package/build/src/constants/wallets.js.map +0 -1
  208. package/build/src/defaultConfig.js +0 -66
  209. package/build/src/defaultConfig.js.map +0 -1
  210. package/build/src/defaultConnectors.js +0 -37
  211. package/build/src/defaultConnectors.js.map +0 -1
  212. package/build/src/hooks/useChainIsSupported.js +0 -10
  213. package/build/src/hooks/useChainIsSupported.js.map +0 -1
  214. package/build/src/hooks/useChains.js +0 -10
  215. package/build/src/hooks/useChains.js.map +0 -1
  216. package/build/src/hooks/useConnect.js +0 -61
  217. package/build/src/hooks/useConnect.js.map +0 -1
  218. package/build/src/hooks/useConnectCallback.js +0 -21
  219. package/build/src/hooks/useConnectCallback.js.map +0 -1
  220. package/build/src/hooks/useConnectors.js +0 -20
  221. package/build/src/hooks/useConnectors.js.map +0 -1
  222. package/build/src/hooks/useDaimoPay.js +0 -131
  223. package/build/src/hooks/useDaimoPay.js.map +0 -1
  224. package/build/src/hooks/useDaimoPayStatus.js +0 -12
  225. package/build/src/hooks/useDaimoPayStatus.js.map +0 -1
  226. package/build/src/hooks/useDaimoPayUI.js +0 -15
  227. package/build/src/hooks/useDaimoPayUI.js.map +0 -1
  228. package/build/src/hooks/useEnsFallbackConfig.js +0 -16
  229. package/build/src/hooks/useEnsFallbackConfig.js.map +0 -1
  230. package/build/src/hooks/useFitText.js +0 -133
  231. package/build/src/hooks/useFitText.js.map +0 -1
  232. package/build/src/hooks/useFocusTrap.js +0 -53
  233. package/build/src/hooks/useFocusTrap.js.map +0 -1
  234. package/build/src/hooks/useIsMobile.js +0 -11
  235. package/build/src/hooks/useIsMobile.js.map +0 -1
  236. package/build/src/hooks/useIsMounted.js +0 -10
  237. package/build/src/hooks/useIsMounted.js.map +0 -1
  238. package/build/src/hooks/useLastConnector.js +0 -24
  239. package/build/src/hooks/useLastConnector.js.map +0 -1
  240. package/build/src/hooks/useLocales.js +0 -60
  241. package/build/src/hooks/useLocales.js.map +0 -1
  242. package/build/src/hooks/useLockBodyScroll.js +0 -47
  243. package/build/src/hooks/useLockBodyScroll.js.map +0 -1
  244. package/build/src/hooks/useOrderUsdLimits.js +0 -24
  245. package/build/src/hooks/useOrderUsdLimits.js.map +0 -1
  246. package/build/src/hooks/usePayContext.js +0 -11
  247. package/build/src/hooks/usePayContext.js.map +0 -1
  248. package/build/src/hooks/usePaymentOptions.js +0 -185
  249. package/build/src/hooks/usePaymentOptions.js.map +0 -1
  250. package/build/src/hooks/usePaymentState.js +0 -399
  251. package/build/src/hooks/usePaymentState.js.map +0 -1
  252. package/build/src/hooks/usePrevious.js +0 -13
  253. package/build/src/hooks/usePrevious.js.map +0 -1
  254. package/build/src/hooks/useTokenOptions.js +0 -156
  255. package/build/src/hooks/useTokenOptions.js.map +0 -1
  256. package/build/src/hooks/useUntronAvailability.js +0 -32
  257. package/build/src/hooks/useUntronAvailability.js.map +0 -1
  258. package/build/src/hooks/useWindowSize.js +0 -23
  259. package/build/src/hooks/useWindowSize.js.map +0 -1
  260. package/build/src/index.js +0 -14
  261. package/build/src/index.js.map +0 -1
  262. package/build/src/localizations/index.js +0 -48
  263. package/build/src/localizations/index.js.map +0 -1
  264. package/build/src/localizations/locales/ar-AE.js +0 -95
  265. package/build/src/localizations/locales/ar-AE.js.map +0 -1
  266. package/build/src/localizations/locales/ca-AD.js +0 -93
  267. package/build/src/localizations/locales/ca-AD.js.map +0 -1
  268. package/build/src/localizations/locales/ee-EE.js +0 -101
  269. package/build/src/localizations/locales/ee-EE.js.map +0 -1
  270. package/build/src/localizations/locales/en-US.js +0 -145
  271. package/build/src/localizations/locales/en-US.js.map +0 -1
  272. package/build/src/localizations/locales/es-ES.js +0 -138
  273. package/build/src/localizations/locales/es-ES.js.map +0 -1
  274. package/build/src/localizations/locales/fa-IR.js +0 -93
  275. package/build/src/localizations/locales/fa-IR.js.map +0 -1
  276. package/build/src/localizations/locales/fr-FR.js +0 -93
  277. package/build/src/localizations/locales/fr-FR.js.map +0 -1
  278. package/build/src/localizations/locales/ja-JP.js +0 -93
  279. package/build/src/localizations/locales/ja-JP.js.map +0 -1
  280. package/build/src/localizations/locales/pt-BR.js +0 -145
  281. package/build/src/localizations/locales/pt-BR.js.map +0 -1
  282. package/build/src/localizations/locales/ru-RU.js +0 -97
  283. package/build/src/localizations/locales/ru-RU.js.map +0 -1
  284. package/build/src/localizations/locales/tr-TR.js +0 -101
  285. package/build/src/localizations/locales/tr-TR.js.map +0 -1
  286. package/build/src/localizations/locales/vi-VN.js +0 -101
  287. package/build/src/localizations/locales/vi-VN.js.map +0 -1
  288. package/build/src/localizations/locales/zh-CN.js +0 -93
  289. package/build/src/localizations/locales/zh-CN.js.map +0 -1
  290. package/build/src/payment/paymentEffects.js +0 -270
  291. package/build/src/payment/paymentEffects.js.map +0 -1
  292. package/build/src/payment/paymentFsm.js +0 -234
  293. package/build/src/payment/paymentFsm.js.map +0 -1
  294. package/build/src/payment/paymentStore.js +0 -18
  295. package/build/src/payment/paymentStore.js.map +0 -1
  296. package/build/src/payment/paymentUtils.js +0 -10
  297. package/build/src/payment/paymentUtils.js.map +0 -1
  298. package/build/src/provider/DaimoPayProvider.js +0 -300
  299. package/build/src/provider/DaimoPayProvider.js.map +0 -1
  300. package/build/src/provider/PayContext.js +0 -6
  301. package/build/src/provider/PayContext.js.map +0 -1
  302. package/build/src/provider/PaymentProvider.js +0 -35
  303. package/build/src/provider/PaymentProvider.js.map +0 -1
  304. package/build/src/provider/SolanaContextProvider.js +0 -14
  305. package/build/src/provider/SolanaContextProvider.js.map +0 -1
  306. package/build/src/provider/Web3ContextProvider.js +0 -36
  307. package/build/src/provider/Web3ContextProvider.js.map +0 -1
  308. package/build/src/stateStore.js +0 -36
  309. package/build/src/stateStore.js.map +0 -1
  310. package/build/src/styles/defaultTheme.js +0 -80
  311. package/build/src/styles/defaultTheme.js.map +0 -1
  312. package/build/src/styles/index.js +0 -313
  313. package/build/src/styles/index.js.map +0 -1
  314. package/build/src/styles/styled/index.js +0 -6
  315. package/build/src/styles/styled/index.js.map +0 -1
  316. package/build/src/styles/themes/base.js +0 -141
  317. package/build/src/styles/themes/base.js.map +0 -1
  318. package/build/src/styles/themes/index.js +0 -13
  319. package/build/src/styles/themes/index.js.map +0 -1
  320. package/build/src/styles/themes/midnight.js +0 -76
  321. package/build/src/styles/themes/midnight.js.map +0 -1
  322. package/build/src/styles/themes/minimal.js +0 -96
  323. package/build/src/styles/themes/minimal.js.map +0 -1
  324. package/build/src/styles/themes/nouns.js +0 -81
  325. package/build/src/styles/themes/nouns.js.map +0 -1
  326. package/build/src/styles/themes/retro.js +0 -106
  327. package/build/src/styles/themes/retro.js.map +0 -1
  328. package/build/src/styles/themes/rounded.js +0 -106
  329. package/build/src/styles/themes/rounded.js.map +0 -1
  330. package/build/src/styles/themes/soft.js +0 -71
  331. package/build/src/styles/themes/soft.js.map +0 -1
  332. package/build/src/styles/themes/web95.js +0 -132
  333. package/build/src/styles/themes/web95.js.map +0 -1
  334. package/build/src/utils/exports.js +0 -6
  335. package/build/src/utils/exports.js.map +0 -1
  336. package/build/src/utils/format.js +0 -48
  337. package/build/src/utils/format.js.map +0 -1
  338. package/build/src/utils/index.js +0 -42
  339. package/build/src/utils/index.js.map +0 -1
  340. package/build/src/utils/p3.js +0 -15
  341. package/build/src/utils/p3.js.map +0 -1
  342. package/build/src/utils/platform.js +0 -11
  343. package/build/src/utils/platform.js.map +0 -1
  344. package/build/src/utils/polling.js +0 -44
  345. package/build/src/utils/polling.js.map +0 -1
  346. package/build/src/utils/supportUrl.js +0 -16
  347. package/build/src/utils/supportUrl.js.map +0 -1
  348. package/build/src/utils/trpc.js +0 -19
  349. package/build/src/utils/trpc.js.map +0 -1
  350. package/build/src/utils/validateInput.js +0 -16
  351. package/build/src/utils/validateInput.js.map +0 -1
  352. package/build/src/wallets/index.js +0 -21
  353. package/build/src/wallets/index.js.map +0 -1
  354. package/build/src/wallets/useWallets.js +0 -278
  355. package/build/src/wallets/useWallets.js.map +0 -1
  356. package/build/src/wallets/walletConfigs.js +0 -190
  357. package/build/src/wallets/walletConfigs.js.map +0 -1
  358. package/build/src/world-mini-app/WorldPayButton.js +0 -165
  359. package/build/src/world-mini-app/WorldPayButton.js.map +0 -1
  360. package/build/src/world-mini-app/promptWorldPayment.js +0 -59
  361. package/build/src/world-mini-app/promptWorldPayment.js.map +0 -1
  362. package/build/src/world-mini-app/useWithdrawToWorld.js +0 -76
  363. package/build/src/world-mini-app/useWithdrawToWorld.js.map +0 -1
  364. package/build/src/world-mini-app/useWorldSignIn.js +0 -74
  365. package/build/src/world-mini-app/useWorldSignIn.js.map +0 -1
  366. package/build/src/world.js +0 -4
  367. package/build/src/world.js.map +0 -1
  368. package/build/types-26343050.d.ts +0 -65
  369. package/build/world.d.ts +0 -108
@@ -1,234 +0,0 @@
1
- import { assert, DaimoPayOrderMode, DaimoPayIntentStatus, isHydrated } from '@daimo/pay-common';
2
- import { parseUnits } from 'viem';
3
- import { getDisplayExpiresAt } from './paymentUtils.js';
4
-
5
- const initialPaymentState = { type: "idle" };
6
- function paymentReducer(state, event) {
7
- switch (state.type) {
8
- case "idle":
9
- return reduceIdle(state, event);
10
- case "preview":
11
- return reducePreview(state, event);
12
- case "unhydrated":
13
- return reduceUnhydrated(state, event);
14
- case "payment_unpaid":
15
- return reducePaymentUnpaid(state, event);
16
- case "payment_started":
17
- return reducePaymentStarted(state, event);
18
- case "payment_completed":
19
- case "payment_bounced":
20
- case "error":
21
- case "warning":
22
- return reduceTerminal(state, event);
23
- /* satisfies exhaustiveness */
24
- default:
25
- const _exhaustive = state;
26
- return _exhaustive;
27
- }
28
- }
29
- function reduceIdle(state, event) {
30
- switch (event.type) {
31
- case "preview_generated": {
32
- const stateFromOrder = getStateFromOrder(event.order);
33
- if (stateFromOrder.type !== "unhydrated") {
34
- return stateFromOrder;
35
- }
36
- return {
37
- type: "preview",
38
- order: event.order,
39
- payParamsData: event.payParamsData
40
- };
41
- }
42
- case "order_loaded": {
43
- return getStateFromOrder(event.order);
44
- }
45
- case "error":
46
- return {
47
- type: "error",
48
- order: event.order,
49
- message: event.message
50
- };
51
- case "warning":
52
- return {
53
- type: "warning",
54
- order: event.order,
55
- message: event.message
56
- };
57
- case "reset":
58
- return initialPaymentState;
59
- default:
60
- return state;
61
- }
62
- }
63
- function reducePreview(state, event) {
64
- assert(
65
- state.order.mode !== DaimoPayOrderMode.HYDRATED,
66
- "reducePreview called on hydrated order"
67
- );
68
- switch (event.type) {
69
- case "order_hydrated":
70
- return getStateFromHydratedOrder(event.order);
71
- case "set_chosen_usd": {
72
- const token = state.order.destFinalCallTokenAmount.token;
73
- const tokenUnits = (event.usd / token.priceFromUsd).toString();
74
- const tokenAmount = parseUnits(tokenUnits, token.decimals);
75
- return {
76
- type: "preview",
77
- order: {
78
- ...state.order,
79
- destFinalCallTokenAmount: {
80
- token,
81
- amount: tokenAmount.toString(),
82
- usd: event.usd
83
- }
84
- },
85
- payParamsData: state.payParamsData
86
- };
87
- }
88
- case "error":
89
- return {
90
- type: "error",
91
- order: event.order,
92
- message: event.message
93
- };
94
- case "warning":
95
- return {
96
- type: "warning",
97
- order: event.order,
98
- message: event.message
99
- };
100
- case "reset":
101
- return initialPaymentState;
102
- default:
103
- return state;
104
- }
105
- }
106
- function reduceUnhydrated(state, event) {
107
- switch (event.type) {
108
- case "order_hydrated":
109
- return { type: "payment_unpaid", order: event.order };
110
- case "error":
111
- return {
112
- type: "error",
113
- order: event.order,
114
- message: event.message
115
- };
116
- case "warning":
117
- return {
118
- type: "warning",
119
- order: event.order,
120
- message: event.message
121
- };
122
- case "reset":
123
- return initialPaymentState;
124
- default:
125
- return state;
126
- }
127
- }
128
- function reducePaymentUnpaid(state, event) {
129
- switch (event.type) {
130
- case "payment_verified": {
131
- if (event.order.intentStatus === DaimoPayIntentStatus.UNPAID) {
132
- return {
133
- type: "error",
134
- order: event.order,
135
- message: "Payment failed"
136
- };
137
- }
138
- return getStateFromHydratedOrder(event.order);
139
- }
140
- case "order_refreshed":
141
- return getStateFromHydratedOrder(event.order);
142
- case "error":
143
- return {
144
- type: "error",
145
- order: event.order,
146
- message: event.message
147
- };
148
- case "warning":
149
- return {
150
- type: "warning",
151
- order: event.order,
152
- message: event.message
153
- };
154
- case "reset":
155
- return initialPaymentState;
156
- default:
157
- return state;
158
- }
159
- }
160
- function reducePaymentStarted(state, event) {
161
- switch (event.type) {
162
- case "order_refreshed":
163
- return getStateFromHydratedOrder(event.order);
164
- case "error":
165
- return {
166
- type: "error",
167
- order: event.order,
168
- message: event.message
169
- };
170
- case "warning":
171
- return {
172
- type: "warning",
173
- order: event.order,
174
- message: event.message
175
- };
176
- case "reset":
177
- return initialPaymentState;
178
- default:
179
- return state;
180
- }
181
- }
182
- function getStateFromOrder(order) {
183
- if (order.mode === DaimoPayOrderMode.HYDRATED) {
184
- return getStateFromHydratedOrder(order);
185
- } else {
186
- return { type: "unhydrated", order };
187
- }
188
- }
189
- function getStateFromHydratedOrder(order) {
190
- assert(isHydrated(order), `[PAYMENT_REDUCER] unhydrated`);
191
- switch (order.intentStatus) {
192
- case DaimoPayIntentStatus.COMPLETED:
193
- return { type: "payment_completed", order };
194
- case DaimoPayIntentStatus.BOUNCED:
195
- return { type: "payment_bounced", order };
196
- }
197
- const displayExpiresAt = getDisplayExpiresAt(order);
198
- if (Date.now() / 1e3 > displayExpiresAt) {
199
- return {
200
- type: "error",
201
- order,
202
- message: "Payment expired. Please restart."
203
- };
204
- }
205
- switch (order.intentStatus) {
206
- case DaimoPayIntentStatus.UNPAID:
207
- return { type: "payment_unpaid", order };
208
- case DaimoPayIntentStatus.STARTED:
209
- return { type: "payment_started", order };
210
- default:
211
- return { type: "error", order, message: `Status: ${order.intentStatus}` };
212
- }
213
- }
214
- function reduceTerminal(state, event) {
215
- switch (event.type) {
216
- case "dismiss_warning": {
217
- if (state.type === "warning") {
218
- if (event.order) {
219
- return getStateFromOrder(event.order);
220
- }
221
- return initialPaymentState;
222
- }
223
- return state;
224
- }
225
- case "reset":
226
- return initialPaymentState;
227
- // In terminal states we ignore everything except reset
228
- default:
229
- return state;
230
- }
231
- }
232
-
233
- export { initialPaymentState, paymentReducer };
234
- //# sourceMappingURL=paymentFsm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentFsm.js","sources":["../../../src/payment/paymentFsm.ts"],"sourcesContent":["import {\n assert,\n DaimoPayHydratedOrderWithOrg,\n DaimoPayIntentStatus,\n DaimoPayOrder,\n DaimoPayOrderID,\n DaimoPayOrderMode,\n DaimoPayOrderWithOrg,\n DaimoPayUserMetadata,\n ExternalPaymentOptionsString,\n isHydrated,\n SolanaPublicKey,\n} from \"@daimo/pay-common\";\nimport { Address, Hex, parseUnits } from \"viem\";\nimport { getDisplayExpiresAt } from \"./paymentUtils\";\n\n/** Payment parameters. The payment is created only after user taps pay. */\nexport interface PayParams {\n /** App ID, for authentication. */\n appId: string;\n /** Destination chain ID. */\n toChain: number;\n /** The destination token to send. */\n toToken: Address;\n /**\n * The amount of the token to send.\n * If not provided, the user will be prompted to enter an amount.\n */\n toUnits?: string;\n /** The final address to transfer to or contract to call. */\n toAddress: Address;\n /** Calldata for final call, or empty data for transfer. */\n toCallData?: Hex;\n /** The intent verb, such as Pay, Deposit, or Purchase. Default: Pay */\n intent?: string;\n /** Payment options. By default, all are enabled. Supports nested arrays for mobile wallet filtering. */\n paymentOptions?: (\n | ExternalPaymentOptionsString\n | ExternalPaymentOptionsString[]\n )[];\n /** Preferred chain IDs. */\n preferredChains?: number[];\n /** Preferred tokens. These appear first in the token list. */\n preferredTokens?: { chain: number; address: Address }[];\n /** Only allow payments on these EVM chains. */\n evmChains?: number[];\n /** External ID. E.g. a correlation ID. */\n externalId?: string;\n /** Developer metadata. E.g. correlation ID. */\n metadata?: DaimoPayUserMetadata;\n /** The address to refund to if the payment bounces or a refund is requested. */\n refundAddress?: Address;\n /** Pass-through tokens. If the user pays via these tokens, they're sent directly without swapping. */\n passthroughTokens?: { chain: number; address: Address }[];\n}\n\nexport type PaymentState =\n // payParams and payId are set\n | { type: \"idle\" }\n // payParams are set, payId is not set. A preview order has been created\n // but not saved to the db\n | {\n type: \"preview\";\n order: DaimoPayOrderWithOrg;\n payParamsData: PayParamsData;\n }\n // payId is set, payParams are not set. An unhydrated order has been created\n // and saved to the db\n | { type: \"unhydrated\"; order: DaimoPayOrderWithOrg }\n // Order was hydrated and is waiting to be paid\n | { type: \"payment_unpaid\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid, destination was not processed\n | { type: \"payment_started\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid and processed successfully\n | { type: \"payment_completed\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid but the destination failed to process\n | { type: \"payment_bounced\"; order: DaimoPayHydratedOrderWithOrg }\n // An error occurred\n | { type: \"error\"; order: DaimoPayOrder | undefined; message: string }\n // A non-fatal UI pause to confirm a potentially destructive action\n // why: temporarily blocks navigation to ask user confirmation (e.g. end tron session)\n | { type: \"warning\"; order: DaimoPayOrder | undefined; message: string };\n\nexport type PaymentStateType = PaymentState[\"type\"];\n\nexport const initialPaymentState: PaymentState = { type: \"idle\" };\n\nexport type PaymentEvent =\n /* command events (kick off an effect) */\n | { type: \"set_pay_params\"; payParams: PayParams }\n | { type: \"set_pay_id\"; payId: DaimoPayOrderID }\n // HACK: edit the order in-memory to change the amount in deposit flow\n | { type: \"set_chosen_usd\"; usd: number }\n | { type: \"hydrate_order\"; refundAddress?: Address }\n | {\n type: \"pay_source\";\n }\n | {\n type: \"pay_ethereum_source\";\n paymentTxHash: Hex;\n sourceChainId: number;\n payerAddress: Address;\n sourceToken: Address;\n sourceAmount: bigint;\n }\n | {\n type: \"pay_solana_source\";\n paymentTxHash: string;\n sourceToken: SolanaPublicKey;\n }\n /* result events (effect finished) */\n | {\n type: \"preview_generated\";\n order: DaimoPayOrderWithOrg;\n payParamsData: PayParamsData;\n }\n | { type: \"order_loaded\"; order: DaimoPayOrderWithOrg }\n | { type: \"order_hydrated\"; order: DaimoPayHydratedOrderWithOrg }\n | {\n type: \"payment_verified\";\n order: DaimoPayHydratedOrderWithOrg;\n }\n | {\n type: \"order_refreshed\";\n order: DaimoPayOrderWithOrg | DaimoPayHydratedOrderWithOrg;\n }\n | { type: \"dest_processed\"; order: DaimoPayHydratedOrderWithOrg }\n /* failure / util */\n | {\n type: \"error\";\n order: DaimoPayOrder | undefined;\n message: string;\n }\n // enter the temporary confirmation screen with a user-facing message\n | {\n type: \"warning\";\n order: DaimoPayOrder | undefined;\n message: string;\n }\n // exit the warning screen; if an order snapshot is provided, resume its derived state,\n // otherwise fall back to initial state\n | {\n type: \"dismiss_warning\";\n order: DaimoPayOrderWithOrg | DaimoPayHydratedOrderWithOrg | undefined;\n }\n | { type: \"reset\" };\n\ntype PayParamsData = {\n appId: string;\n};\n\n/**\n * Master payment reducer.\n */\nexport function paymentReducer(\n state: PaymentState,\n event: PaymentEvent,\n): PaymentState {\n switch (state.type) {\n case \"idle\":\n return reduceIdle(state, event);\n case \"preview\":\n return reducePreview(state, event);\n case \"unhydrated\":\n return reduceUnhydrated(state, event);\n case \"payment_unpaid\":\n return reducePaymentUnpaid(state, event);\n case \"payment_started\":\n return reducePaymentStarted(state, event);\n case \"payment_completed\":\n case \"payment_bounced\":\n case \"error\":\n case \"warning\":\n return reduceTerminal(state, event);\n /* satisfies exhaustiveness */\n default:\n // Exhaustive check: Using `never` will cause lint failure if not all\n // state types are handled\n const _exhaustive: never = state;\n return _exhaustive;\n }\n}\n\n/* --------------------------------------------------\n reducer helpers – one function per state\n---------------------------------------------------*/\n\nfunction reduceIdle(\n state: Extract<PaymentState, { type: \"idle\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"preview_generated\": {\n const stateFromOrder = getStateFromOrder(event.order);\n\n // If order is already hydrated or in terminal state, use that state\n if (stateFromOrder.type !== \"unhydrated\") {\n return stateFromOrder;\n }\n\n // Order is not hydrated/processed, handle as preview\n return {\n type: \"preview\",\n order: event.order,\n payParamsData: event.payParamsData,\n };\n }\n case \"order_loaded\": {\n return getStateFromOrder(event.order);\n }\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePreview(\n state: Extract<PaymentState, { type: \"preview\" }>,\n event: PaymentEvent,\n): PaymentState {\n assert(\n state.order.mode !== DaimoPayOrderMode.HYDRATED,\n \"reducePreview called on hydrated order\",\n );\n\n switch (event.type) {\n case \"order_hydrated\":\n return getStateFromHydratedOrder(event.order);\n case \"set_chosen_usd\": {\n const token = state.order.destFinalCallTokenAmount.token;\n const tokenUnits = (event.usd / token.priceFromUsd).toString();\n const tokenAmount = parseUnits(tokenUnits, token.decimals);\n\n // Stay in preview state, but update the order's destFinalCallTokenAmount\n return {\n type: \"preview\",\n order: {\n ...state.order,\n destFinalCallTokenAmount: {\n token,\n amount: tokenAmount.toString() as `${bigint}`,\n usd: event.usd,\n },\n },\n payParamsData: state.payParamsData,\n };\n }\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reduceUnhydrated(\n state: Extract<PaymentState, { type: \"unhydrated\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"order_hydrated\":\n return { type: \"payment_unpaid\", order: event.order };\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePaymentUnpaid(\n state: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"payment_verified\": {\n if (event.order.intentStatus === DaimoPayIntentStatus.UNPAID) {\n // The payment was not detected on chain, or some other error occurred.\n return {\n type: \"error\",\n order: event.order,\n message: \"Payment failed\",\n };\n }\n return getStateFromHydratedOrder(event.order);\n }\n case \"order_refreshed\":\n return getStateFromHydratedOrder(event.order);\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePaymentStarted(\n state: Extract<PaymentState, { type: \"payment_started\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"order_refreshed\":\n return getStateFromHydratedOrder(event.order);\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\n/**\n * Determines the appropriate payment state based on an order's status and mode.\n * Returns the appropriate payment state based on the order's mode and intent status.\n */\nfunction getStateFromOrder(order: DaimoPayOrderWithOrg): PaymentState {\n if (order.mode === DaimoPayOrderMode.HYDRATED) {\n return getStateFromHydratedOrder(order);\n } else {\n return { type: \"unhydrated\", order };\n }\n}\n\n/**\n * Determines the appropriate payment state for a hydrated order. Progresses\n * the payment through different processing states.\n */\nfunction getStateFromHydratedOrder(order: DaimoPayOrderWithOrg): PaymentState {\n assert(isHydrated(order), `[PAYMENT_REDUCER] unhydrated`);\n\n // Handle finished orders first\n switch (order.intentStatus) {\n case DaimoPayIntentStatus.COMPLETED:\n return { type: \"payment_completed\", order };\n case DaimoPayIntentStatus.BOUNCED:\n return { type: \"payment_bounced\", order };\n }\n\n // If unfinished, check if expired\n const displayExpiresAt = getDisplayExpiresAt(order);\n if (Date.now() / 1e3 > displayExpiresAt) {\n return {\n type: \"error\",\n order,\n message: \"Payment expired. Please restart.\",\n };\n }\n\n // Unfinished but not expired\n switch (order.intentStatus) {\n case DaimoPayIntentStatus.UNPAID:\n return { type: \"payment_unpaid\", order };\n case DaimoPayIntentStatus.STARTED:\n return { type: \"payment_started\", order };\n default:\n return { type: \"error\", order, message: `Status: ${order.intentStatus}` };\n }\n}\n\nfunction reduceTerminal(\n state: Extract<\n PaymentState,\n { type: \"payment_completed\" | \"payment_bounced\" | \"error\" | \"warning\" }\n >,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"dismiss_warning\": {\n // leave the confirmation screen and restore previous state when possible\n if (state.type === \"warning\") {\n if (event.order) {\n return getStateFromOrder(event.order);\n }\n return initialPaymentState;\n }\n return state;\n }\n case \"reset\":\n return initialPaymentState;\n // In terminal states we ignore everything except reset\n default:\n return state;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { waitForState, createStore } from '../stateStore.js';
2
- import { paymentReducer, initialPaymentState } from './paymentFsm.js';
3
-
4
- function createPaymentStore() {
5
- const store = createStore(paymentReducer, initialPaymentState);
6
- return store;
7
- }
8
- function waitForPaymentState(store, ...validTypes) {
9
- return waitForState(
10
- store,
11
- (s) => validTypes.includes(s.type),
12
- (s) => s.type === "error",
13
- (s) => s.message
14
- );
15
- }
16
-
17
- export { createPaymentStore, waitForPaymentState };
18
- //# sourceMappingURL=paymentStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentStore.js","sources":["../../../src/payment/paymentStore.ts"],"sourcesContent":["import { createStore, waitForState } from \"../stateStore\";\nimport {\n initialPaymentState,\n PaymentEvent,\n paymentReducer,\n PaymentState,\n} from \"./paymentFsm\";\n\nexport type PaymentStore = ReturnType<\n typeof createStore<PaymentState, PaymentEvent>\n>;\n\nexport function createPaymentStore(): PaymentStore {\n const store = createStore(paymentReducer, initialPaymentState);\n return store;\n}\n\n/**\n * Wait for the `PaymentStore` to enter a state matching any of `validTypes`,\n * or reject as soon as it hits the `\"error\"` state.\n *\n * @returns Promise<T> resolving with the first matching state or rejecting with\n * the error message\n */\nexport function waitForPaymentState<\n const T extends readonly PaymentState[\"type\"][],\n>(\n store: PaymentStore,\n ...validTypes: T\n): Promise<Extract<PaymentState, { type: T[number] }>> {\n return waitForState<\n PaymentState,\n PaymentEvent,\n Extract<PaymentState, { type: T[number] }>\n >(\n store,\n (s): s is Extract<PaymentState, { type: T[number] }> =>\n (validTypes as readonly PaymentState[\"type\"][]).includes(s.type),\n (s) => s.type === \"error\",\n (s) => (s as Extract<PaymentState, { type: \"error\" }>).message,\n );\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,kBAAmC,GAAA;AACjD,EAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,cAAA,EAAgB,mBAAmB,CAAA,CAAA;AAC7D,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AASgB,SAAA,mBAAA,CAGd,UACG,UACkD,EAAA;AACrD,EAAO,OAAA,YAAA;AAAA,IAKL,KAAA;AAAA,IACA,CAAC,CAAA,KACE,UAA+C,CAAA,QAAA,CAAS,EAAE,IAAI,CAAA;AAAA,IACjE,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,OAAA;AAAA,IAClB,CAAC,MAAO,CAA+C,CAAA,OAAA;AAAA,GACzD,CAAA;AACF;;;;"}
@@ -1,10 +0,0 @@
1
- function getDisplayExpiresAt(order) {
2
- if (order.expirationTs == null) {
3
- return 1e9;
4
- }
5
- const expirationTs = Number(order.expirationTs);
6
- return expirationTs - 3600;
7
- }
8
-
9
- export { getDisplayExpiresAt };
10
- //# sourceMappingURL=paymentUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentUtils.js","sources":["../../../src/payment/paymentUtils.ts"],"sourcesContent":["import { DaimoPayHydratedOrder } from \"@daimo/pay-common\";\n\n/**\n * Display payments as \"expired\" 1h before their actual expiration.\n * This ensures that users don't send payments that may arrive post-expiry.\n */\nexport function getDisplayExpiresAt(order: DaimoPayHydratedOrder) {\n if (order.expirationTs == null) {\n return 1e9; // past expiration\n }\n const expirationTs = Number(order.expirationTs);\n return expirationTs - 3600;\n}\n"],"names":[],"mappings":"AAMO,SAAS,oBAAoB,KAA8B,EAAA;AAChE,EAAI,IAAA,KAAA,CAAM,gBAAgB,IAAM,EAAA;AAC9B,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,YAAA,GAAe,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAC9C,EAAA,OAAO,YAAe,GAAA,IAAA,CAAA;AACxB;;;;"}
@@ -1,300 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { debugJson, DaimoPayOrderMode, DaimoPayOrderStatusSource } from '@daimo/pay-common';
3
- import { Buffer } from 'buffer';
4
- import React, { useMemo, useState, useRef, useCallback, useEffect, createElement } from 'react';
5
- import { ThemeProvider } from 'styled-components';
6
- import { WagmiContext } from 'wagmi';
7
- import { DaimoPayModal } from '../components/DaimoPayModal/index.js';
8
- import { ROUTES } from '../constants/routes.js';
9
- import { REQUIRED_CHAINS } from '../defaultConfig.js';
10
- import { useChains } from '../hooks/useChains.js';
11
- import { useConnectCallback } from '../hooks/useConnectCallback.js';
12
- import { useDaimoPay } from '../hooks/useDaimoPay.js';
13
- import { usePaymentState } from '../hooks/usePaymentState.js';
14
- import { PaymentProvider, PaymentContext } from './PaymentProvider.js';
15
- import defaultTheme from '../styles/defaultTheme.js';
16
- import { createTrpcClient } from '../utils/trpc.js';
17
- import { setInWalletPaymentUrlFromApiUrl } from '../wallets/walletConfigs.js';
18
- import { PayContext } from './PayContext.js';
19
- import { SolanaContextProvider } from './SolanaContextProvider.js';
20
- import { Web3ContextProvider } from './Web3ContextProvider.js';
21
-
22
- const DaimoPayUIProvider = ({
23
- children,
24
- theme = "auto",
25
- mode = "auto",
26
- customTheme,
27
- options,
28
- onConnect,
29
- onDisconnect,
30
- debugMode = false,
31
- payApiUrl,
32
- log
33
- }) => {
34
- if (!React.useContext(PaymentContext)) {
35
- throw Error("DaimoPayProvider must be within a PaymentProvider");
36
- }
37
- if (!React.useContext(WagmiContext)) {
38
- throw Error("DaimoPayProvider must be within a WagmiProvider");
39
- }
40
- if (React.useContext(PayContext)) {
41
- throw new Error(
42
- "Multiple, nested usages of DaimoPayProvider detected. Please use only one."
43
- );
44
- }
45
- useConnectCallback({
46
- onConnect,
47
- onDisconnect
48
- });
49
- const chains = useChains();
50
- for (const requiredChain of REQUIRED_CHAINS) {
51
- if (!chains.some((c) => c.id === requiredChain.id)) {
52
- throw new Error(
53
- `Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(", ")}. Use \`getDefaultConfig\` to automatically configure required chains.`
54
- );
55
- }
56
- }
57
- const defaultOptions = {
58
- language: "en-US",
59
- hideBalance: false,
60
- hideTooltips: false,
61
- hideQuestionMarkCTA: false,
62
- hideRecentBadge: false,
63
- avoidLayoutShift: true,
64
- embedGoogleFonts: false,
65
- truncateLongENSAddress: true,
66
- reducedMotion: false,
67
- disclaimer: null,
68
- bufferPolyfill: true,
69
- customAvatar: void 0,
70
- initialChainId: void 0,
71
- enforceSupportedChains: false,
72
- ethereumOnboardingUrl: void 0,
73
- walletOnboardingUrl: void 0,
74
- overlayBlur: void 0,
75
- disableMobileInjector: false
76
- };
77
- const opts = Object.assign(
78
- {},
79
- defaultOptions,
80
- options
81
- );
82
- if (typeof window !== "undefined") {
83
- if (opts.bufferPolyfill) window.Buffer = window.Buffer ?? Buffer;
84
- }
85
- const pay = useDaimoPay();
86
- const [ckTheme, setTheme] = useState(theme);
87
- const [ckMode, setMode] = useState(mode);
88
- const [ckCustomTheme, setCustomTheme] = useState(
89
- customTheme ?? {}
90
- );
91
- const [ckLang, setLang] = useState("en-US");
92
- const [disableMobileInjector, setDisableMobileInjector] = useState(
93
- opts.disableMobileInjector ?? false
94
- );
95
- const onOpenRef = useRef();
96
- const onCloseRef = useRef();
97
- const setOnOpen = useCallback((fn) => {
98
- onOpenRef.current = fn;
99
- }, []);
100
- const setOnClose = useCallback((fn) => {
101
- onCloseRef.current = fn;
102
- }, []);
103
- const [open, setOpenState] = useState(false);
104
- const [lockPayParams, setLockPayParams] = useState(false);
105
- const [paymentCompleted, setPaymentCompleted] = useState(false);
106
- const [route, setRouteState] = useState(ROUTES.SELECT_METHOD);
107
- const [modalOptions, setModalOptions] = useState();
108
- const [uniquePaymentMethodPage, setUniquePaymentMethodPage] = useState(ROUTES.SELECT_METHOD);
109
- const [pendingConnectorId, setPendingConnectorId] = useState(void 0);
110
- const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
111
- const [solanaConnector, setSolanaConnector] = useState();
112
- const [errorMessage, setErrorMessage] = useState("");
113
- const [showContactSupport, setShowContactSupport] = useState(true);
114
- const [confirmationMessage, setConfirmationMessage] = useState(void 0);
115
- const [redirectReturnUrl, setRedirectReturnUrl] = useState(void 0);
116
- const trpc = useMemo(() => {
117
- return createTrpcClient(payApiUrl, sessionId);
118
- }, [payApiUrl, sessionId]);
119
- const [resize, onResize] = useState(0);
120
- useEffect(() => {
121
- setInWalletPaymentUrlFromApiUrl(payApiUrl);
122
- }, [payApiUrl]);
123
- const setOpen = useCallback(
124
- (open2, meta) => {
125
- setOpenState(open2);
126
- if (open2) {
127
- setLockPayParams(true);
128
- }
129
- if (!open2 && paymentCompleted && modalOptions?.resetOnSuccess) {
130
- setPaymentCompleted(false);
131
- setLockPayParams(false);
132
- paymentState.resetOrder();
133
- }
134
- trpc.nav.mutate({
135
- action: open2 ? "navOpenPay" : "navClosePay",
136
- orderId: pay.order?.id?.toString(),
137
- data: meta ?? {}
138
- });
139
- if (open2) onOpenRef.current?.();
140
- else onCloseRef.current?.();
141
- },
142
- // We don't have good caching on paymentState, so don't include it as a dep
143
- // eslint-disable-next-line react-hooks/exhaustive-deps
144
- [trpc, pay.order?.id, modalOptions?.resetOnSuccess, paymentCompleted]
145
- );
146
- const onSuccess = useCallback(() => {
147
- if (modalOptions?.closeOnSuccess) {
148
- setTimeout(() => setOpen(false, { event: "wait-success" }), 1e3);
149
- }
150
- setPaymentCompleted(true);
151
- }, [modalOptions?.closeOnSuccess, setOpen, setPaymentCompleted]);
152
- const setRoute = useCallback(
153
- (route2, data) => {
154
- const action = route2.replace("daimoPay", "");
155
- log(`[SET ROUTE] ${action} ${pay.order?.id} ${debugJson(data ?? {})}`);
156
- trpc.nav.mutate({
157
- action,
158
- orderId: pay.order?.id?.toString(),
159
- data: data ?? {}
160
- });
161
- setRouteState(route2);
162
- },
163
- [trpc, pay.order?.id, log]
164
- );
165
- useEffect(() => setTheme(theme), [theme]);
166
- useEffect(() => setLang(opts.language || "en-US"), [opts.language]);
167
- useEffect(
168
- () => setDisableMobileInjector(opts.disableMobileInjector ?? false),
169
- [opts.disableMobileInjector]
170
- );
171
- useEffect(() => setErrorMessage(null), [route, open]);
172
- const paymentState = usePaymentState({
173
- trpc,
174
- lockPayParams,
175
- setRoute,
176
- log,
177
- redirectReturnUrl
178
- });
179
- const showPayment = async (modalOptions2) => {
180
- const id = pay.order?.id;
181
- log(
182
- `[PAY] showing modal ${debugJson({ id, modalOptions: modalOptions2, paymentFsmState: pay.paymentState })}`
183
- );
184
- setModalOptions(modalOptions2);
185
- setOpen(true);
186
- if (modalOptions2.connectedWalletOnly) {
187
- paymentState.setTokenMode("all");
188
- }
189
- if (pay.paymentState === "error") {
190
- setRoute(ROUTES.ERROR);
191
- } else if (pay.paymentState === "payment_started" || pay.paymentState === "payment_completed" || pay.paymentState === "payment_bounced") {
192
- setRoute(ROUTES.CONFIRMATION);
193
- } else if (modalOptions2.connectedWalletOnly) {
194
- setRoute(ROUTES.SELECT_TOKEN);
195
- } else {
196
- setRoute(ROUTES.SELECT_METHOD);
197
- }
198
- };
199
- const isUnderpaid = pay.order?.mode === DaimoPayOrderMode.HYDRATED && pay.order.sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT && pay.order.sourceTokenAmount != null;
200
- useEffect(() => {
201
- if (pay.paymentState === "error") {
202
- setRoute(ROUTES.ERROR);
203
- } else if (pay.paymentState === "payment_started" || pay.paymentState === "payment_completed" || pay.paymentState === "payment_bounced") {
204
- setRoute(ROUTES.CONFIRMATION, { event: "payment-started" });
205
- } else if (isUnderpaid) {
206
- paymentState.setSelectedDepositAddressOption(void 0);
207
- setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS);
208
- }
209
- }, [pay.paymentState, setRoute, isUnderpaid]);
210
- const value = {
211
- theme: ckTheme,
212
- setTheme,
213
- mode: ckMode,
214
- setMode,
215
- customTheme,
216
- setCustomTheme,
217
- lang: ckLang,
218
- setLang,
219
- disableMobileInjector,
220
- setDisableMobileInjector,
221
- setOnOpen,
222
- setOnClose,
223
- open,
224
- setOpen,
225
- route,
226
- setRoute,
227
- // Daimo Pay context
228
- uniquePaymentMethodPage,
229
- setUniquePaymentMethodPage,
230
- pendingConnectorId,
231
- setPendingConnectorId,
232
- sessionId,
233
- solanaConnector,
234
- setSolanaConnector,
235
- onConnect,
236
- // Other configuration
237
- options: opts,
238
- errorMessage,
239
- onSuccess,
240
- showContactSupport,
241
- setShowContactSupport,
242
- confirmationMessage,
243
- setConfirmationMessage,
244
- redirectReturnUrl,
245
- setRedirectReturnUrl,
246
- debugMode,
247
- log,
248
- displayError: (message, code) => {
249
- setErrorMessage(message);
250
- console.log("---------DAIMOPAY DEBUG---------");
251
- console.log(message);
252
- if (code) console.table(code);
253
- console.log("---------/DAIMOPAY DEBUG---------");
254
- },
255
- resize,
256
- triggerResize: () => onResize((prev) => prev + 1),
257
- // Above: generic ConnectKit context
258
- // Below: Daimo Pay context
259
- showPayment,
260
- paymentState,
261
- trpc
262
- };
263
- return createElement(
264
- PayContext.Provider,
265
- { value },
266
- /* @__PURE__ */ jsx(Web3ContextProvider, { children: /* @__PURE__ */ jsxs(ThemeProvider, { theme: defaultTheme, children: [
267
- children,
268
- /* @__PURE__ */ jsx(
269
- DaimoPayModal,
270
- {
271
- lang: ckLang,
272
- theme: ckTheme,
273
- mode,
274
- customTheme: ckCustomTheme,
275
- disableMobileInjector
276
- }
277
- )
278
- ] }) })
279
- );
280
- };
281
- const DaimoPayProvider = (props) => {
282
- const payApiUrl = props.payApiUrl ?? "https://pay-api.daimo.xyz/";
283
- const log = useMemo(
284
- () => props.debugMode ? (...args) => console.log(...args) : () => {
285
- },
286
- [props.debugMode]
287
- );
288
- return /* @__PURE__ */ jsx(
289
- PaymentProvider,
290
- {
291
- payApiUrl,
292
- log,
293
- debugMode: props.debugMode,
294
- children: /* @__PURE__ */ jsx(SolanaContextProvider, { solanaRpcUrl: props.solanaRpcUrl, children: /* @__PURE__ */ jsx(DaimoPayUIProvider, { ...props, payApiUrl, log }) })
295
- }
296
- );
297
- };
298
-
299
- export { DaimoPayProvider };
300
- //# sourceMappingURL=DaimoPayProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DaimoPayProvider.js","sources":["../../../src/provider/DaimoPayProvider.tsx"],"sourcesContent":["import {\n DaimoPayOrderMode,\n DaimoPayOrderStatusSource,\n debugJson,\n} from \"@daimo/pay-common\";\nimport { Buffer } from \"buffer\";\nimport React, {\n createElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ThemeProvider } from \"styled-components\";\nimport { WagmiContext } from \"wagmi\";\n\nimport { DaimoPayModal } from \"../components/DaimoPayModal\";\nimport { ROUTES } from \"../constants/routes\";\nimport { REQUIRED_CHAINS } from \"../defaultConfig\";\nimport { useChains } from \"../hooks/useChains\";\nimport {\n useConnectCallback,\n useConnectCallbackProps,\n} from \"../hooks/useConnectCallback\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePaymentState } from \"../hooks/usePaymentState\";\nimport { PaymentContext, PaymentProvider } from \"../provider/PaymentProvider\";\nimport defaultTheme from \"../styles/defaultTheme\";\nimport {\n CustomTheme,\n DaimoPayContextOptions,\n DaimoPayModalOptions,\n Languages,\n Mode,\n Theme,\n} from \"../types\";\nimport { createTrpcClient } from \"../utils/trpc\";\nimport { setInWalletPaymentUrlFromApiUrl } from \"../wallets/walletConfigs\";\nimport { PayContext, PayContextValue } from \"./PayContext\";\nimport {\n SolanaContextProvider,\n SolanaWalletName,\n} from \"./SolanaContextProvider\";\nimport { Web3ContextProvider } from \"./Web3ContextProvider\";\n\ntype DaimoPayUIProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl: string;\n log: (msg: string, ...props: any[]) => void;\n} & useConnectCallbackProps;\n\nconst DaimoPayUIProvider = ({\n children,\n theme = \"auto\",\n mode = \"auto\",\n customTheme,\n options,\n onConnect,\n onDisconnect,\n debugMode = false,\n payApiUrl,\n log,\n}: DaimoPayUIProviderProps) => {\n if (!React.useContext(PaymentContext)) {\n throw Error(\"DaimoPayProvider must be within a PaymentProvider\");\n }\n\n if (!React.useContext(WagmiContext)) {\n throw Error(\"DaimoPayProvider must be within a WagmiProvider\");\n }\n\n // Only allow for mounting DaimoPayProvider once, so we avoid weird global\n // state collisions.\n if (React.useContext(PayContext)) {\n throw new Error(\n \"Multiple, nested usages of DaimoPayProvider detected. Please use only one.\",\n );\n }\n\n useConnectCallback({\n onConnect,\n onDisconnect,\n });\n\n const chains = useChains();\n\n for (const requiredChain of REQUIRED_CHAINS) {\n if (!chains.some((c) => c.id === requiredChain.id)) {\n throw new Error(\n `Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(\", \")}. Use \\`getDefaultConfig\\` to automatically configure required chains.`,\n );\n }\n }\n\n // Default config options\n const defaultOptions: DaimoPayContextOptions = {\n language: \"en-US\",\n hideBalance: false,\n hideTooltips: false,\n hideQuestionMarkCTA: false,\n hideRecentBadge: false,\n avoidLayoutShift: true,\n embedGoogleFonts: false,\n truncateLongENSAddress: true,\n reducedMotion: false,\n disclaimer: null,\n bufferPolyfill: true,\n customAvatar: undefined,\n initialChainId: undefined,\n enforceSupportedChains: false,\n ethereumOnboardingUrl: undefined,\n walletOnboardingUrl: undefined,\n overlayBlur: undefined,\n disableMobileInjector: false,\n };\n\n const opts: DaimoPayContextOptions = Object.assign(\n {},\n defaultOptions,\n options,\n );\n\n if (typeof window !== \"undefined\") {\n // Buffer Polyfill, needed for bundlers that don't provide Node polyfills (e.g CRA, Vite, etc.)\n if (opts.bufferPolyfill) window.Buffer = window.Buffer ?? Buffer;\n\n // Some bundlers may need `global` and `process.env` polyfills as well\n // Not implemented here to avoid unexpected behaviors, but leaving example here for future reference\n /*\n * window.global = window.global ?? window;\n * window.process = window.process ?? { env: {} };\n */\n }\n\n const pay = useDaimoPay();\n\n const [ckTheme, setTheme] = useState<Theme>(theme);\n const [ckMode, setMode] = useState<Mode>(mode);\n const [ckCustomTheme, setCustomTheme] = useState<CustomTheme | undefined>(\n customTheme ?? {},\n );\n const [ckLang, setLang] = useState<Languages>(\"en-US\");\n const [disableMobileInjector, setDisableMobileInjector] = useState<boolean>(\n opts.disableMobileInjector ?? false,\n );\n\n const onOpenRef = useRef<(() => void) | undefined>();\n const onCloseRef = useRef<(() => void) | undefined>();\n const setOnOpen = useCallback((fn?: () => void) => {\n onOpenRef.current = fn;\n }, []);\n const setOnClose = useCallback((fn?: () => void) => {\n onCloseRef.current = fn;\n }, []);\n const [open, setOpenState] = useState<boolean>(false);\n const [lockPayParams, setLockPayParams] = useState<boolean>(false);\n const [paymentCompleted, setPaymentCompleted] = useState<boolean>(false);\n const [route, setRouteState] = useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [modalOptions, setModalOptions] = useState<DaimoPayModalOptions>();\n\n // Daimo Pay context\n const [uniquePaymentMethodPage, setUniquePaymentMethodPage] =\n useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [pendingConnectorId, setPendingConnectorId] = useState<\n string | undefined\n >(undefined);\n // Track sessions. Each generates separate intent IDs unless using externalId.\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const [solanaConnector, setSolanaConnector] = useState<\n SolanaWalletName | undefined\n >();\n\n // Other configuration\n const [errorMessage, setErrorMessage] = useState<\n string | React.ReactNode | null\n >(\"\");\n const [showContactSupport, setShowContactSupport] = useState<boolean>(true);\n const [confirmationMessage, setConfirmationMessage] = useState<\n string | undefined\n >(undefined);\n const [redirectReturnUrl, setRedirectReturnUrl] = useState<\n string | undefined\n >(undefined);\n // Connect to the Daimo Pay TRPC API\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n const [resize, onResize] = useState<number>(0);\n\n useEffect(() => {\n setInWalletPaymentUrlFromApiUrl(payApiUrl);\n }, [payApiUrl]);\n\n const setOpen = useCallback(\n (open: boolean, meta?: Record<string, any>) => {\n setOpenState(open);\n\n // Lock pay params starting from the first time the modal is opened to\n // prevent the daimo pay order from changing from under the user\n if (open) {\n setLockPayParams(true);\n }\n // Reset payment state on close if resetOnSuccess is true\n if (!open && paymentCompleted && modalOptions?.resetOnSuccess) {\n setPaymentCompleted(false);\n setLockPayParams(false);\n paymentState.resetOrder();\n }\n\n // Log the open/close event\n trpc.nav.mutate({\n action: open ? \"navOpenPay\" : \"navClosePay\",\n orderId: pay.order?.id?.toString(),\n data: meta ?? {},\n });\n\n // Run the onOpen and onClose callbacks\n if (open) onOpenRef.current?.();\n else onCloseRef.current?.();\n },\n // We don't have good caching on paymentState, so don't include it as a dep\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [trpc, pay.order?.id, modalOptions?.resetOnSuccess, paymentCompleted],\n );\n\n // Callback when a payment is successfully completed (regardless of whether\n // the final call succeeded or bounced)\n const onSuccess = useCallback(() => {\n if (modalOptions?.closeOnSuccess) {\n setTimeout(() => setOpen(false, { event: \"wait-success\" }), 1000);\n }\n setPaymentCompleted(true);\n }, [modalOptions?.closeOnSuccess, setOpen, setPaymentCompleted]);\n\n const setRoute = useCallback(\n (route: ROUTES, data?: Record<string, any>) => {\n const action = route.replace(\"daimoPay\", \"\");\n log(`[SET ROUTE] ${action} ${pay.order?.id} ${debugJson(data ?? {})}`);\n trpc.nav.mutate({\n action,\n orderId: pay.order?.id?.toString(),\n data: data ?? {},\n });\n setRouteState(route);\n },\n [trpc, pay.order?.id, log],\n );\n\n // Other Configuration\n useEffect(() => setTheme(theme), [theme]);\n useEffect(() => setLang(opts.language || \"en-US\"), [opts.language]);\n useEffect(\n () => setDisableMobileInjector(opts.disableMobileInjector ?? false),\n [opts.disableMobileInjector],\n );\n useEffect(() => setErrorMessage(null), [route, open]);\n\n // TODO: replace with dispatcher pattern; remove hook slop\n const paymentState = usePaymentState({\n trpc,\n lockPayParams,\n setRoute,\n log,\n redirectReturnUrl,\n });\n\n const showPayment = async (modalOptions: DaimoPayModalOptions) => {\n const id = pay.order?.id;\n log(\n `[PAY] showing modal ${debugJson({ id, modalOptions, paymentFsmState: pay.paymentState })}`,\n );\n\n setModalOptions(modalOptions);\n setOpen(true);\n if (modalOptions.connectedWalletOnly) {\n paymentState.setTokenMode(\"all\");\n }\n\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION);\n } else if (modalOptions.connectedWalletOnly) {\n setRoute(ROUTES.SELECT_TOKEN);\n } else {\n setRoute(ROUTES.SELECT_METHOD);\n }\n };\n\n // Watch when the order gets paid and navigate to confirmation\n // ...if underpaid, go to the deposit addr screen, let the user finish paying.\n const isUnderpaid =\n pay.order?.mode === DaimoPayOrderMode.HYDRATED &&\n pay.order.sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT &&\n pay.order.sourceTokenAmount != null;\n useEffect(() => {\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION, { event: \"payment-started\" });\n } else if (isUnderpaid) {\n paymentState.setSelectedDepositAddressOption(undefined);\n setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.paymentState, setRoute, isUnderpaid]);\n\n const value: PayContextValue = {\n theme: ckTheme,\n setTheme,\n mode: ckMode,\n setMode,\n customTheme,\n setCustomTheme,\n lang: ckLang,\n setLang,\n disableMobileInjector,\n setDisableMobileInjector,\n setOnOpen,\n setOnClose,\n open,\n setOpen,\n route,\n setRoute,\n // Daimo Pay context\n uniquePaymentMethodPage,\n setUniquePaymentMethodPage,\n pendingConnectorId,\n setPendingConnectorId,\n sessionId,\n solanaConnector,\n setSolanaConnector,\n onConnect,\n // Other configuration\n options: opts,\n errorMessage,\n onSuccess,\n showContactSupport,\n setShowContactSupport,\n confirmationMessage,\n setConfirmationMessage,\n redirectReturnUrl,\n setRedirectReturnUrl,\n debugMode,\n log,\n displayError: (message: string | React.ReactNode | null, code?: any) => {\n setErrorMessage(message);\n console.log(\"---------DAIMOPAY DEBUG---------\");\n console.log(message);\n if (code) console.table(code);\n console.log(\"---------/DAIMOPAY DEBUG---------\");\n },\n resize,\n triggerResize: () => onResize((prev) => prev + 1),\n\n // Above: generic ConnectKit context\n // Below: Daimo Pay context\n showPayment,\n paymentState,\n trpc,\n };\n\n return createElement(\n PayContext.Provider,\n { value },\n <Web3ContextProvider>\n <ThemeProvider theme={defaultTheme}>\n {children}\n <DaimoPayModal\n lang={ckLang}\n theme={ckTheme}\n mode={mode}\n customTheme={ckCustomTheme}\n disableMobileInjector={disableMobileInjector}\n />\n </ThemeProvider>\n </Web3ContextProvider>,\n );\n};\n\ntype DaimoPayProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /**\n * Be careful with this endpoint, some endpoints (incl. Alchemy) don't support\n * `signatureSubscribe` which leads to txes behaving erratically\n * (ex. successful txes take minutes to confirm instead of seconds)\n */\n solanaRpcUrl?: string;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl?: string;\n} & useConnectCallbackProps;\n\n/**\n * Provides context for DaimoPayButton and hooks. Place in app root or layout.\n */\nexport const DaimoPayProvider = (props: DaimoPayProviderProps) => {\n const payApiUrl = props.payApiUrl ?? \"https://pay-api.daimo.xyz/\";\n const log = useMemo(\n () =>\n props.debugMode ? (...args: any[]) => console.log(...args) : () => {},\n [props.debugMode],\n );\n\n return (\n <PaymentProvider\n payApiUrl={payApiUrl}\n log={log}\n debugMode={props.debugMode}\n >\n <SolanaContextProvider solanaRpcUrl={props.solanaRpcUrl}>\n <DaimoPayUIProvider {...props} payApiUrl={payApiUrl} log={log} />\n </SolanaContextProvider>\n </PaymentProvider>\n );\n};\n"],"names":["open","route","modalOptions"],"mappings":"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"}