@velora-dex/widget 0.8.4-dev.0 → 0.8.5-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 (346) hide show
  1. package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
  2. package/dist/components/widget/AppHeader/Activities/hooks.js +162 -143
  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 +28 -21
  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.map +1 -1
  11. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
  12. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
  13. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
  14. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  15. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +1 -1
  16. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
  17. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  18. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js +1 -1
  19. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
  20. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts +5 -5
  21. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
  22. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +107 -105
  23. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
  24. package/dist/components/widget/LimitOrderItem/types.d.ts +2 -2
  25. package/dist/components/widget/LimitOrderItem/types.d.ts.map +1 -1
  26. package/dist/components/widget/LimitOrderItem/utils.d.ts +2 -2
  27. package/dist/components/widget/LimitOrderItem/utils.d.ts.map +1 -1
  28. package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
  29. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js +1 -1
  30. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
  31. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js +1 -1
  32. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
  33. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.d.ts +2 -2
  34. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.d.ts.map +1 -1
  35. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +23 -23
  36. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js.map +1 -1
  37. package/dist/components/widget/OtcOrderItem/types.d.ts +2 -2
  38. package/dist/components/widget/OtcOrderItem/types.d.ts.map +1 -1
  39. package/dist/components/widget/OtcOrderItem/utils.d.ts +2 -2
  40. package/dist/components/widget/OtcOrderItem/utils.d.ts.map +1 -1
  41. package/dist/components/widget/OtcOrderItem/utils.js +1 -1
  42. package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
  43. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js +1 -1
  44. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
  45. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.d.ts +2 -2
  46. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.d.ts.map +1 -1
  47. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
  48. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  49. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  50. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +86 -86
  51. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  52. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
  53. package/dist/components/widget/TradeOverview/TradeComplete/utils.js +37 -37
  54. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  55. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
  56. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
  57. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js +83 -83
  58. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  59. package/dist/core/TradeFlowScreenButton.d.ts +3 -3
  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 +1 -1
  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 +1 -1
  68. package/dist/core/across/utils.d.ts.map +1 -1
  69. package/dist/core/across/utils.js +15 -25
  70. package/dist/core/across/utils.js.map +1 -1
  71. package/dist/core/index.js.map +1 -1
  72. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  73. package/dist/core/inputs/hooks/useWarningMessage.d.ts +1 -1
  74. package/dist/core/inputs/hooks/useWarningMessage.d.ts.map +1 -1
  75. package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
  76. package/dist/core/inputs/state/guards.d.ts +3 -0
  77. package/dist/core/inputs/state/guards.d.ts.map +1 -0
  78. package/dist/core/inputs/state/guards.js +12 -0
  79. package/dist/core/inputs/state/guards.js.map +1 -0
  80. package/dist/core/inputs/state/inputAmountAtom.d.ts +2 -2
  81. package/dist/core/inputs/state/inputAmountAtom.d.ts.map +1 -1
  82. package/dist/core/inputs/state/inputAmountAtom.js +8 -7
  83. package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
  84. package/dist/core/inputs/state/setTokenByAddressAtom.js +1 -1
  85. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  86. package/dist/core/limit/state/limitInputAmountAtom.d.ts +2 -2
  87. package/dist/core/limit/state/limitInputAmountAtom.d.ts.map +1 -1
  88. package/dist/core/limit/state/limitInputAmountAtom.js +14 -13
  89. package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
  90. package/dist/core/limit/state/utils.d.ts +1 -1
  91. package/dist/core/limit/useLimitRate.d.ts +1 -1
  92. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  93. package/dist/core/otc/state/otcInputAmountAtom.d.ts +2 -2
  94. package/dist/core/otc/state/otcInputAmountAtom.d.ts.map +1 -1
  95. package/dist/core/otc/state/otcInputAmountAtom.js +14 -13
  96. package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
  97. package/dist/core/state/configAtom.js +2 -2
  98. package/dist/core/state/configAtom.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 +1 -1
  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/twap/state/twapInputAmountAtom.d.ts +2 -2
  105. package/dist/core/twap/state/twapInputAmountAtom.d.ts.map +1 -1
  106. package/dist/core/twap/state/twapInputAmountAtom.js +10 -9
  107. package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
  108. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
  109. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
  110. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
  111. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
  112. package/dist/events/types/cancelOrder.d.ts +3 -3
  113. package/dist/events/types/cancelOrder.d.ts.map +1 -1
  114. package/dist/events/types/fill.d.ts +2 -2
  115. package/dist/events/types/fill.d.ts.map +1 -1
  116. package/dist/events/types/otc.d.ts +2 -2
  117. package/dist/events/types/otc.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/otc/mutations/useCancelLimitOrder.d.ts +2 -2
  125. package/dist/hooks/otc/mutations/useCancelLimitOrder.d.ts.map +1 -1
  126. package/dist/hooks/otc/mutations/useCancelLimitOrder.js +4 -7
  127. package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
  128. package/dist/hooks/otc/mutations/useCreateLimitOrder.d.ts +3 -3
  129. package/dist/hooks/otc/mutations/useCreateLimitOrder.d.ts.map +1 -1
  130. package/dist/hooks/otc/mutations/useCreateLimitOrder.js +7 -10
  131. package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
  132. package/dist/hooks/otc/mutations/useFillOrder.d.ts +2 -2
  133. package/dist/hooks/otc/mutations/useFillOrder.d.ts.map +1 -1
  134. package/dist/hooks/otc/mutations/useFillOrder.js +2 -2
  135. package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
  136. package/dist/hooks/otc/mutations/utils.d.ts +2 -2
  137. package/dist/hooks/otc/mutations/utils.d.ts.map +1 -1
  138. package/dist/hooks/otc/mutations/utils.js.map +1 -1
  139. package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js +1 -1
  140. package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
  141. package/dist/hooks/otc/queries/useLimitOrders.d.ts +29 -29
  142. package/dist/hooks/otc/queries/useLimitOrders.d.ts.map +1 -1
  143. package/dist/hooks/otc/queries/useLimitOrders.js +7 -7
  144. package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
  145. package/dist/hooks/otc/queries/utils.d.ts +6 -6
  146. package/dist/hooks/otc/queries/utils.d.ts.map +1 -1
  147. package/dist/hooks/otc/queries/utils.js +1 -1
  148. package/dist/hooks/otc/queries/utils.js.map +1 -1
  149. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.d.ts +2 -2
  150. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.d.ts.map +1 -1
  151. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js +1 -1
  152. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
  153. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts +5 -5
  154. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts.map +1 -1
  155. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +1 -1
  156. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
  157. package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js +1 -1
  158. package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
  159. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +3 -3
  160. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
  161. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
  162. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +6 -39
  163. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
  164. package/dist/hooks/swap/prices/delta/bridge/utils.js +0 -1
  165. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  166. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
  167. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
  168. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +1 -1
  169. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  170. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
  171. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
  172. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +1 -1
  173. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  174. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +1 -1
  175. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  176. package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
  177. package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
  178. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +1 -1
  179. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  180. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts +2 -2
  181. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts.map +1 -1
  182. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
  183. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts +2 -2
  184. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
  185. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +62 -60
  186. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  187. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
  188. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  189. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +1 -1
  190. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  191. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +1 -1
  192. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  193. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts +2 -2
  194. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts.map +1 -1
  195. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js +22 -20
  196. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
  197. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
  198. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  199. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +1 -1
  200. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  201. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
  202. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  203. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +1 -1
  204. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  205. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +5 -5
  206. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
  207. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  208. package/dist/hooks/swap/prices/delta/orders/types.d.ts +10 -7
  209. package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
  210. package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts +2 -2
  211. package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts.map +1 -1
  212. package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
  213. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +15 -13
  214. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
  215. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +18 -18
  216. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  217. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +43 -18
  218. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  219. package/dist/hooks/swap/prices/delta/orders/utils.js +28 -18
  220. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  221. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts +2 -0
  222. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts.map +1 -0
  223. package/dist/hooks/swap/prices/delta/queries/{bridgeRoutes/bridgeRoutesLoadedAtom.js → bridgeInfo/bridgeInfosLoadedAtom.js} +4 -4
  224. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -0
  225. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts +8 -0
  226. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +1 -0
  227. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js +17 -0
  228. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -0
  229. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts +3 -0
  230. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts.map +1 -0
  231. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js +11 -0
  232. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -0
  233. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts +19 -0
  234. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -0
  235. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts +3 -0
  236. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts.map +1 -0
  237. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js +31 -0
  238. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -0
  239. package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js +1 -1
  240. package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
  241. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  242. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js +1 -1
  243. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js.map +1 -1
  244. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts +6 -6
  245. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts.map +1 -1
  246. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js +1 -1
  247. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
  248. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +13 -13
  249. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  250. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +2 -2
  251. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  252. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js +1 -1
  253. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
  254. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +14 -14
  255. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  256. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +58 -72
  257. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  258. package/dist/hooks/swap/prices/types.d.ts +2 -2
  259. package/dist/hooks/swap/prices/types.d.ts.map +1 -1
  260. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
  261. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  262. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  263. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
  264. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
  265. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
  266. package/dist/hooks/swap/prices/useTwapPrices.d.ts +4 -4
  267. package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
  268. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
  269. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +5 -5
  270. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
  271. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
  272. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts +4 -4
  273. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts.map +1 -1
  274. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
  275. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
  276. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  277. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  278. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  279. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -2
  280. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  281. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  282. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +5 -5
  283. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
  284. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  285. package/dist/hooks/tokens/useAllTokensWithFilter.d.ts +1 -1
  286. package/dist/hooks/tokens/useAllTokensWithFilter.d.ts.map +1 -1
  287. package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
  288. package/dist/hooks/tokens/useTokensFromAcross.d.ts +1 -1
  289. package/dist/hooks/tokens/useTokensFromAcross.d.ts.map +1 -1
  290. package/dist/hooks/tokens/useTokensFromAcross.js +10 -7
  291. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  292. package/dist/hooks/useAvailableCrosses.d.ts +1 -1
  293. package/dist/hooks/useAvailableCrosses.d.ts.map +1 -1
  294. package/dist/hooks/useAvailableCrosses.js +17 -18
  295. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  296. package/dist/hooks/useBridgeInfo.d.ts +6 -0
  297. package/dist/hooks/useBridgeInfo.d.ts.map +1 -0
  298. package/dist/hooks/{useBridgeRoutes.js → useBridgeInfo.js} +4 -4
  299. package/dist/hooks/useBridgeInfo.js.map +1 -0
  300. package/dist/hooks/useIsCrosschainPossible.d.ts +1 -1
  301. package/dist/hooks/useIsCrosschainPossible.d.ts.map +1 -1
  302. package/dist/hooks/useIsCrosschainPossible.js +13 -15
  303. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  304. package/dist/hooks/useSDK.d.ts +19 -19
  305. package/dist/hooks/useSDK.d.ts.map +1 -1
  306. package/dist/hooks/useSDK.js +42 -42
  307. package/dist/hooks/useSDK.js.map +1 -1
  308. package/dist/hooks/useSelectableDestChains.d.ts +1 -1
  309. package/dist/hooks/useSelectableDestChains.d.ts.map +1 -1
  310. package/dist/hooks/useSelectableDestChains.js.map +1 -1
  311. package/dist/lib/queryClient.js +1 -1
  312. package/dist/lib/queryClient.js.map +1 -1
  313. package/dist/lib/utils/toasts.d.ts +3 -3
  314. package/dist/lib/utils/toasts.d.ts.map +1 -1
  315. package/dist/lib/utils/toasts.js.map +1 -1
  316. package/dist/lib/utils/twap.d.ts +3 -3
  317. package/dist/lib/utils/twap.d.ts.map +1 -1
  318. package/dist/lib/utils/twap.js +0 -1
  319. package/dist/lib/utils/twap.js.map +1 -1
  320. package/package.json +2 -2
  321. package/dist/hooks/swap/prices/delta/bridge/types.d.ts +0 -43
  322. package/dist/hooks/swap/prices/delta/bridge/types.d.ts.map +0 -1
  323. package/dist/hooks/swap/prices/delta/bridge/useBridgedDeposit.d.ts +0 -18
  324. package/dist/hooks/swap/prices/delta/bridge/useBridgedDeposit.d.ts.map +0 -1
  325. package/dist/hooks/swap/prices/delta/bridge/useSuggestedFees.d.ts +0 -5
  326. package/dist/hooks/swap/prices/delta/bridge/useSuggestedFees.d.ts.map +0 -1
  327. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.d.ts +0 -2
  328. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.d.ts.map +0 -1
  329. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.js.map +0 -1
  330. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.d.ts +0 -6
  331. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.d.ts.map +0 -1
  332. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.js +0 -9
  333. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.js.map +0 -1
  334. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.d.ts +0 -3
  335. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.d.ts.map +0 -1
  336. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.js +0 -11
  337. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.js.map +0 -1
  338. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/types.d.ts +0 -19
  339. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/types.d.ts.map +0 -1
  340. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.d.ts +0 -3
  341. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.d.ts.map +0 -1
  342. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.js +0 -31
  343. package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.js.map +0 -1
  344. package/dist/hooks/useBridgeRoutes.d.ts +0 -6
  345. package/dist/hooks/useBridgeRoutes.d.ts.map +0 -1
  346. package/dist/hooks/useBridgeRoutes.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useLimitOrderFlow.js","names":["useAccount","useChainId","assert","useEnsureTxReceipt","Address","Hash","TransactionReceipt","ApprovalFlowResult","SubmitTxResult","useCreateAndSubmitDeltaOrder","CreateAndSubmitDeltaOrderInput","useMinViemClient","useMutation","useRef","SupportedChainId","UserCancelledError","CallsSentObject","TxSentObject","useApproveOrPermit","useLogger","usePartner","useLimitDeadline","getOverallOrderStatus","useWatchDeltaAuction","useWidgetEvents","shouldApproveOrBatch","usePreSignAndSubmitDeltaOrder","DeltaV2","useLimitReceiverAddressValue","useDepositAndSubmitDeltaOrder","isETHaddress","useCancelOrWithdrawAndCancelDeltaOrder","CancelDeltaOrdersReturn","DeltaAuctionWithOrder","CancelOrderStepKey","HALF_MINUTE_MS","useReferrer","limitOrderFlowType","UserDefinedLimitPrice","srcTokenAddress","destTokenAddress","srcAmount","destAmount","route","DeltaRoute","UseLimitOrderFlowInput","limitPrice","SubmitLimitOrderResult","tradeFlowType","approve","limitOrder","sentOrder","lastOrderState","account","receiverAddress","OnTxSent","txSent","RunLimitOrderOptions","onTxSent","UseLimitOrderFlowResult","chainId","runLimitOrderFlow","options","Promise","reset","cancelFlow","retryFlow","cancelLimitOrder","approval","limitOrderSubmission","order","isPostingOrder","isCreatingOrder","isOrderSent","isPending","isError","isSuccess","error","Error","limitOrderExecution","isOrderPending","isOrderExecuting","isOrderExecuted","limitOrderCancelation","receipt","txHash","response","isCancelingOrder","isOrderCancellable","isOrderCanceled","step","result","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","logger","approveTxMut","events","approveOrPermitEvents","srcToken","spenderContractType","swapSide","tradeMode","address","minClient","createAndSubmitOrderMut","client","mutationOptions","onSuccess","log","onError","limitOrderCreateAndSubmit","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","resetPreSignAndSubmitDeltaOrder","viemClient","deltaOrderDeposit","resetDepositAndSubmitDeltaOrder","depositAndSubmitDeltaOrder","postingOrder","watchOrderExecution","orderId","id","refetchInterval","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","orderStatus","data","isLoading","isRefetching","cancelOrderMut","cancelOrderResponse","ensureTxReceipt","currentAbortControllerRef","AbortController","current","abort","partner","referrerAddress","deadline","onLimitOrder","submitLimitOrder","abortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDepositAndPreSign","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","createOrderInput","type","orderInput","owner","beneficiary","limitAmount","side","partnerFeeBps","orderFromAPI","depositAmount","mutateAsync","cancelDeltaOrder","limitOrderMut","mutationFn","mutationKey","onSettled"],"sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateAndSubmitDeltaOrder,\n type CreateAndSubmitDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\n\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { useWatchDeltaAuction } from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { DeltaV2 } from \"@velora-dex/sdk\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\nimport { useDepositAndSubmitDeltaOrder } from \"./common/useDepositAndSubmitDeltaOrder\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useCancelOrWithdrawAndCancelDeltaOrder } from \"../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder\";\nimport type { CancelDeltaOrdersReturn } from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport type { DeltaAuctionWithOrder } from \"../prices/delta/orders/types\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { HALF_MINUTE_MS } from \"@/lib/constants/time\";\nimport { useReferrer } from \"@/hooks/useReferrer\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n route: DeltaV2.DeltaRoute;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => Promise<\n TransactionReceipt | CancelDeltaOrdersReturn | undefined\n >;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: DeltaAuctionWithOrder;\n isPostingOrder: boolean;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n receipt?: TransactionReceipt;\n txHash?: string;\n response?: CancelDeltaOrdersReturn;\n isCancelingOrder: boolean;\n isOrderCancellable: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n step?: CancelOrderStepKey;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n chainId,\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createAndSubmitOrderMut = useCreateAndSubmitDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createAndSubmitOrderMut.order,\n isCreatingOrder: createAndSubmitOrderMut.isCreatingOrder,\n isPostingOrder: createAndSubmitOrderMut.isPostingOrder,\n isOrderSent: createAndSubmitOrderMut.isOrderSent,\n isPending: createAndSubmitOrderMut.isPending,\n isError: createAndSubmitOrderMut.isError,\n isSuccess: createAndSubmitOrderMut.isSuccess,\n error: createAndSubmitOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n const {\n deltaOrderDeposit,\n reset: resetDepositAndSubmitDeltaOrder,\n depositAndSubmitDeltaOrder: depositAndSubmitDeltaOrder,\n } = useDepositAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order:\n limitOrderCreateAndSubmit.order ||\n deltaOrderPreSign.order ||\n deltaOrderDeposit.order,\n isPostingOrder:\n limitOrderCreateAndSubmit.isPostingOrder ||\n deltaOrderPreSign.postingOrder.isPostingOrder ||\n deltaOrderDeposit.postingOrder.isPostingOrder,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isCreatingOrder ||\n deltaOrderPreSign.isCreatingOrder ||\n deltaOrderDeposit.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isOrderSent ||\n deltaOrderPreSign.isOrderSent ||\n deltaOrderDeposit.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isPending ||\n deltaOrderDeposit.isPending,\n isError:\n limitOrderCreateAndSubmit.isError ||\n deltaOrderPreSign.isError ||\n deltaOrderDeposit.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isSuccess ||\n deltaOrderDeposit.isSuccess,\n error:\n limitOrderCreateAndSubmit.error ||\n deltaOrderPreSign.error ||\n deltaOrderDeposit.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction<DeltaAuctionWithOrder>({\n orderId: limitOrderSubmission.order?.id,\n refetchInterval: HALF_MINUTE_MS,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: limitOrderSubmission.order,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError: watchOrderExecution.isError || orderStatus === \"failed\",\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderMut = useCancelOrWithdrawAndCancelDeltaOrder({\n // supply the must up-to-date order for cancellation\n order: limitOrderExecution.lastOrderState || limitOrderExecution.sentOrder,\n chainId,\n account,\n client: minClient,\n logger,\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n receipt: cancelOrderMut.receipt,\n txHash: cancelOrderMut.txHash,\n response: cancelOrderMut.cancelOrderResponse,\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCancellable: cancelOrderMut.isOrderCancellable,\n isOrderCanceled: cancelOrderMut.isSuccess,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n step: cancelOrderMut.step,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const { partner } = usePartner();\n const { referrerAddress } = useReferrer();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the synchronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(limitPrice.srcTokenAddress);\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n\n const createOrderInput: CreateAndSubmitDeltaOrderInput = {\n signal,\n type: \"LIMIT\",\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n route: limitPrice.route,\n limitAmount: limitPrice.destAmount,\n side: \"SELL\",\n partner,\n partnerFeeBps: 0,\n deadline,\n },\n };\n\n let orderFromAPI: DeltaAuctionWithOrder;\n\n if (shouldDepositAndPreSign) {\n const depositAmount = limitPrice.srcAmount;\n // deposit ETH + depositTx + POST order\n orderFromAPI = await depositAndSubmitDeltaOrder({\n createOrderInput,\n depositAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n orderFromAPI =\n await createAndSubmitOrderMut.mutateAsync(createOrderInput);\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = async () => {\n try {\n return await cancelOrderMut.cancelDeltaOrder();\n } catch (error) {\n logger.error(\"Cancel Limit order error\", error);\n // allow to re-trigger cancellation after error (like UserCancelledError)\n cancelOrderMut.reset();\n }\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n\n let result: SubmitLimitOrderResult | undefined = limitOrderMut.data;\n if (result && limitOrderExecution.lastOrderState) {\n result = {\n ...result,\n limitOrder: {\n sentOrder: result.limitOrder.sentOrder,\n // lastOrderState may be CANCELLED here\n lastOrderState: limitOrderExecution.lastOrderState,\n },\n };\n }\n\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result,\n limitPrice,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useLimitOrderFlow.js","names":["useAccount","useChainId","assert","useEnsureTxReceipt","Address","Hash","TransactionReceipt","ApprovalFlowResult","SubmitTxResult","useCreateAndSubmitDeltaOrder","CreateAndSubmitDeltaOrderInput","useMinViemClient","useMutation","useRef","SupportedChainId","UserCancelledError","CallsSentObject","TxSentObject","useApproveOrPermit","useLogger","usePartner","useLimitDeadline","getOverallOrderStatus","useWatchDeltaAuction","useWidgetEvents","shouldApproveOrBatch","usePreSignAndSubmitDeltaOrder","DeltaRoute","useLimitReceiverAddressValue","useDepositAndSubmitDeltaOrder","isETHaddress","useCancelOrWithdrawAndCancelDeltaOrder","CancelDeltaOrdersReturn","DeltaAuctionWithOrder","CancelOrderStepKey","HALF_MINUTE_MS","useReferrer","limitOrderFlowType","UserDefinedLimitPrice","srcTokenAddress","destTokenAddress","srcAmount","destAmount","route","UseLimitOrderFlowInput","limitPrice","SubmitLimitOrderResult","tradeFlowType","approve","limitOrder","sentOrder","lastOrderState","account","receiverAddress","OnTxSent","txSent","RunLimitOrderOptions","onTxSent","UseLimitOrderFlowResult","chainId","runLimitOrderFlow","options","Promise","reset","cancelFlow","retryFlow","cancelLimitOrder","approval","limitOrderSubmission","order","isPostingOrder","isCreatingOrder","isOrderSent","isPending","isError","isSuccess","error","Error","limitOrderExecution","isOrderPending","isOrderExecuting","isOrderExecuted","limitOrderCancelation","receipt","txHash","response","isCancelingOrder","isOrderCancellable","isOrderCanceled","step","result","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","logger","approveTxMut","events","approveOrPermitEvents","srcToken","spenderContractType","swapSide","tradeMode","address","minClient","createAndSubmitOrderMut","client","mutationOptions","onSuccess","log","onError","limitOrderCreateAndSubmit","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","resetPreSignAndSubmitDeltaOrder","viemClient","deltaOrderDeposit","resetDepositAndSubmitDeltaOrder","depositAndSubmitDeltaOrder","postingOrder","watchOrderExecution","orderId","id","refetchInterval","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","orderStatus","data","isLoading","isRefetching","cancelOrderMut","cancelOrderResponse","ensureTxReceipt","currentAbortControllerRef","AbortController","current","abort","partner","referrerAddress","deadline","onLimitOrder","submitLimitOrder","abortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDepositAndPreSign","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","createOrderInput","type","orderInput","owner","beneficiary","limitAmount","side","partnerFeeBps","orderFromAPI","depositAmount","mutateAsync","cancelDeltaOrder","limitOrderMut","mutationFn","mutationKey","onSettled"],"sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateAndSubmitDeltaOrder,\n type CreateAndSubmitDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\n\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { useWatchDeltaAuction } from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { DeltaRoute } from \"@velora-dex/sdk\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\nimport { useDepositAndSubmitDeltaOrder } from \"./common/useDepositAndSubmitDeltaOrder\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useCancelOrWithdrawAndCancelDeltaOrder } from \"../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder\";\nimport type { CancelDeltaOrdersReturn } from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport type { DeltaAuctionWithOrder } from \"../prices/delta/orders/types\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { HALF_MINUTE_MS } from \"@/lib/constants/time\";\nimport { useReferrer } from \"@/hooks/useReferrer\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n route: DeltaRoute;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => Promise<\n TransactionReceipt | CancelDeltaOrdersReturn | undefined\n >;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: DeltaAuctionWithOrder;\n isPostingOrder: boolean;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n receipt?: TransactionReceipt;\n txHash?: string;\n response?: CancelDeltaOrdersReturn;\n isCancelingOrder: boolean;\n isOrderCancellable: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n step?: CancelOrderStepKey;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n chainId,\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createAndSubmitOrderMut = useCreateAndSubmitDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createAndSubmitOrderMut.order,\n isCreatingOrder: createAndSubmitOrderMut.isCreatingOrder,\n isPostingOrder: createAndSubmitOrderMut.isPostingOrder,\n isOrderSent: createAndSubmitOrderMut.isOrderSent,\n isPending: createAndSubmitOrderMut.isPending,\n isError: createAndSubmitOrderMut.isError,\n isSuccess: createAndSubmitOrderMut.isSuccess,\n error: createAndSubmitOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n const {\n deltaOrderDeposit,\n reset: resetDepositAndSubmitDeltaOrder,\n depositAndSubmitDeltaOrder: depositAndSubmitDeltaOrder,\n } = useDepositAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order:\n limitOrderCreateAndSubmit.order ||\n deltaOrderPreSign.order ||\n deltaOrderDeposit.order,\n isPostingOrder:\n limitOrderCreateAndSubmit.isPostingOrder ||\n deltaOrderPreSign.postingOrder.isPostingOrder ||\n deltaOrderDeposit.postingOrder.isPostingOrder,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isCreatingOrder ||\n deltaOrderPreSign.isCreatingOrder ||\n deltaOrderDeposit.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isOrderSent ||\n deltaOrderPreSign.isOrderSent ||\n deltaOrderDeposit.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isPending ||\n deltaOrderDeposit.isPending,\n isError:\n limitOrderCreateAndSubmit.isError ||\n deltaOrderPreSign.isError ||\n deltaOrderDeposit.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isSuccess ||\n deltaOrderDeposit.isSuccess,\n error:\n limitOrderCreateAndSubmit.error ||\n deltaOrderPreSign.error ||\n deltaOrderDeposit.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction<DeltaAuctionWithOrder>({\n orderId: limitOrderSubmission.order?.id,\n refetchInterval: HALF_MINUTE_MS,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: limitOrderSubmission.order,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError: watchOrderExecution.isError || orderStatus === \"failed\",\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderMut = useCancelOrWithdrawAndCancelDeltaOrder({\n // supply the must up-to-date order for cancellation\n order: limitOrderExecution.lastOrderState || limitOrderExecution.sentOrder,\n chainId,\n account,\n client: minClient,\n logger,\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n receipt: cancelOrderMut.receipt,\n txHash: cancelOrderMut.txHash,\n response: cancelOrderMut.cancelOrderResponse,\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCancellable: cancelOrderMut.isOrderCancellable,\n isOrderCanceled: cancelOrderMut.isSuccess,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n step: cancelOrderMut.step,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const { partner } = usePartner();\n const { referrerAddress } = useReferrer();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the synchronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(limitPrice.srcTokenAddress);\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n\n const createOrderInput: CreateAndSubmitDeltaOrderInput = {\n signal,\n type: \"LIMIT\",\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n route: limitPrice.route,\n limitAmount: limitPrice.destAmount,\n side: \"SELL\",\n partner,\n partnerFeeBps: 0,\n deadline,\n },\n };\n\n let orderFromAPI: DeltaAuctionWithOrder;\n\n if (shouldDepositAndPreSign) {\n const depositAmount = limitPrice.srcAmount;\n // deposit ETH + depositTx + POST order\n orderFromAPI = await depositAndSubmitDeltaOrder({\n createOrderInput,\n depositAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n orderFromAPI =\n await createAndSubmitOrderMut.mutateAsync(createOrderInput);\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = async () => {\n try {\n return await cancelOrderMut.cancelDeltaOrder();\n } catch (error) {\n logger.error(\"Cancel Limit order error\", error);\n // allow to re-trigger cancellation after error (like UserCancelledError)\n cancelOrderMut.reset();\n }\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n\n let result: SubmitLimitOrderResult | undefined = limitOrderMut.data;\n if (result && limitOrderExecution.lastOrderState) {\n result = {\n ...result,\n limitOrder: {\n sentOrder: result.limitOrder.sentOrder,\n // lastOrderState may be CANCELLED here\n lastOrderState: limitOrderExecution.lastOrderState,\n },\n };\n }\n\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result,\n limitPrice,\n };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DeltaV2 } from '@velora-dex/sdk';
1
+ import { DeltaPrice } from '@velora-dex/sdk';
2
2
  import { Address, TransactionReceipt } from 'viem';
3
3
  import { ApprovalFlowResult, SignPermitFlowResult, SubmitTxResult } from './common/types';
4
4
  import { SupportedChainId } from '../../../lib/web3/wagmi/types';
@@ -10,7 +10,7 @@ import { TwapOrderDepositResult } from '../prices/delta/mutations/twap/useDeposi
10
10
  import { CancelOrderStepKey } from '../../../components/widget/TradeOverview/steps';
11
11
  declare const twapOrderFlowType = "twapOrder";
12
12
  export type UseTwapFlowInput = {
13
- twapPrice?: DeltaV2.DeltaPrice;
13
+ twapPrice?: DeltaPrice;
14
14
  };
15
15
  export type SubmitTwapOrderResult = {
16
16
  tradeFlowType: typeof twapOrderFlowType;
@@ -19,7 +19,7 @@ export type SubmitTwapOrderResult = {
19
19
  sentOrder: DeltaAuctionWithTwapOrder;
20
20
  lastOrderState?: DeltaAuctionWithTwapOrder;
21
21
  };
22
- twapPrice: DeltaV2.DeltaPrice;
22
+ twapPrice: DeltaPrice;
23
23
  account: Address;
24
24
  receiverAddress?: Address;
25
25
  };
@@ -82,8 +82,8 @@ export type UseTwapFlowResult = {
82
82
  isError: boolean;
83
83
  error: Error | null;
84
84
  result?: SubmitTwapOrderResult;
85
- usedPrice?: DeltaV2.DeltaPrice;
86
- freshPrice?: DeltaV2.DeltaPrice;
85
+ usedPrice?: DeltaPrice;
86
+ freshPrice?: DeltaPrice;
87
87
  submittedTwapOrder?: DeltaAuctionWithTwapOrder;
88
88
  };
89
89
  export declare function useTwapFlow({ twapPrice: _twapPrice, }: UseTwapFlowInput): UseTwapFlowResult;
@@ -1 +1 @@
1
- {"version":3,"file":"useTwapFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useTwapFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTwapFlow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/swap/tradeFlow/useTwapFlow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTwapFlow.js","names":["DeltaV2","useAccount","assert","useEnsureTxReceipt","Address","Hash","TransactionReceipt","ApprovalFlowResult","SignPermitFlowResult","SubmitTxResult","useMinViemClient","useWatchDeltaAuction","getOverallOrderStatus","useMutation","useRef","SupportedChainId","UserCancelledError","useTwapReceiverAddressValue","CallsSentObject","TxSentObject","useApproveOrPermit","useMarkPermit1Or2NonceAsUsed","SignedPermitResult","useLogger","useSubscribeToDeltaPrice","usePartner","useWidgetEvents","shouldApproveOrBatch","isETHaddress","useCancelOrWithdrawAndCancelDeltaOrder","CancelDeltaOrdersReturn","useReferrer","useTwapPrices","useTwapSide","useTwapDuration","useTwapSlippage","useCreateAndSubmitTwapOrder","CreateAndSubmitTwapOrderInput","DeltaAuctionWithTwapOrder","BuildTWAPSellOrBuySpecificParams","getTwapAmountsFromPrice","produceTwapDeadlines","usePreSignAndSubmitTwapOrder","TwapOrderPreSignResult","useDepositAndSubmitTwapOrder","TwapOrderDepositResult","amountAfterSlippage","CancelOrderStepKey","HALF_MINUTE_MS","twapOrderFlowType","UseTwapFlowInput","twapPrice","DeltaPrice","SubmitTwapOrderResult","tradeFlowType","approve","twapOrder","sentOrder","lastOrderState","account","receiverAddress","OnTxSent","txSent","RunTwapOrderOptions","onTxSent","TwapOrderSubmissionResult","order","isCreatingOrder","isPostingOrder","isOrderSent","isPending","isError","isSuccess","error","Error","TwapOrderExecutionResult","isOrderPending","isOrderExecuting","isOrderExecuted","TwapOrderCancelationResult","step","receipt","txHash","response","isCancelingOrder","isOrderCancellable","isOrderCanceled","result","UseTwapFlowResult","chainId","runTwapOrderFlow","options","Promise","reset","cancelFlow","retryFlow","cancelTwapOrder","approval","signPermit","twapOrderPreSign","twapOrderDeposit","twapOrderSubmission","twapOrderExecution","twapOrderCancelation","usedPrice","freshPrice","submittedTwapOrder","TWAP_ORDER_MUTATION_KEY","useTwapFlow","_twapPrice","logger","queryKey","price","refetch","totalSrcAmount","side","sideFromPrices","numSlices","priceParams","enabled","twapSideFromInput","twapSide","approveTxMut","signPermitMut","events","approveOrPermitEvents","srcToken","inputToken","address","srcAmount","spenderContractType","swapSide","tradeMode","tryPermit2","minClient","createAndSubmitOrderMut","client","mutationOptions","onSuccess","log","onError","twapOrderCreateAndSubmit","canBatchTxs","isConnectedToSafe","preSignAndSubmitTwapOrder","resetPreSignAndSubmitTwapOrder","viemClient","resetDepositAndSubmitTwapOrder","depositAndSubmitTwapOrder","postingOrder","watchOrderExecution","orderId","id","refetchInterval","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","orderStatus","data","isLoading","isRefetching","orderToCancel","cancelOrderMut","onMutate","cancelOrderResponse","ensureTxReceipt","currentAbortControllerRef","AbortController","usingPriceRef","current","abort","markNonceAsUsed","clearNonce","partner","partnerAddress","partnerFeeBps","partnerTakesSurplus","referrerAddress","subscribeToPrice","onTwapOrder","twapSlippage","twapDurationMin","submitTwapOrder","lastPrice","abortController","signal","orderDeadline","orderInterval","durationMin","orderSlippageBps","Math","floor","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","allowanceToPermit","amountToPermit","newPriceResult","cancelRefetch","throwIfAborted","unsubscribeFromPrice","shouldDepositAndPreSign","shouldDoApprovalTxOrPermit","tryPermit","shouldPreSignBatch","_queryKey","approvedAmount","onData","newPrice","aborted","undefined","BigInt","onApproveTx","request","approveAsync","allowanceData","sent","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","deadline","value","permit","permitEncodedArgs","failed","twapPriceToUse","destAmount","totalDestAmount","event","name","params","orderFromAPI","sellOrBuyParams","onChainOrderType","maxSrcAmount","createOrderInput","type","degenMode","orderInput","owner","beneficiary","route","slippage","interval","depositAmount","getDepositAmount","mutateAsync","signedPermitData","cancelDeltaOrder","twapOrderMut","mutationFn","mutationKey","onSettled","toFixed"],"sources":["../../../../src/hooks/swap/tradeFlow/useTwapFlow.ts"],"sourcesContent":["import type { DeltaV2 } from \"@velora-dex/sdk\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { type Address, type Hash, type TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useWatchDeltaAuction } from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useTwapReceiverAddressValue } from \"@/core/twap/state/twapReceiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useLogger } from \"@/core/logger\";\nimport { useSubscribeToDeltaPrice } from \"../prices/delta/queries/useDeltaPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport { shouldApproveOrBatch } from \"./common/usePreSignAndSubmitDeltaOrder\";\n\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useCancelOrWithdrawAndCancelDeltaOrder } from \"../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder\";\nimport type { CancelDeltaOrdersReturn } from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport { useReferrer } from \"@/hooks/useReferrer\";\n\nimport { useTwapPrices } from \"../prices/useTwapPrices\";\nimport { useTwapSide } from \"@/core/twap/state/twapSideAtom\";\nimport {\n useTwapDuration,\n useTwapSlippage,\n} from \"@/core/twap/state/twapParamsAtom\";\nimport {\n useCreateAndSubmitTwapOrder,\n type CreateAndSubmitTwapOrderInput,\n} from \"../prices/delta/mutations/twap/useCreateTwapOrder\";\nimport type { DeltaAuctionWithTwapOrder } from \"../prices/delta/orders/types\";\nimport type { BuildTWAPSellOrBuySpecificParams } from \"../prices/delta/mutations/types\";\nimport {\n getTwapAmountsFromPrice,\n produceTwapDeadlines,\n} from \"@/lib/utils/twap\";\nimport {\n usePreSignAndSubmitTwapOrder,\n type TwapOrderPreSignResult,\n} from \"../prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder\";\nimport {\n useDepositAndSubmitTwapOrder,\n type TwapOrderDepositResult,\n} from \"../prices/delta/mutations/twap/useDepositAndSubmitTwapOrder\";\nimport { amountAfterSlippage } from \"@/lib/utils/slippage\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { HALF_MINUTE_MS } from \"@/lib/constants/time\";\n\nconst twapOrderFlowType = \"twapOrder\";\n\nexport type UseTwapFlowInput = {\n twapPrice?: DeltaV2.DeltaPrice;\n};\n\nexport type SubmitTwapOrderResult = {\n tradeFlowType: typeof twapOrderFlowType;\n approve: SubmitTxResult;\n twapOrder: {\n sentOrder: DeltaAuctionWithTwapOrder;\n lastOrderState?: DeltaAuctionWithTwapOrder;\n };\n twapPrice: DeltaV2.DeltaPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunTwapOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\ntype TwapOrderSubmissionResult = {\n order?: DeltaAuctionWithTwapOrder;\n isCreatingOrder: boolean;\n isPostingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype TwapOrderExecutionResult = {\n sentOrder?: DeltaAuctionWithTwapOrder;\n lastOrderState?: DeltaAuctionWithTwapOrder;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype TwapOrderCancelationResult = {\n step?: CancelOrderStepKey;\n receipt?: TransactionReceipt;\n txHash?: string;\n response?: CancelDeltaOrdersReturn;\n isCancelingOrder: boolean;\n isOrderCancellable: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n result?: TransactionReceipt | CancelDeltaOrdersReturn;\n error: Error | null;\n};\n\nexport type UseTwapFlowResult = {\n tradeFlowType: typeof twapOrderFlowType;\n chainId: SupportedChainId;\n runTwapOrderFlow: (\n options?: RunTwapOrderOptions\n ) => Promise<SubmitTwapOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunTwapOrderOptions) => Promise<SubmitTwapOrderResult>; // reset and retry flow\n cancelTwapOrder: () => Promise<\n TransactionReceipt | CancelDeltaOrdersReturn | undefined\n >;\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n twapOrderPreSign: TwapOrderPreSignResult;\n twapOrderDeposit: TwapOrderDepositResult;\n // submission represents either normal signing and POSTing of Order or pre-signing (in a tx) and POSTing\n twapOrderSubmission: TwapOrderSubmissionResult;\n twapOrderExecution: TwapOrderExecutionResult;\n twapOrderCancelation: TwapOrderCancelationResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitTwapOrderResult;\n usedPrice?: DeltaV2.DeltaPrice;\n freshPrice?: DeltaV2.DeltaPrice;\n submittedTwapOrder?: DeltaAuctionWithTwapOrder;\n};\n\nconst TWAP_ORDER_MUTATION_KEY = \"runTwapOrderFlow\";\n\nexport function useTwapFlow({\n twapPrice: _twapPrice,\n}: UseTwapFlowInput): UseTwapFlowResult {\n const logger = useLogger(\"TwapFlow\");\n\n const {\n queryKey,\n price,\n chainId,\n refetch,\n totalSrcAmount,\n side: sideFromPrices,\n numSlices,\n priceParams,\n } = useTwapPrices({ enabled: false });\n\n const twapPrice: DeltaV2.DeltaPrice | undefined = price || _twapPrice;\n\n const twapSideFromInput = useTwapSide();\n\n const twapSide = sideFromPrices || twapSideFromInput;\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom\n 2.1. submit Approve tx if necessary\n\n 2.2. sign Permit1\n\n 3. await Approve tx (if not using Permit)\n */\n\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: twapPrice?.inputToken.address,\n srcAmount: totalSrcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: twapSide,\n tradeMode: \"twap\",\n chainId,\n tryPermit2: false,\n });\n\n /* 4.1. Build and Submit Twap Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createAndSubmitOrderMut = useCreateAndSubmitTwapOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Twap Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Twap Order error\", error);\n },\n },\n });\n\n const twapOrderCreateAndSubmit: UseTwapFlowResult[\"twapOrderSubmission\"] = {\n order: createAndSubmitOrderMut.order,\n isCreatingOrder: createAndSubmitOrderMut.isCreatingOrder,\n isPostingOrder: createAndSubmitOrderMut.isPostingOrder,\n isOrderSent: createAndSubmitOrderMut.isOrderSent,\n isPending: createAndSubmitOrderMut.isPending,\n isError: createAndSubmitOrderMut.isError,\n isSuccess: createAndSubmitOrderMut.isSuccess,\n error: createAndSubmitOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Twap pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n twapOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitTwapOrder,\n reset: resetPreSignAndSubmitTwapOrder,\n } = usePreSignAndSubmitTwapOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n const {\n twapOrderDeposit,\n reset: resetDepositAndSubmitTwapOrder,\n depositAndSubmitTwapOrder,\n } = useDepositAndSubmitTwapOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Twap Order submission for step 4 */\n const twapOrderSubmission: UseTwapFlowResult[\"twapOrderSubmission\"] = {\n order:\n twapOrderCreateAndSubmit.order ||\n twapOrderPreSign.order ||\n twapOrderDeposit.order,\n isPostingOrder:\n twapOrderCreateAndSubmit.isPostingOrder ||\n twapOrderPreSign.postingOrder.isPostingOrder ||\n twapOrderDeposit.postingOrder.isPostingOrder,\n isCreatingOrder:\n twapOrderCreateAndSubmit.isCreatingOrder ||\n twapOrderPreSign.isCreatingOrder ||\n twapOrderDeposit.isCreatingOrder,\n isOrderSent:\n twapOrderCreateAndSubmit.isOrderSent ||\n twapOrderPreSign.isOrderSent ||\n twapOrderDeposit.isOrderSent,\n isPending:\n twapOrderCreateAndSubmit.isPending ||\n twapOrderPreSign.isPending ||\n twapOrderDeposit.isPending,\n isError:\n twapOrderCreateAndSubmit.isError ||\n twapOrderPreSign.isError ||\n twapOrderDeposit.isError,\n isSuccess:\n twapOrderCreateAndSubmit.isSuccess ||\n twapOrderPreSign.isSuccess ||\n twapOrderDeposit.isSuccess,\n error:\n twapOrderCreateAndSubmit.error ||\n twapOrderPreSign.error ||\n twapOrderDeposit.error,\n };\n\n /* 5. await Order execution */\n\n const watchOrderExecution = useWatchDeltaAuction<DeltaAuctionWithTwapOrder>({\n orderId: twapOrderSubmission.order?.id,\n refetchInterval: HALF_MINUTE_MS,\n onAuctionSuccess: (order) => {\n logger.log(\"Twap Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Twap Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Twap Order updated\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n const twapOrderExecution: UseTwapFlowResult[\"twapOrderExecution\"] = {\n sentOrder: twapOrderSubmission.order,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError: watchOrderExecution.isError || orderStatus === \"failed\",\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const orderToCancel =\n twapOrderExecution.lastOrderState || twapOrderExecution.sentOrder;\n\n const cancelOrderMut = useCancelOrWithdrawAndCancelDeltaOrder({\n // supply the must up-to-date order for cancellation\n order: orderToCancel,\n chainId,\n account,\n client: minClient,\n logger,\n mutationOptions: {\n onMutate: () => {\n assert(orderToCancel, \"No order to cancel\");\n return orderToCancel;\n },\n },\n });\n\n const twapOrderCancelation: UseTwapFlowResult[\"twapOrderCancelation\"] = {\n receipt: cancelOrderMut.receipt,\n txHash: cancelOrderMut.txHash,\n response: cancelOrderMut.cancelOrderResponse,\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCancellable: cancelOrderMut.isOrderCancellable,\n isOrderCanceled: cancelOrderMut.isSuccess,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n result: cancelOrderMut.result,\n step: cancelOrderMut.step,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<DeltaV2.DeltaPrice | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useTwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { partner, partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n usePartner();\n const { referrerAddress } = useReferrer();\n\n const subscribeToPrice = useSubscribeToDeltaPrice();\n\n const { onTwapOrder } = useWidgetEvents();\n\n const twapSlippage = useTwapSlippage();\n const twapDurationMin = useTwapDuration();\n\n const submitTwapOrder = async ({\n onTxSent,\n lastPrice,\n }: RunTwapOrderOptions & {\n lastPrice?: DeltaV2.DeltaPrice | null;\n } = {}): Promise<SubmitTwapOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n createAndSubmitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitTwapOrder();\n resetDepositAndSubmitTwapOrder();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and twapPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(twapPrice, \"Twap price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n const { orderDeadline, orderInterval } = produceTwapDeadlines({\n durationMin: twapDurationMin,\n numSlices,\n });\n\n const orderSlippageBps = Math.floor(twapSlippage * 100);\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the synchronously available price\n const allowanceToSet = approval.allowanceToSet;\n const allowanceToPermit = signPermit.amountToPermit;\n // we use this allowance as a max allowance we will accept new prices for\n\n // twapPrice here is the starting price, available before async code and waiting\n let freshPrice = twapPrice;\n if (freshPrice.id === lastPrice?.id) {\n // we are resubmitting the Twap order, because it failed the last time,\n // but the price hasn't updated yet, so force refetch,\n // comparing raw prices here before mutating to select by bridge preference\n const newPriceResult = await refetch({\n cancelRefetch: false,\n });\n // check if cancelled during refetch\n signal.throwIfAborted();\n\n if (newPriceResult.data) {\n freshPrice = newPriceResult.data;\n }\n }\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(freshPrice.inputToken.address);\n\n /*\n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const { shouldDoApprovalTxOrPermit, tryPermit, shouldPreSignBatch } =\n shouldApproveOrBatch({\n approval,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTxOrPermit && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const _queryKey = queryKey;\n\n // should always be available\n if (_queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey: _queryKey,\n onData: (price) => {\n const newPrice: DeltaV2.DeltaPrice = price;\n\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n const { srcAmount: totalSrcAmount } = getTwapAmountsFromPrice({\n price: newPrice,\n numSlices,\n });\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(totalSrcAmount)) {\n // add this check to resubmit flow\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } else {\n approveOrPermitEvents.onSignPermit.request({\n allowanceToSet: allowanceToPermit,\n });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n deadline: BigInt(orderDeadline),\n value: allowanceToPermit,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet: allowanceToPermit,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet: allowanceToPermit,\n error: error as Error,\n });\n }\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const twapPriceToUse = freshPrice;\n usingPriceRef.current = twapPriceToUse;\n\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(twapPriceToUse, \"Twap price is not available\");\n const twapSide = twapPriceToUse.side;\n const { srcAmount: totalSrcAmount, destAmount: totalDestAmount } =\n getTwapAmountsFromPrice({ price: twapPriceToUse, numSlices });\n\n const permit = signedPermitResult?.permitEncodedArgs;\n\n onTwapOrder?.({\n event: {\n name: \"TwapOrder:request\",\n params: {\n price: twapPriceToUse,\n },\n },\n });\n\n let orderFromAPI: DeltaAuctionWithTwapOrder;\n let sellOrBuyParams: BuildTWAPSellOrBuySpecificParams;\n\n if (twapSide === \"SELL\") {\n sellOrBuyParams = {\n onChainOrderType: \"TWAPOrder\",\n totalSrcAmount,\n // server adds destAmountPerSlice internally with slippage applied\n };\n } else {\n sellOrBuyParams = {\n onChainOrderType: \"TWAPBuyOrder\",\n totalDestAmount,\n // server applies slippage to maxSrcAmount internally\n maxSrcAmount: totalSrcAmount,\n };\n }\n\n const createOrderInput: CreateAndSubmitTwapOrderInput = {\n signal,\n type: \"MARKET\",\n degenMode: priceParams.degenMode,\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n permit,\n // single-slice route from v2 price\n route: twapPriceToUse.route,\n\n partner,\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus,\n\n deadline: orderDeadline,\n\n // twap specific params\n ...sellOrBuyParams,\n numSlices: numSlices,\n slippage: orderSlippageBps,\n interval: orderInterval,\n },\n };\n\n if (shouldDepositAndPreSign) {\n const depositAmount = getDepositAmount(sellOrBuyParams, twapSlippage);\n // deposit ETH + depositTx + POST order\n orderFromAPI = await depositAndSubmitTwapOrder({\n createOrderInput,\n depositAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitTwapOrder({\n createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n // creating signing and POSTing the Order all together in one mutation\n orderFromAPI =\n await createAndSubmitOrderMut.mutateAsync(createOrderInput);\n }\n\n // Order is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n onTwapOrder?.({\n event: {\n name: \"TwapOrder:sent\",\n params: {\n price: twapPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // no use aborting past this point, Order is already being processed\n\n return {\n tradeFlowType: twapOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n twapOrder: {\n sentOrder: orderFromAPI,\n },\n twapPrice: twapPriceToUse,\n account,\n receiverAddress,\n };\n } catch (error) {\n // Order failed, we can't be sure if nonce can be reused or it was incremented in a different Order\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onTwapOrder?.({\n event: {\n name: \"TwapOrder:failed\",\n params: {\n error: error as Error,\n },\n },\n });\n\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const cancelTwapOrder = async () => {\n try {\n return await cancelOrderMut.cancelDeltaOrder();\n } catch (error) {\n logger.error(\"Cancel Delta order error\", error);\n // allow to re-trigger cancellation after error (like UserCancelledError)\n cancelOrderMut.reset();\n }\n };\n\n const twapOrderMut = useMutation({\n mutationFn: submitTwapOrder,\n mutationKey: [TWAP_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Twap Order success\", data);\n },\n onError: (error) => {\n logger.error(\"Twap Order error\", error);\n },\n onSettled: () => {\n logger.log(\"Twap Order settled\");\n },\n });\n\n const runTwapOrderFlow = twapOrderMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n createAndSubmitOrderMut.reset();\n twapOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitTwapOrder();\n resetDepositAndSubmitTwapOrder();\n };\n\n const retryFlow = (\n options?: RunTwapOrderOptions\n ): Promise<SubmitTwapOrderResult> => {\n const lastPrice = usingPriceRef.current;\n reset();\n return runTwapOrderFlow({ ...options, lastPrice });\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice: typeof twapPrice = usingPriceRef.current || twapPrice;\n\n let result: SubmitTwapOrderResult | undefined = twapOrderMut.data;\n if (result && twapOrderExecution.lastOrderState) {\n result = {\n ...result,\n twapOrder: {\n sentOrder: result.twapOrder.sentOrder,\n // lastOrderState may be CANCELLED here\n lastOrderState: twapOrderExecution.lastOrderState,\n },\n };\n }\n\n /**\n * priority:\n * 1. sentOrder = just sent Order from final result\n * 2. twapOrderExecution.lastOrderState = updated sent Order from watchOrderExecution (intermediate result)\n * 3. twapOrderExecution.sentOrder = just sent Order from watchOrderExecution (intermediate result)\n */\n const submittedTwapOrder: DeltaAuctionWithTwapOrder | undefined =\n result?.twapOrder.sentOrder ||\n twapOrderExecution.lastOrderState ||\n twapOrderExecution.sentOrder;\n\n /* 6. return result */\n return {\n tradeFlowType: twapOrderFlowType,\n chainId,\n runTwapOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelTwapOrder,\n approval,\n signPermit,\n twapOrderPreSign: twapOrderPreSign,\n twapOrderDeposit: twapOrderDeposit,\n twapOrderSubmission,\n twapOrderExecution,\n twapOrderCancelation,\n // twapOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: twapOrderMut.isPending,\n isSuccess: twapOrderSubmission.isSuccess && twapOrderExecution.isSuccess, // approval is an optional step\n isError: twapOrderMut.isError,\n error: twapOrderMut.error,\n result,\n usedPrice,\n freshPrice: twapPrice,\n submittedTwapOrder,\n };\n}\n\nfunction getDepositAmount(\n params: BuildTWAPSellOrBuySpecificParams,\n slippage: number\n) {\n if (\"totalSrcAmount\" in params) {\n return params.totalSrcAmount;\n }\n return amountAfterSlippage(params.maxSrcAmount, slippage, \"BUY\").toFixed(0);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useTwapFlow.js","names":["DeltaPrice","useAccount","assert","useEnsureTxReceipt","Address","Hash","TransactionReceipt","ApprovalFlowResult","SignPermitFlowResult","SubmitTxResult","useMinViemClient","useWatchDeltaAuction","getOverallOrderStatus","useMutation","useRef","SupportedChainId","UserCancelledError","useTwapReceiverAddressValue","CallsSentObject","TxSentObject","useApproveOrPermit","useMarkPermit1Or2NonceAsUsed","SignedPermitResult","useLogger","useSubscribeToDeltaPrice","usePartner","useWidgetEvents","shouldApproveOrBatch","isETHaddress","useCancelOrWithdrawAndCancelDeltaOrder","CancelDeltaOrdersReturn","useReferrer","useTwapPrices","useTwapSide","useTwapDuration","useTwapSlippage","useCreateAndSubmitTwapOrder","CreateAndSubmitTwapOrderInput","DeltaAuctionWithTwapOrder","BuildTWAPSellOrBuySpecificParams","getTwapAmountsFromPrice","produceTwapDeadlines","usePreSignAndSubmitTwapOrder","TwapOrderPreSignResult","useDepositAndSubmitTwapOrder","TwapOrderDepositResult","amountAfterSlippage","CancelOrderStepKey","HALF_MINUTE_MS","twapOrderFlowType","UseTwapFlowInput","twapPrice","SubmitTwapOrderResult","tradeFlowType","approve","twapOrder","sentOrder","lastOrderState","account","receiverAddress","OnTxSent","txSent","RunTwapOrderOptions","onTxSent","TwapOrderSubmissionResult","order","isCreatingOrder","isPostingOrder","isOrderSent","isPending","isError","isSuccess","error","Error","TwapOrderExecutionResult","isOrderPending","isOrderExecuting","isOrderExecuted","TwapOrderCancelationResult","step","receipt","txHash","response","isCancelingOrder","isOrderCancellable","isOrderCanceled","result","UseTwapFlowResult","chainId","runTwapOrderFlow","options","Promise","reset","cancelFlow","retryFlow","cancelTwapOrder","approval","signPermit","twapOrderPreSign","twapOrderDeposit","twapOrderSubmission","twapOrderExecution","twapOrderCancelation","usedPrice","freshPrice","submittedTwapOrder","TWAP_ORDER_MUTATION_KEY","useTwapFlow","_twapPrice","logger","queryKey","price","refetch","totalSrcAmount","side","sideFromPrices","numSlices","priceParams","enabled","twapSideFromInput","twapSide","approveTxMut","signPermitMut","events","approveOrPermitEvents","srcToken","inputToken","address","srcAmount","spenderContractType","swapSide","tradeMode","tryPermit2","minClient","createAndSubmitOrderMut","client","mutationOptions","onSuccess","log","onError","twapOrderCreateAndSubmit","canBatchTxs","isConnectedToSafe","preSignAndSubmitTwapOrder","resetPreSignAndSubmitTwapOrder","viemClient","resetDepositAndSubmitTwapOrder","depositAndSubmitTwapOrder","postingOrder","watchOrderExecution","orderId","id","refetchInterval","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","orderStatus","data","isLoading","isRefetching","orderToCancel","cancelOrderMut","onMutate","cancelOrderResponse","ensureTxReceipt","currentAbortControllerRef","AbortController","usingPriceRef","current","abort","markNonceAsUsed","clearNonce","partner","partnerAddress","partnerFeeBps","partnerTakesSurplus","referrerAddress","subscribeToPrice","onTwapOrder","twapSlippage","twapDurationMin","submitTwapOrder","lastPrice","abortController","signal","orderDeadline","orderInterval","durationMin","orderSlippageBps","Math","floor","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","allowanceToPermit","amountToPermit","newPriceResult","cancelRefetch","throwIfAborted","unsubscribeFromPrice","shouldDepositAndPreSign","shouldDoApprovalTxOrPermit","tryPermit","shouldPreSignBatch","_queryKey","approvedAmount","onData","newPrice","aborted","undefined","BigInt","onApproveTx","request","approveAsync","allowanceData","sent","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","deadline","value","permit","permitEncodedArgs","failed","twapPriceToUse","destAmount","totalDestAmount","event","name","params","orderFromAPI","sellOrBuyParams","onChainOrderType","maxSrcAmount","createOrderInput","type","degenMode","orderInput","owner","beneficiary","route","slippage","interval","depositAmount","getDepositAmount","mutateAsync","signedPermitData","cancelDeltaOrder","twapOrderMut","mutationFn","mutationKey","onSettled","toFixed"],"sources":["../../../../src/hooks/swap/tradeFlow/useTwapFlow.ts"],"sourcesContent":["import type { DeltaPrice } from \"@velora-dex/sdk\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { type Address, type Hash, type TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useWatchDeltaAuction } from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useTwapReceiverAddressValue } from \"@/core/twap/state/twapReceiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useLogger } from \"@/core/logger\";\nimport { useSubscribeToDeltaPrice } from \"../prices/delta/queries/useDeltaPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport { shouldApproveOrBatch } from \"./common/usePreSignAndSubmitDeltaOrder\";\n\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useCancelOrWithdrawAndCancelDeltaOrder } from \"../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder\";\nimport type { CancelDeltaOrdersReturn } from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport { useReferrer } from \"@/hooks/useReferrer\";\n\nimport { useTwapPrices } from \"../prices/useTwapPrices\";\nimport { useTwapSide } from \"@/core/twap/state/twapSideAtom\";\nimport {\n useTwapDuration,\n useTwapSlippage,\n} from \"@/core/twap/state/twapParamsAtom\";\nimport {\n useCreateAndSubmitTwapOrder,\n type CreateAndSubmitTwapOrderInput,\n} from \"../prices/delta/mutations/twap/useCreateTwapOrder\";\nimport type { DeltaAuctionWithTwapOrder } from \"../prices/delta/orders/types\";\nimport type { BuildTWAPSellOrBuySpecificParams } from \"../prices/delta/mutations/types\";\nimport {\n getTwapAmountsFromPrice,\n produceTwapDeadlines,\n} from \"@/lib/utils/twap\";\nimport {\n usePreSignAndSubmitTwapOrder,\n type TwapOrderPreSignResult,\n} from \"../prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder\";\nimport {\n useDepositAndSubmitTwapOrder,\n type TwapOrderDepositResult,\n} from \"../prices/delta/mutations/twap/useDepositAndSubmitTwapOrder\";\nimport { amountAfterSlippage } from \"@/lib/utils/slippage\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { HALF_MINUTE_MS } from \"@/lib/constants/time\";\n\nconst twapOrderFlowType = \"twapOrder\";\n\nexport type UseTwapFlowInput = {\n twapPrice?: DeltaPrice;\n};\n\nexport type SubmitTwapOrderResult = {\n tradeFlowType: typeof twapOrderFlowType;\n approve: SubmitTxResult;\n twapOrder: {\n sentOrder: DeltaAuctionWithTwapOrder;\n lastOrderState?: DeltaAuctionWithTwapOrder;\n };\n twapPrice: DeltaPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunTwapOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\ntype TwapOrderSubmissionResult = {\n order?: DeltaAuctionWithTwapOrder;\n isCreatingOrder: boolean;\n isPostingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype TwapOrderExecutionResult = {\n sentOrder?: DeltaAuctionWithTwapOrder;\n lastOrderState?: DeltaAuctionWithTwapOrder;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype TwapOrderCancelationResult = {\n step?: CancelOrderStepKey;\n receipt?: TransactionReceipt;\n txHash?: string;\n response?: CancelDeltaOrdersReturn;\n isCancelingOrder: boolean;\n isOrderCancellable: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n result?: TransactionReceipt | CancelDeltaOrdersReturn;\n error: Error | null;\n};\n\nexport type UseTwapFlowResult = {\n tradeFlowType: typeof twapOrderFlowType;\n chainId: SupportedChainId;\n runTwapOrderFlow: (\n options?: RunTwapOrderOptions\n ) => Promise<SubmitTwapOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunTwapOrderOptions) => Promise<SubmitTwapOrderResult>; // reset and retry flow\n cancelTwapOrder: () => Promise<\n TransactionReceipt | CancelDeltaOrdersReturn | undefined\n >;\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n twapOrderPreSign: TwapOrderPreSignResult;\n twapOrderDeposit: TwapOrderDepositResult;\n // submission represents either normal signing and POSTing of Order or pre-signing (in a tx) and POSTing\n twapOrderSubmission: TwapOrderSubmissionResult;\n twapOrderExecution: TwapOrderExecutionResult;\n twapOrderCancelation: TwapOrderCancelationResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitTwapOrderResult;\n usedPrice?: DeltaPrice;\n freshPrice?: DeltaPrice;\n submittedTwapOrder?: DeltaAuctionWithTwapOrder;\n};\n\nconst TWAP_ORDER_MUTATION_KEY = \"runTwapOrderFlow\";\n\nexport function useTwapFlow({\n twapPrice: _twapPrice,\n}: UseTwapFlowInput): UseTwapFlowResult {\n const logger = useLogger(\"TwapFlow\");\n\n const {\n queryKey,\n price,\n chainId,\n refetch,\n totalSrcAmount,\n side: sideFromPrices,\n numSlices,\n priceParams,\n } = useTwapPrices({ enabled: false });\n\n const twapPrice: DeltaPrice | undefined = price || _twapPrice;\n\n const twapSideFromInput = useTwapSide();\n\n const twapSide = sideFromPrices || twapSideFromInput;\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom\n 2.1. submit Approve tx if necessary\n\n 2.2. sign Permit1\n\n 3. await Approve tx (if not using Permit)\n */\n\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: twapPrice?.inputToken.address,\n srcAmount: totalSrcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: twapSide,\n tradeMode: \"twap\",\n chainId,\n tryPermit2: false,\n });\n\n /* 4.1. Build and Submit Twap Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createAndSubmitOrderMut = useCreateAndSubmitTwapOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Twap Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Twap Order error\", error);\n },\n },\n });\n\n const twapOrderCreateAndSubmit: UseTwapFlowResult[\"twapOrderSubmission\"] = {\n order: createAndSubmitOrderMut.order,\n isCreatingOrder: createAndSubmitOrderMut.isCreatingOrder,\n isPostingOrder: createAndSubmitOrderMut.isPostingOrder,\n isOrderSent: createAndSubmitOrderMut.isOrderSent,\n isPending: createAndSubmitOrderMut.isPending,\n isError: createAndSubmitOrderMut.isError,\n isSuccess: createAndSubmitOrderMut.isSuccess,\n error: createAndSubmitOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Twap pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n twapOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitTwapOrder,\n reset: resetPreSignAndSubmitTwapOrder,\n } = usePreSignAndSubmitTwapOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n const {\n twapOrderDeposit,\n reset: resetDepositAndSubmitTwapOrder,\n depositAndSubmitTwapOrder,\n } = useDepositAndSubmitTwapOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Twap Order submission for step 4 */\n const twapOrderSubmission: UseTwapFlowResult[\"twapOrderSubmission\"] = {\n order:\n twapOrderCreateAndSubmit.order ||\n twapOrderPreSign.order ||\n twapOrderDeposit.order,\n isPostingOrder:\n twapOrderCreateAndSubmit.isPostingOrder ||\n twapOrderPreSign.postingOrder.isPostingOrder ||\n twapOrderDeposit.postingOrder.isPostingOrder,\n isCreatingOrder:\n twapOrderCreateAndSubmit.isCreatingOrder ||\n twapOrderPreSign.isCreatingOrder ||\n twapOrderDeposit.isCreatingOrder,\n isOrderSent:\n twapOrderCreateAndSubmit.isOrderSent ||\n twapOrderPreSign.isOrderSent ||\n twapOrderDeposit.isOrderSent,\n isPending:\n twapOrderCreateAndSubmit.isPending ||\n twapOrderPreSign.isPending ||\n twapOrderDeposit.isPending,\n isError:\n twapOrderCreateAndSubmit.isError ||\n twapOrderPreSign.isError ||\n twapOrderDeposit.isError,\n isSuccess:\n twapOrderCreateAndSubmit.isSuccess ||\n twapOrderPreSign.isSuccess ||\n twapOrderDeposit.isSuccess,\n error:\n twapOrderCreateAndSubmit.error ||\n twapOrderPreSign.error ||\n twapOrderDeposit.error,\n };\n\n /* 5. await Order execution */\n\n const watchOrderExecution = useWatchDeltaAuction<DeltaAuctionWithTwapOrder>({\n orderId: twapOrderSubmission.order?.id,\n refetchInterval: HALF_MINUTE_MS,\n onAuctionSuccess: (order) => {\n logger.log(\"Twap Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Twap Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Twap Order updated\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n const twapOrderExecution: UseTwapFlowResult[\"twapOrderExecution\"] = {\n sentOrder: twapOrderSubmission.order,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError: watchOrderExecution.isError || orderStatus === \"failed\",\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const orderToCancel =\n twapOrderExecution.lastOrderState || twapOrderExecution.sentOrder;\n\n const cancelOrderMut = useCancelOrWithdrawAndCancelDeltaOrder({\n // supply the must up-to-date order for cancellation\n order: orderToCancel,\n chainId,\n account,\n client: minClient,\n logger,\n mutationOptions: {\n onMutate: () => {\n assert(orderToCancel, \"No order to cancel\");\n return orderToCancel;\n },\n },\n });\n\n const twapOrderCancelation: UseTwapFlowResult[\"twapOrderCancelation\"] = {\n receipt: cancelOrderMut.receipt,\n txHash: cancelOrderMut.txHash,\n response: cancelOrderMut.cancelOrderResponse,\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCancellable: cancelOrderMut.isOrderCancellable,\n isOrderCanceled: cancelOrderMut.isSuccess,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n result: cancelOrderMut.result,\n step: cancelOrderMut.step,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<DeltaPrice | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useTwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { partner, partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n usePartner();\n const { referrerAddress } = useReferrer();\n\n const subscribeToPrice = useSubscribeToDeltaPrice();\n\n const { onTwapOrder } = useWidgetEvents();\n\n const twapSlippage = useTwapSlippage();\n const twapDurationMin = useTwapDuration();\n\n const submitTwapOrder = async ({\n onTxSent,\n lastPrice,\n }: RunTwapOrderOptions & {\n lastPrice?: DeltaPrice | null;\n } = {}): Promise<SubmitTwapOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n createAndSubmitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitTwapOrder();\n resetDepositAndSubmitTwapOrder();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and twapPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(twapPrice, \"Twap price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n const { orderDeadline, orderInterval } = produceTwapDeadlines({\n durationMin: twapDurationMin,\n numSlices,\n });\n\n const orderSlippageBps = Math.floor(twapSlippage * 100);\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the synchronously available price\n const allowanceToSet = approval.allowanceToSet;\n const allowanceToPermit = signPermit.amountToPermit;\n // we use this allowance as a max allowance we will accept new prices for\n\n // twapPrice here is the starting price, available before async code and waiting\n let freshPrice = twapPrice;\n if (freshPrice.id === lastPrice?.id) {\n // we are resubmitting the Twap order, because it failed the last time,\n // but the price hasn't updated yet, so force refetch,\n // comparing raw prices here before mutating to select by bridge preference\n const newPriceResult = await refetch({\n cancelRefetch: false,\n });\n // check if cancelled during refetch\n signal.throwIfAborted();\n\n if (newPriceResult.data) {\n freshPrice = newPriceResult.data;\n }\n }\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(freshPrice.inputToken.address);\n\n /*\n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const { shouldDoApprovalTxOrPermit, tryPermit, shouldPreSignBatch } =\n shouldApproveOrBatch({\n approval,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTxOrPermit && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const _queryKey = queryKey;\n\n // should always be available\n if (_queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey: _queryKey,\n onData: (price) => {\n const newPrice: DeltaPrice = price;\n\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n const { srcAmount: totalSrcAmount } = getTwapAmountsFromPrice({\n price: newPrice,\n numSlices,\n });\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(totalSrcAmount)) {\n // add this check to resubmit flow\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } else {\n approveOrPermitEvents.onSignPermit.request({\n allowanceToSet: allowanceToPermit,\n });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n deadline: BigInt(orderDeadline),\n value: allowanceToPermit,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet: allowanceToPermit,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet: allowanceToPermit,\n error: error as Error,\n });\n }\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const twapPriceToUse = freshPrice;\n usingPriceRef.current = twapPriceToUse;\n\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(twapPriceToUse, \"Twap price is not available\");\n const twapSide = twapPriceToUse.side;\n const { srcAmount: totalSrcAmount, destAmount: totalDestAmount } =\n getTwapAmountsFromPrice({ price: twapPriceToUse, numSlices });\n\n const permit = signedPermitResult?.permitEncodedArgs;\n\n onTwapOrder?.({\n event: {\n name: \"TwapOrder:request\",\n params: {\n price: twapPriceToUse,\n },\n },\n });\n\n let orderFromAPI: DeltaAuctionWithTwapOrder;\n let sellOrBuyParams: BuildTWAPSellOrBuySpecificParams;\n\n if (twapSide === \"SELL\") {\n sellOrBuyParams = {\n onChainOrderType: \"TWAPOrder\",\n totalSrcAmount,\n // server adds destAmountPerSlice internally with slippage applied\n };\n } else {\n sellOrBuyParams = {\n onChainOrderType: \"TWAPBuyOrder\",\n totalDestAmount,\n // server applies slippage to maxSrcAmount internally\n maxSrcAmount: totalSrcAmount,\n };\n }\n\n const createOrderInput: CreateAndSubmitTwapOrderInput = {\n signal,\n type: \"MARKET\",\n degenMode: priceParams.degenMode,\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n permit,\n // single-slice route from price\n route: twapPriceToUse.route,\n\n partner,\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus,\n\n deadline: orderDeadline,\n\n // twap specific params\n ...sellOrBuyParams,\n numSlices: numSlices,\n slippage: orderSlippageBps,\n interval: orderInterval,\n },\n };\n\n if (shouldDepositAndPreSign) {\n const depositAmount = getDepositAmount(sellOrBuyParams, twapSlippage);\n // deposit ETH + depositTx + POST order\n orderFromAPI = await depositAndSubmitTwapOrder({\n createOrderInput,\n depositAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitTwapOrder({\n createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n // creating signing and POSTing the Order all together in one mutation\n orderFromAPI =\n await createAndSubmitOrderMut.mutateAsync(createOrderInput);\n }\n\n // Order is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n onTwapOrder?.({\n event: {\n name: \"TwapOrder:sent\",\n params: {\n price: twapPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // no use aborting past this point, Order is already being processed\n\n return {\n tradeFlowType: twapOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n twapOrder: {\n sentOrder: orderFromAPI,\n },\n twapPrice: twapPriceToUse,\n account,\n receiverAddress,\n };\n } catch (error) {\n // Order failed, we can't be sure if nonce can be reused or it was incremented in a different Order\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onTwapOrder?.({\n event: {\n name: \"TwapOrder:failed\",\n params: {\n error: error as Error,\n },\n },\n });\n\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const cancelTwapOrder = async () => {\n try {\n return await cancelOrderMut.cancelDeltaOrder();\n } catch (error) {\n logger.error(\"Cancel Delta order error\", error);\n // allow to re-trigger cancellation after error (like UserCancelledError)\n cancelOrderMut.reset();\n }\n };\n\n const twapOrderMut = useMutation({\n mutationFn: submitTwapOrder,\n mutationKey: [TWAP_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Twap Order success\", data);\n },\n onError: (error) => {\n logger.error(\"Twap Order error\", error);\n },\n onSettled: () => {\n logger.log(\"Twap Order settled\");\n },\n });\n\n const runTwapOrderFlow = twapOrderMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n createAndSubmitOrderMut.reset();\n twapOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitTwapOrder();\n resetDepositAndSubmitTwapOrder();\n };\n\n const retryFlow = (\n options?: RunTwapOrderOptions\n ): Promise<SubmitTwapOrderResult> => {\n const lastPrice = usingPriceRef.current;\n reset();\n return runTwapOrderFlow({ ...options, lastPrice });\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice: typeof twapPrice = usingPriceRef.current || twapPrice;\n\n let result: SubmitTwapOrderResult | undefined = twapOrderMut.data;\n if (result && twapOrderExecution.lastOrderState) {\n result = {\n ...result,\n twapOrder: {\n sentOrder: result.twapOrder.sentOrder,\n // lastOrderState may be CANCELLED here\n lastOrderState: twapOrderExecution.lastOrderState,\n },\n };\n }\n\n /**\n * priority:\n * 1. sentOrder = just sent Order from final result\n * 2. twapOrderExecution.lastOrderState = updated sent Order from watchOrderExecution (intermediate result)\n * 3. twapOrderExecution.sentOrder = just sent Order from watchOrderExecution (intermediate result)\n */\n const submittedTwapOrder: DeltaAuctionWithTwapOrder | undefined =\n result?.twapOrder.sentOrder ||\n twapOrderExecution.lastOrderState ||\n twapOrderExecution.sentOrder;\n\n /* 6. return result */\n return {\n tradeFlowType: twapOrderFlowType,\n chainId,\n runTwapOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelTwapOrder,\n approval,\n signPermit,\n twapOrderPreSign: twapOrderPreSign,\n twapOrderDeposit: twapOrderDeposit,\n twapOrderSubmission,\n twapOrderExecution,\n twapOrderCancelation,\n // twapOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: twapOrderMut.isPending,\n isSuccess: twapOrderSubmission.isSuccess && twapOrderExecution.isSuccess, // approval is an optional step\n isError: twapOrderMut.isError,\n error: twapOrderMut.error,\n result,\n usedPrice,\n freshPrice: twapPrice,\n submittedTwapOrder,\n };\n}\n\nfunction getDepositAmount(\n params: BuildTWAPSellOrBuySpecificParams,\n slippage: number\n) {\n if (\"totalSrcAmount\" in params) {\n return params.totalSrcAmount;\n }\n return amountAfterSlippage(params.maxSrcAmount, slippage, \"BUY\").toFixed(0);\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Token, TokenMaybeWithUsdBalance } from '../../tokens/state/types';
2
2
  import { SupportedChainId } from '../../lib/web3/wagmi/types';
3
- import { BridgeRoutesMode } from '../swap/prices/delta/queries/bridgeRoutes/types';
3
+ import { BridgeRoutesMode } from '../swap/prices/delta/queries/bridgeInfo/types';
4
4
  export declare const useAllTokensWithFilter: ({ tokenFilter, forcedChainId, searchOnOtherChainsIfNothingFound, withETH, intent, }: {
5
5
  tokenFilter: string;
6
6
  forcedChainId?: SupportedChainId;
@@ -1 +1 @@
1
- {"version":3,"file":"useAllTokensWithFilter.d.ts","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAK5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAExF,eAAO,MAAM,sBAAsB,GAAI,qFAMpC;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC/B,KAAG,wBAAwB,EA+E3B,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAOpC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,aAAa,EACb,aAAa,GACd,EAAE,wBAAwB,GAAG;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACtC,CAqBA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,WAAW,EACX,SAAS,EACT,IAAI,GACL,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;CACxB,8BAuBA"}
1
+ {"version":3,"file":"useAllTokensWithFilter.d.ts","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAK5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,eAAO,MAAM,sBAAsB,GAAI,qFAMpC;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC/B,KAAG,wBAAwB,EA+E3B,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAOpC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,aAAa,EACb,aAAa,GACd,EAAE,wBAAwB,GAAG;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACtC,CAqBA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,WAAW,EACX,SAAS,EACT,IAAI,GACL,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;CACxB,8BAuBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAllTokensWithFilter.js","names":["createSortWithClosestMatch","filterTokens","useAllTokens","Token","TokenMaybeWithUsdBalance","useAtomValue","useMemo","useNativeToken","useAttachTokenBalanceMultichain","SupportedChainId","useChainId","useTokensFromAcross","emptyArray","isAddress","allTokensByChainAtom","BridgeRoutesMode","useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","intent","t2","undefined","appChainId","allTokens","nativeToken","t3","concat","allIncludedTokens","filteredTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","searchOnAllChains","length","t4","t5","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t6","bb0","t7","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t8","t9","attachTokenBalance","trimmedTokenFilter","sorter","sort","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","AllTokensFromChainsInput","excludeChains","Record","listByChainId","tokensListsByChain","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","mode","crossTokens","_temp3"],"sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { createSortWithClosestMatch } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport type { BridgeRoutesMode } from \"../swap/prices/delta/queries/bridgeRoutes/types\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n intent = \"fetch\",\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n intent?: \"fetch\" | \"prefetch\";\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n (isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound) || // if it's a token address, always search on other chains, if allowed\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n intent,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n return filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sorter);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n intent: \"prefetch\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n mode,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeRoutesMode;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n const filteredTokens = filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: crossTokens,\n });\n return filteredTokens.map(attachTokenBalance).sort(sorter);\n }, [attachTokenBalance, crossTokens, tokenFilter]);\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,IAAagB,KAAyBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAC,gBAAAC,kBAAAC,sCAAAC,SAAAC,GAAAC,QAAAC,MAAAT,GAIrCM,IAAAC,MAAAG,KAAAA,IAAA,KAAAH,GACAC,IAAAC,MAAAC,KAAAA,IAAA,UAAAD,GAQAE,IAAmBlB,GAAY,EAE/BmB,IAAkB3B,EAAamB,EAAc,EAC7CS,IAAoBvB,EAAec,EAAc,EAACU;CAAA,AAAAb,EAAA,OAAAW,KAAAX,EAAA,OAAAY,KAAAZ,EAAA,OAAAK,KAExBQ,IAAAR,IACtB,CAACO,EAAY,CAAAE,OAAQH,EACZ,GAFaA,GAEbX,EAAA,KAAAW,GAAAX,EAAA,KAAAY,GAAAZ,EAAA,KAAAK,GAAAL,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CAFb,IAAAe,IAA0BF,GAI1BG,IACSjC,EAAa;EAAAkC,cACJf,EAAWgB,MAAO;EAAAC,YACpBJ;EACZ,CAAC,EAILM,IADkC1B,EAAUO,EAEzCkB,IAAAhB,KAEAY,EAAcM,WAAY,KAA1B,CAGE,CAACpB,KAHHE,GAUgBmB,IAACF,IAADZ,KAAAA,IAAAf,GAA2C8B;CAAA,AAAAxB,EAAA,OAAAuB,IAC3DC,IAAAxB,EAAA,MAJsBwB,IAAA,EAAAC,eAGNF,GAChB,EAAAvB,EAAA,KAAAuB,GAAAvB,EAAA,KAAAwB;CALH,IAAA,EAAAE,QAAAC,GAAAC,YAAAC,MACEC,EAAuBN,EAIrB,EAACO;CAAAC,KAAA;EAGH,IAAIX,GAAiB;GAAA,IAAAY;GACnBF,AADmB/B,EAAA,OAAA2B,KAAA3B,EAAA,OAAA6B,KACZI,IAAA;IAAAC,iBACYP;IAAmBQ,cACtBN;IACf,EAAA7B,EAAA,KAAA2B,GAAA3B,EAAA,KAAA6B,GAAA7B,EAAA,KAAAiC,KAAAA,IAAAjC,EAAA,IAHD+B,IAAOE;GAAP,MAAAD;;EAKF,IAAAI,IAAuBjC,KAAAO,GAA4BuB;EAAA,AAAAjC,EAAA,OAAAe,IAGlDkB,IAAAjC,EAAA,OAFoCiC,IAAAlB,EAAiBsB,IACpDC,EACD,EAAAtC,EAAA,KAAAe,GAAAf,EAAA,MAAAiC;EAFD,IAAAM,IAAqCN,GAEnCO;EAAA,AAAAxC,EAAA,QAAAuC,KAAAvC,EAAA,QAAAoC,KAIcI,IAAA,GACXJ,IAAiBG,GACnB,EAAAvC,EAAA,MAAAuC,GAAAvC,EAAA,MAAAoC,GAAApC,EAAA,MAAAwC,KAAAA,IAAAxC,EAAA;EAAA,IAAAyC;EAJHV,AAIG/B,EAAA,QAAAe,KAAAf,EAAA,QAAAwC,KAJIC,IAAA;GAAAP,iBACYnB;GAAiBoB,cACpBK;GAGf,EAAAxC,EAAA,MAAAe,GAAAf,EAAA,MAAAwC,GAAAxC,EAAA,MAAAyC,KAAAA,IAAAzC,EAAA,KALD+B,IAAOU;;CAZT,IAAA,EAAAN,iBAAAD,uBAA0CH,GAyBvCE;CAAA,AAAAjC,EAAA,QAAAmC,KAAAnC,EAAA,QAAAO,KAEwD0B,IAAA;EAAAE;EAAA5B;EAG1D,EAAAP,EAAA,MAAAmC,GAAAnC,EAAA,MAAAO,GAAAP,EAAA,MAAAiC,KAAAA,IAAAjC,EAAA;CAHD,IAAA0C,IAA2BpD,EAAgC2C,EAGzD,EAACO;CAAA,IAAAxC,EAAA,QAAA0C,KAAA1C,EAAA,QAAAE,KAAAF,EAAA,QAAAkC,GAAA;EAGD,IAAAS,IAA2BzC,EAAWgB,MAAO,EAE7C0B,IAAe9D,EAA2B6D,EAAmB;EAM9C3C,AALRwC,IAAAzD,EAAa;GAAAkC,cACJ0B;GAAkBxB,YACpBe;GACb,CAAC,CAAAG,IACKK,EAAmB,CAAAG,KAClBD,EAAO,EAAA5C,EAAA,MAAA0C,GAAA1C,EAAA,MAAAE,GAAAF,EAAA,MAAAkC,GAAAlC,EAAA,MAAAwC;QAAAA,IAAAxC,EAAA;CACsC,OAEhD8C;GAGIC,UAA2B;CAAA,IAAA/C,IAAAC,EAAA,EAAA,EAAAF;CAGtCD,AAHsCE,EAAA,OAAAgD,OAAAC,IAAA,4BAAA,IAGflD,IAAA;EAAAG,aACR;EAAEK,QACP;EACT,EAAAP,EAAA,KAAAD,KAAAA,IAAAC,EAAA,IAHDF,EAAuBC,EAGrB;;AAeJ,SAAgB+B,EAAuB,EACrCL,kBACA0B,oBAIA;CACA,IAAM,EAAEE,eAAeC,MACrBnE,EAAaS,EAAqB;CAEpC,OAAOR,QAAc;EACnB,IAAMsC,IAAkB,EAAE,EACpBE,IAAuC,EAAE;EAE/C,KAAK,IAAM,CAAC2B,GAAU,EAAE7B,QAAQ8B,QAAcC,OAAOC,QACnDJ,EACD,EAAE;GACD,IAAMK,IAAUC,OAAOL,EAAS;GAC5B9B,KAAiB,CAACA,EAAcoC,SAASF,EAAQ,IACjDR,KAAiBA,EAAcU,SAASF,EAAQ,KAEpDjC,EAAOoC,KAAK,GAAGN,EAAQ,EACvB5B,EAAW+B,KAAWH,EAAQnB,KAAK0B,MAAUA,EAAMC,QAAQ;;EAG7D,OAAO;GAAEtC;GAAQE;GAAY;IAC5B;EAAC0B;EAAoB7B;EAAe0B;EAAc,CAAC;;AAGxD,SAAOc,EAAAlE,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAgE,gBAAAC,cAAAC,YAAArE,GAUnCO;CAAA,AAAAN,EAAA,OAAAkE,KAAAlE,EAAA,OAAAoE,KAAApE,EAAA,OAAAmE,KAC6C7D,IAAA;EAAA4D;EAAAC;EAAAC;EAI3C,EAAApE,EAAA,KAAAkE,GAAAlE,EAAA,KAAAoE,GAAApE,EAAA,KAAAmE,GAAAnE,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAJD,IAAA,EAAAqE,mBAAwB5E,EAAoBa,EAI1C,EAACE;CAAA,AAAAR,EAAA,OAAAqE,IAIuD7D,IAAAR,EAAA,MAAzCQ,IAAA6D,EAAWhC,IAAKiC,EAAyB,EAAAtE,EAAA,KAAAqE,GAAArE,EAAA,KAAAQ;CAAA,IAAAK;CAAA,AAAAb,EAAA,OAAAQ,KAAAR,EAAA,OAAAmE,KAFCtD,IAAA,EAAAsB,cAC3C,GACXgC,IAAY3D,GACf,EACD,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAmE,GAAAnE,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CAJD,IAAA0C,IAA2BpD,EAAgCuB,EAIzD,EAACU;CAAA,IAAAvB,EAAA,OAAA0C,KAAA1C,EAAA,QAAAqE,KAAArE,EAAA,QAAAE,GAAA;EAGD,IAAAyC,IAA2BzC,EAAWgB,MAAO,EAE7C0B,IAAe9D,EAA2B6D,EAAmB;EAKH3C,AAAnDuB,IAJgBxC,EAAa;GAAAkC,cACpB0B;GAAkBxB,YACpBkD;GACb,CACMrD,CAAcqB,IAAKK,EAAmB,CAAAG,KAAMD,EAAO,EAAA5C,EAAA,KAAA0C,GAAA1C,EAAA,MAAAqE,GAAArE,EAAA,MAAAE,GAAAF,EAAA,MAAAuB;QAAAA,IAAAvB,EAAA;CAAA,OAA1DuB;;AA/BG,SAAA+C,EAAAP,GAAA;CAAA,OAmBuCA,EAAKC;;AAlKb,SAAA1B,EAAAvC,GAAA;CAuD/B,IAAA,EAAAiE,eAAAjE;CAAW,OAAKiE"}
1
+ {"version":3,"file":"useAllTokensWithFilter.js","names":["createSortWithClosestMatch","filterTokens","useAllTokens","Token","TokenMaybeWithUsdBalance","useAtomValue","useMemo","useNativeToken","useAttachTokenBalanceMultichain","SupportedChainId","useChainId","useTokensFromAcross","emptyArray","isAddress","allTokensByChainAtom","BridgeRoutesMode","useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","intent","t2","undefined","appChainId","allTokens","nativeToken","t3","concat","allIncludedTokens","filteredTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","searchOnAllChains","length","t4","t5","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t6","bb0","t7","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t8","t9","attachTokenBalance","trimmedTokenFilter","sorter","sort","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","AllTokensFromChainsInput","excludeChains","Record","listByChainId","tokensListsByChain","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","mode","crossTokens","_temp3"],"sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { createSortWithClosestMatch } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport type { BridgeRoutesMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n intent = \"fetch\",\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n intent?: \"fetch\" | \"prefetch\";\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n (isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound) || // if it's a token address, always search on other chains, if allowed\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n intent,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n return filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sorter);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n intent: \"prefetch\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n mode,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeRoutesMode;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n const filteredTokens = filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: crossTokens,\n });\n return filteredTokens.map(attachTokenBalance).sort(sorter);\n }, [attachTokenBalance, crossTokens, tokenFilter]);\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { SupportedChainId } from '../../lib/web3/wagmi/types';
2
2
  import { Token } from '../../tokens/state/types';
3
- import { BridgeRoutesMode } from '../swap/prices/delta/queries/bridgeRoutes/types';
3
+ import { BridgeRoutesMode } from '../swap/prices/delta/queries/bridgeInfo/types';
4
4
  export declare function useTokensFromAcross({ fromChainId, toChainId, mode, }: {
5
5
  fromChainId: SupportedChainId;
6
6
  toChainId: SupportedChainId;
@@ -1 +1 @@
1
- {"version":3,"file":"useTokensFromAcross.d.ts","sourceRoot":"","sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAExF,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,SAAS,EACT,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG;IAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAgBhD"}
1
+ {"version":3,"file":"useTokensFromAcross.d.ts","sourceRoot":"","sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,SAAS,EACT,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG;IAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAYhD"}
@@ -1,19 +1,22 @@
1
1
  import { emptyArray as e } from "../../lib/constants/index.js";
2
2
  import { isTruthy as t } from "../../lib/utils/index.js";
3
- import { useGetBridgeRoutes as n } from "../useBridgeRoutes.js";
3
+ import { useGetBridgeInfo as n } from "../useBridgeInfo.js";
4
4
  import { useTokensByAddress as r } from "./useTokensByAddress.js";
5
5
  import { c as i } from "react-compiler-runtime";
6
6
  //#region src/hooks/tokens/useTokensFromAcross.ts
7
7
  function a(a) {
8
- let o = i(7), { fromChainId: s, toChainId: c, mode: l } = a, u;
8
+ let o = i(10), { fromChainId: s, toChainId: c, mode: l } = a, u;
9
9
  o[0] === l ? u = o[1] : (u = { mode: l }, o[0] = l, o[1] = u);
10
- let { data: d, error: f } = n(u), p = d?.find((e) => e.srcChainId === s && e.destChainId === c)?.tokens ?? e, m = r(c), h;
11
- o[2] === m ? h = o[3] : (h = (e) => m[e.toLowerCase()], o[2] = m, o[3] = h);
12
- let g = p.map(h).filter(t), _;
13
- return o[4] !== f || o[5] !== g ? (_ = {
10
+ let { data: d, error: f } = n(u), p = d?.[s]?.[c] ?? e, m = r(c), h;
11
+ if (o[2] !== p || o[3] !== m) {
12
+ let e;
13
+ o[5] === m ? e = o[6] : (e = (e) => m[e.toLowerCase()], o[5] = m, o[6] = e), h = p.map(e).filter(t), o[2] = p, o[3] = m, o[4] = h;
14
+ } else h = o[4];
15
+ let g = h, _;
16
+ return o[7] !== f || o[8] !== g ? (_ = {
14
17
  crossTokens: g,
15
18
  error: f
16
- }, o[4] = f, o[5] = g, o[6] = _) : _ = o[6], _;
19
+ }, o[7] = f, o[8] = g, o[9] = _) : _ = o[9], _;
17
20
  }
18
21
  //#endregion
19
22
  export { a as useTokensFromAcross };
@@ -1 +1 @@
1
- {"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeRoutes","useTokensByAddress","emptyArray","BridgeRoutesMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeRoutes","error","acrossTokenAddresses","find","route","srcChainId","destChainId","tokens","tokensMap","t2","tokenAddress","toLowerCase","tokensFromAcross","map","filter","t3","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeRoutes } from \"../useBridgeRoutes\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeRoutesMode } from \"../swap/prices/delta/queries/bridgeRoutes/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeRoutesMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeRoutes, error } = useGetBridgeRoutes({ mode });\n\n const acrossTokenAddresses =\n bridgeRoutes?.find(\n (route) =>\n route.srcChainId === fromChainId && route.destChainId === toChainId\n )?.tokens ?? emptyArray;\n\n const tokensMap = useTokensByAddress(toChainId);\n\n const tokensFromAcross = acrossTokenAddresses\n .map((tokenAddress) => tokensMap[tokenAddress.toLowerCase()])\n .filter(isTruthy);\n\n return { crossTokens: tokensFromAcross, error };\n}\n"],"mappings":";;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAA6B,EAAAC,gBAAAC,cAAAC,YAAAL,GAQnCM;CAAA,AAAAL,EAAA,OAAAI,IACkEC,IAAAL,EAAA,MAARK,IAAA,EAAAD,SAAQ,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAAjE,IAAA,EAAAC,MAAAC,GAAAC,aAAsCd,EAAmBW,EAAS,EAElEI,IACEF,GAAYG,MACVC,MACEA,EAAKC,eAAgBV,KAAeS,EAAKE,gBAAiBV,EACrD,EAAAW,UAHTlB,GAKFmB,IAAkBpB,EAAmBQ,EAAU,EAACa;CAAA,AAAAhB,EAAA,OAAAe,IAGcC,IAAAhB,EAAA,MAAvDgB,KAAAC,MAAkBF,EAAUE,EAAYC,aAAc,GAAClB,EAAA,KAAAe,GAAAf,EAAA,KAAAgB;CAD9D,IAAAG,IAAyBV,EAAoBW,IACtCJ,EAAwD,CAAAK,OACrD9B,EAAS,EAAC+B;CAE2B,OAF3BtB,EAAA,OAAAQ,KAAAR,EAAA,OAAAmB,KAEbG,IAAA;EAAAC,aAAeJ;EAAgBX;EAAS,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAmB,GAAAnB,EAAA,KAAAsB,KAAAA,IAAAtB,EAAA,IAAxCsB"}
1
+ {"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeInfo","useTokensByAddress","emptyArray","BridgeRoutesMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeInfo","error","acrossTokenAddresses","tokensMap","t2","t3","tokenAddress","toLowerCase","map","filter","tokensFromAcross","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeInfo } from \"../useBridgeInfo\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeRoutesMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeRoutesMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeInfo, error } = useGetBridgeInfo({ mode });\n\n const acrossTokenAddresses = bridgeInfo?.[fromChainId]?.[toChainId] ?? emptyArray;\n\n const tokensMap = useTokensByAddress(toChainId);\n\n const tokensFromAcross = acrossTokenAddresses\n .map((tokenAddress) => tokensMap[tokenAddress.toLowerCase()])\n .filter(isTruthy);\n\n return { crossTokens: tokensFromAcross, error };\n}\n"],"mappings":";;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAC,cAAAC,YAAAL,GAQnCM;CAAA,AAAAL,EAAA,OAAAI,IAC8DC,IAAAL,EAAA,MAARK,IAAA,EAAAD,SAAQ,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAA7D,IAAA,EAAAC,MAAAC,GAAAC,aAAoCd,EAAiBW,EAAS,EAE9DI,IAA6BF,IAAaL,KAAeC,MAA5BP,GAE7Bc,IAAkBf,EAAmBQ,EAAU,EAACQ;CAAA,IAAAX,EAAA,OAAAS,KAAAT,EAAA,OAAAU,GAAA;EAAA,IAAAE;EAI7BZ,AAJ6BA,EAAA,OAAAU,IAGcE,IAAAZ,EAAA,MAAvDY,KAAAC,MAAkBH,EAAUG,EAAYC,aAAc,GAACd,EAAA,KAAAU,GAAAV,EAAA,KAAAY,IADrCD,IAAAF,EAAoBM,IACtCH,EAAwD,CAAAI,OACrDzB,EAAS,EAAAS,EAAA,KAAAS,GAAAT,EAAA,KAAAU,GAAAV,EAAA,KAAAW;QAAAA,IAAAX,EAAA;CAFnB,IAAAiB,IAAyBN,GAELC;CAE2B,OAF3BZ,EAAA,OAAAQ,KAAAR,EAAA,OAAAiB,KAEbL,IAAA;EAAAM,aAAeD;EAAgBT;EAAS,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAiB,GAAAjB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAAxCY"}
@@ -1,5 +1,5 @@
1
1
  import { SupportedChainId } from '../lib/web3/wagmi/types';
2
- import { BridgeRoutesMode } from './swap/prices/delta/queries/bridgeRoutes/types';
2
+ import { BridgeRoutesMode } from './swap/prices/delta/queries/bridgeInfo/types';
3
3
  export declare function useAvailableCrosses({ fromChainId, mode, }: {
4
4
  fromChainId: SupportedChainId;
5
5
  mode: BridgeRoutesMode;
@@ -1 +1 @@
1
- {"version":3,"file":"useAvailableCrosses.d.ts","sourceRoot":"","sources":["../../src/hooks/useAvailableCrosses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAGvF,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG;IACF,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACtC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAiBA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG,gBAAgB,EAAE,CAUrB"}
1
+ {"version":3,"file":"useAvailableCrosses.d.ts","sourceRoot":"","sources":["../../src/hooks/useAvailableCrosses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAGrF,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG;IACF,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACtC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAYA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG,gBAAgB,EAAE,CAYrB"}