@velora-dex/widget 0.4.14 → 0.5.1-dev.1

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 (503) hide show
  1. package/dist/components/ui/button.d.ts +1 -1
  2. package/dist/components/ui/button.d.ts.map +1 -1
  3. package/dist/components/ui/button.js +1 -0
  4. package/dist/components/ui/button.js.map +1 -1
  5. package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
  6. package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
  7. package/dist/components/widget/AppHeader/Activities/utils.d.ts +3 -3
  8. package/dist/components/widget/AppHeader/Activities/utils.d.ts.map +1 -1
  9. package/dist/components/widget/AppHeader/Activities/utils.js +7 -6
  10. package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
  11. package/dist/components/widget/AppHeader/TradeModeSwitcher.d.ts.map +1 -1
  12. package/dist/components/widget/AppHeader/TradeModeSwitcher.js +2 -1
  13. package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
  14. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
  15. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +26 -4
  16. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  17. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +1 -1
  18. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
  19. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  20. package/dist/components/widget/Duration/Duration.d.ts +1 -1
  21. package/dist/components/widget/Duration/Duration.d.ts.map +1 -1
  22. package/dist/components/widget/Duration/Duration.js +1 -4
  23. package/dist/components/widget/Duration/Duration.js.map +1 -1
  24. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts +7 -8
  25. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
  26. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +54 -60
  27. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
  28. package/dist/components/widget/LimitOrderItem/types.d.ts +3 -2
  29. package/dist/components/widget/LimitOrderItem/types.d.ts.map +1 -1
  30. package/dist/components/widget/LimitOrderItem/utils.d.ts +2 -2
  31. package/dist/components/widget/LimitOrderItem/utils.d.ts.map +1 -1
  32. package/dist/components/widget/LimitOrderItem/utils.js +19 -10
  33. package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
  34. package/dist/components/widget/NumberInput/NumberInput.d.ts +18 -0
  35. package/dist/components/widget/NumberInput/NumberInput.d.ts.map +1 -0
  36. package/dist/components/widget/NumberInput/NumberInput.js +242 -0
  37. package/dist/components/widget/NumberInput/NumberInput.js.map +1 -0
  38. package/dist/components/widget/NumberInput/assets/arrow-down.svg.js +12 -0
  39. package/dist/components/widget/NumberInput/assets/arrow-down.svg.js.map +1 -0
  40. package/dist/components/widget/NumberInput/assets/arrow-up.svg.js +12 -0
  41. package/dist/components/widget/NumberInput/assets/arrow-up.svg.js.map +1 -0
  42. package/dist/components/widget/OtcOrderItem/utils.d.ts.map +1 -1
  43. package/dist/components/widget/OtcOrderItem/utils.js +5 -2
  44. package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
  45. package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
  46. package/dist/components/widget/ReceiverAddress/state/subscriptions.js +8 -4
  47. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  48. package/dist/components/widget/SwapRate/SwapRate.d.ts +2 -9
  49. package/dist/components/widget/SwapRate/SwapRate.d.ts.map +1 -1
  50. package/dist/components/widget/SwapRate/SwapRate.js +30 -21
  51. package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
  52. package/dist/components/widget/SwapRate/types.d.ts +13 -0
  53. package/dist/components/widget/SwapRate/types.d.ts.map +1 -0
  54. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.d.ts +7 -0
  55. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.d.ts.map +1 -0
  56. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js +118 -0
  57. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js.map +1 -0
  58. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  59. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +83 -90
  60. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  61. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js +28 -46
  62. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
  63. package/dist/components/widget/TradeOverview/TradeComplete/constants.d.ts.map +1 -1
  64. package/dist/components/widget/TradeOverview/TradeComplete/constants.js +2 -1
  65. package/dist/components/widget/TradeOverview/TradeComplete/constants.js.map +1 -1
  66. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.d.ts.map +1 -1
  67. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +105 -72
  68. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  69. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
  70. package/dist/components/widget/TradeOverview/TradeComplete/utils.js +41 -18
  71. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  72. package/dist/components/widget/TradeOverview/TradeOverviewScreen.d.ts +7 -2
  73. package/dist/components/widget/TradeOverview/TradeOverviewScreen.d.ts.map +1 -1
  74. package/dist/components/widget/TradeOverview/TradeOverviewScreen.js +19 -7
  75. package/dist/components/widget/TradeOverview/TradeOverviewScreen.js.map +1 -1
  76. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +15 -0
  77. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -0
  78. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js +249 -0
  79. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -0
  80. package/dist/components/widget/TradeOverview/steps.d.ts +37 -0
  81. package/dist/components/widget/TradeOverview/steps.d.ts.map +1 -1
  82. package/dist/components/widget/TradeOverview/steps.js +10 -1
  83. package/dist/components/widget/TradeOverview/steps.js.map +1 -1
  84. package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts +2 -2
  85. package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts.map +1 -1
  86. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  87. package/dist/components/widget/Twap/OrderDuration.d.ts +2 -0
  88. package/dist/components/widget/Twap/OrderDuration.d.ts.map +1 -0
  89. package/dist/components/widget/Twap/OrderDuration.js +77 -0
  90. package/dist/components/widget/Twap/OrderDuration.js.map +1 -0
  91. package/dist/components/widget/Twap/OrderSplit.d.ts +2 -0
  92. package/dist/components/widget/Twap/OrderSplit.d.ts.map +1 -0
  93. package/dist/components/widget/Twap/OrderSplit.js +57 -0
  94. package/dist/components/widget/Twap/OrderSplit.js.map +1 -0
  95. package/dist/components/widget/Twap/RateProtection.d.ts +2 -0
  96. package/dist/components/widget/Twap/RateProtection.d.ts.map +1 -0
  97. package/dist/components/widget/Twap/RateProtection.js +57 -0
  98. package/dist/components/widget/Twap/RateProtection.js.map +1 -0
  99. package/dist/components/widget/Twap/TwapDetailWithTooltip.d.ts +3 -0
  100. package/dist/components/widget/Twap/TwapDetailWithTooltip.d.ts.map +1 -0
  101. package/dist/components/widget/Twap/TwapDetailWithTooltip.js +33 -0
  102. package/dist/components/widget/Twap/TwapDetailWithTooltip.js.map +1 -0
  103. package/dist/configurator/Configurator.d.ts.map +1 -1
  104. package/dist/configurator/components/FormPropsInputs.d.ts.map +1 -1
  105. package/dist/configurator/components/TradeModesSelector.d.ts.map +1 -1
  106. package/dist/core/TradeFlowScreenButton.d.ts +5 -0
  107. package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
  108. package/dist/core/TradeFlowScreenButton.js +58 -1
  109. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  110. package/dist/core/TwapDetails.d.ts +2 -0
  111. package/dist/core/TwapDetails.d.ts.map +1 -0
  112. package/dist/core/TwapDetails.js +24 -0
  113. package/dist/core/TwapDetails.js.map +1 -0
  114. package/dist/core/Warnings.d.ts +2 -1
  115. package/dist/core/Warnings.d.ts.map +1 -1
  116. package/dist/core/Warnings.js +99 -33
  117. package/dist/core/Warnings.js.map +1 -1
  118. package/dist/core/across/isCrosschainPossible.d.ts +1 -1
  119. package/dist/core/across/isCrosschainPossible.d.ts.map +1 -1
  120. package/dist/core/across/isCrosschainPossible.js +1 -1
  121. package/dist/core/across/isCrosschainPossible.js.map +1 -1
  122. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts +1 -0
  123. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  124. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +134 -51
  125. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  126. package/dist/core/constants.d.ts +1 -1
  127. package/dist/core/index.d.ts.map +1 -1
  128. package/dist/core/index.js +205 -4
  129. package/dist/core/index.js.map +1 -1
  130. package/dist/core/inputs/hooks/types.d.ts +1 -1
  131. package/dist/core/inputs/hooks/types.d.ts.map +1 -1
  132. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  133. package/dist/core/inputs/hooks/useTokenToInputProps.js +5 -69
  134. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  135. package/dist/core/inputs/hooks/useWarningMessage.d.ts +10 -0
  136. package/dist/core/inputs/hooks/useWarningMessage.d.ts.map +1 -0
  137. package/dist/core/inputs/hooks/useWarningMessage.js +71 -0
  138. package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -0
  139. package/dist/core/inputs/state/common.d.ts +4 -0
  140. package/dist/core/inputs/state/common.d.ts.map +1 -1
  141. package/dist/core/inputs/state/common.js +49 -4
  142. package/dist/core/inputs/state/common.js.map +1 -1
  143. package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
  144. package/dist/core/inputs/state/setTokenByAddressAtom.js +27 -33
  145. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  146. package/dist/core/limit/state/utils.d.ts +1 -1
  147. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  148. package/dist/core/limit/useLimitRate.js +0 -2
  149. package/dist/core/limit/useLimitRate.js.map +1 -1
  150. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  151. package/dist/core/state/chainToAtom.d.ts +2 -0
  152. package/dist/core/state/chainToAtom.d.ts.map +1 -1
  153. package/dist/core/state/chainToAtom.js +28 -7
  154. package/dist/core/state/chainToAtom.js.map +1 -1
  155. package/dist/core/state/configAtom.js +2 -2
  156. package/dist/core/state/configAtom.js.map +1 -1
  157. package/dist/core/state/configEffectAtom.d.ts.map +1 -1
  158. package/dist/core/state/configEffectAtom.js +10 -15
  159. package/dist/core/state/configEffectAtom.js.map +1 -1
  160. package/dist/core/state/tradeModeAtom.d.ts +1 -1
  161. package/dist/core/state/tradeModeAtom.d.ts.map +1 -1
  162. package/dist/core/state/tradeModeAtom.js.map +1 -1
  163. package/dist/core/state/widgetEventsAtom.d.ts.map +1 -1
  164. package/dist/core/state/widgetEventsAtom.js +55 -33
  165. package/dist/core/state/widgetEventsAtom.js.map +1 -1
  166. package/dist/core/swapDetails/priceImpact.d.ts +2 -2
  167. package/dist/core/swapDetails/priceImpact.d.ts.map +1 -1
  168. package/dist/core/swapDetails/priceImpact.js.map +1 -1
  169. package/dist/core/swapDetails/types.d.ts +4 -0
  170. package/dist/core/swapDetails/types.d.ts.map +1 -0
  171. package/dist/core/swapDetails/useSwapDetailsListProps.d.ts.map +1 -1
  172. package/dist/core/swapDetails/useSwapDetailsListProps.js +62 -158
  173. package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
  174. package/dist/core/twap/state/constants.d.ts +20 -0
  175. package/dist/core/twap/state/constants.d.ts.map +1 -0
  176. package/dist/core/twap/state/constants.js +39 -0
  177. package/dist/core/twap/state/constants.js.map +1 -0
  178. package/dist/core/twap/state/currentTwapInputAtom.d.ts +4 -0
  179. package/dist/core/twap/state/currentTwapInputAtom.d.ts.map +1 -0
  180. package/dist/core/twap/state/currentTwapInputAtom.js +6 -0
  181. package/dist/core/twap/state/currentTwapInputAtom.js.map +1 -0
  182. package/dist/core/twap/state/isCrosschainAtom.d.ts +3 -0
  183. package/dist/core/twap/state/isCrosschainAtom.d.ts.map +1 -0
  184. package/dist/core/twap/state/isCrosschainAtom.js +16 -0
  185. package/dist/core/twap/state/isCrosschainAtom.js.map +1 -0
  186. package/dist/core/twap/state/selectedTokenActionsAtom.d.ts +13 -0
  187. package/dist/core/twap/state/selectedTokenActionsAtom.d.ts.map +1 -0
  188. package/dist/core/twap/state/selectedTokenActionsAtom.js +194 -0
  189. package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -0
  190. package/dist/core/twap/state/twapInputAmountAtom.d.ts +9 -0
  191. package/dist/core/twap/state/twapInputAmountAtom.d.ts.map +1 -0
  192. package/dist/core/twap/state/twapInputAmountAtom.js +21 -0
  193. package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -0
  194. package/dist/core/twap/state/twapParamsAtom.d.ts +15 -0
  195. package/dist/core/twap/state/twapParamsAtom.d.ts.map +1 -0
  196. package/dist/core/twap/state/twapParamsAtom.js +22 -0
  197. package/dist/core/twap/state/twapParamsAtom.js.map +1 -0
  198. package/dist/core/twap/state/twapReceiverAddressAtom.d.ts +5 -0
  199. package/dist/core/twap/state/twapReceiverAddressAtom.d.ts.map +1 -0
  200. package/dist/core/twap/state/twapReceiverAddressAtom.js +10 -0
  201. package/dist/core/twap/state/twapReceiverAddressAtom.js.map +1 -0
  202. package/dist/core/twap/state/twapSideAtom.d.ts +4 -0
  203. package/dist/core/twap/state/twapSideAtom.d.ts.map +1 -0
  204. package/dist/core/twap/state/twapSideAtom.js +24 -0
  205. package/dist/core/twap/state/twapSideAtom.js.map +1 -0
  206. package/dist/core/twap/state/twapTokenAtoms.d.ts +10 -0
  207. package/dist/core/twap/state/twapTokenAtoms.d.ts.map +1 -0
  208. package/dist/core/twap/state/twapTokenAtoms.js +17 -0
  209. package/dist/core/twap/state/twapTokenAtoms.js.map +1 -0
  210. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +12 -0
  211. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -0
  212. package/dist/core/twap/twapDetails/minimumReceiveable.js +44 -0
  213. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -0
  214. package/dist/core/twap/useTwapDetailsListProps.d.ts +3 -0
  215. package/dist/core/twap/useTwapDetailsListProps.d.ts.map +1 -0
  216. package/dist/core/twap/useTwapDetailsListProps.js +143 -0
  217. package/dist/core/twap/useTwapDetailsListProps.js.map +1 -0
  218. package/dist/core/twap/useTwapTokenFromInputProps.d.ts +9 -0
  219. package/dist/core/twap/useTwapTokenFromInputProps.d.ts.map +1 -0
  220. package/dist/core/twap/useTwapTokenFromInputProps.js +455 -0
  221. package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -0
  222. package/dist/core/twap/useTwapTokenSwitcherProps.d.ts +3 -0
  223. package/dist/core/twap/useTwapTokenSwitcherProps.d.ts.map +1 -0
  224. package/dist/core/twap/useTwapTokenSwitcherProps.js +37 -0
  225. package/dist/core/twap/useTwapTokenSwitcherProps.js.map +1 -0
  226. package/dist/core/twap/useTwapTokenToInputProps.d.ts +10 -0
  227. package/dist/core/twap/useTwapTokenToInputProps.d.ts.map +1 -0
  228. package/dist/core/twap/useTwapTokenToInputProps.js +301 -0
  229. package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -0
  230. package/dist/events/effects/formInput.d.ts +3 -0
  231. package/dist/events/effects/formInput.d.ts.map +1 -1
  232. package/dist/events/effects/formInput.js +17 -1
  233. package/dist/events/effects/formInput.js.map +1 -1
  234. package/dist/events/getters/twap.d.ts +6 -0
  235. package/dist/events/getters/twap.d.ts.map +1 -0
  236. package/dist/events/getters/twap.js +76 -0
  237. package/dist/events/getters/twap.js.map +1 -0
  238. package/dist/events/getters/widgetState.d.ts.map +1 -1
  239. package/dist/events/getters/widgetState.js +3 -1
  240. package/dist/events/getters/widgetState.js.map +1 -1
  241. package/dist/events/hooks/useActivateEffects.d.ts.map +1 -1
  242. package/dist/events/hooks/useActivateEffects.js +2 -1
  243. package/dist/events/hooks/useActivateEffects.js.map +1 -1
  244. package/dist/events/types/common.d.ts +8 -0
  245. package/dist/events/types/common.d.ts.map +1 -1
  246. package/dist/events/types/formInput.d.ts +11 -2
  247. package/dist/events/types/formInput.d.ts.map +1 -1
  248. package/dist/events/types/index.d.ts +4 -1
  249. package/dist/events/types/index.d.ts.map +1 -1
  250. package/dist/events/types/limit.d.ts +2 -2
  251. package/dist/events/types/limit.d.ts.map +1 -1
  252. package/dist/events/types/swap.d.ts +3 -2
  253. package/dist/events/types/swap.d.ts.map +1 -1
  254. package/dist/events/types/twap.d.ts +26 -0
  255. package/dist/events/types/twap.d.ts.map +1 -0
  256. package/dist/hooks/batch/useSendBatchTx.d.ts +1 -1
  257. package/dist/hooks/batch/useSendBatchTx.d.ts.map +1 -1
  258. package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
  259. package/dist/hooks/permit/utils/deadlines.d.ts +0 -3
  260. package/dist/hooks/permit/utils/deadlines.d.ts.map +1 -1
  261. package/dist/hooks/permit/utils/deadlines.js +3 -9
  262. package/dist/hooks/permit/utils/deadlines.js.map +1 -1
  263. package/dist/hooks/swap/prices/constants.d.ts +1 -0
  264. package/dist/hooks/swap/prices/constants.d.ts.map +1 -1
  265. package/dist/hooks/swap/prices/constants.js +2 -1
  266. package/dist/hooks/swap/prices/constants.js.map +1 -1
  267. package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.d.ts +19 -0
  268. package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.d.ts.map +1 -0
  269. package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js +86 -0
  270. package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js.map +1 -0
  271. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +37 -0
  272. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -0
  273. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +164 -0
  274. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -0
  275. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.d.ts +69 -0
  276. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.d.ts.map +1 -0
  277. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js +278 -0
  278. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -0
  279. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +15 -0
  280. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -0
  281. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +89 -0
  282. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -0
  283. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.d.ts +60 -0
  284. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.d.ts.map +1 -0
  285. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js +325 -0
  286. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -0
  287. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts +18 -0
  288. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -0
  289. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +87 -0
  290. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -0
  291. package/dist/hooks/swap/prices/delta/mutations/types.d.ts +12 -1
  292. package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
  293. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts +2 -5
  294. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts.map +1 -1
  295. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  296. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts +2 -3
  297. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
  298. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +4 -5
  299. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  300. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +6 -6
  301. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  302. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  303. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +3 -3
  304. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  305. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +3 -15
  306. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  307. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts +4 -4
  308. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
  309. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +7 -0
  310. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  311. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +17 -6
  312. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
  313. package/dist/hooks/swap/prices/delta/mutations/utils.js +35 -2
  314. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  315. package/dist/hooks/swap/prices/delta/orders/types.d.ts +11 -46
  316. package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
  317. package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts +2 -2
  318. package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts.map +1 -1
  319. package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
  320. package/dist/hooks/swap/prices/delta/orders/unposted/types.d.ts +6 -5
  321. package/dist/hooks/swap/prices/delta/orders/unposted/types.d.ts.map +1 -1
  322. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +67 -1
  323. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
  324. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +24 -6
  325. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  326. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +41 -10
  327. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  328. package/dist/hooks/swap/prices/delta/orders/utils.js +135 -4
  329. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  330. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js +3 -3
  331. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -1
  332. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts +1 -1
  333. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -1
  334. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts +0 -1
  335. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts.map +1 -1
  336. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
  337. package/dist/hooks/swap/prices/delta/queries/errors.d.ts +10 -0
  338. package/dist/hooks/swap/prices/delta/queries/errors.d.ts.map +1 -1
  339. package/dist/hooks/swap/prices/delta/queries/errors.js +22 -1
  340. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  341. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts +5 -6
  342. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts.map +1 -1
  343. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
  344. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +7 -7
  345. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  346. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +37 -35
  347. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  348. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +14 -17
  349. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  350. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  351. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts.map +1 -1
  352. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +37 -35
  353. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  354. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.d.ts.map +1 -1
  355. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
  356. package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
  357. package/dist/hooks/swap/prices/usePricesParams.js +3 -4
  358. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  359. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -0
  360. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  361. package/dist/hooks/swap/prices/useSwapPrices.js +51 -33
  362. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  363. package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts +1 -1
  364. package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts.map +1 -1
  365. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  366. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +16 -0
  367. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -0
  368. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js +73 -0
  369. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -0
  370. package/dist/hooks/swap/prices/useTwapPrices.d.ts +44 -0
  371. package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -0
  372. package/dist/hooks/swap/prices/useTwapPrices.js +241 -0
  373. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -0
  374. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +48 -0
  375. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -0
  376. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +71 -0
  377. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -0
  378. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts +50 -0
  379. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts.map +1 -0
  380. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js +94 -0
  381. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -0
  382. package/dist/hooks/swap/tradeFlow/common/types.d.ts +4 -2
  383. package/dist/hooks/swap/tradeFlow/common/types.d.ts.map +1 -1
  384. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts +2 -0
  385. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -1
  386. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +57 -55
  387. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
  388. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts +6 -6
  389. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts.map +1 -1
  390. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +263 -152
  391. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
  392. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +7 -7
  393. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
  394. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +296 -181
  395. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  396. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts +2 -1
  397. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts.map +1 -1
  398. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js +85 -83
  399. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
  400. package/dist/hooks/swap/tradeFlow/common/utils.d.ts.map +1 -1
  401. package/dist/hooks/swap/tradeFlow/common/utils.js +1 -1
  402. package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
  403. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +8 -9
  404. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  405. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +6 -6
  406. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  407. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +5 -6
  408. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  409. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +5 -9
  410. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  411. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +88 -0
  412. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -0
  413. package/dist/hooks/swap/tradeFlow/useTwapFlow.js +595 -0
  414. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -0
  415. package/dist/hooks/swap/tradeFlow/useTwapSwapStep.d.ts +25 -0
  416. package/dist/hooks/swap/tradeFlow/useTwapSwapStep.d.ts.map +1 -0
  417. package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js +237 -0
  418. package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js.map +1 -0
  419. package/dist/hooks/tokens/useAllTokensWithFilter.d.ts +1 -1
  420. package/dist/hooks/tokens/useAllTokensWithFilter.d.ts.map +1 -1
  421. package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
  422. package/dist/hooks/tokens/useTokensFromAcross.d.ts +1 -1
  423. package/dist/hooks/tokens/useTokensFromAcross.d.ts.map +1 -1
  424. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  425. package/dist/hooks/useBridgeInfo.d.ts +1 -1
  426. package/dist/hooks/useBridgeInfo.d.ts.map +1 -1
  427. package/dist/hooks/useBridgeInfo.js.map +1 -1
  428. package/dist/hooks/useIsCrosschainPossible.d.ts +1 -1
  429. package/dist/hooks/useIsCrosschainPossible.d.ts.map +1 -1
  430. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  431. package/dist/hooks/useSDK.d.ts +4 -4
  432. package/dist/hooks/useSDK.d.ts.map +1 -1
  433. package/dist/hooks/useSDK.js +4 -4
  434. package/dist/hooks/useSDK.js.map +1 -1
  435. package/dist/hooks/useSelectableDestChains.d.ts +1 -1
  436. package/dist/hooks/useSelectableDestChains.d.ts.map +1 -1
  437. package/dist/hooks/useSelectableDestChains.js.map +1 -1
  438. package/dist/hooks/useSlippage.d.ts.map +1 -1
  439. package/dist/hooks/useSlippage.js +2 -1
  440. package/dist/hooks/useSlippage.js.map +1 -1
  441. package/dist/index.d.ts +2 -2
  442. package/dist/index.d.ts.map +1 -1
  443. package/dist/lib/constants/delta.d.ts.map +1 -1
  444. package/dist/lib/constants/delta.js +1 -1
  445. package/dist/lib/constants/delta.js.map +1 -1
  446. package/dist/lib/constants/time.d.ts +1 -0
  447. package/dist/lib/constants/time.d.ts.map +1 -1
  448. package/dist/lib/constants/time.js +2 -1
  449. package/dist/lib/constants/time.js.map +1 -1
  450. package/dist/lib/queryClient.js +2 -2
  451. package/dist/lib/queryClient.js.map +1 -1
  452. package/dist/lib/tradeMode.d.ts +9 -1
  453. package/dist/lib/tradeMode.d.ts.map +1 -1
  454. package/dist/lib/tradeMode.js +4 -2
  455. package/dist/lib/tradeMode.js.map +1 -1
  456. package/dist/lib/utils/delta.d.ts +10 -0
  457. package/dist/lib/utils/delta.d.ts.map +1 -1
  458. package/dist/lib/utils/delta.js +24 -1
  459. package/dist/lib/utils/delta.js.map +1 -1
  460. package/dist/lib/utils/index.d.ts +8 -0
  461. package/dist/lib/utils/index.d.ts.map +1 -1
  462. package/dist/lib/utils/index.js +18 -1
  463. package/dist/lib/utils/index.js.map +1 -1
  464. package/dist/lib/utils/price.d.ts +1 -0
  465. package/dist/lib/utils/price.d.ts.map +1 -1
  466. package/dist/lib/utils/price.js +4 -2
  467. package/dist/lib/utils/price.js.map +1 -1
  468. package/dist/lib/utils/scaleFactor.d.ts +3 -0
  469. package/dist/lib/utils/scaleFactor.d.ts.map +1 -0
  470. package/dist/lib/utils/scaleFactor.js +12 -0
  471. package/dist/lib/utils/scaleFactor.js.map +1 -0
  472. package/dist/lib/utils/time.d.ts +2 -0
  473. package/dist/lib/utils/time.d.ts.map +1 -1
  474. package/dist/lib/utils/time.js +7 -1
  475. package/dist/lib/utils/time.js.map +1 -1
  476. package/dist/lib/utils/toasts.d.ts +4 -4
  477. package/dist/lib/utils/toasts.d.ts.map +1 -1
  478. package/dist/lib/utils/toasts.js.map +1 -1
  479. package/dist/lib/utils/twap.d.ts +24 -0
  480. package/dist/lib/utils/twap.d.ts.map +1 -0
  481. package/dist/lib/utils/twap.js +52 -0
  482. package/dist/lib/utils/twap.js.map +1 -0
  483. package/dist/lib/web3/privy/config.js +1 -1
  484. package/dist/lib/web3/privy/config.js.map +1 -1
  485. package/dist/lib/web3/wagmi/config.js +1 -1
  486. package/dist/lib/web3/wagmi/config.js.map +1 -1
  487. package/dist/styles.css +65 -4
  488. package/dist/tokens/constants.d.ts.map +1 -1
  489. package/dist/tokens/constants.js +9 -9
  490. package/dist/tokens/constants.js.map +1 -1
  491. package/dist/tokens/defaultTokens.js +17 -17
  492. package/dist/tokens/defaultTokens.js.map +1 -1
  493. package/dist/tokens/lists/constants.d.ts +1 -1
  494. package/dist/tokens/lists/constants.d.ts.map +1 -1
  495. package/dist/tokens/lists/constants.js +1 -1
  496. package/dist/tokens/lists/constants.js.map +1 -1
  497. package/dist/transactions/types.d.ts +3 -3
  498. package/dist/transactions/types.d.ts.map +1 -1
  499. package/package.json +2 -2
  500. package/dist/hooks/swap/prices/delta/queries/utils.d.ts +0 -4
  501. package/dist/hooks/swap/prices/delta/queries/utils.d.ts.map +0 -1
  502. package/dist/hooks/swap/prices/delta/queries/utils.js +0 -16
  503. package/dist/hooks/swap/prices/delta/queries/utils.js.map +0 -1
@@ -12,16 +12,14 @@ import { isSupportedChainId } from '../../../lib/web3/wagmi/utils.js';
12
12
  import { areTokensSame } from '../../../tokens/utils/areTokensSame.js';
13
13
  import { pickDefaultTokenPair } from '../../../tokens/defaultTokens.js';
14
14
  import { tradeModeAtom, userTradeModeAtom } from '../../state/tradeModeAtom.js';
15
- import { tradeModeToTokenAtoms, tradeModeToSetTokenAtoms, sideToInputType, tradeModeToPayAmountUnitAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToTimeUnitAtom } from './common.js';
15
+ import { tradeModeToTokenAtoms, tradeModeToSetTokenAtoms, tradeModeToCurrentInputAtom, sideToInputType, tradeModeToSideAtom, tradeModeToPayAmountUnitAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToTimeUnitAtom } from './common.js';
16
16
  import { wrappedNativeCurrency } from '../../../lib/constants/weth.js';
17
17
  import { autoAddImportedTokenAtom } from '../../../tokens/state/addImportedTokenAtom.js';
18
18
  import { getLogger } from '../../logger.js';
19
19
  import { assert } from 'ts-essentials';
20
20
  import { bridgeInfosLoadedAtom } from '../../../hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js';
21
- import { isTradeMode } from '../../../lib/tradeMode.js';
21
+ import { isTradeMode, tradeModesWithCrosschain, tradeModesWithSide } from '../../../lib/tradeMode.js';
22
22
  import { enabledTradeModesFromConfigAtom, enabledTradeModesAtom } from '../../state/enabledTradeModesAtom.js';
23
- import { swapSideAtom } from '../../../components/widget/SwapModeSwitcher/state/swapSideAtom.js';
24
- import { currentSwapInputAtom } from '../../state/currentSwapInputAtom.js';
25
23
  import { getClosestTimeUnit } from '../../limit/state/utils.js';
26
24
 
27
25
  const formInputPropsAtom = atom({});
@@ -78,8 +76,9 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
78
76
  const srcChainId = formInputProps.srcChainId !== void 0 ? Number(formInputProps.srcChainId) : void 0;
79
77
  logger.log("using external props to set Widget form input", formInputProps);
80
78
  let destChainId = formInputProps.destChainId !== void 0 ? Number(formInputProps.destChainId) : void 0;
79
+ const currentTradeMode = get.peek(tradeModeAtom);
81
80
  let tokenToAddress = formInputProps.tokenToAddress;
82
- let selectedForm = formInputProps.selectedForm || "swap";
81
+ let selectedForm = formInputProps.selectedForm || currentTradeMode;
83
82
  if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {
84
83
  logger.warn("invalid, disabled or unavailable selectedForm provided", {
85
84
  selectedForm
@@ -90,14 +89,13 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
90
89
  const formAtoms = tradeModeToTokenAtoms[selectedForm];
91
90
  const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);
92
91
  const currentTokenTo = get.peek(formAtoms.tokenToAtom);
93
- const currentTradeMode = get.peek(tradeModeAtom);
94
92
  if (currentTradeMode !== selectedForm) {
95
93
  set(userTradeModeAtom, selectedForm);
96
94
  }
97
95
  let newTokenFrom;
98
96
  let newTokenTo;
99
97
  const defaultChainId = currentTokenFrom.network;
100
- if (selectedForm !== "swap" && selectedForm !== "limit") {
98
+ if (!tradeModesWithCrosschain.has(selectedForm)) {
101
99
  destChainId = srcChainId;
102
100
  }
103
101
  if (selectedForm === "otc" && tokenToAddress && isETHaddress(tokenToAddress)) {
@@ -157,48 +155,44 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
157
155
  const selectTokenToAtom = tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;
158
156
  set(selectTokenToAtom, newTokenTo);
159
157
  }
158
+ const currentSideAtom = tradeModeToSideAtom[selectedForm];
159
+ const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];
160
160
  let side = formInputProps.side;
161
- if (isValidSide(side)) {
162
- set(currentSwapInputAtom, sideToInputType[side]);
163
- } else {
164
- if (side) {
165
- logger.warn("invalid side provided, must be BUY or SELL", {
166
- side
167
- });
168
- }
169
- if (selectedForm === "swap") {
161
+ if (tradeModesWithSide.has(selectedForm)) {
162
+ if (isValidSide(side)) {
163
+ set(currentInputAtom, sideToInputType[side]);
164
+ } else {
165
+ if (side) {
166
+ logger.warn("invalid side provided, must be BUY or SELL", {
167
+ side
168
+ });
169
+ }
170
170
  if (sendAmount && !receiveAmount) {
171
171
  side = "SELL";
172
172
  } else if (receiveAmount && !sendAmount) {
173
173
  side = "BUY";
174
174
  } else {
175
- side = get.peek(swapSideAtom);
175
+ side = get.peek(currentSideAtom);
176
176
  }
177
- } else {
178
- side = get.peek(swapSideAtom);
179
177
  }
178
+ } else {
179
+ side = get.peek(currentSideAtom);
180
180
  }
181
181
  assert(isValidSide(side), "side must be BUY or SELL");
182
- const isSwap = selectedForm === "swap";
183
- const isLimitOrOtc = selectedForm === "limit" || selectedForm === "otc";
184
- const isSwapWithSell = isSwap && side === "SELL";
185
- const isSwapWithBuy = isSwap && side === "BUY";
186
- if (
187
- // given a valid sendAmount
188
- sendAmount && Number(sendAmount) >= 0 && // and the form is a swap with side=sell or limit or otc
189
- (isSwapWithSell || isLimitOrOtc)
190
- ) {
182
+ const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);
183
+ const isTradeModeWithoutSide = !isTradeModeWithSide;
184
+ const isSell = isTradeModeWithoutSide || isTradeModeWithSide && side === "SELL";
185
+ const isBuy = isTradeModeWithoutSide || isTradeModeWithSide && side === "BUY";
186
+ const sendAmountNotZero = sendAmount && Number(sendAmount) >= 0;
187
+ const receiveAmountNotZero = receiveAmount && Number(receiveAmount) >= 0;
188
+ if (sendAmountNotZero && isSell) {
191
189
  const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];
192
190
  const currentSendAmount = get.peek(formPayAmountAtom.read);
193
191
  if (currentSendAmount !== sendAmount) {
194
192
  set(formPayAmountAtom.write, sendAmount);
195
193
  }
196
194
  }
197
- if (
198
- // given a valid receiveAmount
199
- receiveAmount && Number(receiveAmount) >= 0 && // and the form is a swap with side=buy or limit or otc
200
- (isSwapWithBuy || isLimitOrOtc)
201
- ) {
195
+ if (receiveAmountNotZero && isBuy) {
202
196
  const formReceiveAmountAtom = tradeModeToReceiveAmountUnitAtom[selectedForm];
203
197
  const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);
204
198
  if (currentReceiveAmount !== receiveAmount) {
@@ -1 +1 @@
1
- {"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport {\n enabledTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use enabledTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const enabledTradeModes = get.peek(enabledTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\" && selectedForm !== \"limit\") {\n // swap and limit forms support crosschain,\n // force destChainId = srcChainId for any other form\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n let side = formInputProps.side;\n if (isValidSide(side)) {\n set(currentSwapInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n if (selectedForm === \"swap\") {\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current swap side if both or none amounts are given\n side = get.peek(swapSideAtom);\n }\n } else {\n // fallback to current swap side for non-swap forms\n side = get.peek(swapSideAtom);\n }\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n // given a valid sendAmount\n sendAmount &&\n Number(sendAmount) >= 0 &&\n // and the form is a swap with side=sell or limit or otc\n (isSwapWithSell || isLimitOrOtc)\n ) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (\n // given a valid receiveAmount\n receiveAmount &&\n Number(receiveAmount) >= 0 &&\n // and the form is a swap with side=buy or limit or otc\n (isSwapWithBuy || isLimitOrOtc)\n ) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModesFromConfigAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSwapInputAtom","sideToInputType","swapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
1
+ {"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n enabledTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use enabledTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const enabledTradeModes = get.peek(enabledTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"SELL\");\n const isBuy =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"BUY\");\n\n const sendAmountNotZero = sendAmount && Number(sendAmount) >= 0;\n const receiveAmountNotZero = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (sendAmountNotZero && isSell) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n // given a valid receiveAmount\n // and the form with side=buy or without side\n if (receiveAmountNotZero && isBuy) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModesFromConfigAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tradeModeAtom","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","tradeModesWithCrosschain","has","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSideAtom","tradeModeToSideAtom","currentInputAtom","tradeModeToCurrentInputAtom","tradeModesWithSide","sideToInputType","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","sendAmountNotZero","receiveAmountNotZero","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare function getClosestTimeUnit(timestampS: number): {
6
6
  readonly label: "never";
7
7
  readonly value: 0;
8
8
  } | {
9
- label: "minutes" | "days" | "hours" | "months";
9
+ label: "minutes" | "hours" | "days" | "months";
10
10
  value: number;
11
11
  };
12
12
  export declare function calculateReceiveAmount(payAmount: string, priceRates: PriceRates, isReversed: boolean): string;
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAmDlD,eAAO,MAAM,yBAAyB,GAAI,0CAIvC;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;CAC5B;;;;CAyCA,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,kBAoHF,CAAC"}
1
+ {"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAkDlD,eAAO,MAAM,yBAAyB,GAAI,0CAIvC;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;CAC5B;;;;CAwCA,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,kBAoHF,CAAC"}
@@ -67,7 +67,6 @@ const useSwapPriceForLimit = (t0) => {
67
67
  t6 = {
68
68
  priceParams: priceParamsWithAmount,
69
69
  chainId,
70
- timeout: 5e3,
71
70
  query: t5
72
71
  };
73
72
  $[8] = chainId;
@@ -158,7 +157,6 @@ const useDeltaSwapPriceForLimit = (t0) => {
158
157
  priceParams: t4,
159
158
  chainId,
160
159
  destChainId,
161
- timeout: 5e3,
162
160
  query: t5
163
161
  };
164
162
  $[8] = chainId;
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitRate.js","sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport { parseUnits, formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tradeModeToTokenAtoms } from \"../inputs/state/common\";\nimport { useMemo } from \"react\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n// 5 min, so as not to change limit price in front of the user too often\nconst PRICE_REFETCH_INTERVAL = 60_000 * 5;\n\nconst useSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = PRICE_REFETCH_INTERVAL,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const tokenFrom = useAtomValue(\n tradeModeToTokenAtoms[tradeMode].tokenFromAtom\n );\n const { priceParams, chainId } = usePricesParams(tradeMode);\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n amount: parseUnits(\"1\", tokenFrom.decimals).toString(),\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // @TODO: delta price return quote for less tokens than market price with srcAmount=1,\n // but maybe we should increase srcAmount and use delta prices instead, need to test.\n const { result: marketPriceQuery } = useMarketPriceQuery({\n priceParams: priceParamsWithAmount,\n chainId,\n timeout: 5000,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: marketPriceQuery.data,\n isLoading: marketPriceQuery.isLoading,\n };\n};\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const { priceParams, chainId, destChainId, isCrossChain } =\n usePricesParams(tradeMode);\n\n // should fetch delta price for crosschain limit order?\n const queryEnabled = enabled && tradeMode === \"limit\";\n\n const crosschainPriceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ...priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n const isLimitOrder = tradeMode === \"limit\";\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : undefined;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n },\n chainId,\n destChainId,\n timeout: 5000,\n query: {\n enabled: queryEnabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { data: tokenFromPrice, isLoading: isTokenFromPriceLoading } =\n useTokenPrice(tokenFrom, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n // for crosschain limit orders, use the delta price query to correctly set the starting price,\n // accounting for bridge fees, because ex. 1USDC=1USDT will never be possible\n const isCrosschainLOrder =\n tradeMode === \"limit\" && tokenTo && tokenTo.network !== tokenFrom.network;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice =\n !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({\n enabled: fetchSwapPrice,\n tradeMode,\n });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({\n enabled: isCrosschainLOrder,\n tradeMode,\n });\n\n const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading: isNonDeltaLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder) {\n if (!deltaCrosschainPrice) {\n return { isLoading: isDeltaCrosschainPriceLoading };\n }\n const srcUnits = formatUnits(\n BigInt(deltaCrosschainPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaCrosschainPrice.receivedDestAmount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n // for Crosschain price we care only about its loading state, not all others\n isLoading: isDeltaCrosschainPriceLoading,\n };\n } else if (fiatPricesAvailable) {\n if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\n }\n } else if (swapPrice) {\n const srcUnits = formatUnits(\n BigInt(swapPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n BigInt(swapPrice.destAmount),\n tokenTo.decimals\n );\n\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n if (!rate || !rateReversed) {\n return { isLoading: isNonDeltaLoading };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading: isNonDeltaLoading,\n };\n }, [\n fiatPricesAvailable,\n isNonDeltaLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\n isCrosschainLOrder,\n deltaCrosschainPrice,\n isDeltaCrosschainPriceLoading,\n ]);\n};\n"],"names":["PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","useAtomValue","tradeModeToTokenAtoms","tokenFromAtom","priceParams","chainId","usePricesParams","t3","decimals","parseUnits","toString","t4","amount","side","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","timeout","query","result","marketPriceQuery","useMarketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","deltaPriceQuery","useDeltaPriceQuery","error","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":"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"}
1
+ {"version":3,"file":"useLimitRate.js","sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport { parseUnits, formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tradeModeToTokenAtoms } from \"../inputs/state/common\";\nimport { useMemo } from \"react\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n// 5 min, so as not to change limit price in front of the user too often\nconst PRICE_REFETCH_INTERVAL = 60_000 * 5;\n\nconst useSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = PRICE_REFETCH_INTERVAL,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const tokenFrom = useAtomValue(\n tradeModeToTokenAtoms[tradeMode].tokenFromAtom\n );\n const { priceParams, chainId } = usePricesParams(tradeMode);\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n amount: parseUnits(\"1\", tokenFrom.decimals).toString(),\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // @TODO: delta price return quote for less tokens than market price with srcAmount=1,\n // but maybe we should increase srcAmount and use delta prices instead, need to test.\n const { result: marketPriceQuery } = useMarketPriceQuery({\n priceParams: priceParamsWithAmount,\n chainId,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: marketPriceQuery.data,\n isLoading: marketPriceQuery.isLoading,\n };\n};\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const { priceParams, chainId, destChainId, isCrossChain } =\n usePricesParams(tradeMode);\n\n // should fetch delta price for crosschain limit order?\n const queryEnabled = enabled && tradeMode === \"limit\";\n\n const crosschainPriceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ...priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n const isLimitOrder = tradeMode === \"limit\";\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : undefined;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n },\n chainId,\n destChainId,\n query: {\n enabled: queryEnabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { data: tokenFromPrice, isLoading: isTokenFromPriceLoading } =\n useTokenPrice(tokenFrom, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n // for crosschain limit orders, use the delta price query to correctly set the starting price,\n // accounting for bridge fees, because ex. 1USDC=1USDT will never be possible\n const isCrosschainLOrder =\n tradeMode === \"limit\" && tokenTo && tokenTo.network !== tokenFrom.network;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice =\n !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({\n enabled: fetchSwapPrice,\n tradeMode,\n });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({\n enabled: isCrosschainLOrder,\n tradeMode,\n });\n\n const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading: isNonDeltaLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder) {\n if (!deltaCrosschainPrice) {\n return { isLoading: isDeltaCrosschainPriceLoading };\n }\n const srcUnits = formatUnits(\n BigInt(deltaCrosschainPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaCrosschainPrice.receivedDestAmount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n // for Crosschain price we care only about its loading state, not all others\n isLoading: isDeltaCrosschainPriceLoading,\n };\n } else if (fiatPricesAvailable) {\n if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\n }\n } else if (swapPrice) {\n const srcUnits = formatUnits(\n BigInt(swapPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n BigInt(swapPrice.destAmount),\n tokenTo.decimals\n );\n\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n if (!rate || !rateReversed) {\n return { isLoading: isNonDeltaLoading };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading: isNonDeltaLoading,\n };\n }, [\n fiatPricesAvailable,\n isNonDeltaLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\n isCrosschainLOrder,\n deltaCrosschainPrice,\n isDeltaCrosschainPriceLoading,\n ]);\n};\n"],"names":["PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","useAtomValue","tradeModeToTokenAtoms","tokenFromAtom","priceParams","chainId","usePricesParams","t3","decimals","parseUnits","toString","t4","amount","side","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","query","result","marketPriceQuery","useMarketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","deltaPriceQuery","useDeltaPriceQuery","error","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitTokenToInputProps.js","sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtom, useAtomValue, useSetAtom } from \"@/core/store\";\nimport { limitReceiveInputAmountAtom } from \"./state/limitInputAmountAtom\";\nimport { setLimitReceiveAmountAtom } from \"./state/limitInputActionsAtom\";\nimport { useLogger } from \"../logger\";\nimport type { OnValueChange } from \"react-number-format\";\nimport { useDeltaSwapPriceForLimit, useLimitRate } from \"./useLimitRate\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport type { TokenInputExtraProps } from \"../inputs/hooks/types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useLimitInputClasses } from \"./useLimitTokenFromInputProps\";\nimport { selectLimitTokenToAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useLimitTokenFrom, useLimitTokenTo } from \"./state/limitTokenAtoms\";\nimport { useIsTokenSupportedInDeltaQuery } from \"@/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { useChainId } from \"wagmi\";\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { limitChainToAtom } from \"../state/chainToAtom\";\nimport type { BridgeInfoMode } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo\";\nimport {\n isUnsupportedTokenError,\n parseDeltaApiError,\n replaceUnsupportedTokenMessage,\n} from \"@/lib/utils/delta\";\nimport { isTruthy } from \"@/lib/utils\";\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useLimitTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = ({\n acrossMode,\n}: {\n acrossMode: BridgeInfoMode;\n}): TokenInputExtraProps => {\n const appChainId = useChainId();\n\n const [chainTo, setChainTo] = useAtom(limitChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: acrossMode,\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const setCurrentInput = useSetAtom(currentLimitInputAtom);\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: <span>Receive</span>,\n };\n};\n\nconst useTokenToAmountProps = (): Pick<\n TokenInputProps,\n \"amount\" | \"isLoading\" | \"token\" | \"onAmountChange\" | \"onTokenSelect\"\n> => {\n const logger = useLogger(\"Limit::TokenTo::AmountProps\");\n const tokenTo = useLimitTokenTo();\n\n const receiveAmount = useAtomValue(limitReceiveInputAmountAtom);\n const setReceiveAmount = useSetAtom(setLimitReceiveAmountAtom);\n\n const { isLoading } = useLimitRate(\"limit\");\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange::values\", values);\n setReceiveAmount(values.value);\n };\n\n const setTokenTo = useSetAtom(selectLimitTokenToAtom);\n\n return {\n amount: receiveAmount,\n isLoading,\n token: tokenTo,\n onAmountChange,\n onTokenSelect: setTokenTo,\n };\n};\n\ntype UnsupportedLimitTokensResult = {\n unsupportedTokens?: [Token, Token] | [Token];\n isLoading: boolean;\n};\n\nexport function useUnsupportedLimitTokens(): UnsupportedLimitTokensResult {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const { data: isDestTokenSupported, isLoading: isDestTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenTo?.address,\n chainId: tokenTo?.network || tokenFrom.network,\n });\n\n const { data: isSrcTokenSupported, isLoading: isSrcTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenFrom.address,\n chainId: tokenFrom.network,\n });\n\n const unsupportedTokens: Token[] = [];\n if (isSrcTokenSupported === false) {\n unsupportedTokens.push(tokenFrom);\n }\n if (isDestTokenSupported === false && tokenTo) {\n unsupportedTokens.push(tokenTo);\n }\n\n return {\n unsupportedTokens: isFilledArray(unsupportedTokens)\n ? (unsupportedTokens as UnsupportedLimitTokensResult[\"unsupportedTokens\"])\n : undefined,\n isLoading: isDestTokenSupportedLoading || isSrcTokenSupportedLoading,\n };\n}\n\nfunction useWarningMessage(): UnsupportedLimitTokensResult & {\n warningMessage?: string;\n} {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const isCrosschainLimitOrder =\n tokenFrom && tokenTo && tokenFrom.network !== tokenTo.network;\n\n const { error: limitPriceError } = useDeltaSwapPriceForLimit({\n // DeltaPrice is required for crosschain Limit orders only\n tradeMode: \"limit\",\n enabled: false, // get result only\n });\n\n const priceError = isCrosschainLimitOrder ? limitPriceError : undefined;\n const deltaPriceError = priceError && parseDeltaApiError(priceError);\n const deltaErrorToShow = deltaPriceError\n ? isUnsupportedTokenError(deltaPriceError)\n ? replaceUnsupportedTokenMessage(\n deltaPriceError.description,\n [tokenFrom, tokenTo].filter(isTruthy)\n )\n : deltaPriceError?.description\n : null;\n\n const { unsupportedTokens, isLoading } = useUnsupportedLimitTokens();\n const unsupportedTokensWarning = unsupportedTokens\n ? customUnsupportedTokenMessage(unsupportedTokens)\n : undefined;\n\n const warningMessage =\n unsupportedTokensWarning || deltaErrorToShow || undefined;\n return {\n warningMessage,\n unsupportedTokens,\n isLoading,\n };\n}\n\nexport const useLimitTokenToInputProps = (): TokenInputProps => {\n const extraAmountProps = useTokenToAmountProps();\n const extraProps = useExtraProps({ acrossMode: \"limit\" });\n const tokenBalanceUnit = useTokenToBalanceUnit();\n const classes = useLimitInputClasses();\n const { warningMessage } = useWarningMessage();\n\n return {\n ...extraProps,\n ...extraAmountProps,\n tokenBalanceUnit,\n classes,\n warningMessage,\n };\n};\n\nfunction customUnsupportedTokenMessage(\n tokens: Pick<Token, \"symbol\">[]\n): string | undefined {\n if (!isFilledArray(tokens)) {\n return;\n }\n if (tokens.length === 1) {\n return `Token ${tokens[0].symbol} is not supported for this order`;\n }\n\n const tokenSymbols = tokens.map((token) => token.symbol).join(\", \");\n return `Tokens ${tokenSymbols} are not supported for this order`;\n}\n"],"names":["useTokenToBalanceUnit","$","_c","tokenTo","useLimitTokenTo","t0","Symbol","for","refetchInterval","MEDIUM_STALE_TIME_FOR_REACTIVENESS","t1","token","queryOptions","balanceUnit","useTokenBalance","t2","toDecimalTrimmed","useExtraProps","acrossMode","appChainId","useChainId","chainTo","setChainTo","useAtom","limitChainToAtom","fromChainId","mode","selectableChains","useSelectableDestChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","useSetAtom","currentLimitInputAtom","t3","t4","t5","tokenType","onFocus","label","useTokenToAmountProps","logger","useLogger","receiveAmount","useAtomValue","limitReceiveInputAmountAtom","setReceiveAmount","setLimitReceiveAmountAtom","isLoading","useLimitRate","values","log","value","onAmountChange","setTokenTo","selectLimitTokenToAtom","amount","onTokenSelect","useUnsupportedLimitTokens","tokenFrom","useLimitTokenFrom","address","network","data","isDestTokenSupported","isDestTokenSupportedLoading","useIsTokenSupportedInDeltaQuery","isSrcTokenSupported","isSrcTokenSupportedLoading","unsupportedTokens","push","isFilledArray","t6","useWarningMessage","isCrosschainLimitOrder","tradeMode","enabled","error","limitPriceError","useDeltaSwapPriceForLimit","priceError","deltaPriceError","parseDeltaApiError","isUnsupportedTokenError","replaceUnsupportedTokenMessage","description","filter","isTruthy","deltaErrorToShow","customUnsupportedTokenMessage","unsupportedTokensWarning","warningMessage","useLimitTokenToInputProps","extraAmountProps","extraProps","tokenBalanceUnit","classes","useLimitInputClasses","tokens","symbol","tokenSymbols","map","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAMA,wBAAwBA,MAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAC5B,EAAA,MAAAC,UAAgBC,eAAAA,EAAgB;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAK,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAIlBF,IAAAA,EAAAA,GAAA;AAAA,MAAAG,eAAAA,EAAmBC;AAAAA,KAAmC;AAACR,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAS,EAAAA;AAAA,EAAA,IAAAT,CAAAA,QAAAE,OAAAA,EAAA;AAF/BO,IAAAA,EAAAA,GAAA;AAAA,MAAAC,KAAAA,EAC/BR,OAAAA;AAAAA,MAAOS,YAAAA,EACAP;AAAAA,KAChB;AAACJ,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAA;AAAA,IAAAY;AAAAA,GAAA,GAAwBC,gBAAgBJ,EAGvC,CAAA;AAAE,EAAA,IAAAK,EAAAA;AAAA,EAAA,IAAAd,CAAAA,QAAAY,WAAAA,EAAA;AAEIE,IAAAA,EAAAA,GAAAC,iBAAiBH,WAAW,CAAA;AAACZ,IAAAA,CAAAA,MAAAY,WAAAA;AAAAZ,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAA7Bc,EAAAA;AAA6B,CAAA;AAGtC,MAAME,gBAAgBZ,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAJ,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAgB;AAAAA,GAAA,GAAAb,EAAAA;AAKrB,EAAA,MAAAc,aAAmBC,UAAAA,EAAW;AAE9B,EAAA,MAAA,CAAAC,OAAAA,EAAAC,UAAA,CAAA,GAA8BC,QAAQC,gBAAgB,CAAA;AAAE,EAAA,IAAAd,EAAAA;AAAA,EAAA,IAAAT,EAAA,CAAA,CAAA,KAAAiB,cAAAjB,CAAAA,QAAAkB,UAAAA,EAAA;AAEHT,IAAAA,EAAAA,GAAA;AAAA,MAAAe,WAAAA,EACtCN,UAAAA;AAAAA,MAAUO,IAAAA,EACjBR;AAAAA,KACR;AAACjB,IAAAA,CAAAA,MAAAiB,UAAAA;AAAAjB,IAAAA,CAAAA,MAAAkB,UAAAA;AAAAlB,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAA;AAAA,IAAA0B;AAAAA,GAAA,GAA6BC,wBAAwBlB,EAGpD,CAAA;AAED,EAAA,MAAAmB,sBAA4BR,OAAAA,KAAYS,MAAAA;AAAU,EAAA,IAAAf,EAAAA;AAAA,EAAA,IAAAd,CAAAA,CAAA,CAAA,CAAA,KAAAoB,OAAAA,IAAApB,EAAA,CAAA,CAAA,KAAA0B,gBAAAA,IAAA1B,CAAAA,CAAA,CAAA,CAAA,KAAAqB,UAAAA,IAAArB,CAAAA,QAAA4B,mBAAAA,EAAA;AAErBd,IAAAA,EAAAA,GAAAc,mBAAAA,GAAA;AAAA,MAAAE,QAAAA,EAEbJ,gBAAAA;AAAAA,MAAgBK,eAAAA,EACTX,OAAAA;AAAAA,MAAOY,SAAAA,EACb,KAAA;AAAA,MAAKC,QAAAA,EACNC,CAAAA,OAAAA,KACRA,OAAAA,KAAY,KAAA,IAASb,WAAWa,OAAO,CAAA;AAAA,MAACC,QAAAA,EAChCT,iBAAgBU,MAAAA,IAAW;AAAA,KAE/B,GATiBP,MAAAA;AAShB7B,IAAAA,CAAAA,MAAAoB,OAAAA;AAAApB,IAAAA,CAAAA,MAAA0B,gBAAAA;AAAA1B,IAAAA,CAAAA,MAAAqB,UAAAA;AAAArB,IAAAA,CAAAA,MAAA4B,mBAAAA;AAAA5B,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AATb,EAAA,MAAAqC,oBAAAA,GAA6BvB,EAAAA;AAW7B,EAAA,MAAAwB,eAAAA,GAAwBC,WAAWC,qBAAqB,CAAA;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAzC,CAAAA,QAAAsC,eAAAA,EAAA;AAK/CG,IAAAA,EAAAA,GAAAA,MAAMH,gBAAgB,IAAI,CAAA;AAACtC,IAAAA,CAAAA,MAAAsC,eAAAA;AAAAtC,IAAAA,CAAAA,MAAAyC,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAzC,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA0C,EAAAA;AAAA,EAAA,IAAA1C,EAAA,EAAA,CAAA,KAAAK,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAC7BoC,IAAAA,EAAAA,mBAAA,GAAA,CAAA,UAAM,QAAA,EAAA,SAAA,EAAO,CAAA;AAAO1C,IAAAA,CAAAA,OAAA0C,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA1C,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA2C,EAAAA;AAAA,EAAA,IAAA3C,EAAA,EAAA,CAAA,KAAAqC,wBAAArC,CAAAA,SAAAyC,EAAAA,EAAA;AAJtBE,IAAAA,EAAAA,GAAA;AAAA,MAAAN,oBAAAA;AAAAA,MAAAO,SAAAA,EAEM,IAAA;AAAA,MAAaC,OAAAA,EACfJ,EAAAA;AAAAA,MAA2BK,KAAAA,EAC7BJ;AAAAA,KACT;AAAC1C,IAAAA,CAAAA,OAAAqC,oBAAAA;AAAArC,IAAAA,CAAAA,OAAAyC,EAAAA;AAAAzC,IAAAA,CAAAA,OAAA2C,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA3C,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OALM2C,EAAAA;AAKN,CAAA;AAGH,MAAMI,wBAAwBA,MAAA;AAAA,EAAA,MAAA/C,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAI5B,EAAA,MAAA+C,MAAAA,GAAeC,UAAU,6BAA6B,CAAA;AACtD,EAAA,MAAA/C,UAAgBC,eAAAA,EAAgB;AAEhC,EAAA,MAAA+C,aAAAA,GAAsBC,aAAaC,2BAA2B,CAAA;AAC9D,EAAA,MAAAC,gBAAAA,GAAyBd,WAAWe,yBAAyB,CAAA;AAE7D,EAAA,MAAA;AAAA,IAAAC;AAAAA,GAAA,GAAsBC,aAAa,OAAO,CAAA;AAAE,EAAA,IAAApD,EAAAA;AAAA,EAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAgD,UAAAhD,CAAAA,QAAAqD,gBAAAA,EAAA;AAENjD,IAAAA,EAAAA,GAAAqD,CAAAA,MAAAA,KAAA;AACpCT,MAAAA,MAAAA,CAAMU,GAAAA,CAAK,0BAA0BD,MAAM,CAAA;AAC3CJ,MAAAA,gBAAAA,CAAiBI,OAAME,KAAM,CAAA;AAAA,IAAC,CAAA;AAC/B3D,IAAAA,CAAAA,MAAAgD,MAAAA;AAAAhD,IAAAA,CAAAA,MAAAqD,gBAAAA;AAAArD,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAA4D,cAAAA,GAAsCxD,EAAAA;AAKtC,EAAA,MAAAyD,UAAAA,GAAmBtB,WAAWuB,sBAAsB,CAAA;AAAE,EAAA,IAAArD,EAAAA;AAAA,EAAA,IAAAT,EAAA,CAAA,CAAA,KAAAuD,aAAAvD,CAAAA,CAAA,CAAA,MAAA4D,cAAAA,IAAA5D,CAAAA,CAAA,CAAA,CAAA,KAAAkD,aAAAA,IAAAlD,EAAA,CAAA,CAAA,KAAA6D,cAAA7D,CAAAA,QAAAE,OAAAA,EAAA;AAE/CO,IAAAA,EAAAA,GAAA;AAAA,MAAAsD,MAAAA,EACGb,aAAAA;AAAAA,MAAaK,SAAAA;AAAAA,MAAA7C,KAAAA,EAEdR,OAAAA;AAAAA,MAAO0D,cAAAA;AAAAA,MAAAI,aAAAA,EAECH;AAAAA,KACjB;AAAC7D,IAAAA,CAAAA,MAAAuD,SAAAA;AAAAvD,IAAAA,CAAAA,MAAA4D,cAAAA;AAAA5D,IAAAA,CAAAA,MAAAkD,aAAAA;AAAAlD,IAAAA,CAAAA,MAAA6D,UAAAA;AAAA7D,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OANMS,EAAAA;AAMN,CAAA;AAQI,SAAAwD,yBAAAA,GAAA;AAAA,EAAA,MAAAjE,CAAAA,GAAAC,cAAA,EAAA,CAAA;AACL,EAAA,MAAAC,UAAgBC,eAAAA,EAAgB;AAChC,EAAA,MAAA+D,YAAkBC,iBAAAA,EAAkB;AAIzB,EAAA,MAAA/D,KAAAF,OAAAA,EAAOkE,OAAAA;AACL,EAAA,MAAA3D,EAAAA,GAAAP,OAAAA,EAAOmE,OAAAA,IAAaH,SAAAA,CAASG,OAAAA;AAAQ,EAAA,IAAAvD,EAAAA;AAAA,EAAA,IAAAd,EAAA,CAAA,CAAA,KAAAI,MAAAJ,CAAAA,QAAAS,EAAAA,EAAA;AAFhBK,IAAAA,EAAAA,GAAA;AAAA,MAAAJ,KAAAA,EACvBN,EAAAA;AAAAA,MAAgB8B,OAAAA,EACdzB;AAAAA,KACX;AAACT,IAAAA,CAAAA,MAAAI,EAAAA;AAAAJ,IAAAA,CAAAA,MAAAS,EAAAA;AAAAT,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AAJH,EAAA,MAAA;AAAA,IAAAsE,IAAAA,EAAAC,oBAAAA;AAAAA,IAAAhB,SAAAA,EAAAiB;AAAAA,GAAA,GACEC,gCAAgC3D,EAG/B,CAAA;AAAE,EAAA,IAAA2B,EAAAA;AAAA,EAAA,IAAAzC,CAAAA,CAAA,CAAA,CAAA,KAAAkE,SAAAA,CAAAE,WAAApE,CAAAA,CAAA,CAAA,CAAA,KAAAkE,SAAAA,CAAAG,OAAAA,EAAA;AAG6B5B,IAAAA,EAAAA,GAAA;AAAA,MAAA/B,OACvBwD,SAAAA,CAASE,OAAAA;AAAAA,MAAQlC,SACfgC,SAAAA,CAASG;AAAAA,KACpB;AAACrE,IAAAA,CAAAA,CAAA,CAAA,IAAAkE,SAAAA,CAAAE,OAAAA;AAAApE,IAAAA,CAAAA,CAAA,CAAA,IAAAkE,SAAAA,CAAAG,OAAAA;AAAArE,IAAAA,CAAAA,MAAAyC,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAzC,EAAA,CAAA,CAAA;AAAA,EAAA;AAJH,EAAA,MAAA;AAAA,IAAAsE,IAAAA,EAAAI,mBAAAA;AAAAA,IAAAnB,SAAAA,EAAAoB;AAAAA,GAAA,GACEF,gCAAgChC,EAG/B,CAAA;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAA1C,CAAAA,CAAA,CAAA,CAAA,KAAAuE,oBAAAA,IAAAvE,EAAA,CAAA,CAAA,KAAA0E,mBAAAA,IAAA1E,CAAAA,CAAA,CAAA,CAAA,KAAAkE,SAAAA,IAAAlE,CAAAA,QAAAE,OAAAA,EAAA;AAEL,IAAA,MAAA0E,oBAAmC,EAAA;AACnC,IAAA,IAAIF,wBAAwB,KAAA,EAAK;AAC/BE,MAAAA,iBAAAA,CAAiBC,KAAMX,SAAS,CAAA;AAAA,IAAC;AAEnC,IAAA,IAAIK,oBAAAA,KAAyB,SAAzBrE,OAAAA,EAAyC;AAC3C0E,MAAAA,iBAAAA,CAAiBC,KAAM3E,OAAO,CAAA;AAAA,IAAC;AAIZwC,IAAAA,EAAAA,GAAAoC,aAAAA,CAAcF,iBAErB,CAAA,GADPA,iBAAAA,GADc/C,MAAAA;AAEN7B,IAAAA,CAAAA,MAAAuE,oBAAAA;AAAAvE,IAAAA,CAAAA,MAAA0E,mBAAAA;AAAA1E,IAAAA,CAAAA,MAAAkE,SAAAA;AAAAlE,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,OAAA0C,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA1C,EAAA,EAAA,CAAA;AAAA,EAAA;AACF,EAAA,MAAA2C,KAAA6B,2BAAAA,IAAAG,0BAAAA;AAAyD,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAA/E,EAAA,EAAA,CAAA,KAAA0C,MAAA1C,CAAAA,SAAA2C,EAAAA,EAAA;AAJ/DoC,IAAAA,EAAAA,GAAA;AAAA,MAAAH,iBAAAA,EACclC,EAAAA;AAAAA,MAENa,SAAAA,EACFZ;AAAAA,KACb;AAAC3C,IAAAA,CAAAA,OAAA0C,EAAAA;AAAA1C,IAAAA,CAAAA,OAAA2C,EAAAA;AAAA3C,IAAAA,CAAAA,OAAA+E,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA/E,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OALM+E,EAAAA;AAKN;AAGH,SAAAC,iBAAAA,GAAA;AAAA,EAAA,MAAAhF,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAGE,EAAA,MAAAC,UAAgBC,eAAAA,EAAgB;AAChC,EAAA,MAAA+D,YAAkBC,iBAAAA,EAAkB;AAEpC,EAAA,MAAAc,sBAAAA,GACEf,SAAAA,IAAAhE,OAAAA,IAAwBgE,SAAAA,CAASG,YAAanE,OAAAA,CAAOmE,OAAAA;AAAS,EAAA,IAAAjE,EAAAA;AAAA,EAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAK,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAEHF,IAAAA,EAAAA,GAAA;AAAA,MAAA8E,SAAAA,EAEhD,OAAA;AAAA,MAAOC,OAAAA,EACT;AAAA,KACX;AAACnF,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA,EAAA;AAJD,EAAA,MAAA;AAAA,IAAAoF,KAAAA,EAAAC;AAAAA,GAAA,GAAmCC,0BAA0BlF,EAI5D,CAAA;AAED,EAAA,MAAAmF,UAAAA,GAAmBN,yBAAAI,eAAAA,GAAAxD,MAAAA;AAAqD,EAAA,IAAApB,EAAAA;AAAA,EAAA,IAAAT,CAAAA,CAAA,CAAA,CAAA,KAAAuF,UAAAA,IAAAvF,CAAAA,QAAAkE,SAAAA,IAAAlE,CAAAA,CAAA,CAAA,CAAA,KAAAE,OAAAA,EAAA;AACxE,IAAA,MAAAsF,eAAAA,GAAwBD,UAAAA,IAAcE,kBAAAA,CAAmBF,UAAU,CAAA;AAC1C9E,IAAAA,EAAAA,GAAA+E,kBACrBE,uBAAAA,CAAwBF,eAKK,CAAA,GAJ3BG,8BAAAA,CACEH,gBAAeI,WAAAA,EACf,CAAC1B,SAAAA,EAAWhE,OAAO,EAAC2F,MAAAA,CAAQC,QAAQ,CAEX,CAAA,GAA3BN,iBAAeI,WAAAA,GANI,IAAA;AAOjB5F,IAAAA,CAAAA,MAAAuF,UAAAA;AAAAvF,IAAAA,CAAAA,MAAAkE,SAAAA;AAAAlE,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AAPR,EAAA,MAAA+F,gBAAAA,GAAyBtF,EAAAA;AASzB,EAAA,MAAA;AAAA,IAAAmE,iBAAAA;AAAAA,IAAArB;AAAAA,MAAyCU,yBAAAA,EAA0B;AAAE,EAAA,IAAAnD,EAAAA;AAAA,EAAA,IAAAd,CAAAA,QAAA4E,iBAAAA,EAAA;AACpC9D,IAAAA,EAAAA,GAAA8D,iBAAAA,GAC7BoB,6BAAAA,CAA8BpB,iBACtB,CAAA,GAFqB/C,MAAAA;AAEpB7B,IAAAA,CAAAA,MAAA4E,iBAAAA;AAAA5E,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AAFb,EAAA,MAAAiG,wBAAAA,GAAiCnF,EAAAA;AAIjC,EAAA,MAAAoF,cAAAA,GACED,4BAAAF,gBAAAA,IAAAlE,MAAAA;AAA0D,EAAA,IAAAY,EAAAA;AAAA,EAAA,IAAAzC,CAAAA,CAAA,CAAA,CAAA,KAAAuD,SAAAA,IAAAvD,CAAAA,QAAA4E,iBAAAA,IAAA5E,CAAAA,CAAA,CAAA,CAAA,KAAAkG,cAAAA,EAAA;AACrDzD,IAAAA,EAAAA,GAAA;AAAA,MAAAyD,cAAAA;AAAAA,MAAAtB,iBAAAA;AAAAA,MAAArB;AAAAA,KAIP;AAACvD,IAAAA,CAAAA,MAAAuD,SAAAA;AAAAvD,IAAAA,CAAAA,MAAA4E,iBAAAA;AAAA5E,IAAAA,CAAAA,MAAAkG,cAAAA;AAAAlG,IAAAA,CAAAA,OAAAyC,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAzC,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAJMyC,EAAAA;AAIN;AAGI,MAAM0D,4BAA4BA,MAAA;AAAA,EAAA,MAAAnG,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACvC,EAAA,MAAAmG,mBAAyBrD,qBAAAA,EAAsB;AAAE,EAAA,IAAA3C,EAAAA;AAAA,EAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAK,MAAAA,CAAAC,GAAAA,CAAA,2BAAA,CAAA,EAAA;AAChBF,IAAAA,EAAAA,GAAA;AAAA,MAAAa,UAAAA,EAAc;AAAA,KAAQ;AAACjB,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA,EAAA;AAAxD,EAAA,MAAAqG,UAAAA,GAAmBrF,cAAcZ,EAAuB,CAAA;AACxD,EAAA,MAAAkG,mBAAyBvG,qBAAAA,EAAsB;AAC/C,EAAA,MAAAwG,UAAgBC,oBAAAA,EAAqB;AACrC,EAAA,MAAA;AAAA,IAAAN;AAAAA,MAA2BlB,iBAAAA,EAAkB;AAAE,EAAA,IAAAvE,EAAAA;AAAA,EAAA,IAAAT,EAAA,CAAA,CAAA,KAAAuG,WAAAvG,CAAAA,CAAA,CAAA,MAAAoG,gBAAAA,IAAApG,CAAAA,CAAA,CAAA,CAAA,KAAAqG,UAAAA,IAAArG,EAAA,CAAA,CAAA,KAAAsG,oBAAAtG,CAAAA,QAAAkG,cAAAA,EAAA;AAExCzF,IAAAA,EAAAA,GAAA;AAAA,MAAA,GACF4F,UAAAA;AAAAA,MAAU,GACVD,gBAAAA;AAAAA,MAAgBE,gBAAAA;AAAAA,MAAAC,OAAAA;AAAAA,MAAAL;AAAAA,KAIrB;AAAClG,IAAAA,CAAAA,MAAAuG,OAAAA;AAAAvG,IAAAA,CAAAA,MAAAoG,gBAAAA;AAAApG,IAAAA,CAAAA,MAAAqG,UAAAA;AAAArG,IAAAA,CAAAA,MAAAsG,gBAAAA;AAAAtG,IAAAA,CAAAA,MAAAkG,cAAAA;AAAAlG,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OANMS,EAAAA;AAMN;AAGH,SAASuF,8BACPS,MAAAA,EACoB;AACpB,EAAA,IAAI,CAAC3B,aAAAA,CAAc2B,MAAM,CAAA,EAAG;AAC1B,IAAA;AAAA,EACF;AACA,EAAA,IAAIA,MAAAA,CAAOrE,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,CAAA,MAAA,EAASqE,MAAAA,CAAO,CAAC,CAAA,CAAEC,MAAM,CAAA,gCAAA,CAAA;AAAA,EAClC;AAEA,EAAA,MAAMC,YAAAA,GAAeF,OAAOG,GAAAA,CAAKlG,CAAAA,KAAAA,KAAUA,MAAMgG,MAAM,CAAA,CAAEG,KAAK,IAAI,CAAA;AAClE,EAAA,OAAO,UAAUF,YAAY,CAAA,iCAAA,CAAA;AAC/B;;;;"}
1
+ {"version":3,"file":"useLimitTokenToInputProps.js","sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtom, useAtomValue, useSetAtom } from \"@/core/store\";\nimport { limitReceiveInputAmountAtom } from \"./state/limitInputAmountAtom\";\nimport { setLimitReceiveAmountAtom } from \"./state/limitInputActionsAtom\";\nimport { useLogger } from \"../logger\";\nimport type { OnValueChange } from \"react-number-format\";\nimport { useDeltaSwapPriceForLimit, useLimitRate } from \"./useLimitRate\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport type { TokenInputExtraProps } from \"../inputs/hooks/types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useLimitInputClasses } from \"./useLimitTokenFromInputProps\";\nimport { selectLimitTokenToAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useLimitTokenFrom, useLimitTokenTo } from \"./state/limitTokenAtoms\";\nimport { useIsTokenSupportedInDeltaQuery } from \"@/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { useChainId } from \"wagmi\";\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { limitChainToAtom } from \"../state/chainToAtom\";\nimport type { BridgeInfoMode } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/types\";\nimport {\n isUnsupportedTokenError,\n parseDeltaApiError,\n replaceUnsupportedTokenMessage,\n} from \"@/lib/utils/delta\";\nimport { isTruthy } from \"@/lib/utils\";\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useLimitTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = ({\n acrossMode,\n}: {\n acrossMode: BridgeInfoMode;\n}): TokenInputExtraProps => {\n const appChainId = useChainId();\n\n const [chainTo, setChainTo] = useAtom(limitChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: acrossMode,\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const setCurrentInput = useSetAtom(currentLimitInputAtom);\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: <span>Receive</span>,\n };\n};\n\nconst useTokenToAmountProps = (): Pick<\n TokenInputProps,\n \"amount\" | \"isLoading\" | \"token\" | \"onAmountChange\" | \"onTokenSelect\"\n> => {\n const logger = useLogger(\"Limit::TokenTo::AmountProps\");\n const tokenTo = useLimitTokenTo();\n\n const receiveAmount = useAtomValue(limitReceiveInputAmountAtom);\n const setReceiveAmount = useSetAtom(setLimitReceiveAmountAtom);\n\n const { isLoading } = useLimitRate(\"limit\");\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange::values\", values);\n setReceiveAmount(values.value);\n };\n\n const setTokenTo = useSetAtom(selectLimitTokenToAtom);\n\n return {\n amount: receiveAmount,\n isLoading,\n token: tokenTo,\n onAmountChange,\n onTokenSelect: setTokenTo,\n };\n};\n\ntype UnsupportedLimitTokensResult = {\n unsupportedTokens?: [Token, Token] | [Token];\n isLoading: boolean;\n};\n\nexport function useUnsupportedLimitTokens(): UnsupportedLimitTokensResult {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const { data: isDestTokenSupported, isLoading: isDestTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenTo?.address,\n chainId: tokenTo?.network || tokenFrom.network,\n });\n\n const { data: isSrcTokenSupported, isLoading: isSrcTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenFrom.address,\n chainId: tokenFrom.network,\n });\n\n const unsupportedTokens: Token[] = [];\n if (isSrcTokenSupported === false) {\n unsupportedTokens.push(tokenFrom);\n }\n if (isDestTokenSupported === false && tokenTo) {\n unsupportedTokens.push(tokenTo);\n }\n\n return {\n unsupportedTokens: isFilledArray(unsupportedTokens)\n ? (unsupportedTokens as UnsupportedLimitTokensResult[\"unsupportedTokens\"])\n : undefined,\n isLoading: isDestTokenSupportedLoading || isSrcTokenSupportedLoading,\n };\n}\n\nfunction useWarningMessage(): UnsupportedLimitTokensResult & {\n warningMessage?: string;\n} {\n const tokenTo = useLimitTokenTo();\n const tokenFrom = useLimitTokenFrom();\n\n const isCrosschainLimitOrder =\n tokenFrom && tokenTo && tokenFrom.network !== tokenTo.network;\n\n const { error: limitPriceError } = useDeltaSwapPriceForLimit({\n // DeltaPrice is required for crosschain Limit orders only\n tradeMode: \"limit\",\n enabled: false, // get result only\n });\n\n const priceError = isCrosschainLimitOrder ? limitPriceError : undefined;\n const deltaPriceError = priceError && parseDeltaApiError(priceError);\n const deltaErrorToShow = deltaPriceError\n ? isUnsupportedTokenError(deltaPriceError)\n ? replaceUnsupportedTokenMessage(\n deltaPriceError.description,\n [tokenFrom, tokenTo].filter(isTruthy)\n )\n : deltaPriceError?.description\n : null;\n\n const { unsupportedTokens, isLoading } = useUnsupportedLimitTokens();\n const unsupportedTokensWarning = unsupportedTokens\n ? customUnsupportedTokenMessage(unsupportedTokens)\n : undefined;\n\n const warningMessage =\n unsupportedTokensWarning || deltaErrorToShow || undefined;\n return {\n warningMessage,\n unsupportedTokens,\n isLoading,\n };\n}\n\nexport const useLimitTokenToInputProps = (): TokenInputProps => {\n const extraAmountProps = useTokenToAmountProps();\n const extraProps = useExtraProps({ acrossMode: \"limit\" });\n const tokenBalanceUnit = useTokenToBalanceUnit();\n const classes = useLimitInputClasses();\n const { warningMessage } = useWarningMessage();\n\n return {\n ...extraProps,\n ...extraAmountProps,\n tokenBalanceUnit,\n classes,\n warningMessage,\n };\n};\n\nfunction customUnsupportedTokenMessage(\n tokens: Pick<Token, \"symbol\">[]\n): string | undefined {\n if (!isFilledArray(tokens)) {\n return;\n }\n if (tokens.length === 1) {\n return `Token ${tokens[0].symbol} is not supported for this order`;\n }\n\n const tokenSymbols = tokens.map((token) => token.symbol).join(\", \");\n return `Tokens ${tokenSymbols} are not supported for this order`;\n}\n"],"names":["useTokenToBalanceUnit","$","_c","tokenTo","useLimitTokenTo","t0","Symbol","for","refetchInterval","MEDIUM_STALE_TIME_FOR_REACTIVENESS","t1","token","queryOptions","balanceUnit","useTokenBalance","t2","toDecimalTrimmed","useExtraProps","acrossMode","appChainId","useChainId","chainTo","setChainTo","useAtom","limitChainToAtom","fromChainId","mode","selectableChains","useSelectableDestChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","useSetAtom","currentLimitInputAtom","t3","t4","t5","tokenType","onFocus","label","useTokenToAmountProps","logger","useLogger","receiveAmount","useAtomValue","limitReceiveInputAmountAtom","setReceiveAmount","setLimitReceiveAmountAtom","isLoading","useLimitRate","values","log","value","onAmountChange","setTokenTo","selectLimitTokenToAtom","amount","onTokenSelect","useUnsupportedLimitTokens","tokenFrom","useLimitTokenFrom","address","network","data","isDestTokenSupported","isDestTokenSupportedLoading","useIsTokenSupportedInDeltaQuery","isSrcTokenSupported","isSrcTokenSupportedLoading","unsupportedTokens","push","isFilledArray","t6","useWarningMessage","isCrosschainLimitOrder","tradeMode","enabled","error","limitPriceError","useDeltaSwapPriceForLimit","priceError","deltaPriceError","parseDeltaApiError","isUnsupportedTokenError","replaceUnsupportedTokenMessage","description","filter","isTruthy","deltaErrorToShow","customUnsupportedTokenMessage","unsupportedTokensWarning","warningMessage","useLimitTokenToInputProps","extraAmountProps","extraProps","tokenBalanceUnit","classes","useLimitInputClasses","tokens","symbol","tokenSymbols","map","join"],"mappings":"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"}
@@ -2,4 +2,6 @@ export declare const swapChainToAtom: import('jotai').WritableAtom<1 | 10 | 137
2
2
  export declare const useSwapChainTo: () => 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined;
3
3
  export declare const limitChainToAtom: import('jotai').WritableAtom<1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined, [newChainTo: 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130], void>;
4
4
  export declare const useLimitChainTo: () => 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined;
5
+ export declare const twapChainToAtom: import('jotai').WritableAtom<1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined, [newChainTo: 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130], void>;
6
+ export declare const useTwapChainTo: () => 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined;
5
7
  //# sourceMappingURL=chainToAtom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainToAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/chainToAtom.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,eAAe,0KAmC3B,CAAC;AAEF,eAAO,MAAM,cAAc,wEAE1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,0KAmC5B,CAAC;AAEF,eAAO,MAAM,eAAe,wEAE3B,CAAC"}
1
+ {"version":3,"file":"chainToAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/chainToAtom.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,eAAe,0KAkC3B,CAAC;AAEF,eAAO,MAAM,cAAc,wEAE1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,0KAmC5B,CAAC;AAEF,eAAO,MAAM,eAAe,wEAE3B,CAAC;AAEF,eAAO,MAAM,eAAe,0KA4B3B,CAAC;AAEF,eAAO,MAAM,cAAc,wEAE1B,CAAC"}
@@ -7,13 +7,13 @@ import { areTokensSame } from '../../tokens/utils/areTokensSame.js';
7
7
  import { setSwapModeAtom } from '../../components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js';
8
8
  import { allTokensByChainAtom } from '../../tokens/state/allTokensByChainAtom.js';
9
9
  import { limitTokenToAtom, limitTokenFromAtom } from '../limit/state/limitTokenAtoms.js';
10
+ import { twapTokenToAtom, twapTokenFromAtom } from '../twap/state/twapTokenAtoms.js';
10
11
 
11
12
  const swapChainToAtom = atom(
12
13
  // chainTo always follows tokenTo network (either SupportedChainId or undefined)
13
14
  (get) => get(swapTokenToAtom)?.network,
14
15
  // set(chainToAtom) = (chainTo) => set(tokenToAtom to default token for that chain)
15
16
  (get, set, newChainTo) => {
16
- const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(newChainTo, "swap");
17
17
  const tokenFrom = get(swapTokenFromAtom);
18
18
  const srcChainId = tokenFrom.network;
19
19
  if (srcChainId !== newChainTo) {
@@ -26,6 +26,7 @@ const swapChainToAtom = atom(
26
26
  set(swapTokenToAtom, maybeAcrossToken);
27
27
  set(setSwapModeAtom, "delta");
28
28
  } else {
29
+ const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(newChainTo, "swap");
29
30
  const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo) ? defaultTokenFrom : defaultTokenTo;
30
31
  set(swapTokenToAtom, newTokenTo);
31
32
  }
@@ -39,11 +40,6 @@ const limitChainToAtom = atom(
39
40
  (get) => get(limitTokenToAtom)?.network,
40
41
  // set(chainToAtom) = (chainTo) => set(tokenToAtom to default token for that chain)
41
42
  (get, set, newChainTo) => {
42
- const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(
43
- newChainTo,
44
- "limit"
45
- // @TODO check that default tokenTo can be crosschain swapped
46
- );
47
43
  const tokenFrom = get(limitTokenFromAtom);
48
44
  const srcChainId = tokenFrom.network;
49
45
  if (srcChainId !== newChainTo) {
@@ -55,6 +51,11 @@ const limitChainToAtom = atom(
55
51
  });
56
52
  set(limitTokenToAtom, maybeAcrossToken);
57
53
  } else {
54
+ const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(
55
+ newChainTo,
56
+ "limit"
57
+ // @TODO check that default tokenTo can be crosschain swapped
58
+ );
58
59
  const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo) ? defaultTokenFrom : defaultTokenTo;
59
60
  set(limitTokenToAtom, newTokenTo);
60
61
  }
@@ -63,6 +64,26 @@ const limitChainToAtom = atom(
63
64
  const useLimitChainTo = () => {
64
65
  return useAtomValue(limitChainToAtom);
65
66
  };
67
+ const twapChainToAtom = atom((get) => get(twapTokenToAtom)?.network, (get, set, newChainTo) => {
68
+ const tokenFrom = get(twapTokenFromAtom);
69
+ const srcChainId = tokenFrom.network;
70
+ if (srcChainId !== newChainTo) {
71
+ const maybeAcrossToken = findFirstTokenFromAcross({
72
+ fromChainId: srcChainId,
73
+ toChainId: newChainTo,
74
+ listByChainId: get(allTokensByChainAtom).listByChainId,
75
+ mode: "twap"
76
+ });
77
+ set(twapTokenToAtom, maybeAcrossToken);
78
+ } else {
79
+ const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(newChainTo, "twap");
80
+ const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo) ? defaultTokenFrom : defaultTokenTo;
81
+ set(twapTokenToAtom, newTokenTo);
82
+ }
83
+ });
84
+ const useTwapChainTo = () => {
85
+ return useAtomValue(twapChainToAtom);
86
+ };
66
87
 
67
- export { limitChainToAtom, swapChainToAtom, useLimitChainTo, useSwapChainTo };
88
+ export { limitChainToAtom, swapChainToAtom, twapChainToAtom, useLimitChainTo, useSwapChainTo, useTwapChainTo };
68
89
  //# sourceMappingURL=chainToAtom.js.map