@velora-dex/widget 0.8.3-dev.1 → 0.8.3

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 (226) hide show
  1. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts.map +1 -1
  2. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +23 -22
  3. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
  4. package/dist/components/web3/ConnectExternalProvider/constants.d.ts +2 -1
  5. package/dist/components/web3/ConnectExternalProvider/constants.d.ts.map +1 -1
  6. package/dist/components/web3/ConnectExternalProvider/constants.js +2 -2
  7. package/dist/components/web3/ConnectExternalProvider/constants.js.map +1 -1
  8. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.d.ts.map +1 -1
  9. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js +4 -1
  10. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js.map +1 -1
  11. package/dist/components/web3/ConnectExternalProvider/utils.d.ts.map +1 -1
  12. package/dist/components/web3/ConnectExternalProvider/utils.js +1 -1
  13. package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
  14. package/dist/components/web3/ConnectExternalProvider/walletConnectProviderWrapper.d.ts +5 -0
  15. package/dist/components/web3/ConnectExternalProvider/walletConnectProviderWrapper.d.ts.map +1 -0
  16. package/dist/components/web3/ConnectExternalProvider/walletConnectProviderWrapper.js +22 -0
  17. package/dist/components/web3/ConnectExternalProvider/walletConnectProviderWrapper.js.map +1 -0
  18. package/dist/components/widget/BridgeList/hooks.d.ts +2 -2
  19. package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
  20. package/dist/components/widget/BridgeList/hooks.js +73 -79
  21. package/dist/components/widget/BridgeList/hooks.js.map +1 -1
  22. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
  23. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
  24. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
  25. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.d.ts.map +1 -1
  26. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js +10 -10
  27. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map +1 -1
  28. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js +1 -1
  29. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +1 -1
  30. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  31. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  32. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +2 -2
  33. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  34. package/dist/components/widget/TradeOverview/TradeError/utils.js +1 -1
  35. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
  36. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
  37. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  38. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +1 -4
  39. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
  40. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +1 -1
  41. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
  42. package/dist/configurator/Configurator.d.ts.map +1 -1
  43. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  44. package/dist/core/LimitOrderButton.js +53 -46
  45. package/dist/core/LimitOrderButton.js.map +1 -1
  46. package/dist/core/OtcOrderButton.d.ts.map +1 -1
  47. package/dist/core/OtcOrderButton.js +6 -5
  48. package/dist/core/OtcOrderButton.js.map +1 -1
  49. package/dist/core/TradeFlowScreenButton.d.ts +4 -3
  50. package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
  51. package/dist/core/TradeFlowScreenButton.js +24 -24
  52. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  53. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts +1 -0
  54. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  55. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +130 -99
  56. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  57. package/dist/core/index.js +5 -4
  58. package/dist/core/index.js.map +1 -1
  59. package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
  60. package/dist/core/inputs/hooks/useTokenFromInputProps.js +2 -2
  61. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  62. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  63. package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
  64. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  65. package/dist/core/inputs/hooks/utils.d.ts.map +1 -1
  66. package/dist/core/inputs/hooks/utils.js +5 -7
  67. package/dist/core/inputs/hooks/utils.js.map +1 -1
  68. package/dist/core/limit/useLimitRate.d.ts +3 -2
  69. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  70. package/dist/core/limit/useLimitRate.js +110 -54
  71. package/dist/core/limit/useLimitRate.js.map +1 -1
  72. package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
  73. package/dist/core/limit/useLimitTokenToInputProps.js +4 -1
  74. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  75. package/dist/core/otc/state/selectedTokenActionsAtom.d.ts.map +1 -1
  76. package/dist/core/otc/state/selectedTokenActionsAtom.js +2 -2
  77. package/dist/core/otc/state/selectedTokenActionsAtom.js.map +1 -1
  78. package/dist/core/state/widgetEventsAtom.d.ts.map +1 -1
  79. package/dist/core/state/widgetEventsAtom.js +21 -11
  80. package/dist/core/state/widgetEventsAtom.js.map +1 -1
  81. package/dist/core/swapDetails/fees.d.ts.map +1 -1
  82. package/dist/core/swapDetails/fees.js +11 -16
  83. package/dist/core/swapDetails/fees.js.map +1 -1
  84. package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
  85. package/dist/core/swapDetails/maxToPay.js +17 -18
  86. package/dist/core/swapDetails/maxToPay.js.map +1 -1
  87. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
  88. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
  89. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
  90. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
  91. package/dist/events/types/importToken.d.ts +14 -0
  92. package/dist/events/types/importToken.d.ts.map +1 -0
  93. package/dist/events/types/index.d.ts +4 -1
  94. package/dist/events/types/index.d.ts.map +1 -1
  95. package/dist/events/types/priceChange.d.ts +2 -2
  96. package/dist/events/types/priceChange.d.ts.map +1 -1
  97. package/dist/events/types/swap.d.ts +2 -2
  98. package/dist/events/types/swap.d.ts.map +1 -1
  99. package/dist/events/types/twap.d.ts +2 -2
  100. package/dist/events/types/twap.d.ts.map +1 -1
  101. package/dist/hooks/batch/useSendBatchTx.d.ts.map +1 -1
  102. package/dist/hooks/batch/useSendBatchTx.js +31 -32
  103. package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
  104. package/dist/hooks/swap/prices/delta/bridge/const.d.ts +8 -0
  105. package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +1 -0
  106. package/dist/hooks/swap/prices/delta/bridge/const.js +13 -0
  107. package/dist/hooks/swap/prices/delta/bridge/const.js.map +1 -0
  108. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +4 -3
  109. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
  110. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
  111. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +3 -6
  112. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
  113. package/dist/hooks/swap/prices/delta/bridge/utils.js +17 -20
  114. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  115. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
  116. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
  117. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +5 -5
  118. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  119. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
  120. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
  121. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +2 -2
  122. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  123. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -1
  124. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +28 -27
  125. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  126. package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
  127. package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
  128. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +2 -2
  129. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  130. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
  131. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +1 -1
  132. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  133. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
  134. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  135. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +5 -5
  136. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  137. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
  138. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +28 -27
  139. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  140. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
  141. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  142. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +2 -2
  143. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  144. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
  145. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  146. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +2 -2
  147. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  148. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +6 -5
  149. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
  150. package/dist/hooks/swap/prices/delta/mutations/utils.js +6 -6
  151. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  152. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +3 -3
  153. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +3 -3
  154. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  155. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +29 -44
  156. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  157. package/dist/hooks/swap/prices/delta/orders/utils.js +16 -128
  158. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  159. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  160. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +33 -16
  161. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  162. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +6 -6
  163. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  164. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +3 -3
  165. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  166. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +8 -7
  167. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  168. package/dist/hooks/swap/prices/factory.d.ts.map +1 -1
  169. package/dist/hooks/swap/prices/factory.js +1 -1
  170. package/dist/hooks/swap/prices/factory.js.map +1 -1
  171. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +1 -1
  172. package/dist/hooks/swap/prices/types.d.ts +3 -2
  173. package/dist/hooks/swap/prices/types.d.ts.map +1 -1
  174. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
  175. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  176. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  177. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
  178. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  179. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
  180. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
  181. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
  182. package/dist/hooks/swap/prices/useTwapPrices.d.ts +5 -4
  183. package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
  184. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
  185. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +17 -10
  186. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
  187. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
  188. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
  189. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts.map +1 -1
  190. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js +1 -1
  191. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
  192. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
  193. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  194. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +124 -119
  195. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  196. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -2
  197. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  198. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +196 -159
  199. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  200. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +5 -5
  201. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
  202. package/dist/hooks/swap/tradeFlow/useTwapFlow.js +229 -217
  203. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  204. package/dist/hooks/useSDK.d.ts +3 -19
  205. package/dist/hooks/useSDK.d.ts.map +1 -1
  206. package/dist/hooks/useSDK.js +35 -65
  207. package/dist/hooks/useSDK.js.map +1 -1
  208. package/dist/index.d.ts +2 -1
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/lib/queryClient.js +2 -2
  211. package/dist/lib/queryClient.js.map +1 -1
  212. package/dist/lib/utils/price.d.ts +2 -5
  213. package/dist/lib/utils/price.d.ts.map +1 -1
  214. package/dist/lib/utils/price.js +5 -8
  215. package/dist/lib/utils/price.js.map +1 -1
  216. package/dist/lib/utils/twap.d.ts +2 -2
  217. package/dist/lib/utils/twap.d.ts.map +1 -1
  218. package/dist/lib/utils/twap.js +2 -2
  219. package/dist/lib/utils/twap.js.map +1 -1
  220. package/dist/tokens/state/addImportedTokenAtom.d.ts +2 -0
  221. package/dist/tokens/state/addImportedTokenAtom.d.ts.map +1 -1
  222. package/dist/tokens/state/addImportedTokenAtom.js +47 -31
  223. package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
  224. package/package.json +2 -2
  225. package/dist/lib/utils/scaleFactor.js +0 -13
  226. package/dist/lib/utils/scaleFactor.js.map +0 -1
@@ -11,264 +11,301 @@ import { usePartner as l } from "../../usePartner.js";
11
11
  import { useEnsureTxReceipt as u } from "../../txs/queries/useAwaitTx.js";
12
12
  import { useCancelOrWithdrawAndCancelDeltaOrder as d } from "../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js";
13
13
  import { UserCancelledError as f } from "./common/errors.js";
14
- import { useCreateAndSubmitDeltaOrder as p } from "../prices/delta/mutations/useCreateDeltaOrder.js";
15
- import { useApproveOrPermit as m } from "./common/useApproveOrPermit.js";
16
- import { shouldApproveOrBatch as h, usePreSignAndSubmitDeltaOrder as g } from "./common/usePreSignAndSubmitDeltaOrder.js";
17
- import { useDepositAndSubmitDeltaOrder as _ } from "./common/useDepositAndSubmitDeltaOrder.js";
18
- import { useReferrer as ee } from "../../useReferrer.js";
19
- import { useRef as v } from "react";
20
- import { useMutation as te } from "@tanstack/react-query";
21
- import { assert as y } from "ts-essentials";
22
- import { useAccount as ne, useChainId as b } from "wagmi";
14
+ import { useCreateAndSubmitDeltaOrder as ee } from "../prices/delta/mutations/useCreateDeltaOrder.js";
15
+ import { useApproveOrPermit as te } from "./common/useApproveOrPermit.js";
16
+ import { shouldApproveOrBatch as ne, usePreSignAndSubmitDeltaOrder as p } from "./common/usePreSignAndSubmitDeltaOrder.js";
17
+ import { useDepositAndSubmitDeltaOrder as m } from "./common/useDepositAndSubmitDeltaOrder.js";
18
+ import { useReferrer as h } from "../../useReferrer.js";
19
+ import { DEFAULT_DELTA_BRIDGE as g } from "../prices/delta/bridge/const.js";
20
+ import { useRef as _ } from "react";
21
+ import { useMutation as re } from "@tanstack/react-query";
22
+ import { assert as v } from "ts-essentials";
23
+ import { useAccount as ie, useChainId as ae } from "wagmi";
23
24
  //#region src/hooks/swap/tradeFlow/useLimitOrderFlow.ts
24
- var x = "limitOrder", S = "runLimitOrderFlow";
25
- function C({ limitPrice: C }) {
26
- let w = e("LimitOrderFlow"), T = b(), { approval: E, approveTxMut: D, events: O } = m({
27
- srcToken: C?.srcTokenAddress,
28
- srcAmount: C?.srcAmount,
25
+ var y = "limitOrder", b = "runLimitOrderFlow";
26
+ function x({ limitPrice: x }) {
27
+ let S = e("LimitOrderFlow"), C = ae(), { approval: w, approveTxMut: T, events: E } = te({
28
+ srcToken: x?.srcTokenAddress,
29
+ srcAmount: x?.srcAmount,
29
30
  spenderContractType: "ParaswapDelta",
30
31
  swapSide: "SELL",
31
32
  tradeMode: "limit",
32
- chainId: T
33
- }), { address: k } = ne(), { minClient: A } = c({
34
- chainId: T,
35
- account: k
36
- }), j = p({
37
- chainId: T,
38
- account: k,
39
- client: A,
33
+ chainId: C
34
+ }), { address: D } = ie(), { minClient: O } = c({
35
+ chainId: C,
36
+ account: D
37
+ }), k = ee({
38
+ chainId: C,
39
+ account: D,
40
+ client: O,
40
41
  mutationOptions: {
41
42
  onSuccess: (e) => {
42
- w.log("Create Limit Order success", e);
43
+ S.log("Create Limit Order success", e);
43
44
  },
44
45
  onError: (e) => {
45
- w.error("Create Limit Order error", e);
46
+ S.error("Create Limit Order error", e);
46
47
  }
47
48
  }
48
- }), M = {
49
- order: j.order,
50
- isCreatingOrder: j.isCreatingOrder,
51
- isPostingOrder: j.isPostingOrder,
52
- isOrderSent: j.isOrderSent,
53
- isPending: j.isPending,
54
- isError: j.isError,
55
- isSuccess: j.isSuccess,
56
- error: j.error
57
- }, { deltaOrderPreSign: N, canBatchTxs: re, isConnectedToSafe: ie, preSignAndSubmitDeltaOrder: ae, reset: P } = g({
58
- chainId: T,
59
- account: k,
60
- logger: w,
61
- viemClient: A
62
- }), { deltaOrderDeposit: F, reset: I, depositAndSubmitDeltaOrder: L } = _({
63
- chainId: T,
64
- account: k,
65
- logger: w,
66
- viemClient: A
67
- }), R = {
68
- order: M.order || N.order || F.order,
69
- isPostingOrder: M.isPostingOrder || N.postingOrder.isPostingOrder || F.postingOrder.isPostingOrder,
70
- isCreatingOrder: M.isCreatingOrder || N.isCreatingOrder || F.isCreatingOrder,
71
- isOrderSent: M.isOrderSent || N.isOrderSent || F.isOrderSent,
72
- isPending: M.isPending || N.isPending || F.isPending,
73
- isError: M.isError || N.isError || F.isError,
74
- isSuccess: M.isSuccess || N.isSuccess || F.isSuccess,
75
- error: M.error || N.error || F.error
76
- }, z = s({
77
- orderId: R.order?.id,
49
+ }), A = {
50
+ order: k.order,
51
+ isCreatingOrder: k.isCreatingOrder,
52
+ isPostingOrder: k.isPostingOrder,
53
+ isOrderSent: k.isOrderSent,
54
+ isPending: k.isPending,
55
+ isError: k.isError,
56
+ isSuccess: k.isSuccess,
57
+ error: k.error
58
+ }, { deltaOrderPreSign: j, canBatchTxs: M, isConnectedToSafe: N, preSignAndSubmitDeltaOrder: P, reset: F } = p({
59
+ chainId: C,
60
+ account: D,
61
+ logger: S,
62
+ viemClient: O
63
+ }), { deltaOrderDeposit: I, reset: L, depositAndSubmitDeltaOrder: R } = m({
64
+ chainId: C,
65
+ account: D,
66
+ logger: S,
67
+ viemClient: O
68
+ }), z = {
69
+ order: A.order || j.order || I.order,
70
+ isPostingOrder: A.isPostingOrder || j.postingOrder.isPostingOrder || I.postingOrder.isPostingOrder,
71
+ isCreatingOrder: A.isCreatingOrder || j.isCreatingOrder || I.isCreatingOrder,
72
+ isOrderSent: A.isOrderSent || j.isOrderSent || I.isOrderSent,
73
+ isPending: A.isPending || j.isPending || I.isPending,
74
+ isError: A.isError || j.isError || I.isError,
75
+ isSuccess: A.isSuccess || j.isSuccess || I.isSuccess,
76
+ error: A.error || j.error || I.error
77
+ }, B = s({
78
+ orderId: z.order?.id,
78
79
  refetchInterval: i,
79
80
  onAuctionSuccess: (e) => {
80
- w.log("Limit Order success", e);
81
+ S.log("Limit Order success", e);
81
82
  },
82
83
  onAuctionFailure: (e) => {
83
- w.log("Limit Order failure", e);
84
+ S.log("Limit Order failure", e);
84
85
  },
85
86
  onUpdatedAuction: (e) => {
86
- w.log("Limit Order updated", e);
87
+ S.log("Limit Order updated", e);
87
88
  }
88
- }), B = z.data ? o(z.data) : null, V = {
89
- sentOrder: R.order,
90
- lastOrderState: z.data,
91
- isOrderPending: B === "pending",
92
- isOrderExecuting: B === "executing",
93
- isOrderExecuted: B === "confirmed",
94
- isPending: z.isLoading || z.isRefetching || B === "pending" || B === "executing",
95
- isError: z.isError || B === "failed",
96
- isSuccess: B === "confirmed",
97
- error: z.error
98
- }, H = d({
99
- order: V.lastOrderState || V.sentOrder,
100
- chainId: T,
101
- account: k,
102
- client: A,
103
- logger: w
104
- }), U = {
105
- receipt: H.receipt,
106
- txHash: H.txHash,
107
- response: H.cancelOrderResponse,
108
- isCancelingOrder: H.isPending,
109
- isOrderCancellable: H.isOrderCancellable,
110
- isOrderCanceled: H.isSuccess,
111
- isPending: H.isPending,
112
- isError: H.isError,
113
- isSuccess: H.isSuccess,
114
- error: H.error,
115
- step: H.step
116
- }, W = u(), G = v(null), K = () => {
117
- G.current?.abort(new f()), G.current = null;
118
- }, { partner: q } = l(), { referrerAddress: oe } = ee(), J = r(), se = n(), { onLimitOrder: Y } = a(), ce = async ({ onTxSent: e } = {}) => {
119
- D.reset(), j.reset(), H.reset(), P(), I(), y(C, "Limit price data is not available");
89
+ }), V = B.data ? o(B.data) : null, H = {
90
+ sentOrder: z.order,
91
+ lastOrderState: B.data,
92
+ isOrderPending: V === "pending",
93
+ isOrderExecuting: V === "executing",
94
+ isOrderExecuted: V === "confirmed",
95
+ isPending: B.isLoading || B.isRefetching || V === "pending" || V === "executing",
96
+ isError: B.isError || V === "failed",
97
+ isSuccess: V === "confirmed",
98
+ error: B.error
99
+ }, U = d({
100
+ order: H.lastOrderState || H.sentOrder,
101
+ chainId: C,
102
+ account: D,
103
+ client: O,
104
+ logger: S
105
+ }), oe = {
106
+ receipt: U.receipt,
107
+ txHash: U.txHash,
108
+ response: U.cancelOrderResponse,
109
+ isCancelingOrder: U.isPending,
110
+ isOrderCancellable: U.isOrderCancellable,
111
+ isOrderCanceled: U.isSuccess,
112
+ isPending: U.isPending,
113
+ isError: U.isError,
114
+ isSuccess: U.isSuccess,
115
+ error: U.error,
116
+ step: U.step
117
+ }, se = u(), W = _(null), ce = () => {
118
+ W.current?.abort(new f()), W.current = null;
119
+ }, { partner: G } = l(), { referrerAddress: K } = h(), q = r(), J = n(), { onLimitOrder: Y } = a(), le = async ({ onTxSent: e } = {}) => {
120
+ T.reset(), k.reset(), U.reset(), F(), L(), v(x, "Limit price data is not available");
120
121
  let n = new AbortController();
121
- G.current = n;
122
- let r = n.signal, i, a, o = E.allowanceToSet, s = t(C.srcTokenAddress), { shouldDoApprovalTxOrPermit: c, shouldPreSignBatch: l } = h({
123
- approval: E,
122
+ W.current = n;
123
+ let r = n.signal, i, a, o = w.allowanceToSet, s = t(x.srcTokenAddress), { shouldDoApprovalTxOrPermit: c, shouldPreSignBatch: l } = ne({
124
+ approval: w,
124
125
  signPermit: {
125
126
  isPermitSupported: !1,
126
127
  isPermitReadyToSign: !1
127
128
  },
128
- canBatchTxs: re,
129
- isConnectedToSafe: ie
129
+ canBatchTxs: M,
130
+ isConnectedToSafe: N
130
131
  });
131
132
  try {
132
133
  if (c && o) try {
133
- O.onApproveTx.request({ allowanceToSet: o }), i = await D.approveAsync({ allowanceData: { allowanceToSet: o } }), O.onApproveTx.sent({
134
+ E.onApproveTx.request({ allowanceToSet: o }), i = await T.approveAsync({ allowanceData: { allowanceToSet: o } }), E.onApproveTx.sent({
134
135
  allowanceToSet: o,
135
136
  txHash: i
136
137
  }), r.throwIfAborted();
137
- let t = W({
138
+ let t = se({
138
139
  hash: i,
139
- chainId: T,
140
+ chainId: C,
140
141
  onReplaced: (e) => {
141
- w.log("onReplaced:approveTx", i, e);
142
+ S.log("onReplaced:approveTx", i, e);
142
143
  }
143
144
  });
144
145
  e && e({
145
- chainId: T,
146
+ chainId: C,
146
147
  action: "approve",
147
148
  transactionHash: i,
148
149
  receiptPromise: t,
149
150
  transactionSpecificData: {
150
151
  action: "approve",
151
152
  approvedAmount: o,
152
- tokenAddress: E.token,
153
- spenderAddress: E.spender
153
+ tokenAddress: w.token,
154
+ spenderAddress: w.spender
154
155
  }
155
- }), a = await t, O.onApproveTx.confirmed({
156
+ }), a = await t, E.onApproveTx.confirmed({
156
157
  allowanceToSet: o,
157
158
  txHash: i,
158
159
  txReceipt: a
159
- }), w.log("~ approveTx ~ receipt:", a);
160
+ }), S.log("~ approveTx ~ receipt:", a);
160
161
  } catch (e) {
161
- throw O.onApproveTx.failed({
162
+ throw E.onApproveTx.failed({
162
163
  allowanceToSet: o,
163
164
  error: e,
164
165
  txHash: i
165
166
  }), e;
166
167
  }
167
- r.throwIfAborted(), y(k, "Account is not connected"), y(C, "limitPrice is not available"), Y?.({ event: {
168
+ r.throwIfAborted(), v(D, "Account is not connected"), v(x, "limitPrice is not available"), Y?.({ event: {
168
169
  name: "LimitOrder:request",
169
- params: { price: C }
170
+ params: { price: x }
170
171
  } });
171
- let t = {
172
+ let t = x.bridgePrice, n = t?.bridge.destinationChainId, u;
173
+ u = t ? {
172
174
  signal: r,
173
175
  type: "LIMIT",
174
- referrerAddress: oe,
176
+ referrerAddress: K,
175
177
  orderInput: {
176
- owner: k,
177
- beneficiary: J,
178
- route: C.route,
179
- limitAmount: C.destAmount,
180
- side: "SELL",
181
- partner: q,
182
- partnerFeeBps: 0,
183
- deadline: se
178
+ owner: D,
179
+ beneficiary: q,
180
+ srcToken: x.srcTokenAddress,
181
+ destToken: x.destTokenAddress,
182
+ srcAmount: x.srcAmount,
183
+ destAmount: x.destAmount,
184
+ destChainId: n,
185
+ deltaPrice: {
186
+ ...t,
187
+ bridge: {
188
+ ...t.bridge,
189
+ protocolSelector: g.protocolSelector,
190
+ protocolData: g.protocolData
191
+ },
192
+ partner: G,
193
+ partnerFee: 0
194
+ },
195
+ partner: G,
196
+ deadline: J
184
197
  }
185
- }, n;
198
+ } : {
199
+ signal: r,
200
+ type: "LIMIT",
201
+ referrerAddress: K,
202
+ orderInput: {
203
+ owner: D,
204
+ beneficiary: q,
205
+ srcToken: x.srcTokenAddress,
206
+ srcAmount: x.srcAmount,
207
+ destToken: x.destTokenAddress,
208
+ destAmount: x.destAmount,
209
+ destChainId: n,
210
+ deltaPrice: {
211
+ destToken: x.destTokenAddress,
212
+ destAmount: x.destAmount,
213
+ srcAmount: x.srcAmount,
214
+ bridge: g,
215
+ partner: G,
216
+ partnerFee: 0
217
+ },
218
+ partner: G,
219
+ deadline: J
220
+ }
221
+ };
222
+ let d;
186
223
  if (s) {
187
- let r = C.srcAmount;
188
- n = await L({
189
- createOrderInput: t,
190
- depositAmount: r,
224
+ let t = u.orderInput.srcAmount;
225
+ d = await R({
226
+ createOrderInput: u,
227
+ depositAmount: t,
191
228
  onTxSent: e
192
229
  });
193
- } else n = l ? await ae({
194
- createOrderInput: t,
195
- approval: E,
230
+ } else d = l ? await P({
231
+ createOrderInput: u,
232
+ approval: w,
196
233
  onTxSent: e
197
- }) : await j.mutateAsync(t);
234
+ }) : await k.mutateAsync(u);
198
235
  return Y?.({ event: {
199
236
  name: "LimitOrder:sent",
200
237
  params: {
201
- price: C,
202
- order: n
238
+ price: x,
239
+ order: d
203
240
  }
204
241
  } }), {
205
- tradeFlowType: x,
242
+ tradeFlowType: y,
206
243
  approve: {
207
244
  txHash: i,
208
245
  receipt: a
209
246
  },
210
- limitOrder: { sentOrder: n },
211
- limitPrice: C,
212
- account: k,
213
- receiverAddress: J
247
+ limitOrder: { sentOrder: d },
248
+ limitPrice: x,
249
+ account: D,
250
+ receiverAddress: q
214
251
  };
215
252
  } catch (e) {
216
- throw w.error("Order submission error", e), Y?.({ event: {
253
+ throw S.error("Order submission error", e), Y?.({ event: {
217
254
  name: "LimitOrder:failed",
218
255
  params: {
219
- price: C,
256
+ price: x,
220
257
  error: e
221
258
  }
222
259
  } }), e;
223
260
  }
224
- }, le = async () => {
261
+ }, ue = async () => {
225
262
  try {
226
- return await H.cancelDeltaOrder();
263
+ return await U.cancelDeltaOrder();
227
264
  } catch (e) {
228
- w.error("Cancel Limit order error", e), H.reset();
265
+ S.error("Cancel Limit order error", e), U.reset();
229
266
  }
230
- }, X = te({
231
- mutationFn: ce,
232
- mutationKey: [S],
267
+ }, X = re({
268
+ mutationFn: le,
269
+ mutationKey: [b],
233
270
  onSuccess: (e) => {
234
- w.log("Order submission success", e);
271
+ S.log("Order submission success", e);
235
272
  },
236
273
  onError: (e) => {
237
- w.error("Order submission error", e);
274
+ S.error("Order submission error", e);
238
275
  },
239
276
  onSettled: () => {
240
- w.log("Order submission settled");
277
+ S.log("Order submission settled");
241
278
  }
242
279
  }), Z = X.mutateAsync, Q = () => {
243
- D.reset(), j.reset(), X.reset(), H.reset(), P(), I();
244
- }, ue = (e) => (Q(), Z(e)), $ = X.data;
245
- return $ && V.lastOrderState && ($ = {
280
+ T.reset(), k.reset(), X.reset(), U.reset(), F(), L();
281
+ }, de = (e) => (Q(), Z(e)), $ = X.data;
282
+ return $ && H.lastOrderState && ($ = {
246
283
  ...$,
247
284
  limitOrder: {
248
285
  sentOrder: $.limitOrder.sentOrder,
249
- lastOrderState: V.lastOrderState
286
+ lastOrderState: H.lastOrderState
250
287
  }
251
288
  }), {
252
- tradeFlowType: x,
253
- chainId: T,
289
+ tradeFlowType: y,
290
+ chainId: C,
254
291
  runLimitOrderFlow: Z,
255
292
  reset: Q,
256
- cancelFlow: K,
257
- retryFlow: ue,
258
- cancelLimitOrder: le,
259
- approval: E,
260
- limitOrderSubmission: R,
261
- limitOrderExecution: V,
262
- limitOrderCancelation: U,
293
+ cancelFlow: ce,
294
+ retryFlow: de,
295
+ cancelLimitOrder: ue,
296
+ approval: w,
297
+ limitOrderSubmission: z,
298
+ limitOrderExecution: H,
299
+ limitOrderCancelation: oe,
263
300
  isPending: X.isPending,
264
- isSuccess: R.isSuccess,
301
+ isSuccess: z.isSuccess,
265
302
  isError: X.isError,
266
303
  error: X.error,
267
304
  result: $,
268
- limitPrice: C
305
+ limitPrice: x
269
306
  };
270
307
  }
271
308
  //#endregion
272
- export { C as useLimitOrderFlow };
309
+ export { x as useLimitOrderFlow };
273
310
 
274
311
  //# sourceMappingURL=useLimitOrderFlow.js.map
@@ -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","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
+ {"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","BridgePrice","DEFAULT_DELTA_BRIDGE","useLimitReceiverAddressValue","useDepositAndSubmitDeltaOrder","isETHaddress","useCancelOrWithdrawAndCancelDeltaOrder","CancelDeltaOrdersReturn","DeltaAuctionWithOrder","CancelOrderStepKey","HALF_MINUTE_MS","useReferrer","limitOrderFlowType","UserDefinedLimitPrice","srcTokenAddress","destTokenAddress","srcAmount","destAmount","bridgePrice","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","destChainId","bridge","destinationChainId","createOrderInput","type","orderInput","owner","beneficiary","destToken","deltaPrice","protocolSelector","protocolData","partnerFee","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 { BridgePrice } from \"@velora-dex/sdk\";\nimport { DEFAULT_DELTA_BRIDGE } from \"../prices/delta/bridge/const\";\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 bridgePrice?: BridgePrice;\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 const bridgePrice = limitPrice.bridgePrice;\n const destChainId = bridgePrice?.bridge.destinationChainId;\n\n let createOrderInput: CreateAndSubmitDeltaOrderInput;\n if (bridgePrice) {\n // crosschain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n destToken: limitPrice.destTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n ...bridgePrice,\n bridge: {\n ...bridgePrice.bridge,\n protocolSelector: DEFAULT_DELTA_BRIDGE.protocolSelector,\n protocolData: DEFAULT_DELTA_BRIDGE.protocolData,\n },\n partner,\n partnerFee: 0,\n },\n partner,\n\n deadline,\n },\n };\n } else {\n // singlechain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n srcAmount: limitPrice.srcAmount,\n bridge: DEFAULT_DELTA_BRIDGE,\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n }\n\n let orderFromAPI: DeltaAuctionWithOrder;\n\n if (shouldDepositAndPreSign) {\n const depositAmount = createOrderInput.orderInput.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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"}