@velora-dex/widget 0.8.3 → 0.8.4-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
  2. package/dist/components/widget/AppHeader/Activities/hooks.js +51 -51
  3. package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
  4. package/dist/components/widget/AppHeader/Activities/utils.d.ts +3 -3
  5. package/dist/components/widget/AppHeader/Activities/utils.d.ts.map +1 -1
  6. package/dist/components/widget/AppHeader/Activities/utils.js +25 -26
  7. package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
  8. package/dist/components/widget/BridgeList/hooks.d.ts +2 -2
  9. package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
  10. package/dist/components/widget/BridgeList/hooks.js +78 -72
  11. package/dist/components/widget/BridgeList/hooks.js.map +1 -1
  12. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
  13. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
  14. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
  15. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  16. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +2 -2
  17. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
  18. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  19. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.d.ts.map +1 -1
  20. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js +18 -22
  21. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
  22. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.d.ts.map +1 -1
  23. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
  24. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts +6 -3
  25. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
  26. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +58 -54
  27. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
  28. package/dist/components/widget/LimitOrderItem/constants.d.ts +1 -1
  29. package/dist/components/widget/LimitOrderItem/constants.js +1 -1
  30. package/dist/components/widget/LimitOrderItem/constants.js.map +1 -1
  31. package/dist/components/widget/LimitOrderItem/types.d.ts +2 -2
  32. package/dist/components/widget/LimitOrderItem/types.d.ts.map +1 -1
  33. package/dist/components/widget/LimitOrderItem/utils.d.ts +2 -4
  34. package/dist/components/widget/LimitOrderItem/utils.d.ts.map +1 -1
  35. package/dist/components/widget/LimitOrderItem/utils.js +1 -4
  36. package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
  37. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js +9 -9
  38. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +15 -10
  39. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js.map +1 -1
  40. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  41. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  42. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +86 -86
  43. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  44. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +1 -1
  45. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  46. package/dist/components/widget/TradeOverview/TradeComplete/utils.js +1 -1
  47. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  48. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
  49. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
  50. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js +83 -83
  51. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  52. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +4 -1
  53. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
  54. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +1 -1
  55. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
  56. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  57. package/dist/core/LimitOrderButton.js +47 -53
  58. package/dist/core/LimitOrderButton.js.map +1 -1
  59. package/dist/core/TradeFlowScreenButton.d.ts +3 -4
  60. package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
  61. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  62. package/dist/core/Updaters.js +1 -1
  63. package/dist/core/Updaters.js.map +1 -1
  64. package/dist/core/across/isCrosschainPossible.d.ts +2 -2
  65. package/dist/core/across/isCrosschainPossible.d.ts.map +1 -1
  66. package/dist/core/across/isCrosschainPossible.js.map +1 -1
  67. package/dist/core/across/utils.d.ts +4 -4
  68. package/dist/core/across/utils.d.ts.map +1 -1
  69. package/dist/core/across/utils.js +25 -15
  70. package/dist/core/across/utils.js.map +1 -1
  71. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  72. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +1 -4
  73. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  74. package/dist/core/index.js.map +1 -1
  75. package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
  76. package/dist/core/inputs/hooks/useTokenFromInputProps.js +3 -3
  77. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  78. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  79. package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
  80. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  81. package/dist/core/inputs/hooks/useWarningMessage.d.ts +2 -2
  82. package/dist/core/inputs/hooks/useWarningMessage.d.ts.map +1 -1
  83. package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
  84. package/dist/core/inputs/hooks/utils.d.ts.map +1 -1
  85. package/dist/core/inputs/hooks/utils.js +7 -5
  86. package/dist/core/inputs/hooks/utils.js.map +1 -1
  87. package/dist/core/inputs/state/setTokenByAddressAtom.js +1 -1
  88. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  89. package/dist/core/limit/state/utils.d.ts +1 -1
  90. package/dist/core/limit/useLimitRate.d.ts +2 -3
  91. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  92. package/dist/core/limit/useLimitRate.js +54 -110
  93. package/dist/core/limit/useLimitRate.js.map +1 -1
  94. package/dist/core/limit/useLimitTokenFromInputProps.js +1 -1
  95. package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
  96. package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
  97. package/dist/core/limit/useLimitTokenToInputProps.js +1 -4
  98. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  99. package/dist/core/state/configEffectAtom.js +1 -1
  100. package/dist/core/state/configEffectAtom.js.map +1 -1
  101. package/dist/core/state/getSelectableDestChains.d.ts +2 -2
  102. package/dist/core/state/getSelectableDestChains.d.ts.map +1 -1
  103. package/dist/core/state/getSelectableDestChains.js.map +1 -1
  104. package/dist/core/swapDetails/fees.d.ts.map +1 -1
  105. package/dist/core/swapDetails/fees.js +16 -11
  106. package/dist/core/swapDetails/fees.js.map +1 -1
  107. package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
  108. package/dist/core/swapDetails/maxToPay.js +18 -17
  109. package/dist/core/swapDetails/maxToPay.js.map +1 -1
  110. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
  111. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
  112. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
  113. package/dist/core/twap/useTwapTokenFromInputProps.js +3 -3
  114. package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -1
  115. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
  116. package/dist/events/types/cancelOrder.d.ts +2 -2
  117. package/dist/events/types/cancelOrder.d.ts.map +1 -1
  118. package/dist/events/types/priceChange.d.ts +2 -2
  119. package/dist/events/types/priceChange.d.ts.map +1 -1
  120. package/dist/events/types/swap.d.ts +3 -3
  121. package/dist/events/types/swap.d.ts.map +1 -1
  122. package/dist/events/types/twap.d.ts +2 -2
  123. package/dist/events/types/twap.d.ts.map +1 -1
  124. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +3 -4
  125. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
  126. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
  127. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +6 -3
  128. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
  129. package/dist/hooks/swap/prices/delta/bridge/utils.js +20 -17
  130. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  131. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
  132. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
  133. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +6 -6
  134. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  135. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js +1 -1
  136. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -1
  137. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
  138. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
  139. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +1 -1
  140. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  141. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js +1 -1
  142. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -1
  143. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -1
  144. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +27 -28
  145. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  146. package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
  147. package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
  148. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +3 -3
  149. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  150. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts +2 -2
  151. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts.map +1 -1
  152. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
  153. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts +2 -2
  154. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
  155. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +85 -84
  156. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  157. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
  158. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  159. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +4 -4
  160. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  161. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
  162. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +27 -28
  163. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  164. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts +2 -2
  165. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts.map +1 -1
  166. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js +2 -2
  167. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
  168. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
  169. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  170. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +1 -1
  171. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  172. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
  173. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  174. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +2 -2
  175. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  176. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +5 -6
  177. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
  178. package/dist/hooks/swap/prices/delta/mutations/utils.js +5 -5
  179. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  180. package/dist/hooks/swap/prices/delta/orders/types.d.ts +8 -28
  181. package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
  182. package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts +2 -2
  183. package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts.map +1 -1
  184. package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
  185. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +31 -42
  186. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
  187. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +18 -18
  188. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  189. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +19 -49
  190. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  191. package/dist/hooks/swap/prices/delta/orders/utils.js +23 -58
  192. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  193. package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js +1 -1
  194. package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
  195. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.d.ts +2 -0
  196. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.d.ts.map +1 -0
  197. package/dist/hooks/swap/prices/delta/queries/{bridgeInfo/bridgeInfosLoadedAtom.js → bridgeRoutes/bridgeRoutesLoadedAtom.js} +4 -4
  198. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.js.map +1 -0
  199. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.d.ts +6 -0
  200. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.d.ts.map +1 -0
  201. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.js +9 -0
  202. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.js.map +1 -0
  203. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.d.ts +3 -0
  204. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.d.ts.map +1 -0
  205. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.js +11 -0
  206. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.js.map +1 -0
  207. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/types.d.ts +19 -0
  208. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/types.d.ts.map +1 -0
  209. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.d.ts +3 -0
  210. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.d.ts.map +1 -0
  211. package/dist/hooks/swap/prices/delta/queries/{bridgeInfo/useBridgeInfo.js → bridgeRoutes/useBridgeRoutes.js} +6 -6
  212. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.js.map +1 -0
  213. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  214. package/dist/hooks/swap/prices/delta/queries/{useDeltaLimitOrderRequiredBalance.d.ts → useDeltaOrderRequiredBalance.d.ts} +10 -10
  215. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.d.ts.map +1 -0
  216. package/dist/hooks/swap/prices/delta/queries/{useDeltaLimitOrderRequiredBalance.js → useDeltaOrderRequiredBalance.js} +5 -5
  217. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js.map +1 -0
  218. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts +6 -6
  219. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts.map +1 -1
  220. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js +1 -1
  221. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
  222. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +19 -36
  223. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  224. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +5 -5
  225. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  226. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js +1 -1
  227. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
  228. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +14 -22
  229. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  230. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +71 -62
  231. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  232. package/dist/hooks/swap/prices/factory.d.ts.map +1 -1
  233. package/dist/hooks/swap/prices/factory.js +1 -1
  234. package/dist/hooks/swap/prices/factory.js.map +1 -1
  235. package/dist/hooks/swap/prices/types.d.ts +2 -3
  236. package/dist/hooks/swap/prices/types.d.ts.map +1 -1
  237. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
  238. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  239. package/dist/hooks/swap/prices/useSwapPrices.js +108 -111
  240. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  241. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
  242. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  243. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
  244. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
  245. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
  246. package/dist/hooks/swap/prices/useTwapPrices.d.ts +4 -5
  247. package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
  248. package/dist/hooks/swap/prices/useTwapPrices.js +70 -73
  249. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
  250. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +12 -19
  251. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
  252. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
  253. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
  254. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts +4 -4
  255. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts.map +1 -1
  256. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
  257. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +1 -1
  258. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
  259. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +1 -1
  260. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  261. package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js +1 -1
  262. package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -1
  263. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
  264. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  265. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +222 -227
  266. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  267. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
  268. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +1 -1
  269. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  270. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -2
  271. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  272. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +159 -196
  273. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  274. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +5 -5
  275. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
  276. package/dist/hooks/swap/tradeFlow/useTwapFlow.js +221 -233
  277. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  278. package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js +1 -1
  279. package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
  280. package/dist/hooks/tokens/useAllTokensWithFilter.d.ts +2 -2
  281. package/dist/hooks/tokens/useAllTokensWithFilter.d.ts.map +1 -1
  282. package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
  283. package/dist/hooks/tokens/useTokensFromAcross.d.ts +2 -2
  284. package/dist/hooks/tokens/useTokensFromAcross.d.ts.map +1 -1
  285. package/dist/hooks/tokens/useTokensFromAcross.js +7 -10
  286. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  287. package/dist/hooks/useAvailableCrosses.d.ts +3 -3
  288. package/dist/hooks/useAvailableCrosses.d.ts.map +1 -1
  289. package/dist/hooks/useAvailableCrosses.js +18 -17
  290. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  291. package/dist/hooks/useBridgeRoutes.d.ts +6 -0
  292. package/dist/hooks/useBridgeRoutes.d.ts.map +1 -0
  293. package/dist/hooks/{useBridgeInfo.js → useBridgeRoutes.js} +4 -4
  294. package/dist/hooks/useBridgeRoutes.js.map +1 -0
  295. package/dist/hooks/useIsCrosschainPossible.d.ts +2 -2
  296. package/dist/hooks/useIsCrosschainPossible.d.ts.map +1 -1
  297. package/dist/hooks/useIsCrosschainPossible.js +15 -13
  298. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  299. package/dist/hooks/useSDK.d.ts +11 -11
  300. package/dist/hooks/useSDK.d.ts.map +1 -1
  301. package/dist/hooks/useSDK.js +42 -42
  302. package/dist/hooks/useSDK.js.map +1 -1
  303. package/dist/hooks/useSelectableDestChains.d.ts +2 -2
  304. package/dist/hooks/useSelectableDestChains.d.ts.map +1 -1
  305. package/dist/hooks/useSelectableDestChains.js.map +1 -1
  306. package/dist/lib/queryClient.js +3 -3
  307. package/dist/lib/queryClient.js.map +1 -1
  308. package/dist/lib/utils/price.d.ts +5 -2
  309. package/dist/lib/utils/price.d.ts.map +1 -1
  310. package/dist/lib/utils/price.js +8 -5
  311. package/dist/lib/utils/price.js.map +1 -1
  312. package/dist/lib/utils/toasts.d.ts +3 -3
  313. package/dist/lib/utils/toasts.d.ts.map +1 -1
  314. package/dist/lib/utils/toasts.js.map +1 -1
  315. package/dist/lib/utils/twap.d.ts +19 -4
  316. package/dist/lib/utils/twap.d.ts.map +1 -1
  317. package/dist/lib/utils/twap.js +29 -18
  318. package/dist/lib/utils/twap.js.map +1 -1
  319. package/package.json +2 -2
  320. package/dist/hooks/swap/prices/delta/bridge/const.d.ts +0 -8
  321. package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +0 -1
  322. package/dist/hooks/swap/prices/delta/bridge/const.js +0 -13
  323. package/dist/hooks/swap/prices/delta/bridge/const.js.map +0 -1
  324. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts +0 -2
  325. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts.map +0 -1
  326. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +0 -1
  327. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts +0 -6
  328. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +0 -1
  329. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js +0 -9
  330. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +0 -1
  331. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts +0 -4
  332. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts.map +0 -1
  333. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js +0 -11
  334. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +0 -1
  335. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts +0 -19
  336. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +0 -1
  337. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts +0 -3
  338. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts.map +0 -1
  339. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +0 -1
  340. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts.map +0 -1
  341. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +0 -1
  342. package/dist/hooks/useBridgeInfo.d.ts +0 -7
  343. package/dist/hooks/useBridgeInfo.d.ts.map +0 -1
  344. package/dist/hooks/useBridgeInfo.js.map +0 -1
@@ -14,7 +14,7 @@ import { fromListsAtom as _ } from "../../../tokens/state/fromListsAtom.js";
14
14
  import { autoImportedTokensAtom as v, importedTokensAtom as y } from "../../../tokens/state/importedTokensAtom.js";
15
15
  import { sideToInputType as b, tradeModeToCurrentInputAtom as x, tradeModeToPayAmountUnitAtom as S, tradeModeToReceiveAmountUnitAtom as C, tradeModeToSetTokenAtoms as w, tradeModeToSideAtom as T, tradeModeToTimeUnitAtom as E, tradeModeToTokenAtoms as D } from "./common.js";
16
16
  import { autoAddImportedTokenAtom as O } from "../../../tokens/state/addImportedTokenAtom.js";
17
- import { bridgeInfosLoadedAtom as k } from "../../../hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js";
17
+ import { bridgeRoutesLoadedAtom as k } from "../../../hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.js";
18
18
  import { c as A } from "react-compiler-runtime";
19
19
  import { useLayoutEffect as j } from "react";
20
20
  import { atom as M } from "jotai";
@@ -1 +1 @@
1
- {"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeInfosLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","tokensMap","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"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 availableTradeModesAtom,\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 enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\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 (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\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 available trade mode\n selectedForm = availableTradeModes[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 isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && 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 (isValidReceiveAmount && 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"],"mappings":"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"}
1
+ {"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeRoutesLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","tokensMap","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"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 { bridgeRoutesLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n availableTradeModesAtom,\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 bridgeRoutesLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeRoutes change\n get(bridgeRoutesLoadedAtom);\n\n // subscribe to enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\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 (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\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 available trade mode\n selectedForm = availableTradeModes[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 isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && 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 (isValidReceiveAmount && 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"],"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" | "hours" | "days" | "months";
9
+ label: "minutes" | "days" | "hours" | "months";
10
10
  value: number;
11
11
  };
12
12
  export declare function calculateReceiveAmount(payAmount: string, priceRates: PriceRates, isReversed: boolean): string;
@@ -1,10 +1,9 @@
1
1
  import { UseLimitRateResult } from './types';
2
- export declare const useDeltaSwapPriceForLimit: ({ enabled, refetchInterval, tradeMode, }: {
2
+ export declare const useDeltaSwapPriceForLimit: ({ enabled, refetchInterval, }?: {
3
3
  enabled?: boolean;
4
4
  refetchInterval?: number;
5
- tradeMode: "limit" | "otc";
6
5
  }) => {
7
- price: import('@velora-dex/sdk').DeltaPrice | import('@velora-dex/sdk').BridgePrice | undefined;
6
+ price: import('@velora-dex/sdk/dist/methods/deltaV2').DeltaPrice | undefined;
8
7
  isLoading: boolean;
9
8
  error: Error | null;
10
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAoDlD,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"}
1
+ {"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,yBAAyB,GAAI,gCAGvC;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB;;;;CAuCL,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,kBAiCF,CAAC"}
@@ -1,124 +1,68 @@
1
- import { useAtomValue as e } from "../store.js";
2
- import { useDeltaPriceQuery as t } from "../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js";
3
- import { useMarketPriceQuery as n } from "../../hooks/swap/prices/market/queries/useMarketPriceQuery.js";
4
- import { tradeModeToTokenAtoms as r, useWidgetTokens as i } from "../inputs/state/common.js";
5
- import { useTokenPrice as a } from "../../hooks/tokens/prices/useTokenPrices.js";
6
- import { useExtraMarketPriceParams as o, usePricesParams as s } from "../../hooks/swap/prices/usePricesParams.js";
7
- import { c } from "react-compiler-runtime";
8
- import { useMemo as l } from "react";
9
- import { formatUnits as u, parseUnits as d } from "viem";
10
- import f from "big.js";
1
+ import { useDeltaPriceQuery as e } from "../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js";
2
+ import { useWidgetTokens as t } from "../inputs/state/common.js";
3
+ import { usePricesParams as n } from "../../hooks/swap/prices/usePricesParams.js";
4
+ import { c as r } from "react-compiler-runtime";
5
+ import { formatUnits as i } from "viem";
6
+ import a from "big.js";
11
7
  //#region src/core/limit/useLimitRate.ts
12
- var p = 6e4 * 5, m = (t) => {
13
- let i = c(16), { enabled: a, refetchInterval: l, tradeMode: u } = t, f = a === void 0 ? !0 : a, m = l === void 0 ? p : l, h = e(r[u].tokenFromAtom), { priceParams: g, chainId: _ } = s(u), v = o(), y;
14
- i[0] === h.decimals ? y = i[1] : (y = d("1", h.decimals).toString(), i[0] = h.decimals, i[1] = y);
15
- let b;
16
- i[2] !== v || i[3] !== g || i[4] !== y ? (b = {
17
- ...g,
18
- ...v,
19
- amount: y,
20
- side: "SELL",
21
- ignoreBadUsdPrice: !0
22
- }, i[2] = v, i[3] = g, i[4] = y, i[5] = b) : b = i[5];
23
- let x = b, S;
24
- i[6] !== f || i[7] !== m ? (S = {
25
- enabled: f,
26
- refetchInterval: m,
27
- retry: !1,
28
- refetchOnWindowFocus: !1,
29
- refetchOnMount: !1
30
- }, i[6] = f, i[7] = m, i[8] = S) : S = i[8];
31
- let C;
32
- i[9] !== _ || i[10] !== x || i[11] !== S ? (C = {
33
- priceParams: x,
34
- chainId: _,
35
- query: S
36
- }, i[9] = _, i[10] = x, i[11] = S, i[12] = C) : C = i[12];
37
- let { result: w } = n(C), T;
38
- return i[13] !== w.data || i[14] !== w.isLoading ? (T = {
39
- price: w.data,
40
- isLoading: w.isLoading
41
- }, i[13] = w.data, i[14] = w.isLoading, i[15] = T) : T = i[15], T;
42
- }, h = (e) => {
43
- let n = c(17), { enabled: r, refetchInterval: i, tradeMode: a } = e, o = r === void 0 ? !0 : r, l = i === void 0 ? 1e4 : i, { priceParams: u, chainId: d, destChainId: f, isCrossChain: p } = s(a), m = o && a === "limit", h;
44
- n[0] === u ? h = n[1] : (h = {
8
+ var o = (t) => {
9
+ let i = r(19), a;
10
+ i[0] === t ? a = i[1] : (a = t === void 0 ? {} : t, i[0] = t, i[1] = a);
11
+ let { enabled: o, refetchInterval: s } = a, c = o === void 0 ? !0 : o, l = s === void 0 ? 1e4 : s, { priceParams: u, chainId: d, destChainId: f, isCrossChain: p } = n("limit"), m;
12
+ i[2] === u ? m = i[3] : (m = {
45
13
  ...u,
46
14
  side: "SELL",
47
15
  ignoreBadUsdPrice: !0
48
- }, n[0] = u, n[1] = h);
49
- let g = h, _ = p && a === "limit" ? !1 : void 0, v;
50
- n[2] !== _ || n[3] !== g ? (v = {
51
- ...g,
52
- allowBridgeAndSwap: _
53
- }, n[2] = _, n[3] = g, n[4] = v) : v = n[4];
54
- let y;
55
- n[5] !== m || n[6] !== l ? (y = {
56
- enabled: m,
16
+ }, i[2] = u, i[3] = m);
17
+ let h = m, g = p ? !1 : void 0, _;
18
+ i[4] !== g || i[5] !== h ? (_ = {
19
+ ...h,
20
+ allowBridgeAndSwap: g
21
+ }, i[4] = g, i[5] = h, i[6] = _) : _ = i[6];
22
+ let v;
23
+ i[7] !== c || i[8] !== l ? (v = {
24
+ enabled: c,
57
25
  refetchInterval: l,
58
26
  retry: !1,
59
27
  refetchOnWindowFocus: !1,
60
28
  refetchOnMount: !1
61
- }, n[5] = m, n[6] = l, n[7] = y) : y = n[7];
62
- let b;
63
- n[8] !== d || n[9] !== f || n[10] !== v || n[11] !== y ? (b = {
64
- priceParams: v,
29
+ }, i[7] = c, i[8] = l, i[9] = v) : v = i[9];
30
+ let y;
31
+ i[10] !== d || i[11] !== f || i[12] !== _ || i[13] !== v ? (y = {
32
+ priceParams: _,
65
33
  chainId: d,
66
34
  destChainId: f,
67
- query: y
68
- }, n[8] = d, n[9] = f, n[10] = v, n[11] = y, n[12] = b) : b = n[12];
69
- let { result: x } = t(b), S;
70
- return n[13] !== x.data || n[14] !== x.error || n[15] !== x.isLoading ? (S = {
71
- price: x.data,
72
- isLoading: x.isLoading,
73
- error: x.error
74
- }, n[13] = x.data, n[14] = x.error, n[15] = x.isLoading, n[16] = S) : S = n[16], S;
75
- }, g = (e) => {
76
- let { tokenFrom: t, tokenTo: n } = i(e), { data: r, isLoading: o } = a(t, { refetchInterval: p }), { data: s, isLoading: c } = a(n, { refetchInterval: p }), d = o || c, g = e === "limit" && n && n.network !== t.network, _ = !!(r && s), { price: v, isLoading: y } = m({
77
- enabled: !_ && !d && !g,
78
- tradeMode: e
79
- }), { price: b, isLoading: x } = h({
80
- enabled: g,
81
- tradeMode: e
82
- }), S = d || y;
83
- return l(() => {
84
- if (!n) return { isLoading: S };
85
- let e, i;
86
- if (g) {
87
- if (!b) return { isLoading: x };
88
- let r = u(BigInt(b.srcAmount), t.decimals), a = u(BigInt(b.receivedDestAmount), n.decimals);
89
- return r === "0" || a === "0" ? (e = "0", i = "0") : (e = f(a).div(r).toFixed(), i = f(r).div(a).toFixed()), {
90
- rates: {
91
- rate: e,
92
- rateReversed: i
93
- },
94
- isLoading: x
95
- };
96
- } else if (_) r.price === 0 || s.price === 0 ? (e = "0", i = "0") : (e = f(r.price).div(s.price).toFixed(), i = f(s.price).div(r.price).toFixed());
97
- else if (v) {
98
- let r = u(BigInt(v.srcAmount), t.decimals), a = u(BigInt(v.destAmount), n.decimals);
99
- e = f(a).div(r).toFixed(), i = f(r).div(a).toFixed();
100
- }
101
- return !e || !i ? { isLoading: S } : {
102
- rates: {
103
- rate: e,
104
- rateReversed: i
105
- },
106
- isLoading: S
107
- };
108
- }, [
109
- _,
110
- S,
111
- v,
112
- t.decimals,
113
- r?.price,
114
- n,
115
- s?.price,
116
- g,
117
- b,
118
- x
119
- ]);
35
+ query: v
36
+ }, i[10] = d, i[11] = f, i[12] = _, i[13] = v, i[14] = y) : y = i[14];
37
+ let { result: b } = e(y), x;
38
+ return i[15] !== b.data || i[16] !== b.error || i[17] !== b.isLoading ? (x = {
39
+ price: b.data,
40
+ isLoading: b.isLoading,
41
+ error: b.error
42
+ }, i[15] = b.data, i[16] = b.error, i[17] = b.isLoading, i[18] = x) : x = i[18], x;
43
+ }, s = (e) => {
44
+ let n = r(14), { tokenFrom: s, tokenTo: c } = t(e), { price: l, isLoading: u } = o();
45
+ if (!c || !l) {
46
+ let e;
47
+ return n[0] === u ? e = n[1] : (e = { isLoading: u }, n[0] = u, n[1] = e), e;
48
+ }
49
+ let d, f;
50
+ if (n[2] !== l.route.destination.output.amount || n[3] !== l.route.origin.input.amount || n[4] !== s.decimals || n[5] !== c.decimals) {
51
+ let e = i(BigInt(l.route.origin.input.amount), s.decimals), t = i(BigInt(l.route.destination.output.amount), c.decimals);
52
+ e === "0" || t === "0" ? (d = "0", f = "0") : (d = a(t).div(e).toFixed(), f = a(e).div(t).toFixed()), n[2] = l.route.destination.output.amount, n[3] = l.route.origin.input.amount, n[4] = s.decimals, n[5] = c.decimals, n[6] = d, n[7] = f;
53
+ } else d = n[6], f = n[7];
54
+ let p;
55
+ n[8] !== d || n[9] !== f ? (p = {
56
+ rate: d,
57
+ rateReversed: f
58
+ }, n[8] = d, n[9] = f, n[10] = p) : p = n[10];
59
+ let m;
60
+ return n[11] !== u || n[12] !== p ? (m = {
61
+ rates: p,
62
+ isLoading: u
63
+ }, n[11] = u, n[12] = p, n[13] = m) : m = n[13], m;
120
64
  };
121
65
  //#endregion
122
- export { h as useDeltaSwapPriceForLimit, g as useLimitRate };
66
+ export { o as useDeltaSwapPriceForLimit, s as useLimitRate };
123
67
 
124
68
  //# sourceMappingURL=useLimitRate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitRate.js","names":["useMarketPriceQuery","useExtraMarketPriceParams","usePricesParams","FetchPriceParams","useTokenPrice","Big","parseUnits","formatUnits","useWidgetTokens","UseLimitRateResult","useAtomValue","tradeModeToTokenAtoms","useMemo","useDeltaPriceQuery","PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","tokenFromAtom","priceParams","chainId","extraPriceParams","t3","decimals","toString","t4","amount","side","const","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","query","result","marketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","deltaPriceQuery","error","useLimitRate","tokenTo","tokenFromPrice","isTokenFromPriceLoading","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","rate","rateReversed","srcUnits","BigInt","srcAmount","destUnits","receivedDestAmount","div","toFixed","rates","destAmount"],"sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n useExtraMarketPriceParams,\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 const extraPriceParams = useExtraMarketPriceParams();\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n ...extraPriceParams,\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"],"mappings":";;;;;;;;;;;AAiBA,IAAMc,IAAyB,MAAS,GAElCC,KAAuBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAC,SAAAC,GAAAC,iBAAAC,GAAAC,iBAAAP,GAC5BG,IAAAC,MAAAI,KAAAA,IAAA,KAAAJ,GACAC,IAAAC,MAAAE,KAAAA,IAAAV,IAAAQ,GAOAG,IAAkBf,EAChBC,EAAsBY,GAAUG,cACjC,EACD,EAAAC,gBAAAC,eAAiC1B,EAAgBqB,EAAU,EAC3DM,IAAyB5B,GAA2B,EAAC6B;CAAA,AAAAb,EAAA,OAAAQ,EAAAM,WAKGD,IAAAb,EAAA,MAA9Ca,IAAAxB,EAAW,KAAKmB,EAASM,SAAU,CAAAC,UAAW,EAAAf,EAAA,KAAAQ,EAAAM,UAAAd,EAAA,KAAAa;CAAA,IAAAG;CAAA,AAAAhB,EAAA,OAAAY,KAAAZ,EAAA,OAAAU,KAAAV,EAAA,OAAAa,KAHRG,IAAA;EAAA,GAC3CN;EAAW,GACXE;EAAgBK,QACXJ;EAA8CK,MAChD;EAAeE,mBACF;EACpB,EAAApB,EAAA,KAAAY,GAAAZ,EAAA,KAAAU,GAAAV,EAAA,KAAAa,GAAAb,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA;CAND,IAAAqB,IAAgDL,GAM9CM;CAAA,AAAAtB,EAAA,OAAAE,KAAAF,EAAA,OAAAI,KAOOkB,IAAA;EAAApB;EAAAE;EAAAmB,OAGE;EAAKC,sBACU;EAAKC,gBACX;EACjB,EAAAzB,EAAA,KAAAE,GAAAF,EAAA,KAAAI,GAAAJ,EAAA,KAAAsB,KAAAA,IAAAtB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,OAAAW,KAAAX,EAAA,QAAAqB,KAAArB,EAAA,QAAAsB,KATsDI,IAAA;EAAAhB,aAC1CW;EAAqBV;EAAAgB,OAE3BL;EAOR,EAAAtB,EAAA,KAAAW,GAAAX,EAAA,MAAAqB,GAAArB,EAAA,MAAAsB,GAAAtB,EAAA,MAAA0B,KAAAA,IAAA1B,EAAA;CAVD,IAAA,EAAA4B,QAAAC,MAAqC9C,EAAoB2C,EAUvD,EAACI;CAKF,OALE9B,EAAA,QAAA6B,EAAAE,QAAA/B,EAAA,QAAA6B,EAAAG,aAEIF,IAAA;EAAAG,OACEJ,EAAgBE;EAAKC,WACjBH,EAAgBG;EAC5B,EAAAhC,EAAA,MAAA6B,EAAAE,MAAA/B,EAAA,MAAA6B,EAAAG,WAAAhC,EAAA,MAAA8B,KAAAA,IAAA9B,EAAA,KAHM8B;GAMII,KAA4BnC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAC,SAAAC,GAAAC,iBAAAC,GAAAC,iBAAAP,GACxCG,IAAAC,MAAAI,KAAAA,IAAA,KAAAJ,GACAC,IAAAC,MAAAE,KAAAA,IAAA,MAAAF,GAOA,EAAAK,gBAAAC,YAAAwB,gBAAAC,oBACEnD,EAAgBqB,EAAU,EAG5B+B,IAAqBnC,KAAWI,MAAc,SAAQO;CAAA,AAAAb,EAAA,OAAAU,IAOrDG,IAAAb,EAAA,MAL+Ca,IAAA;EAAA,GAE3CH;EAAWQ,MACR;EAAeE,mBACF;EACpB,EAAApB,EAAA,KAAAU,GAAAV,EAAA,KAAAa;CALD,IAAAyB,IAAgDzB,GAUhD2B,IAA2BJ,KAHN9B,MAAc,UAGR,KAAAC,KAAAA,GAAiDS;CAAA,AAAAhB,EAAA,OAAAwC,KAAAxC,EAAA,OAAAsC,KAG7DtB,IAAA;EAAA,GACRsB;EAAqBE;EAEzB,EAAAxC,EAAA,KAAAwC,GAAAxC,EAAA,KAAAsC,GAAAtC,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA;CAAA,IAAAsB;CAAA,AAAAtB,EAAA,OAAAqC,KAAArC,EAAA,OAAAI,KAGMkB,IAAA;EAAApB,SACImC;EAAYjC;EAAAmB,OAEd;EAAKC,sBACU;EAAKC,gBACX;EACjB,EAAAzB,EAAA,KAAAqC,GAAArC,EAAA,KAAAI,GAAAJ,EAAA,KAAAsB,KAAAA,IAAAtB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,OAAAW,KAAAX,EAAA,OAAAmC,KAAAnC,EAAA,QAAAgB,KAAAhB,EAAA,QAAAsB,KAboDI,IAAA;EAAAhB,aACxCM;EAGZL;EAAAwB;EAAAR,OAGML;EAOR,EAAAtB,EAAA,KAAAW,GAAAX,EAAA,KAAAmC,GAAAnC,EAAA,MAAAgB,GAAAhB,EAAA,MAAAsB,GAAAtB,EAAA,MAAA0B,KAAAA,IAAA1B,EAAA;CAdD,IAAA,EAAA4B,QAAAa,MAAoC7C,EAAmB8B,EAcrD,EAACI;CAMF,OANE9B,EAAA,QAAAyC,EAAAV,QAAA/B,EAAA,QAAAyC,EAAAC,SAAA1C,EAAA,QAAAyC,EAAAT,aAEIF,IAAA;EAAAG,OACEQ,EAAeV;EAAKC,WAChBS,EAAeT;EAAUU,OAC7BD,EAAeC;EACvB,EAAA1C,EAAA,MAAAyC,EAAAV,MAAA/B,EAAA,MAAAyC,EAAAC,OAAA1C,EAAA,MAAAyC,EAAAT,WAAAhC,EAAA,MAAA8B,KAAAA,IAAA9B,EAAA,KAJM8B;GAQIa,KACXrC,MACuB;CACvB,IAAM,EAAEE,cAAWoC,eAAYrD,EAAgBe,EAAU,EAEnD,EAAEyB,MAAMc,GAAgBb,WAAWc,MACvC3D,EAAcqB,GAAW,EACvBJ,iBAAiBP,GAClB,CAAC,EACE,EAAEkC,MAAMgB,GAAcf,WAAWgB,MACrC7D,EAAcyD,GAAS,EACrBxC,iBAAiBP,GAClB,CAAC,EAEEoD,IAAuBH,KAA2BE,GAIlDE,IACJ5C,MAAc,WAAWsC,KAAWA,EAAQO,YAAY3C,EAAU2C,SAE9DC,IAAsB,CAAC,EAAEP,KAAkBE,IAI3C,EAAEd,OAAOqB,GAAWtB,WAAWuB,MACnCzD,EAAqB;EACnBI,SAJF,CAACkD,KAAuB,CAACH,KAAwB,CAACC;EAKhD5C;EACD,CAAC,EAEE,EACJ2B,OAAOuB,GACPxB,WAAWyB,MACTvB,EAA0B;EAC5BhC,SAASgD;EACT5C;EACD,CAAC,EAEIoD,IAAoBT,KAAwBM;CAElD,OAAO5D,QAAc;EACnB,IAAI,CAACiD,GACH,OAAO,EAAEZ,WAAW0B,GAAmB;EAGzC,IAAIC,GACAC;EACJ,IAAIV,GAAoB;GACtB,IAAI,CAACM,GACH,OAAO,EAAExB,WAAWyB,GAA+B;GAErD,IAAMI,IAAWvE,EACfwE,OAAON,EAAqBO,UAAU,EACtCvD,EAAUM,SACX,EACKkD,IAAY1E,EAEhBwE,OAAON,EAAqBS,mBAAmB,EAC/CrB,EAAQ9B,SACT;GASD,OARI+C,MAAa,OAAOG,MAAc,OACpCL,IAAO,KACPC,IAAe,QAEfD,IAAOvE,EAAI4E,EAAU,CAACE,IAAIL,EAAS,CAACM,SAAS,EAC7CP,IAAexE,EAAIyE,EAAS,CAACK,IAAIF,EAAU,CAACG,SAAS,GAGhD;IACLC,OAAO;KAAET;KAAMC;KAAc;IAE7B5B,WAAWyB;IACZ;SACI,IAAIL,GACT,AAAIP,EAAeZ,UAAU,KAAKc,EAAad,UAAU,KACvD0B,IAAO,KACPC,IAAe,QAEfD,IAAOvE,EAAIyD,EAAeZ,MAAM,CAACiC,IAAInB,EAAad,MAAM,CAACkC,SAAS,EAClEP,IAAexE,EAAI2D,EAAad,MAAM,CACnCiC,IAAIrB,EAAeZ,MAAM,CACzBkC,SAAS;OAET,IAAIb,GAAW;GACpB,IAAMO,IAAWvE,EACfwE,OAAOR,EAAUS,UAAU,EAC3BvD,EAAUM,SACX,EACKkD,IAAY1E,EAChBwE,OAAOR,EAAUe,WAAW,EAC5BzB,EAAQ9B,SACT;GAGD8C,AADAD,IAAOvE,EAAI4E,EAAU,CAACE,IAAIL,EAAS,CAACM,SAAS,EAC7CP,IAAexE,EAAIyE,EAAS,CAACK,IAAIF,EAAU,CAACG,SAAS;;EAOvD,OAJI,CAACR,KAAQ,CAACC,IACL,EAAE5B,WAAW0B,GAAmB,GAGlC;GACLU,OAAO;IAAET;IAAMC;IAAc;GAC7B5B,WAAW0B;GACZ;IACA;EACDN;EACAM;EACAJ;EACA9C,EAAUM;EACV+B,GAAgBZ;EAChBW;EACAG,GAAcd;EACdiB;EACAM;EACAC;EACD,CAAC"}
1
+ {"version":3,"file":"useLimitRate.js","names":["usePricesParams","FetchPriceParams","useDeltaPriceQuery","Big","formatUnits","useWidgetTokens","UseLimitRateResult","useDeltaSwapPriceForLimit","t0","$","_c","t1","undefined","enabled","t2","refetchInterval","t3","priceParams","_priceParams","chainId","destChainId","isCrossChain","t4","side","const","ignoreBadUsdPrice","allowBridgeAndSwap","t5","t6","retry","refetchOnWindowFocus","refetchOnMount","t7","query","result","deltaPriceQuery","t8","data","error","isLoading","price","useLimitRate","tradeMode","tokenFrom","tokenTo","deltaPrice","rate","rateReversed","route","destination","output","amount","origin","input","decimals","srcUnits","BigInt","destUnits","div","toFixed","rates"],"sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport Big from \"big.js\";\nimport { formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n} = {}) => {\n const {\n priceParams: _priceParams,\n chainId,\n destChainId,\n isCrossChain,\n } = usePricesParams(\"limit\");\n\n const priceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ..._priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain ? false : undefined;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...priceParams,\n allowBridgeAndSwap,\n },\n chainId,\n destChainId,\n query: {\n enabled,\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 { price: deltaPrice, isLoading } = useDeltaSwapPriceForLimit();\n\n if (!tokenTo || !deltaPrice) {\n return { isLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n\n const srcUnits = formatUnits(\n BigInt(deltaPrice.route.origin.input.amount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaPrice.route.destination.output.amount),\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 isLoading,\n };\n};\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ import { switchChain as p } from "../../lib/web3/wagmi/switchChain.js";
13
13
  import { currentLimitInputAtom as m } from "./state/currentLimitInputAtom.js";
14
14
  import { setLimitPayAmountAtom as h } from "./state/limitInputActionsAtom.js";
15
15
  import { selectLimitTokenFromAtom as g } from "./state/selectedTokenActionsAtom.js";
16
- import { useDeltaOrderRequiredAllowance as _ } from "../../hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js";
16
+ import { useDeltaOrderRequiredAllowance as _ } from "../../hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js";
17
17
  import { useMaxButtonPropsBase as v } from "../inputs/hooks/useMaxButtonProps.js";
18
18
  import { useUnsupportedLimitChain as y } from "./useLimitNotSupported.js";
19
19
  import { useIsInsufficientBalanceToFillLimitOrder as b } from "../../hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js";
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitTokenFromInputProps.js","names":["TokenInputProps","useAtomValue","useSetAtom","setLimitPayAmountAtom","MarkRequired","TokenInputAmountProps","TokenInputExtraProps","useLogger","limitPayInputAmountAtom","limitPayInputAmountWeiAtom","useChainId","currentLimitInputAtom","useTokenBalance","MEDIUM_STALE_TIME_FOR_REACTIVENESS","toDecimalTrimmed","useGenericTokenAllowance","useIsInsufficientBalanceToFillLimitOrder","Token","DEPOSIT_NATIVE_AND_PRE_SIGN_GAS_LIMIT","useUnsupportedLimitChain","selectLimitTokenFromAtom","useLimitTokenFrom","formatTokenAmount","getInsufficientBalanceToFillOrderMessage","useDeltaOrderRequiredAllowance","useEnabledSrcChainsWithDelta","switchChain","useMaxButtonPropsBase","useLimitTokenFromAmountProps","$","_c","logger","tokenFrom","amountValue","setAmountValue","tokenBalanceUnit","useTokenFromBalanceUnit","t0","values","log","value","t1","amount","token","onAmountChange","UseTokenConditionalPropsInput","amountWei","useTokenConditionalProps","address","tokenAddress","enabled","combinedAllowance","srcCombinedAllowance","t2","spenderContractType","amountToApproveInWei","tokenAllowance","isInsufficientBalance","isInsufficientBalanceToFill","requiredBalanceToFillUnit","t3","t4","t5","t6","requiredBalanceToFillFormatted","undefined","t7","needsApproval","lockIcon","shouldDisplay","messageOverride","t8","tokenBadgePropsOverride","insufficientBalanceMessageProps","useMaxButtonProps","unsupportedChain","setCurrentLimitInput","setPayInputAmount","balanceUnit","onClick","gasLimit","props","showMaxButton","Symbol","for","refetchInterval","queryOptions","useExtraProps","appChainId","enabledChainsWithDelta","setCurrentInput","root","length","classes","networks","selectedNetwork","allOption","onSelect","_temp","disabled","networkSwitcherProps","tokenType","const","onFocus","label","disabledClasses","useLimitInputClasses","useLimitTokenFromInputProps","amountProps","extraProps","payInputAmountWei","tokenConditionalProps","maxButtonProps","setTokenFrom","onTokenSelect","chainId"],"sources":["../../../src/core/limit/useLimitTokenFromInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtomValue, useSetAtom } from \"@/core/store\";\nimport { setLimitPayAmountAtom } from \"./state/limitInputActionsAtom\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport type {\n TokenInputAmountProps,\n TokenInputExtraProps,\n} from \"../inputs/hooks/types\";\nimport { useLogger } from \"../logger\";\nimport {\n limitPayInputAmountAtom,\n limitPayInputAmountWeiAtom,\n} from \"./state/limitInputAmountAtom\";\nimport { useChainId } from \"wagmi\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useGenericTokenAllowance } from \"@/hooks/tokens/allowance/useGenericTokenAllowance\";\nimport { useIsInsufficientBalanceToFillLimitOrder } from \"@/hooks/tokens/balances/useIsLimitOrderInsufficientBalance\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { DEPOSIT_NATIVE_AND_PRE_SIGN_GAS_LIMIT } from \"@/lib/constants\";\nimport { useUnsupportedLimitChain } from \"./useLimitNotSupported\";\nimport { selectLimitTokenFromAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useLimitTokenFrom } from \"./state/limitTokenAtoms\";\nimport { formatTokenAmount } from \"@/lib/utils/formatTokenBalance\";\nimport { getInsufficientBalanceToFillOrderMessage } from \"@/lib/utils/delta\";\nimport { useDeltaOrderRequiredAllowance } from \"@/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance\";\nimport { useEnabledSrcChainsWithDelta } from \"../state/enabledChainsAtom\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { useMaxButtonPropsBase } from \"../inputs/hooks/useMaxButtonProps\";\n\nconst useLimitTokenFromAmountProps = (): MarkRequired<\n TokenInputAmountProps,\n \"token\"\n> => {\n const logger = useLogger(\"Limit::TokenFrom::AmountProps\");\n const tokenFrom = useLimitTokenFrom();\n\n const amountValue = useAtomValue(limitPayInputAmountAtom);\n const setAmountValue = useSetAtom(setLimitPayAmountAtom);\n\n const tokenBalanceUnit = useTokenFromBalanceUnit();\n\n return {\n amount: amountValue,\n tokenBalanceUnit,\n token: tokenFrom,\n onAmountChange: (values) => {\n logger.log(\"onAmountChange::values\", values);\n setAmountValue(values.value);\n },\n };\n};\n\ntype UseTokenConditionalPropsInput = {\n amountWei: string;\n tokenFrom: Token;\n};\n\nconst useTokenConditionalProps = ({\n amountWei,\n tokenFrom,\n}: UseTokenConditionalPropsInput): Required<\n Pick<\n TokenInputProps,\n \"insufficientBalanceMessageProps\" | \"tokenBadgePropsOverride\"\n >\n> => {\n const spenderContractType = \"ParaswapDelta\";\n\n // amount required to cover allowance of current Orders + amount for the new Order\n const { combinedAllowance: srcCombinedAllowance } =\n useDeltaOrderRequiredAllowance({\n tokenAddress: tokenFrom.address,\n amount: amountWei,\n enabled: spenderContractType === \"ParaswapDelta\",\n });\n\n const tokenAllowance = useGenericTokenAllowance({\n token: tokenFrom,\n spenderContractType: spenderContractType,\n amountToApproveInWei: srcCombinedAllowance,\n });\n\n const {\n isInsufficientBalance,\n isInsufficientBalanceToFill,\n requiredBalanceToFillUnit,\n } = useIsInsufficientBalanceToFillLimitOrder();\n\n const requiredBalanceToFillFormatted =\n isInsufficientBalanceToFill && requiredBalanceToFillUnit\n ? formatTokenAmount(requiredBalanceToFillUnit)\n : undefined;\n\n return {\n tokenBadgePropsOverride: {\n lockIcon:\n !isInsufficientBalance &&\n !isInsufficientBalanceToFill &&\n tokenAllowance.needsApproval,\n },\n insufficientBalanceMessageProps: {\n token: tokenFrom,\n shouldDisplay: isInsufficientBalance || isInsufficientBalanceToFill,\n messageOverride: requiredBalanceToFillFormatted\n ? getInsufficientBalanceToFillOrderMessage(\n tokenFrom,\n requiredBalanceToFillFormatted\n )\n : undefined,\n },\n };\n};\n\nconst useMaxButtonProps = ({ tokenFrom }: { tokenFrom: Token }) => {\n const unsupportedChain = useUnsupportedLimitChain();\n\n const setCurrentLimitInput = useSetAtom(currentLimitInputAtom);\n const setPayInputAmount = useSetAtom(limitPayInputAmountAtom);\n\n const gasLimit = DEPOSIT_NATIVE_AND_PRE_SIGN_GAS_LIMIT;\n const onClick = (balanceUnit: string) => {\n setCurrentLimitInput(\"from\");\n setPayInputAmount(balanceUnit);\n };\n\n const props = useMaxButtonPropsBase({ tokenFrom, gasLimit, onClick });\n return unsupportedChain ? { showMaxButton: false } : props;\n};\n\nconst useTokenFromBalanceUnit = () => {\n const tokenFrom = useLimitTokenFrom();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenFrom,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = (): TokenInputExtraProps => {\n const appChainId = useChainId();\n const enabledChainsWithDelta = useEnabledSrcChainsWithDelta();\n\n const setCurrentInput = useSetAtom(currentLimitInputAtom);\n\n return {\n networkSwitcherProps: {\n classes: {\n // to be able to switch network if on unsupported chain\n root: \"pointer-events-auto\",\n },\n networks: enabledChainsWithDelta,\n selectedNetwork: appChainId,\n allOption: false,\n onSelect: (chainId) => chainId !== \"all\" && switchChain({ chainId }),\n disabled: enabledChainsWithDelta.length <= 1,\n },\n tokenType: \"from\" as const,\n onFocus: () => setCurrentInput(\"from\"),\n label: (\n <>\n <span>Pay</span> <span className=\"text-contrast-5\">on</span>\n </>\n ),\n };\n};\n\nconst disabledClasses = {\n root: \"pointer-events-none\",\n};\n\nexport const useLimitInputClasses = (): TokenInputProps[\"classes\"] => {\n const unsupportedChain = useUnsupportedLimitChain();\n if (unsupportedChain) return disabledClasses;\n};\n\nexport const useLimitTokenFromInputProps = (): TokenInputProps => {\n const amountProps = useLimitTokenFromAmountProps();\n const extraProps = useExtraProps();\n\n const payInputAmountWei = useAtomValue(limitPayInputAmountWeiAtom);\n\n const tokenConditionalProps = useTokenConditionalProps({\n amountWei: payInputAmountWei,\n tokenFrom: amountProps.token,\n });\n\n const maxButtonProps = useMaxButtonProps({ tokenFrom: amountProps.token });\n\n const setTokenFrom = useSetAtom(selectLimitTokenFromAtom);\n\n const classes = useLimitInputClasses();\n\n return {\n ...amountProps,\n ...extraProps,\n ...tokenConditionalProps,\n ...maxButtonProps,\n onTokenSelect: setTokenFrom,\n classes,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useLimitTokenFromInputProps.js","names":["TokenInputProps","useAtomValue","useSetAtom","setLimitPayAmountAtom","MarkRequired","TokenInputAmountProps","TokenInputExtraProps","useLogger","limitPayInputAmountAtom","limitPayInputAmountWeiAtom","useChainId","currentLimitInputAtom","useTokenBalance","MEDIUM_STALE_TIME_FOR_REACTIVENESS","toDecimalTrimmed","useGenericTokenAllowance","useIsInsufficientBalanceToFillLimitOrder","Token","DEPOSIT_NATIVE_AND_PRE_SIGN_GAS_LIMIT","useUnsupportedLimitChain","selectLimitTokenFromAtom","useLimitTokenFrom","formatTokenAmount","getInsufficientBalanceToFillOrderMessage","useDeltaOrderRequiredAllowance","useEnabledSrcChainsWithDelta","switchChain","useMaxButtonPropsBase","useLimitTokenFromAmountProps","$","_c","logger","tokenFrom","amountValue","setAmountValue","tokenBalanceUnit","useTokenFromBalanceUnit","t0","values","log","value","t1","amount","token","onAmountChange","UseTokenConditionalPropsInput","amountWei","useTokenConditionalProps","address","tokenAddress","enabled","combinedAllowance","srcCombinedAllowance","t2","spenderContractType","amountToApproveInWei","tokenAllowance","isInsufficientBalance","isInsufficientBalanceToFill","requiredBalanceToFillUnit","t3","t4","t5","t6","requiredBalanceToFillFormatted","undefined","t7","needsApproval","lockIcon","shouldDisplay","messageOverride","t8","tokenBadgePropsOverride","insufficientBalanceMessageProps","useMaxButtonProps","unsupportedChain","setCurrentLimitInput","setPayInputAmount","balanceUnit","onClick","gasLimit","props","showMaxButton","Symbol","for","refetchInterval","queryOptions","useExtraProps","appChainId","enabledChainsWithDelta","setCurrentInput","root","length","classes","networks","selectedNetwork","allOption","onSelect","_temp","disabled","networkSwitcherProps","tokenType","const","onFocus","label","disabledClasses","useLimitInputClasses","useLimitTokenFromInputProps","amountProps","extraProps","payInputAmountWei","tokenConditionalProps","maxButtonProps","setTokenFrom","onTokenSelect","chainId"],"sources":["../../../src/core/limit/useLimitTokenFromInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtomValue, useSetAtom } from \"@/core/store\";\nimport { setLimitPayAmountAtom } from \"./state/limitInputActionsAtom\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport type {\n TokenInputAmountProps,\n TokenInputExtraProps,\n} from \"../inputs/hooks/types\";\nimport { useLogger } from \"../logger\";\nimport {\n limitPayInputAmountAtom,\n limitPayInputAmountWeiAtom,\n} from \"./state/limitInputAmountAtom\";\nimport { useChainId } from \"wagmi\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useGenericTokenAllowance } from \"@/hooks/tokens/allowance/useGenericTokenAllowance\";\nimport { useIsInsufficientBalanceToFillLimitOrder } from \"@/hooks/tokens/balances/useIsLimitOrderInsufficientBalance\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { DEPOSIT_NATIVE_AND_PRE_SIGN_GAS_LIMIT } from \"@/lib/constants\";\nimport { useUnsupportedLimitChain } from \"./useLimitNotSupported\";\nimport { selectLimitTokenFromAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useLimitTokenFrom } from \"./state/limitTokenAtoms\";\nimport { formatTokenAmount } from \"@/lib/utils/formatTokenBalance\";\nimport { getInsufficientBalanceToFillOrderMessage } from \"@/lib/utils/delta\";\nimport { useDeltaOrderRequiredAllowance } from \"@/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance\";\nimport { useEnabledSrcChainsWithDelta } from \"../state/enabledChainsAtom\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { useMaxButtonPropsBase } from \"../inputs/hooks/useMaxButtonProps\";\n\nconst useLimitTokenFromAmountProps = (): MarkRequired<\n TokenInputAmountProps,\n \"token\"\n> => {\n const logger = useLogger(\"Limit::TokenFrom::AmountProps\");\n const tokenFrom = useLimitTokenFrom();\n\n const amountValue = useAtomValue(limitPayInputAmountAtom);\n const setAmountValue = useSetAtom(setLimitPayAmountAtom);\n\n const tokenBalanceUnit = useTokenFromBalanceUnit();\n\n return {\n amount: amountValue,\n tokenBalanceUnit,\n token: tokenFrom,\n onAmountChange: (values) => {\n logger.log(\"onAmountChange::values\", values);\n setAmountValue(values.value);\n },\n };\n};\n\ntype UseTokenConditionalPropsInput = {\n amountWei: string;\n tokenFrom: Token;\n};\n\nconst useTokenConditionalProps = ({\n amountWei,\n tokenFrom,\n}: UseTokenConditionalPropsInput): Required<\n Pick<\n TokenInputProps,\n \"insufficientBalanceMessageProps\" | \"tokenBadgePropsOverride\"\n >\n> => {\n const spenderContractType = \"ParaswapDelta\";\n\n // amount required to cover allowance of current Orders + amount for the new Order\n const { combinedAllowance: srcCombinedAllowance } =\n useDeltaOrderRequiredAllowance({\n tokenAddress: tokenFrom.address,\n amount: amountWei,\n enabled: spenderContractType === \"ParaswapDelta\",\n });\n\n const tokenAllowance = useGenericTokenAllowance({\n token: tokenFrom,\n spenderContractType: spenderContractType,\n amountToApproveInWei: srcCombinedAllowance,\n });\n\n const {\n isInsufficientBalance,\n isInsufficientBalanceToFill,\n requiredBalanceToFillUnit,\n } = useIsInsufficientBalanceToFillLimitOrder();\n\n const requiredBalanceToFillFormatted =\n isInsufficientBalanceToFill && requiredBalanceToFillUnit\n ? formatTokenAmount(requiredBalanceToFillUnit)\n : undefined;\n\n return {\n tokenBadgePropsOverride: {\n lockIcon:\n !isInsufficientBalance &&\n !isInsufficientBalanceToFill &&\n tokenAllowance.needsApproval,\n },\n insufficientBalanceMessageProps: {\n token: tokenFrom,\n shouldDisplay: isInsufficientBalance || isInsufficientBalanceToFill,\n messageOverride: requiredBalanceToFillFormatted\n ? getInsufficientBalanceToFillOrderMessage(\n tokenFrom,\n requiredBalanceToFillFormatted\n )\n : undefined,\n },\n };\n};\n\nconst useMaxButtonProps = ({ tokenFrom }: { tokenFrom: Token }) => {\n const unsupportedChain = useUnsupportedLimitChain();\n\n const setCurrentLimitInput = useSetAtom(currentLimitInputAtom);\n const setPayInputAmount = useSetAtom(limitPayInputAmountAtom);\n\n const gasLimit = DEPOSIT_NATIVE_AND_PRE_SIGN_GAS_LIMIT;\n const onClick = (balanceUnit: string) => {\n setCurrentLimitInput(\"from\");\n setPayInputAmount(balanceUnit);\n };\n\n const props = useMaxButtonPropsBase({ tokenFrom, gasLimit, onClick });\n return unsupportedChain ? { showMaxButton: false } : props;\n};\n\nconst useTokenFromBalanceUnit = () => {\n const tokenFrom = useLimitTokenFrom();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenFrom,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = (): TokenInputExtraProps => {\n const appChainId = useChainId();\n const enabledChainsWithDelta = useEnabledSrcChainsWithDelta();\n\n const setCurrentInput = useSetAtom(currentLimitInputAtom);\n\n return {\n networkSwitcherProps: {\n classes: {\n // to be able to switch network if on unsupported chain\n root: \"pointer-events-auto\",\n },\n networks: enabledChainsWithDelta,\n selectedNetwork: appChainId,\n allOption: false,\n onSelect: (chainId) => chainId !== \"all\" && switchChain({ chainId }),\n disabled: enabledChainsWithDelta.length <= 1,\n },\n tokenType: \"from\" as const,\n onFocus: () => setCurrentInput(\"from\"),\n label: (\n <>\n <span>Pay</span> <span className=\"text-contrast-5\">on</span>\n </>\n ),\n };\n};\n\nconst disabledClasses = {\n root: \"pointer-events-none\",\n};\n\nexport const useLimitInputClasses = (): TokenInputProps[\"classes\"] => {\n const unsupportedChain = useUnsupportedLimitChain();\n if (unsupportedChain) return disabledClasses;\n};\n\nexport const useLimitTokenFromInputProps = (): TokenInputProps => {\n const amountProps = useLimitTokenFromAmountProps();\n const extraProps = useExtraProps();\n\n const payInputAmountWei = useAtomValue(limitPayInputAmountWeiAtom);\n\n const tokenConditionalProps = useTokenConditionalProps({\n amountWei: payInputAmountWei,\n tokenFrom: amountProps.token,\n });\n\n const maxButtonProps = useMaxButtonProps({ tokenFrom: amountProps.token });\n\n const setTokenFrom = useSetAtom(selectLimitTokenFromAtom);\n\n const classes = useLimitInputClasses();\n\n return {\n ...amountProps,\n ...extraProps,\n ...tokenConditionalProps,\n ...maxButtonProps,\n onTokenSelect: setTokenFrom,\n classes,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAM4B,UAA+B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAInCC,IAAexB,EAAU,gCAAgC,EACzDyB,IAAkBX,GAAmB,EAErCY,IAAoBhC,EAAaO,EAAwB,EACzD0B,IAAuBhC,EAAWC,EAAsB,EAExDgC,IAAyBC,GAAyB,EAACC;CAAA,AAAAR,EAAA,OAAAE,KAAAF,EAAA,OAAAK,KAMjCG,KAAAC,MAAA;EAEdJ,AADAH,EAAMQ,IAAK,0BAA0BD,EAAO,EAC5CJ,EAAeI,EAAME,MAAO;IAC7BX,EAAA,KAAAE,GAAAF,EAAA,KAAAK,GAAAL,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAY;CACF,OADEZ,EAAA,OAAAI,KAAAJ,EAAA,OAAAQ,KAAAR,EAAA,OAAAM,KAAAN,EAAA,OAAAG,KAPIS,IAAA;EAAAC,QACGT;EAAWE;EAAAQ,OAEZX;EAASY,gBACAP;EAIjB,EAAAR,EAAA,KAAAI,GAAAJ,EAAA,KAAAQ,GAAAR,EAAA,KAAAM,GAAAN,EAAA,KAAAG,GAAAH,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IARMY;GAgBHM,KAA2BV,MAAA;CAAA,IAAAR,IAAAC,EAAA,GAAA,EAAC,EAAAgB,cAAAd,iBAAAK,GAGFI;CAAA,AAAAZ,EAAA,OAAAiB,KAAAjB,EAAA,OAAAG,EAAAgB,WAUGP,IAAA;EAAAQ,cACfjB,EAASgB;EAAQN,QACvBI;EAASI,SACR;EACV,EAAArB,EAAA,KAAAiB,GAAAjB,EAAA,KAAAG,EAAAgB,SAAAnB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CALH,IAAA,EAAAsB,mBAAAC,MACE5B,EAA+BiB,EAI7B,EAACY;CAAA,AAAAxB,EAAA,OAAAuB,KAAAvB,EAAA,OAAAG,KAE2CqB,IAAA;EAAAV,OACvCX;EAASsB,qBAXU;EAAeC,sBAanBH;EACvB,EAAAvB,EAAA,KAAAuB,GAAAvB,EAAA,KAAAG,GAAAH,EAAA,KAAAwB,KAAAA,IAAAxB,EAAA;CAJD,IAAA2B,IAAuBzC,EAAyBsC,EAI9C,EAEF,EAAAI,0BAAAC,gCAAAC,iCAII3C,GAA0C,EAAC4C,GAAAC,GAAAC,GAAAC;CAAA,IAAAlC,EAAA,OAAA4B,KAAA5B,EAAA,OAAA6B,KAAA7B,EAAA,OAAA8B,KAAA9B,EAAA,OAAA2B,KAAA3B,EAAA,QAAAG,GAAA;EAE/C,IAAAgC,IACEN,KAAAC,IACIrC,EAAkBqC,EACT,GAFbM,KAAAA,GAOIC,IAAA,CAACT,KAAD,CACCC,KACDF,EAAcW;EAUHtC,AAViBA,EAAA,QAAAqC,IAC/BH,IAAAlC,EAAA,OALwBkC,IAAA,EAAAK,UAErBF,GAGH,EAAArC,EAAA,MAAAqC,GAAArC,EAAA,MAAAkC,IAEQ/B,IAAAA,GACQ6B,IAAAJ,KAAAC,GACEI,IAAAE,IACbzC,EACES,GACAgC,EAEO,GALIC,KAAAA,GAKJpC,EAAA,KAAA4B,GAAA5B,EAAA,KAAA6B,GAAA7B,EAAA,KAAA8B,GAAA9B,EAAA,KAAA2B,GAAA3B,EAAA,MAAAG,GAAAH,EAAA,MAAA+B,GAAA/B,EAAA,MAAAgC,GAAAhC,EAAA,MAAAiC,GAAAjC,EAAA,MAAAkC;QAAAA,AAAAH,IAAA/B,EAAA,KAAAgC,IAAAhC,EAAA,KAAAiC,IAAAjC,EAAA,KAAAkC,IAAAlC,EAAA;CAAA,IAAAqC;CAAA,AAAArC,EAAA,QAAA+B,KAAA/B,EAAA,QAAAgC,KAAAhC,EAAA,QAAAiC,KARkBI,IAAA;EAAAvB,OACxBX;EAASqC,eACDR;EAAoDS,iBAClDR;EAMlB,EAAAjC,EAAA,MAAA+B,GAAA/B,EAAA,MAAAgC,GAAAhC,EAAA,MAAAiC,GAAAjC,EAAA,MAAAqC,KAAAA,IAAArC,EAAA;CAAA,IAAA0C;CACF,OADE1C,EAAA,QAAAkC,KAAAlC,EAAA,QAAAqC,KAhBIK,IAAA;EAAAC,yBACoBT;EAKxBU,iCACgCP;EAUlC,EAAArC,EAAA,MAAAkC,GAAAlC,EAAA,MAAAqC,GAAArC,EAAA,MAAA0C,KAAAA,IAAA1C,EAAA,KAjBM0C;GAoBHG,KAAoBrC,MAAA;CAAA,IAAAR,IAAAC,EAAA,EAAA,EAAC,EAAAE,iBAAAK,GACzBsC,IAAyBxD,GAA0B,EAEnDyD,IAA6B1E,EAAWS,EAAsB,EAC9DkE,IAA0B3E,EAAWM,EAAwB,EAACiC;CAAA,AAAAZ,EAAA,OAAA+C,KAAA/C,EAAA,OAAAgD,KAG9CpC,KAAAqC,MAAA;EAEdD,AADAD,EAAqB,OAAO,EAC5BC,EAAkBC,EAAY;IAC/BjD,EAAA,KAAA+C,GAAA/C,EAAA,KAAAgD,GAAAhD,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CAHD,IAAAkD,IAAgBtC,GAGdY;CAAA,AAAAxB,EAAA,OAAAkD,KAAAlD,EAAA,OAAAG,KAEkCqB,IAAA;EAAArB;EAAAgD,UANnB9D;EAAqC6D;EAMc,EAAAlD,EAAA,KAAAkD,GAAAlD,EAAA,KAAAG,GAAAH,EAAA,KAAAwB,KAAAA,IAAAxB,EAAA;CAApE,IAAAoD,IAActD,EAAsB0B,EAAiC,EAACO;CACZ,OADY/B,EAAA,OAAAoD,KAAApD,EAAA,OAAA8C,KAC/Df,IAAAe,IAAA,EAAAO,eAAoC,IAAe,GAAnDD,GAAmDpD,EAAA,KAAAoD,GAAApD,EAAA,KAAA8C,GAAA9C,EAAA,KAAA+B,KAAAA,IAAA/B,EAAA,IAAnD+B;GAGHxB,UAA0B;CAAA,IAAAP,IAAAC,EAAA,EAAA,EAC9BE,IAAkBX,GAAmB,EAACgB;CAAA,AAAAR,EAAA,OAAAsD,OAAAC,IAAA,4BAAA,IAItB/C,IAAA,EAAAgD,iBAAmBxE,GAAoC,EAAAgB,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAG,IACtES,IAAAZ,EAAA,MAHuCY,IAAA;EAAAE,OAC/BX;EAASsD,cACFjD;EACf,EAAAR,EAAA,KAAAG,GAAAH,EAAA,KAAAY;CAHD,IAAA,EAAAqC,mBAAwBlE,EAAgB6B,EAGtC,EAACY;CAEiC,OAFjCxB,EAAA,OAAAiD,IAEiCzB,IAAAxB,EAAA,MAA7BwB,IAAAvC,EAAiBgE,EAAY,EAAAjD,EAAA,KAAAiD,GAAAjD,EAAA,KAAAwB,IAA7BA;GAGHkC,UAAgB;CAAA,IAAA1D,IAAAC,EAAA,GAAA,EACpB0D,IAAmB9E,GAAY,EAC/B+E,IAA+BhE,GAA8B,EAE7DiE,IAAwBxF,EAAWS,EAAsB,EAAC0B;CAAA,AAAAR,EAAA,OAAAsD,OAAAC,IAAA,4BAAA,IAI7C/C,IAAA,EAAAsD,MAED,uBACP,EAAA9D,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAKS,IAAAY,IAAAgD,EAAsBG,UAAW,GAACvC;CAAA,AAAAxB,EAAA,OAAA2D,KAAA3D,EAAA,OAAA4D,KAAA5D,EAAA,OAAAY,KATxBY,IAAA;EAAAwC,SACXxD;EAGRyD,UACSL;EAAsBM,iBACfP;EAAUQ,WAChB;EAAKC,UACNC;EAA0DC,UAC1D1D;EACX,EAAAZ,EAAA,KAAA2D,GAAA3D,EAAA,KAAA4D,GAAA5D,EAAA,KAAAY,GAAAZ,EAAA,KAAAwB,KAAAA,IAAAxB,EAAA;CAAA,IAAA+B;CAAA,AAAA/B,EAAA,OAAA6D,IAEqC9B,IAAA/B,EAAA,MAA7B+B,UAAM8B,EAAgB,OAAO,EAAA7D,EAAA,KAAA6D,GAAA7D,EAAA,KAAA+B;CAAA,IAAAC;CAAA,AAAAhC,EAAA,OAAAsD,OAAAC,IAAA,4BAAA,IAGlCvB,IAAA,kBAAA,QAAA,EAAA,UAAM,OAAU,CAAA,EAAAhC,EAAA,KAAAgC,KAAAA,IAAAhC,EAAA;CAAA,IAAAiC;CAAA,AAAAjC,EAAA,OAAAsD,OAAAC,IAAA,4BAAA,IADlBtB,IAAA,kBAAA,GAAA,EAAA,UAAA;EACED;EAAgB;EAAC,kBAAA,QAAA;GAAgB,WAAA;aAAkB;GAAS,CAAA;EAC3D,EAAA,CAAA,EAAAhC,EAAA,KAAAiC,KAAAA,IAAAjC,EAAA;CAAA,IAAAkC;CAEN,OAFMlC,EAAA,OAAAwB,KAAAxB,EAAA,QAAA+B,KAjBAG,IAAA;EAAAqC,sBACiB/C;EAUrBgD,WACU;EAAeE,SACjB3C;EAA6B4C,OAEpC1C;EAIH,EAAAjC,EAAA,KAAAwB,GAAAxB,EAAA,MAAA+B,GAAA/B,EAAA,MAAAkC,KAAAA,IAAAlC,EAAA,KAnBMkC;GAsBH0C,IAAkB,EACtBd,MAAM,uBACP,EAEYe,UAAuB;CAElC,IADyBvF,GACrBwD,EAAgB,OAAS8B;GAGlBE,UAA8B;CAAA,IAAA9E,IAAAC,EAAA,GAAA,EACzC8E,IAAoBhF,GAA8B,EAClDiF,IAAmBtB,GAAe,EAElCuB,IAA0B7G,EAAaQ,EAA2B,EAAC4B;CAAA,AAAAR,EAAA,OAAA+E,EAAAjE,SAAAd,EAAA,OAAAiF,KAEZzE,IAAA;EAAAS,WAC1CgE;EAAiB9E,WACjB4E,EAAWjE;EACvB,EAAAd,EAAA,KAAA+E,EAAAjE,OAAAd,EAAA,KAAAiF,GAAAjF,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAHD,IAAAkF,IAA8BhE,EAAyBV,EAGrD,EAACI;CAAA,AAAAZ,EAAA,OAAA+E,EAAAjE,QAEsEF,IAAAZ,EAAA,MAAhCY,IAAA,EAAAT,WAAa4E,EAAWjE,OAAQ,EAAAd,EAAA,KAAA+E,EAAAjE,OAAAd,EAAA,KAAAY;CAAzE,IAAAuE,IAAuBtC,EAAkBjC,EAAiC,EAE1EwE,IAAqB/G,EAAWkB,EAAyB,EAEzDyE,IAAgBa,GAAsB,EAACrD;CAStC,OATsCxB,EAAA,OAAA+E,KAAA/E,EAAA,OAAAgE,KAAAhE,EAAA,OAAAgF,KAAAhF,EAAA,OAAAmF,KAAAnF,EAAA,OAAAoF,KAAApF,EAAA,QAAAkF,KAEhC1D,IAAA;EAAA,GACFuD;EAAW,GACXC;EAAU,GACVE;EAAqB,GACrBC;EAAcE,eACFD;EAAYpB;EAE5B,EAAAhE,EAAA,KAAA+E,GAAA/E,EAAA,KAAAgE,GAAAhE,EAAA,KAAAgF,GAAAhF,EAAA,KAAAmF,GAAAnF,EAAA,KAAAoF,GAAApF,EAAA,MAAAkF,GAAAlF,EAAA,MAAAwB,KAAAA,IAAAxB,EAAA,KAPMwB;;AAtDa,SAAA6C,EAAAiB,GAAA;CAAA,OAeOA,MAAY,SAASzF,EAAY,EAAAyF,YAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitTokenToInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AA0FlD,KAAK,4BAA4B,GAAG;IAClC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,yBAAyB,IAAI,4BAA4B,CA8BxE;AA0CD,eAAO,MAAM,yBAAyB,QAAO,eAc5C,CAAC"}
1
+ {"version":3,"file":"useLimitTokenToInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitTokenToInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AA0FlD,KAAK,4BAA4B,GAAG;IAClC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,yBAAyB,IAAI,4BAA4B,CA8BxE;AAwCD,eAAO,MAAM,yBAAyB,QAAO,eAc5C,CAAC"}
@@ -93,10 +93,7 @@ function A() {
93
93
  }
94
94
  function j() {
95
95
  let e = w(11), t = s(), n = o(), i = n && t && n.network !== t.network, a;
96
- e[0] === Symbol.for("react.memo_cache_sentinel") ? (a = {
97
- tradeMode: "limit",
98
- enabled: !1
99
- }, e[0] = a) : a = e[0];
96
+ e[0] === Symbol.for("react.memo_cache_sentinel") ? (a = { enabled: !1 }, e[0] = a) : a = e[0];
100
97
  let { error: c } = x(a), l = i ? c : void 0, p;
101
98
  if (e[1] !== l || e[2] !== n || e[3] !== t) {
102
99
  let i = l && d(l);
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitTokenToInputProps.js","names":["TokenInputProps","useAtom","useAtomValue","useSetAtom","limitReceiveInputAmountAtom","setLimitReceiveAmountAtom","useLogger","OnValueChange","useDeltaSwapPriceForLimit","useLimitRate","currentLimitInputAtom","TokenInputExtraProps","useTokenBalance","MEDIUM_STALE_TIME_FOR_REACTIVENESS","toDecimalTrimmed","useLimitInputClasses","selectLimitTokenToAtom","useLimitTokenFrom","useLimitTokenTo","useIsTokenSupportedInDeltaQuery","Token","isFilledArray","useChainId","useSelectableDestChains","SupportedChainId","limitChainToAtom","BridgeInfoMode","isUnsupportedTokenError","parseDeltaApiError","replaceUnsupportedTokenMessage","isTruthy","useTokenToBalanceUnit","$","_c","tokenTo","t0","Symbol","for","refetchInterval","t1","token","queryOptions","balanceUnit","t2","useExtraProps","acrossMode","appChainId","chainTo","setChainTo","fromChainId","mode","selectableChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","t3","t4","t5","tokenType","const","onFocus","label","useTokenToAmountProps","logger","receiveAmount","setReceiveAmount","isLoading","values","log","value","onAmountChange","setTokenTo","amount","onTokenSelect","UnsupportedLimitTokensResult","unsupportedTokens","useUnsupportedLimitTokens","tokenFrom","address","network","data","isDestTokenSupported","isDestTokenSupportedLoading","isSrcTokenSupported","isSrcTokenSupportedLoading","push","t6","useWarningMessage","isCrosschainLimitOrder","tradeMode","enabled","error","limitPriceError","priceError","deltaPriceError","description","filter","deltaErrorToShow","customUnsupportedTokenMessage","unsupportedTokensWarning","warningMessage","useLimitTokenToInputProps","extraAmountProps","extraProps","tokenBalanceUnit","classes","tokens","Pick","symbol","tokenSymbols","map","join"],"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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8BA,IAAM+B,UAAwB;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAC5BC,IAAgBhB,GAAiB,EAACiB;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAIlBF,IAAA,EAAAG,iBAAmBzB,GAAoC,EAAAmB,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,OAAAE,IACtEK,IAAAP,EAAA,MAHuCO,IAAA;EAAAC,OAC/BN;EAAOO,cACAN;EACf,EAAAH,EAAA,KAAAE,GAAAF,EAAA,KAAAO;CAHD,IAAA,EAAAG,mBAAwB9B,EAAgB2B,EAGtC,EAACI;CAEiC,OAFjCX,EAAA,OAAAU,IAEiCC,IAAAX,EAAA,MAA7BW,IAAA7B,EAAiB4B,EAAY,EAAAV,EAAA,KAAAU,GAAAV,EAAA,KAAAW,IAA7BA;GAGHC,KAAgBT,MAAA;CAAA,IAAAH,IAAAC,EAAA,GAAA,EAAC,EAAAY,kBAAAV,GAKrBW,IAAmBxB,GAAY,EAE/B,CAAAyB,GAAAC,KAA8B/C,EAAQwB,EAAiB,EAACc;CAAA,AAAAP,EAAA,OAAAa,KAAAb,EAAA,OAAAc,KAEHP,IAAA;EAAAU,aACtCH;EAAUI,MACjBL;EACP,EAAAb,EAAA,KAAAa,GAAAb,EAAA,KAAAc,GAAAd,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAHD,IAAA,EAAAmB,wBAA6B5B,EAAwBgB,EAGnD,EAEFa,IAA4BL,MAAYM,KAAAA,GAAUV;CAAA,AAAAX,EAAA,OAAAe,KAAAf,EAAA,OAAAmB,KAAAnB,EAAA,OAAAgB,KAAAhB,EAAA,OAAAoB,KAErBT,IAAAS,IAAA;EAAAE,UAEbH;EAAgBI,iBACTR;EAAOS,WACb;EAAKC,WACNC,MACRA,MAAY,SAASV,EAAWU,EAAQ;EAAAC,UAChCR,EAAgBS,UAAW;EAE9B,GATgBP,KAAAA,GAShBrB,EAAA,KAAAe,GAAAf,EAAA,KAAAmB,GAAAnB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAoB,GAAApB,EAAA,KAAAW,KAAAA,IAAAX,EAAA;CATb,IAAA6B,IAA6BlB,GAW7BmB,IAAwB3D,EAAWO,EAAsB,EAACqD;CAAA,AAAA/B,EAAA,OAAA8B,IAKpBC,IAAA/B,EAAA,MAA3B+B,UAAMD,EAAgB,KAAK,EAAA9B,EAAA,KAAA8B,GAAA9B,EAAA,KAAA+B;CAAA,IAAAC;CAAA,AAAAhC,EAAA,QAAAI,OAAAC,IAAA,4BAAA,IAC7B2B,IAAA,kBAAA,QAAA,EAAA,UAAM,WAAc,CAAA,EAAAhC,EAAA,MAAAgC,KAAAA,IAAAhC,EAAA;CAAA,IAAAiC;CAC5B,OAD4BjC,EAAA,QAAA6B,KAAA7B,EAAA,QAAA+B,KAJtBE,IAAA;EAAAJ;EAAAK,WAEM;EAAaE,SACfL;EAA2BM,OAC7BL;EACR,EAAAhC,EAAA,MAAA6B,GAAA7B,EAAA,MAAA+B,GAAA/B,EAAA,MAAAiC,KAAAA,IAAAjC,EAAA,KALMiC;GAQHK,UAAwB;CAAA,IAAAtC,IAAAC,EAAA,EAAA,EAI5BsC,IAAejE,EAAU,8BAA8B,EACvD4B,IAAgBhB,GAAiB,EAEjCsD,IAAsBtE,EAAaE,EAA4B,EAC/DqE,IAAyBtE,EAAWE,EAA0B,EAE9D,EAAAqE,iBAAsBjE,EAAa,QAAQ,EAAC0B;CAAA,AAAAH,EAAA,OAAAuC,KAAAvC,EAAA,OAAAyC,KAENtC,KAAAwC,MAAA;EAEpCF,AADAF,EAAMK,IAAK,0BAA0BD,EAAO,EAC5CF,EAAiBE,EAAME,MAAO;IAC/B7C,EAAA,KAAAuC,GAAAvC,EAAA,KAAAyC,GAAAzC,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAHD,IAAA8C,IAAsC3C,GAKtC4C,IAAmB5E,EAAWa,EAAuB,EAACuB;CAQrD,OARqDP,EAAA,OAAA0C,KAAA1C,EAAA,OAAA8C,KAAA9C,EAAA,OAAAwC,KAAAxC,EAAA,OAAA+C,KAAA/C,EAAA,OAAAE,KAE/CK,IAAA;EAAAyC,QACGR;EAAaE;EAAAlC,OAEdN;EAAO4C;EAAAG,eAECF;EAChB,EAAA/C,EAAA,KAAA0C,GAAA1C,EAAA,KAAA8C,GAAA9C,EAAA,KAAAwC,GAAAxC,EAAA,KAAA+C,GAAA/C,EAAA,KAAAE,GAAAF,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IANMO;;AAcT,SAAO6C,IAAA;CAAA,IAAApD,IAAAC,EAAA,GAAA,EACLC,IAAgBhB,GAAiB,EACjCmE,IAAkBpE,GAAmB,EAI1BkB,IAAAD,GAAOoD,SACL/C,IAAAL,GAAOqD,WAAaF,EAASE,SAAQ5C;CAAA,AAAAX,EAAA,OAAAG,KAAAH,EAAA,OAAAO,KAFhBI,IAAA;EAAAH,OACvBL;EAAgBuB,SACdnB;EACV,EAAAP,EAAA,KAAAG,GAAAH,EAAA,KAAAO,GAAAP,EAAA,KAAAW,KAAAA,IAAAX,EAAA;CAJH,IAAA,EAAAwD,MAAAC,GAAAf,WAAAgB,MACEvE,EAAgCwB,EAG9B,EAACoB;CAAA,AAAA/B,EAAA,OAAAqD,EAAAC,WAAAtD,EAAA,OAAAqD,EAAAE,WAG6BxB,IAAA;EAAAvB,OACvB6C,EAASC;EAAQ5B,SACf2B,EAASE;EACnB,EAAAvD,EAAA,KAAAqD,EAAAC,SAAAtD,EAAA,KAAAqD,EAAAE,SAAAvD,EAAA,KAAA+B,KAAAA,IAAA/B,EAAA;CAJH,IAAA,EAAAwD,MAAAG,GAAAjB,WAAAkB,MACEzE,EAAgC4C,EAG9B,EAACC;CAAA,IAAAhC,EAAA,OAAAyD,KAAAzD,EAAA,OAAA2D,KAAA3D,EAAA,OAAAqD,KAAArD,EAAA,OAAAE,GAAA;EAEL,IAAAiD,IAAmC,EAAE;EAWtBnD,AAVX2D,MAAwB,MAC1BR,EAAiBU,KAAMR,EAAU,EAE/BI,MAAyB,MAAzBvD,KACFiD,EAAiBU,KAAM3D,EAAQ,EAIZ8B,IAAA3C,EAAc8D,EAEpB,GADRA,IADc9B,KAAAA,GAENrB,EAAA,KAAAyD,GAAAzD,EAAA,KAAA2D,GAAA3D,EAAA,KAAAqD,GAAArD,EAAA,KAAAE,GAAAF,EAAA,MAAAgC;QAAAA,IAAAhC,EAAA;CACF,IAAAiC,IAAAyB,KAAAE,GAAyDE;CACrE,OADqE9D,EAAA,QAAAgC,KAAAhC,EAAA,QAAAiC,KAJ/D6B,IAAA;EAAAX,mBACcnB;EAENU,WACFT;EACZ,EAAAjC,EAAA,MAAAgC,GAAAhC,EAAA,MAAAiC,GAAAjC,EAAA,MAAA8D,KAAAA,IAAA9D,EAAA,KALM8D;;AAQT,SAAAC,IAAA;CAAA,IAAA/D,IAAAC,EAAA,GAAA,EAGEC,IAAgBhB,GAAiB,EACjCmE,IAAkBpE,GAAmB,EAErC+E,IACEX,KAAAnD,KAAwBmD,EAASE,YAAarD,EAAOqD,SAASpD;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAEHF,IAAA;EAAA8D,WAEhD;EAAOC,SACT;EACV,EAAAlE,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAJD,IAAA,EAAAmE,OAAAC,MAAmC5F,EAA0B2B,EAI3D,EAEFkE,IAAmBL,IAAAI,IAAA/C,KAAAA,GAAqDd;CAAA,IAAAP,EAAA,OAAAqE,KAAArE,EAAA,OAAAqD,KAAArD,EAAA,OAAAE,GAAA;EACxE,IAAAoE,IAAwBD,KAAczE,EAAmByE,EAAW;EAQ5DrE,AAPiBO,IAAA+D,IACrB3E,EAAwB2E,EAKM,GAJ5BzE,EACEyE,EAAeC,aACf,CAAClB,GAAWnD,EAAQ,CAAAsE,OAAQ1E,EAEH,CAAC,GAA5BwE,GAAeC,cANI,MAOjBvE,EAAA,KAAAqE,GAAArE,EAAA,KAAAqD,GAAArD,EAAA,KAAAE,GAAAF,EAAA,KAAAO;QAAAA,IAAAP,EAAA;CAPR,IAAAyE,IAAyBlE,GASzB,EAAA4C,sBAAAT,iBAAyCU,GAA2B,EAACzC;CAAA,AAAAX,EAAA,OAAAmD,IAGxDxC,IAAAX,EAAA,MAFoBW,IAAAwC,IAC7BuB,EAA8BvB,EACrB,GAFoB9B,KAAAA,GAEpBrB,EAAA,KAAAmD,GAAAnD,EAAA,KAAAW;CAEb,IAAAiE,IACED,KAAAF,KAAApD,KAAAA,GAA0DU;CAK3D,OAL2D/B,EAAA,OAAA0C,KAAA1C,EAAA,OAAAmD,KAAAnD,EAAA,OAAA4E,KACrD7C,IAAA;EAAA6C;EAAAzB;EAAAT;EAIN,EAAA1C,EAAA,KAAA0C,GAAA1C,EAAA,KAAAmD,GAAAnD,EAAA,KAAA4E,GAAA5E,EAAA,MAAA+B,KAAAA,IAAA/B,EAAA,KAJM+B;;AAOT,IAAa8C,UAA4B;CAAA,IAAA7E,IAAAC,EAAA,EAAA,EACvC6E,IAAyBxC,GAAuB,EAACnC;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAChBF,IAAA,EAAAU,YAAc,SAAS,EAAAb,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAAxD,IAAA+E,IAAmBnE,EAAcT,EAAwB,EACzD6E,IAAyBjF,GAAuB,EAChDkF,IAAgBlG,GAAsB,EACtC,EAAA6F,sBAA2Bb,GAAmB,EAACxD;CAQ9C,OAR8CP,EAAA,OAAAiF,KAAAjF,EAAA,OAAA8E,KAAA9E,EAAA,OAAA+E,KAAA/E,EAAA,OAAAgF,KAAAhF,EAAA,OAAA4E,KAExCrE,IAAA;EAAA,GACFwE;EAAU,GACVD;EAAgBE;EAAAC;EAAAL;EAIpB,EAAA5E,EAAA,KAAAiF,GAAAjF,EAAA,KAAA8E,GAAA9E,EAAA,KAAA+E,GAAA/E,EAAA,KAAAgF,GAAAhF,EAAA,KAAA4E,GAAA5E,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IANMO;;AAST,SAASmE,EACPQ,GACoB;CACf7F,MAAc6F,EAAO,EAQ1B,OALIA,EAAOtD,WAAW,IACb,SAASsD,EAAO,GAAGE,OAAM,oCAI3B,UADcF,EAAOI,KAAK9E,MAAUA,EAAM4E,OAAO,CAACG,KAAK,KAC7CF,CAAY"}
1
+ {"version":3,"file":"useLimitTokenToInputProps.js","names":["TokenInputProps","useAtom","useAtomValue","useSetAtom","limitReceiveInputAmountAtom","setLimitReceiveAmountAtom","useLogger","OnValueChange","useDeltaSwapPriceForLimit","useLimitRate","currentLimitInputAtom","TokenInputExtraProps","useTokenBalance","MEDIUM_STALE_TIME_FOR_REACTIVENESS","toDecimalTrimmed","useLimitInputClasses","selectLimitTokenToAtom","useLimitTokenFrom","useLimitTokenTo","useIsTokenSupportedInDeltaQuery","Token","isFilledArray","useChainId","useSelectableDestChains","SupportedChainId","limitChainToAtom","BridgeRoutesMode","isUnsupportedTokenError","parseDeltaApiError","replaceUnsupportedTokenMessage","isTruthy","useTokenToBalanceUnit","$","_c","tokenTo","t0","Symbol","for","refetchInterval","t1","token","queryOptions","balanceUnit","t2","useExtraProps","acrossMode","appChainId","chainTo","setChainTo","fromChainId","mode","selectableChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","t3","t4","t5","tokenType","const","onFocus","label","useTokenToAmountProps","logger","receiveAmount","setReceiveAmount","isLoading","values","log","value","onAmountChange","setTokenTo","amount","onTokenSelect","UnsupportedLimitTokensResult","unsupportedTokens","useUnsupportedLimitTokens","tokenFrom","address","network","data","isDestTokenSupported","isDestTokenSupportedLoading","isSrcTokenSupported","isSrcTokenSupportedLoading","push","t6","useWarningMessage","isCrosschainLimitOrder","enabled","error","limitPriceError","priceError","deltaPriceError","description","filter","deltaErrorToShow","customUnsupportedTokenMessage","unsupportedTokensWarning","warningMessage","useLimitTokenToInputProps","extraAmountProps","extraProps","tokenBalanceUnit","classes","tokens","Pick","symbol","tokenSymbols","map","join"],"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 { BridgeRoutesMode } from \"@/hooks/swap/prices/delta/queries/bridgeRoutes/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: BridgeRoutesMode;\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 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"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { enabledDestChainsAtom as n, enabledSrcChainsAtom as r } from "./enabled
4
4
  import { switchChain as i } from "../../lib/web3/wagmi/switchChain.js";
5
5
  import { getSelectableDestChains as a } from "./getSelectableDestChains.js";
6
6
  import { tradeModeToTokenAtoms as o } from "../inputs/state/common.js";
7
- import { bridgeInfosLoadedAtom as s } from "../../hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js";
7
+ import { bridgeRoutesLoadedAtom as s } from "../../hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.js";
8
8
  import "jotai";
9
9
  import { atomEffect as c } from "jotai-effect";
10
10
  //#region src/core/state/configEffectAtom.ts