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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/components/widget/BridgeList/hooks.d.ts +2 -2
  2. package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
  3. package/dist/components/widget/BridgeList/hooks.js +79 -73
  4. package/dist/components/widget/BridgeList/hooks.js.map +1 -1
  5. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
  6. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
  7. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
  8. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  9. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  10. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +2 -2
  11. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  12. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
  13. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
  14. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  15. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +4 -1
  16. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
  17. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +1 -1
  18. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
  19. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  20. package/dist/core/LimitOrderButton.js +46 -52
  21. package/dist/core/LimitOrderButton.js.map +1 -1
  22. package/dist/core/TradeFlowScreenButton.d.ts +3 -4
  23. package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
  24. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  25. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  26. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +1 -4
  27. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
  30. package/dist/core/inputs/hooks/useTokenFromInputProps.js +2 -2
  31. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  32. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  33. package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
  34. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  35. package/dist/core/inputs/hooks/utils.d.ts.map +1 -1
  36. package/dist/core/inputs/hooks/utils.js +7 -5
  37. package/dist/core/inputs/hooks/utils.js.map +1 -1
  38. package/dist/core/limit/useLimitRate.d.ts +2 -3
  39. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  40. package/dist/core/limit/useLimitRate.js +54 -110
  41. package/dist/core/limit/useLimitRate.js.map +1 -1
  42. package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
  43. package/dist/core/limit/useLimitTokenToInputProps.js +1 -4
  44. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  45. package/dist/core/swapDetails/fees.d.ts.map +1 -1
  46. package/dist/core/swapDetails/fees.js +16 -11
  47. package/dist/core/swapDetails/fees.js.map +1 -1
  48. package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
  49. package/dist/core/swapDetails/maxToPay.js +18 -17
  50. package/dist/core/swapDetails/maxToPay.js.map +1 -1
  51. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
  52. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
  53. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
  54. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
  55. package/dist/events/types/priceChange.d.ts +2 -2
  56. package/dist/events/types/priceChange.d.ts.map +1 -1
  57. package/dist/events/types/swap.d.ts +2 -2
  58. package/dist/events/types/swap.d.ts.map +1 -1
  59. package/dist/events/types/twap.d.ts +2 -2
  60. package/dist/events/types/twap.d.ts.map +1 -1
  61. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +3 -4
  62. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
  63. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
  64. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +6 -3
  65. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
  66. package/dist/hooks/swap/prices/delta/bridge/utils.js +20 -17
  67. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  68. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
  69. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
  70. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +5 -5
  71. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  72. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
  73. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
  74. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +2 -2
  75. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  76. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -1
  77. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +27 -28
  78. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  79. package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
  80. package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
  81. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +2 -2
  82. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  83. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
  84. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +1 -1
  85. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  86. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
  87. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  88. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +5 -5
  89. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  90. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
  91. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +27 -28
  92. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  93. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
  94. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  95. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +2 -2
  96. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  97. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
  98. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  99. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +1 -1
  100. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  101. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +5 -6
  102. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
  103. package/dist/hooks/swap/prices/delta/mutations/utils.js +6 -6
  104. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  105. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +3 -3
  106. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +3 -3
  107. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  108. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +3 -3
  109. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  110. package/dist/hooks/swap/prices/delta/orders/utils.js +7 -4
  111. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  112. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  113. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +16 -33
  114. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  115. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +6 -6
  116. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  117. package/dist/hooks/swap/prices/factory.d.ts.map +1 -1
  118. package/dist/hooks/swap/prices/factory.js +1 -1
  119. package/dist/hooks/swap/prices/factory.js.map +1 -1
  120. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +1 -1
  121. package/dist/hooks/swap/prices/types.d.ts +2 -3
  122. package/dist/hooks/swap/prices/types.d.ts.map +1 -1
  123. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
  124. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  125. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  126. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
  127. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  128. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
  129. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
  130. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
  131. package/dist/hooks/swap/prices/useTwapPrices.d.ts +4 -5
  132. package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
  133. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
  134. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +10 -17
  135. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
  136. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
  137. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
  138. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
  139. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  140. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +119 -124
  141. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  142. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -2
  143. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  144. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +159 -196
  145. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  146. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +5 -5
  147. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
  148. package/dist/hooks/swap/tradeFlow/useTwapFlow.js +217 -229
  149. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  150. package/dist/hooks/useSDK.d.ts +19 -3
  151. package/dist/hooks/useSDK.d.ts.map +1 -1
  152. package/dist/hooks/useSDK.js +65 -35
  153. package/dist/hooks/useSDK.js.map +1 -1
  154. package/dist/lib/queryClient.js +1 -1
  155. package/dist/lib/queryClient.js.map +1 -1
  156. package/dist/lib/utils/price.d.ts +5 -2
  157. package/dist/lib/utils/price.d.ts.map +1 -1
  158. package/dist/lib/utils/price.js +8 -5
  159. package/dist/lib/utils/price.js.map +1 -1
  160. package/dist/lib/utils/twap.d.ts +2 -2
  161. package/dist/lib/utils/twap.d.ts.map +1 -1
  162. package/dist/lib/utils/twap.js +2 -2
  163. package/dist/lib/utils/twap.js.map +1 -1
  164. package/package.json +2 -2
  165. package/dist/hooks/swap/prices/delta/bridge/const.d.ts +0 -8
  166. package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +0 -1
  167. package/dist/hooks/swap/prices/delta/bridge/const.js +0 -13
  168. package/dist/hooks/swap/prices/delta/bridge/const.js.map +0 -1
@@ -11,301 +11,264 @@ 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 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";
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";
24
23
  //#region src/hooks/swap/tradeFlow/useLimitOrderFlow.ts
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,
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,
30
29
  spenderContractType: "ParaswapDelta",
31
30
  swapSide: "SELL",
32
31
  tradeMode: "limit",
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,
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,
41
40
  mutationOptions: {
42
41
  onSuccess: (e) => {
43
- S.log("Create Limit Order success", e);
42
+ w.log("Create Limit Order success", e);
44
43
  },
45
44
  onError: (e) => {
46
- S.error("Create Limit Order error", e);
45
+ w.error("Create Limit Order error", e);
47
46
  }
48
47
  }
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,
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,
79
78
  refetchInterval: i,
80
79
  onAuctionSuccess: (e) => {
81
- S.log("Limit Order success", e);
80
+ w.log("Limit Order success", e);
82
81
  },
83
82
  onAuctionFailure: (e) => {
84
- S.log("Limit Order failure", e);
83
+ w.log("Limit Order failure", e);
85
84
  },
86
85
  onUpdatedAuction: (e) => {
87
- S.log("Limit Order updated", e);
86
+ w.log("Limit Order updated", e);
88
87
  }
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");
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");
121
120
  let n = new AbortController();
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,
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,
125
124
  signPermit: {
126
125
  isPermitSupported: !1,
127
126
  isPermitReadyToSign: !1
128
127
  },
129
- canBatchTxs: M,
130
- isConnectedToSafe: N
128
+ canBatchTxs: re,
129
+ isConnectedToSafe: ie
131
130
  });
132
131
  try {
133
132
  if (c && o) try {
134
- E.onApproveTx.request({ allowanceToSet: o }), i = await T.approveAsync({ allowanceData: { allowanceToSet: o } }), E.onApproveTx.sent({
133
+ O.onApproveTx.request({ allowanceToSet: o }), i = await D.approveAsync({ allowanceData: { allowanceToSet: o } }), O.onApproveTx.sent({
135
134
  allowanceToSet: o,
136
135
  txHash: i
137
136
  }), r.throwIfAborted();
138
- let t = se({
137
+ let t = W({
139
138
  hash: i,
140
- chainId: C,
139
+ chainId: T,
141
140
  onReplaced: (e) => {
142
- S.log("onReplaced:approveTx", i, e);
141
+ w.log("onReplaced:approveTx", i, e);
143
142
  }
144
143
  });
145
144
  e && e({
146
- chainId: C,
145
+ chainId: T,
147
146
  action: "approve",
148
147
  transactionHash: i,
149
148
  receiptPromise: t,
150
149
  transactionSpecificData: {
151
150
  action: "approve",
152
151
  approvedAmount: o,
153
- tokenAddress: w.token,
154
- spenderAddress: w.spender
152
+ tokenAddress: E.token,
153
+ spenderAddress: E.spender
155
154
  }
156
- }), a = await t, E.onApproveTx.confirmed({
155
+ }), a = await t, O.onApproveTx.confirmed({
157
156
  allowanceToSet: o,
158
157
  txHash: i,
159
158
  txReceipt: a
160
- }), S.log("~ approveTx ~ receipt:", a);
159
+ }), w.log("~ approveTx ~ receipt:", a);
161
160
  } catch (e) {
162
- throw E.onApproveTx.failed({
161
+ throw O.onApproveTx.failed({
163
162
  allowanceToSet: o,
164
163
  error: e,
165
164
  txHash: i
166
165
  }), e;
167
166
  }
168
- r.throwIfAborted(), v(D, "Account is not connected"), v(x, "limitPrice is not available"), Y?.({ event: {
167
+ r.throwIfAborted(), y(k, "Account is not connected"), y(C, "limitPrice is not available"), Y?.({ event: {
169
168
  name: "LimitOrder:request",
170
- params: { price: x }
169
+ params: { price: C }
171
170
  } });
172
- let t = x.bridgePrice, n = t?.bridge.destinationChainId, u;
173
- u = t ? {
171
+ let t = {
174
172
  signal: r,
175
173
  type: "LIMIT",
176
- referrerAddress: K,
174
+ referrerAddress: oe,
177
175
  orderInput: {
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
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
197
184
  }
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;
185
+ }, n;
223
186
  if (s) {
224
- let t = u.orderInput.srcAmount;
225
- d = await R({
226
- createOrderInput: u,
227
- depositAmount: t,
187
+ let r = C.srcAmount;
188
+ n = await L({
189
+ createOrderInput: t,
190
+ depositAmount: r,
228
191
  onTxSent: e
229
192
  });
230
- } else d = l ? await P({
231
- createOrderInput: u,
232
- approval: w,
193
+ } else n = l ? await ae({
194
+ createOrderInput: t,
195
+ approval: E,
233
196
  onTxSent: e
234
- }) : await k.mutateAsync(u);
197
+ }) : await j.mutateAsync(t);
235
198
  return Y?.({ event: {
236
199
  name: "LimitOrder:sent",
237
200
  params: {
238
- price: x,
239
- order: d
201
+ price: C,
202
+ order: n
240
203
  }
241
204
  } }), {
242
- tradeFlowType: y,
205
+ tradeFlowType: x,
243
206
  approve: {
244
207
  txHash: i,
245
208
  receipt: a
246
209
  },
247
- limitOrder: { sentOrder: d },
248
- limitPrice: x,
249
- account: D,
250
- receiverAddress: q
210
+ limitOrder: { sentOrder: n },
211
+ limitPrice: C,
212
+ account: k,
213
+ receiverAddress: J
251
214
  };
252
215
  } catch (e) {
253
- throw S.error("Order submission error", e), Y?.({ event: {
216
+ throw w.error("Order submission error", e), Y?.({ event: {
254
217
  name: "LimitOrder:failed",
255
218
  params: {
256
- price: x,
219
+ price: C,
257
220
  error: e
258
221
  }
259
222
  } }), e;
260
223
  }
261
- }, ue = async () => {
224
+ }, le = async () => {
262
225
  try {
263
- return await U.cancelDeltaOrder();
226
+ return await H.cancelDeltaOrder();
264
227
  } catch (e) {
265
- S.error("Cancel Limit order error", e), U.reset();
228
+ w.error("Cancel Limit order error", e), H.reset();
266
229
  }
267
- }, X = re({
268
- mutationFn: le,
269
- mutationKey: [b],
230
+ }, X = te({
231
+ mutationFn: ce,
232
+ mutationKey: [S],
270
233
  onSuccess: (e) => {
271
- S.log("Order submission success", e);
234
+ w.log("Order submission success", e);
272
235
  },
273
236
  onError: (e) => {
274
- S.error("Order submission error", e);
237
+ w.error("Order submission error", e);
275
238
  },
276
239
  onSettled: () => {
277
- S.log("Order submission settled");
240
+ w.log("Order submission settled");
278
241
  }
279
242
  }), Z = X.mutateAsync, Q = () => {
280
- T.reset(), k.reset(), X.reset(), U.reset(), F(), L();
281
- }, de = (e) => (Q(), Z(e)), $ = X.data;
282
- return $ && H.lastOrderState && ($ = {
243
+ D.reset(), j.reset(), X.reset(), H.reset(), P(), I();
244
+ }, ue = (e) => (Q(), Z(e)), $ = X.data;
245
+ return $ && V.lastOrderState && ($ = {
283
246
  ...$,
284
247
  limitOrder: {
285
248
  sentOrder: $.limitOrder.sentOrder,
286
- lastOrderState: H.lastOrderState
249
+ lastOrderState: V.lastOrderState
287
250
  }
288
251
  }), {
289
- tradeFlowType: y,
290
- chainId: C,
252
+ tradeFlowType: x,
253
+ chainId: T,
291
254
  runLimitOrderFlow: Z,
292
255
  reset: Q,
293
- cancelFlow: ce,
294
- retryFlow: de,
295
- cancelLimitOrder: ue,
296
- approval: w,
297
- limitOrderSubmission: z,
298
- limitOrderExecution: H,
299
- limitOrderCancelation: oe,
256
+ cancelFlow: K,
257
+ retryFlow: ue,
258
+ cancelLimitOrder: le,
259
+ approval: E,
260
+ limitOrderSubmission: R,
261
+ limitOrderExecution: V,
262
+ limitOrderCancelation: U,
300
263
  isPending: X.isPending,
301
- isSuccess: z.isSuccess,
264
+ isSuccess: R.isSuccess,
302
265
  isError: X.isError,
303
266
  error: X.error,
304
267
  result: $,
305
- limitPrice: x
268
+ limitPrice: C
306
269
  };
307
270
  }
308
271
  //#endregion
309
- export { x as useLimitOrderFlow };
272
+ export { C as useLimitOrderFlow };
310
273
 
311
274
  //# 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","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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"}
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":";;;;;;;;;;;;;;;;;;;;;;;AA2CA,IAAMqC,IAAqB,cAyFrBsD,IAA2B;AAEjC,SAAgBC,EAAkB,EAChC/C,iBACkD;CAClD,IAAMgD,IAAS1E,EAAU,iBAAiB,EACpCwC,IAAU1D,GAAY,EAStB,EACJkE,aACA2B,iBACAC,QAAQC,MACN9E,EAAmB;EACrB+E,UAAUpD,GAAYN;EACtBE,WAAWI,GAAYJ;EACvByD,qBAAqB;EACrBC,UAAU;EACVC,WAAW;EACXzC;EACD,CAAC,EAII,EAAE0C,SAASjD,MAAYpD,IAAY,EAEnC,EAAEsG,iBAAc3F,EAAiB;EACrCgD;EACAP;EACD,CAAC,EAEImD,IAA0B9F,EAA6B;EAC3DkD;EACAP;EACAoD,QAAQF;EACRG,iBAAiB;GACfC,YAAYrC,MAAU;IACpBwB,EAAOc,IAAI,8BAA8BtC,EAAM;;GAEjDuC,UAAUhC,MAAU;IAClBiB,EAAOjB,MAAM,4BAA4BA,EAAM;;GAEnD;EACD,CAAC,EAEIiC,IACJ;EACExC,OAAOkC,EAAwBlC;EAC/BE,iBAAiBgC,EAAwBhC;EACzCD,gBAAgBiC,EAAwBjC;EACxCE,aAAa+B,EAAwB/B;EACrCC,WAAW8B,EAAwB9B;EACnCC,SAAS6B,EAAwB7B;EACjCC,WAAW4B,EAAwB5B;EACnCC,OAAO2B,EAAwB3B;EAChC,EAQG,EACJkC,sBACAC,iBACAC,uBACAC,gCACAlD,OAAOmD,MACLxF,EAA8B;EAChCiC;EACAP;EACAyC;EACAsB,YAAYb;EACb,CAAC,EAEI,EACJc,sBACArD,OAAOsD,GACqBC,kCAC1BzF,EAA8B;EAChC8B;EACAP;EACAyC;EACAsB,YAAYb;EACb,CAAC,EAGIlC,IACJ;EACEC,OACEwC,EAA0BxC,SAC1ByC,EAAkBzC,SAClB+C,EAAkB/C;EACpBC,gBACEuC,EAA0BvC,kBAC1BwC,EAAkBS,aAAajD,kBAC/B8C,EAAkBG,aAAajD;EACjCC,iBACEsC,EAA0BtC,mBAC1BuC,EAAkBvC,mBAClB6C,EAAkB7C;EACpBC,aACEqC,EAA0BrC,eAC1BsC,EAAkBtC,eAClB4C,EAAkB5C;EACpBC,WACEoC,EAA0BpC,aAC1BqC,EAAkBrC,aAClB2C,EAAkB3C;EACpBC,SACEmC,EAA0BnC,WAC1BoC,EAAkBpC,WAClB0C,EAAkB1C;EACpBC,WACEkC,EAA0BlC,aAC1BmC,EAAkBnC,aAClByC,EAAkBzC;EACpBC,OACEiC,EAA0BjC,SAC1BkC,EAAkBlC,SAClBwC,EAAkBxC;EACrB,EAEG4C,IAAsBjG,EAA4C;EACtEkG,SAASrD,EAAqBC,OAAOqD;EACrCC,iBAAiBxF;EACjByF,mBAAmBvD,MAAU;GAC3BwB,EAAOc,IAAI,uBAAuBtC,EAAM;;EAE1CwD,mBAAmBxD,MAAU;GAC3BwB,EAAOc,IAAI,uBAAuBtC,EAAM;;EAE1CyD,mBAAmBzD,MAAU;GAC3BwB,EAAOc,IAAI,uBAAuBtC,EAAM;;EAE3C,CAAC,EAEI0D,IAAcP,EAAoBQ,OACpC1G,EAAsBkG,EAAoBQ,KAAK,GAC/C,MAEElD,IAAsE;EAC1E5B,WAAWkB,EAAqBC;EAChClB,gBAAgBqE,EAAoBQ;EACpCjD,gBAAgBgD,MAAgB;EAChC/C,kBAAkB+C,MAAgB;EAClC9C,iBAAiB8C,MAAgB;EACjCtD,WACE+C,EAAoBS,aACpBT,EAAoBU,gBACpBH,MAAgB,aAChBA,MAAgB;EAClBrD,SAAS8C,EAAoB9C,WAAWqD,MAAgB;EACxDpD,WAAWoD,MAAgB;EAC3BnD,OAAO4C,EAAoB5C;EAC5B,EAEKuD,IAAiBpG,EAAuC;EAE5DsC,OAAOS,EAAoB3B,kBAAkB2B,EAAoB5B;EACjES;EACAP;EACAoD,QAAQF;EACRT;EACD,CAAC,EAEIX,IACJ;EACEC,SAASgD,EAAehD;EACxBC,QAAQ+C,EAAe/C;EACvBC,UAAU8C,EAAeC;EACzB9C,kBAAkB6C,EAAe1D;EACjCc,oBAAoB4C,EAAe5C;EACnCC,iBAAiB2C,EAAexD;EAChCF,WAAW0D,EAAe1D;EAC1BC,SAASyD,EAAezD;EACxBC,WAAWwD,EAAexD;EAC1BC,OAAOuD,EAAevD;EACtBa,MAAM0C,EAAe1C;EACtB,EAEG4C,IAAkBlI,GAAoB,EAEtCmI,IAA4BzH,EAA+B,KAAK,EAEhEmD,UAAmB;EAEvBsE,AADAA,EAA0BE,SAASC,MAAM,IAAI1H,GAAoB,CAAC,EAClEuH,EAA0BE,UAAU;IAGhC,EAAEE,eAAYtH,GAAY,EAC1B,EAAEuH,wBAAoBvG,IAAa,EACnCiB,IAAkBzB,GAA8B,EAChDgH,KAAWvH,GAAkB,EAE7B,EAAEwH,oBAAiBrH,GAAiB,EAEpCsH,KAAmB,OAAO,EAC9BrF,gBACwB,EAAE,KAAsC;EAWhEvD,AARA4F,EAAa/B,OAAO,EACpBwC,EAAwBxC,OAAO,EAC/BoE,EAAepE,OAAO,EACtBmD,GAAiC,EACjCG,GAAiC,EAIjCnH,EAAO2C,GAAY,oCAAoC;EAEvD,IAAMkG,IAAkB,IAAIR,iBAAiB;EAC7CD,EAA0BE,UAAUO;EAEpC,IAAMC,IAASD,EAAgBC,QAE3BC,GACAC,GAGEC,IAAiBhF,EAASgF,gBAE1BC,IAGJtH,EAAae,EAAWN,gBAAgB,EASpC,EACJ8G,4BAA4BC,GAC5BC,0BACE9H,EAAqB;GACvB0C;GACAqF,YAAY;IACVC,mBAAmB;IACnBC,qBAAqB;IACtB;GACD3C;GACAC;GACD,CAAC;EAEF,IAAI;GACF,IAAIsC,KAAsBH,GACxB,IAAI;IAeFH,AAdAhD,EAAsB2D,YAAYC,QAAQ,EAAET,mBAAgB,CAAC,EAE7DF,IAAgB,MAAMnD,EAAa+D,aAAa,EAC9CC,eAAe,EACbX,mBACF,EACD,CAAC,EAEFnD,EAAsB2D,YAAYI,KAAK;KACrCZ;KACA/D,QAAQ6D;KACT,CAAC,EAGFD,EAAOgB,gBAAgB;IAEvB,IAAMC,IAA0B5B,EAAgB;KAC9C6B,MAAMjB;KACNtF;KACAwG,aAAanC,MAAS;MACpBnC,EAAOc,IAAI,wBAAwBsC,GAAejB,EAAK;;KAE1D,CAAC;IAyBFnC,AAvBIpC,KACFA,EAAS;KACPE;KACAyG,QAAQ;KACRC,iBAAiBpB;KACjBqB,gBAAgBL;KAChBM,yBAAyB;MACvBH,QAAQ;MACRI,gBAAgBrB;MAChBsB,cAActG,EAASuG;MACvBC,gBAAgBxG,EAASyG;MAC3B;KACD,CAAC,EAGJ1B,IAAmB,MAAMe,GAEzBjE,EAAsB2D,YAAYkB,UAAU;KAC1C1B;KACA/D,QAAQ6D;KACR6B,WAAW5B;KACZ,CAAC,EAEFrD,EAAOc,IAAI,0BAA0BuC,EAAiB;YAC/CtE,GAAO;IAMd,MALAoB,EAAsB2D,YAAYoB,OAAO;KACvC5B;KACAvE,OAAOA;KACPQ,QAAQ6D;KACT,CAAC,EACIrE;;GAWViE,AANAG,EAAOgB,gBAAgB,EAEvB9J,EAAOkD,GAAS,2BAA2B,EAE3ClD,EAAO2C,GAAY,8BAA8B,EAEjDgG,IAAe,EACbmC,OAAO;IACLC,MAAM;IACNC,QAAQ,EACNC,OAAOtI,GACT;IACF,EACD,CAAC;GAEF,IAAMuI,IAAmD;IACvDpC;IACAqC,MAAM;IACN1C;IACA2C,YAAY;KACVC,OAAOnI;KACPoI,aAAanI;KACbV,OAAOE,EAAWF;KAClB8I,aAAa5I,EAAWH;KACxBgJ,MAAM;KACNhD;KACAiD,eAAe;KACf/C;KACF;IACD,EAEGgD;GAEJ,IAAIxC,GAAyB;IAC3B,IAAMyC,IAAgBhJ,EAAWJ;IAEjCmJ,IAAe,MAAMtE,EAA2B;KAC9C8D;KACAS;KACApI;KACD,CAAC;UACG,AAaLmI,IAbSrC,IAOM,MAAMtC,GAA2B;IAC9CmE;IACAjH;IACAV;IACD,CAAC,GAGA,MAAM8C,EAAwBuF,YAAYV,EAAiB;GAa/D,OAVAvC,IAAe,EACbmC,OAAO;IACLC,MAAM;IACNC,QAAQ;KACNC,OAAOtI;KACPwB,OAAOuH;KACT;IACF,EACD,CAAC,EAEK;IACL7I,eAAeV;IACfW,SAAS;KACPoC,QAAQ6D;KACR9D,SAAS+D;KACV;IACDjG,YAAY,EACVC,WAAW0I,GACZ;IACW/I;IACZO;IACAC;IACD;WACMuB,GAAO;GAWd,MAVAiB,EAAOjB,MAAM,0BAA0BA,EAAM,EAC7CiE,IAAe,EACbmC,OAAO;IACLC,MAAM;IACNC,QAAQ;KACNC,OAAOtI;KACP+B,OAAOA;KACT;IACF,EACD,CAAC,EACIA;;IAIJV,KAAmB,YAAY;EACnC,IAAI;GACF,OAAO,MAAMiE,EAAe4D,kBAAkB;WACvCnH,GAAO;GAGduD,AAFAtC,EAAOjB,MAAM,4BAA4BA,EAAM,EAE/CuD,EAAepE,OAAO;;IAIpBiI,IAAgBpL,GAAY;EAChCqL,YAAYnD;EACZoD,aAAa,CAACvG,EAAyB;EACvCe,YAAYsB,MAAS;GACnBnC,EAAOc,IAAI,4BAA4BqB,EAAK;;EAE9CpB,UAAUhC,MAAU;GAClBiB,EAAOjB,MAAM,0BAA0BA,EAAM;;EAE/CuH,iBAAiB;GACftG,EAAOc,IAAI,2BAA2B;;EAEzC,CAAC,EAEI/C,IAAoBoI,EAAcF,aAElC/H,UAAc;EAMlBsD,AALAvB,EAAa/B,OAAO,EACpBwC,EAAwBxC,OAAO,EAC/BiI,EAAcjI,OAAO,EACrBoE,EAAepE,OAAO,EACtBmD,GAAiC,EACjCG,GAAiC;IAG7BpD,MACJJ,OAEAE,GAAO,EACAH,EAAkBC,EAAQ,GAK/B6B,IAA6CsG,EAAchE;CAY/D,OAXItC,KAAUZ,EAAoB3B,mBAChCuC,IAAS;EACP,GAAGA;EACHzC,YAAY;GACVC,WAAWwC,EAAOzC,WAAWC;GAE7BC,gBAAgB2B,EAAoB3B;GACtC;EACD,GAGI;EACLJ,eAAeV;EACfsB;EACAC;EACAG;EACAC;EACAC;EACAC;EACAC;EACAC;EACAU;EACAI;EAEAT,WAAWuH,EAAcvH;EACzBE,WAAWP,EAAqBO;EAChCD,SAASsH,EAActH;EACvBE,OAAOoH,EAAcpH;EACrBc;EACA7C;EACD"}