@velora-dex/widget 0.4.2-dev.3 → 0.4.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 (223) hide show
  1. package/dist/components/widget/AppHeader/Activities/Drawers.d.ts.map +1 -1
  2. package/dist/components/widget/AppHeader/Activities/Drawers.js +23 -18
  3. package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
  4. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +2 -2
  5. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  6. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js +2 -2
  7. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
  8. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts +4 -6
  9. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts.map +1 -1
  10. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js +147 -133
  11. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
  12. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.d.ts +2 -2
  13. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.d.ts.map +1 -1
  14. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js +55 -138
  15. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
  16. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.d.ts.map +1 -1
  17. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
  18. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.d.ts +1 -1
  19. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.d.ts.map +1 -1
  20. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js +137 -87
  21. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
  22. package/dist/components/widget/PayReceiveInfo/types.d.ts +5 -3
  23. package/dist/components/widget/PayReceiveInfo/types.d.ts.map +1 -1
  24. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.d.ts.map +1 -1
  25. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js +2 -2
  26. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
  27. package/dist/components/widget/SwapRate/SwapRate.d.ts +2 -2
  28. package/dist/components/widget/SwapRate/SwapRate.d.ts.map +1 -1
  29. package/dist/components/widget/SwapRate/SwapRate.js.map +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 +108 -87
  33. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  34. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.d.ts +2 -2
  35. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.d.ts.map +1 -1
  36. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js +14 -12
  37. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
  38. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts +3 -3
  39. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts.map +1 -1
  40. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js +74 -101
  41. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
  42. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts +2 -2
  43. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts.map +1 -1
  44. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js +72 -63
  45. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  46. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts +2 -2
  47. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts.map +1 -1
  48. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js +16 -13
  49. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
  50. package/dist/components/widget/TradeOverview/Step/utils.d.ts +2 -1
  51. package/dist/components/widget/TradeOverview/Step/utils.d.ts.map +1 -1
  52. package/dist/components/widget/TradeOverview/Step/utils.js +4 -2
  53. package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
  54. package/dist/components/widget/TradeOverview/Stepper.d.ts +1 -1
  55. package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
  56. package/dist/components/widget/TradeOverview/Stepper.js +59 -62
  57. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  58. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.d.ts.map +1 -1
  59. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js +5 -3
  60. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
  61. package/dist/components/widget/TradeOverview/TradeDetails.d.ts.map +1 -1
  62. package/dist/components/widget/TradeOverview/TradeDetails.js +181 -13
  63. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  64. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  65. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts +2 -2
  66. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts.map +1 -1
  67. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js +4 -4
  68. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
  69. package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
  70. package/dist/components/widget/TradeOverview/TradeOverview.d.ts +18 -2
  71. package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
  72. package/dist/components/widget/TradeOverview/TradeOverview.js +145 -111
  73. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  74. package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts +2 -0
  75. package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts.map +1 -1
  76. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js +65 -58
  77. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  78. package/dist/components/widget/TradeOverview/steps.d.ts +32 -0
  79. package/dist/components/widget/TradeOverview/steps.d.ts.map +1 -1
  80. package/dist/components/widget/TradeOverview/steps.js +12 -2
  81. package/dist/components/widget/TradeOverview/steps.js.map +1 -1
  82. package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts.map +1 -1
  83. package/dist/components/widget/TradeOverview/tradeFlowContext.js +13 -1
  84. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  85. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.d.ts +4 -0
  86. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.d.ts.map +1 -0
  87. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js +6 -0
  88. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -0
  89. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts +4 -1
  90. package/dist/components/widget/TradeOverview/utils/preWrap.d.ts.map +1 -1
  91. package/dist/components/widget/TradeOverview/utils/preWrap.js +2 -1
  92. package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
  93. package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.d.ts.map +1 -1
  94. package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
  95. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts +2 -0
  96. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts.map +1 -1
  97. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +236 -3
  98. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  99. package/dist/configurator/Configurator.d.ts.map +1 -1
  100. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  101. package/dist/core/LimitOrderButton.js +40 -18
  102. package/dist/core/LimitOrderButton.js.map +1 -1
  103. package/dist/core/index.d.ts.map +1 -1
  104. package/dist/core/index.js +46 -24
  105. package/dist/core/index.js.map +1 -1
  106. package/dist/core/inputs/hooks/useMaxButtonProps.js +2 -2
  107. package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
  108. package/dist/events/types/cancel.d.ts +1 -7
  109. package/dist/events/types/cancel.d.ts.map +1 -1
  110. package/dist/events/types/index.d.ts.map +1 -1
  111. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts.map +1 -1
  112. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +9 -8
  113. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
  114. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts +7 -1
  115. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts.map +1 -1
  116. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +85 -13
  117. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  118. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts +1 -13
  119. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts.map +1 -1
  120. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js +1 -80
  121. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
  122. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts.map +1 -1
  123. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js +2 -1
  124. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
  125. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +1 -27
  126. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  127. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +2 -3
  128. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  129. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +2 -8
  130. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  131. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +1 -27
  132. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  133. package/dist/hooks/swap/prices/usePricesParams.d.ts +9 -0
  134. package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
  135. package/dist/hooks/swap/prices/usePricesParams.js +32 -1
  136. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  137. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  138. package/dist/hooks/swap/prices/useSwapPrices.js +149 -142
  139. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  140. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -1
  141. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +35 -35
  142. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
  143. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +3 -1
  144. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
  145. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +20 -1
  146. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  147. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -8
  148. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  149. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +127 -68
  150. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  151. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +4 -3
  152. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
  153. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +186 -98
  154. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  155. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +4 -6
  156. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  157. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +72 -56
  158. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  159. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.d.ts.map +1 -1
  160. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js +33 -23
  161. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
  162. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +2 -1
  163. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
  164. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +37 -11
  165. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  166. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts +2 -0
  167. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
  168. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +161 -79
  169. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  170. package/dist/hooks/tokens/allowance/utils.d.ts +10 -2
  171. package/dist/hooks/tokens/allowance/utils.d.ts.map +1 -1
  172. package/dist/hooks/tokens/allowance/utils.js +19 -8
  173. package/dist/hooks/tokens/allowance/utils.js.map +1 -1
  174. package/dist/hooks/useSDK.d.ts +3 -3
  175. package/dist/hooks/useSDK.d.ts.map +1 -1
  176. package/dist/hooks/useSDK.js +3 -3
  177. package/dist/hooks/useSDK.js.map +1 -1
  178. package/dist/lib/constants/urls.d.ts.map +1 -1
  179. package/dist/lib/constants/urls.js.map +1 -1
  180. package/dist/lib/utils/fee.js +1 -1
  181. package/dist/lib/utils/fee.js.map +1 -1
  182. package/dist/lib/utils/slippage.d.ts.map +1 -1
  183. package/dist/lib/utils/slippage.js +1 -1
  184. package/dist/lib/utils/slippage.js.map +1 -1
  185. package/dist/lib/utils/toDecimal.d.ts.map +1 -1
  186. package/dist/lib/utils/toDecimal.js +5 -3
  187. package/dist/lib/utils/toDecimal.js.map +1 -1
  188. package/dist/styles.css +0 -3
  189. package/dist/transactions/types.d.ts +1 -9
  190. package/dist/transactions/types.d.ts.map +1 -1
  191. package/package.json +2 -2
  192. package/dist/components/widget/Button/CancelButton/CancelButton.d.ts +0 -7
  193. package/dist/components/widget/Button/CancelButton/CancelButton.d.ts.map +0 -1
  194. package/dist/components/widget/Button/CancelButton/CancelButton.js +0 -102
  195. package/dist/components/widget/Button/CancelButton/CancelButton.js.map +0 -1
  196. package/dist/components/widget/Button/CancelButton/constants.d.ts +0 -2
  197. package/dist/components/widget/Button/CancelButton/constants.d.ts.map +0 -1
  198. package/dist/components/widget/Button/CancelButton/constants.js +0 -4
  199. package/dist/components/widget/Button/CancelButton/constants.js.map +0 -1
  200. package/dist/components/widget/Button/DismissButton.d.ts +0 -4
  201. package/dist/components/widget/Button/DismissButton.d.ts.map +0 -1
  202. package/dist/components/widget/Button/DismissButton.js +0 -29
  203. package/dist/components/widget/Button/DismissButton.js.map +0 -1
  204. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts +0 -11
  205. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts.map +0 -1
  206. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js +0 -87
  207. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +0 -1
  208. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts +0 -31
  209. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +0 -1
  210. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +0 -246
  211. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +0 -1
  212. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts +0 -44
  213. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts.map +0 -1
  214. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +0 -268
  215. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +0 -1
  216. package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.d.ts +0 -108
  217. package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.d.ts.map +0 -1
  218. package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.js +0 -168
  219. package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.js.map +0 -1
  220. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts +0 -69
  221. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts.map +0 -1
  222. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +0 -192
  223. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { useChainId, useAccount } from 'wagmi';
1
+ import { useAccount } from 'wagmi';
2
2
  import { assert } from 'ts-essentials';
3
3
  import { useEnsureTxReceipt } from '../../txs/queries/useAwaitTx.js';
4
4
  import { deltaOrdersQueryKey } from '../prices/delta/queries/useDeltaOrders.js';
5
5
  import { useCreateDeltaOrder } from '../prices/delta/mutations/useCreateDeltaOrder.js';
6
6
  import { useMinViemClient } from '../../useMinViemClient.js';
7
- import { useWatchDeltaAuction, useEnsureDeltaOrderExecuted } from '../prices/delta/queries/useWatchDeltaOrder.js';
7
+ import { useWatchDeltaAuction, deltaAuctionPollingQueryKey, useEnsureDeltaOrderExecuted } from '../prices/delta/queries/useWatchDeltaOrder.js';
8
8
  import { getOverallOrderStatus } from '../prices/delta/orders/utils.js';
9
9
  import { applySlippage } from '../../../lib/utils/price.js';
10
10
  import { useSlippage } from '../../useSlippage.js';
@@ -17,7 +17,7 @@ import { useMarkPermit1Or2NonceAsUsed } from './common/useSignPermit1Or2.js';
17
17
  import { produceDeltaOrderDeadline } from '../../permit/utils/deadlines.js';
18
18
  import { encodePermit2TransferFromSigDataForDelta } from '../../permit/utils/encodeArgs.js';
19
19
  import { useLogger } from '../../../core/logger.js';
20
- import { useDeltaPriceQueryForPrice, useSubscribeToDeltaPrice, isBridgePrice } from '../prices/delta/queries/useDeltaPriceQuery.js';
20
+ import { useDeltaPriceQuery, useSubscribeToDeltaPrice, isBridgePrice } from '../prices/delta/queries/useDeltaPriceQuery.js';
21
21
  import { usePartner } from '../../usePartner.js';
22
22
  import { useWidgetEvents } from '../../../core/state/widgetEventsAtom.js';
23
23
  import { usePreSignAndSubmitDeltaOrder, shouldApproveOrBatch } from './common/usePreSignAndSubmitDeltaOrder.js';
@@ -27,20 +27,49 @@ import { extractSelectedBridgePrice } from '../prices/delta/bridge/utils.js';
27
27
  import { useAtomValue } from '../../../core/store.js';
28
28
  import { bridgePreferenceAtom } from '../../../components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js';
29
29
  import { protocolNameAtom } from '../../../components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js';
30
- import { useDepositAndSubmitDeltaOrder } from './common/useDepositAndSubmitDeltaOrder.js';
31
- import { isETHaddress } from '../../../tokens/utils/eth.js';
32
- import { useCancelOrWithdrawAndCancelDeltaOrder } from '../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js';
30
+ import { useCancelDeltaOrderEventCallbacks, useCancelDeltaOrders } from '../prices/delta/mutations/useCancelDeltaOrders.js';
31
+ import { useChainMatches } from '../../useChainMatches.js';
32
+ import { useSwitchChainWithGuard } from '../../useSwitchChainWithGuard.js';
33
+ import { usePricesParams, useExtraDeltaPriceParams } from '../prices/usePricesParams.js';
34
+ import { useSelectedBridgePrice } from '../prices/delta/bridge/useSelectedBridgePrice.js';
33
35
 
34
36
  const deltaOrderFlowType = "deltaOrder";
35
37
  const DELTA_ORDER_MUTATION_KEY = "runDeltaOrderFlow";
36
38
  function useDeltaFlow({
37
- deltaPrice
39
+ deltaPrice: _deltaPrice,
40
+ preWrapETH
38
41
  }) {
39
42
  const logger = useLogger("DeltaFlow");
40
- const chainId = useChainId();
41
43
  const {
42
44
  resolvedSlippage
43
45
  } = useSlippage("swap");
46
+ const {
47
+ priceParams,
48
+ chainId,
49
+ destChainId
50
+ } = usePricesParams("swap");
51
+ const extraDeltaPriceParams = useExtraDeltaPriceParams({
52
+ srcToken: priceParams.srcToken,
53
+ chainId
54
+ });
55
+ const {
56
+ result: deltaPriceQuery,
57
+ queryKey: deltaPriceQueryKey
58
+ } = useDeltaPriceQuery({
59
+ priceParams: {
60
+ ...priceParams,
61
+ ...extraDeltaPriceParams
62
+ },
63
+ chainId,
64
+ destChainId,
65
+ query: {
66
+ enabled: false
67
+ }
68
+ });
69
+ const selectedBridgePrice = useSelectedBridgePrice({
70
+ price: deltaPriceQuery.data
71
+ });
72
+ const deltaPrice = selectedBridgePrice || deltaPriceQuery.data || _deltaPrice;
44
73
  const swapSideFromInput = useSwapSide();
45
74
  const {
46
75
  approval,
@@ -100,24 +129,14 @@ function useDeltaFlow({
100
129
  logger,
101
130
  viemClient: minClient
102
131
  });
103
- const {
104
- deltaOrderDeposit,
105
- reset: resetDepositAndSubmitDeltaOrder,
106
- depositAndSubmitDeltaOrder
107
- } = useDepositAndSubmitDeltaOrder({
108
- chainId,
109
- account,
110
- logger,
111
- viemClient: minClient
112
- });
113
132
  const deltaOrderSubmission = {
114
- order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order || deltaOrderDeposit.order,
115
- isCreatingOrder: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder || deltaOrderDeposit.isCreatingOrder,
116
- isOrderSent: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent || deltaOrderDeposit.isOrderSent,
117
- isPending: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending || deltaOrderDeposit.isPending,
118
- isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError || deltaOrderDeposit.isError,
119
- isSuccess: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess || deltaOrderDeposit.isSuccess,
120
- error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.error || deltaOrderDeposit.error
133
+ order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order,
134
+ isCreatingOrder: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder,
135
+ isOrderSent: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,
136
+ isPending: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,
137
+ isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,
138
+ isSuccess: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,
139
+ error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.error
121
140
  };
122
141
  const watchOrderExecution = useWatchDeltaAuction({
123
142
  orderId: deltaOrderSubmission.order?.id,
@@ -147,19 +166,48 @@ function useDeltaFlow({
147
166
  isSuccess: orderStatus === "confirmed",
148
167
  error: watchOrderExecution.error
149
168
  };
150
- const cancelOrderMut = useCancelOrWithdrawAndCancelDeltaOrder({
151
- // supply the must up-to-date order for cancellation
152
- order: deltaOrderExecution.lastOrderState || deltaOrderExecution.sentOrder,
169
+ const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(createOrderMut.data);
170
+ const orderChainId = deltaOrderSubmission.order?.chainId;
171
+ const {
172
+ forcedChainMatchesWalletChain
173
+ } = useChainMatches(orderChainId);
174
+ const {
175
+ mutateAsync: switchChain
176
+ } = useSwitchChainWithGuard();
177
+ const cancelOrderMut = useCancelDeltaOrders({
153
178
  chainId,
154
179
  account,
155
180
  client: minClient,
156
- logger
181
+ mutationOptions: {
182
+ onMutate: async (variables) => {
183
+ assert(orderChainId, "orderChainId is undefined");
184
+ if (!forcedChainMatchesWalletChain) {
185
+ await switchChain({
186
+ chainId: orderChainId
187
+ });
188
+ }
189
+ cancelOrderEvents.onMutate?.(variables);
190
+ },
191
+ onSuccess: (successResponse, vars) => {
192
+ logger.log("Cancel Delta Order success", successResponse);
193
+ if (deltaOrderExecution.sentOrder?.id) {
194
+ queryClient.invalidateQueries({
195
+ queryKey: deltaAuctionPollingQueryKey({
196
+ orderId: deltaOrderExecution.sentOrder.id
197
+ })
198
+ });
199
+ }
200
+ cancelOrderEvents.onSuccess?.(successResponse, vars);
201
+ },
202
+ onError: (error_0, vars_0) => {
203
+ logger.error("Cancel Delta Order error", error_0);
204
+ cancelOrderEvents.onError?.(error_0, vars_0);
205
+ }
206
+ }
157
207
  });
158
208
  const deltaOrderCancelation = {
159
- receipt: cancelOrderMut.receipt,
160
209
  isCancelingOrder: cancelOrderMut.isPending,
161
- isOrderCancellable: cancelOrderMut.isOrderCancellable,
162
- isOrderCanceled: cancelOrderMut.isSuccess,
210
+ isOrderCanceled: cancelOrderMut.isSuccess && !!cancelOrderMut.data?.success,
163
211
  isPending: cancelOrderMut.isPending,
164
212
  isError: cancelOrderMut.isError,
165
213
  isSuccess: cancelOrderMut.isSuccess,
@@ -206,21 +254,20 @@ function useDeltaFlow({
206
254
  } = usePartner();
207
255
  const protocolName = useAtomValue(protocolNameAtom);
208
256
  const bridgePreference = useAtomValue(bridgePreferenceAtom);
209
- const getQueryForPrice = useDeltaPriceQueryForPrice();
210
257
  const subscribeToPrice = useSubscribeToDeltaPrice();
211
258
  const {
212
259
  onSwap
213
260
  } = useWidgetEvents();
214
261
  const submitDeltaOrder = async ({
215
262
  onTxSent,
216
- onOrderSent
263
+ onOrderSent,
264
+ lastPrice
217
265
  } = {}) => {
218
266
  approveTxMut.reset();
219
267
  signPermitMut.reset();
220
268
  createOrderMut.reset();
221
269
  cancelOrderMut.reset();
222
270
  resetPreSignAndSubmitDeltaOrder();
223
- resetDepositAndSubmitDeltaOrder();
224
271
  assert(deltaPrice, "Delta price is not available");
225
272
  const swapSide = getSwapSideFromDeltaPrice(deltaPrice);
226
273
  const abortController = new AbortController();
@@ -233,29 +280,38 @@ function useDeltaFlow({
233
280
  const allowanceToSet = approval.allowanceToSet;
234
281
  const allowanceToPermit = signPermit.amountToPermit;
235
282
  let freshPrice = deltaPrice;
283
+ if (freshPrice.hmac === lastPrice?.hmac) {
284
+ const newPriceResult = await deltaPriceQuery.refetch({
285
+ cancelRefetch: false
286
+ });
287
+ signal.throwIfAborted();
288
+ if (newPriceResult.data) {
289
+ freshPrice = newPriceResult.data;
290
+ if (isBridgePrice(freshPrice)) {
291
+ freshPrice = extractSelectedBridgePrice({
292
+ price: freshPrice,
293
+ protocolName,
294
+ bridgePreference
295
+ });
296
+ }
297
+ }
298
+ }
236
299
  let unsubscribeFromPrice;
237
300
  usingPriceRef.current = freshPrice;
238
- const shouldDepositAndPreSign = (
239
- // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,
240
- // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits
241
- isETHaddress(freshPrice.srcToken)
242
- );
243
301
  const {
244
302
  shouldDoApprovalTxOrPermit,
245
303
  tryPermit,
246
304
  shouldPreSignBatch
247
305
  } = shouldApproveOrBatch({
248
306
  approval,
307
+ preWrapETH,
249
308
  signPermit,
250
309
  canBatchTxs,
251
310
  isConnectedToSafe
252
311
  });
253
312
  try {
254
313
  if (shouldDoApprovalTxOrPermit && allowanceToSet) {
255
- const queryKey = getQueryForPrice({
256
- chainId,
257
- price: freshPrice
258
- })?.queryKey;
314
+ const queryKey = deltaPriceQueryKey;
259
315
  if (queryKey) {
260
316
  const approvedAmount = allowanceToSet;
261
317
  unsubscribeFromPrice = subscribeToPrice({
@@ -342,21 +398,21 @@ function useDeltaFlow({
342
398
  permit: signedPermitResult?.permitEncodedArgs
343
399
  });
344
400
  }
345
- } catch (error_1) {
401
+ } catch (error_2) {
346
402
  if (!tryPermit) {
347
403
  approveOrPermitEvents.onApproveTx.failed({
348
404
  allowanceToSet,
349
- error: error_1,
405
+ error: error_2,
350
406
  txHash: approveTxHash
351
407
  // won't necessarily be available
352
408
  });
353
409
  } else {
354
410
  approveOrPermitEvents.onSignPermit.failed({
355
411
  allowanceToSet: allowanceToPermit,
356
- error: error_1
412
+ error: error_2
357
413
  });
358
414
  }
359
- throw error_1;
415
+ throw error_2;
360
416
  }
361
417
  }
362
418
  signal.throwIfAborted();
@@ -377,7 +433,7 @@ function useDeltaFlow({
377
433
  signature: signedPermitResult.signature
378
434
  });
379
435
  }
380
- const destChainId = isBridgePrice(deltaPriceToUse) ? deltaPriceToUse.bridge.destinationChainId : chainId;
436
+ const destChainId_0 = isBridgePrice(deltaPriceToUse) ? deltaPriceToUse.bridge.destinationChainId : chainId;
381
437
  onSwap?.({
382
438
  event: {
383
439
  name: "Swap:request",
@@ -397,7 +453,7 @@ function useDeltaFlow({
397
453
  srcToken: deltaPriceToUse.srcToken,
398
454
  destToken: deltaPriceToUse.destToken,
399
455
  permit,
400
- destChainId,
456
+ destChainId: destChainId_0,
401
457
  deltaPrice: deltaPriceToUse,
402
458
  partner,
403
459
  partnerAddress,
@@ -408,20 +464,15 @@ function useDeltaFlow({
408
464
  side: swapSide
409
465
  }
410
466
  };
411
- if (shouldDepositAndPreSign) {
412
- orderFromAPI = await depositAndSubmitDeltaOrder({
413
- createDeltaOrderInput: createOrderInput,
414
- depositAmount: createOrderInput.orderInput.srcAmount,
415
- onTxSent
416
- });
417
- } else if (shouldPreSignBatch) {
467
+ if (!shouldPreSignBatch) {
468
+ orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);
469
+ } else {
418
470
  orderFromAPI = await preSignAndSubmitDeltaOrder({
419
471
  createDeltaOrderInput: createOrderInput,
420
472
  approval,
473
+ preWrapETH,
421
474
  onTxSent
422
475
  });
423
- } else {
424
- orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);
425
476
  }
426
477
  if (signedPermitResult) {
427
478
  markNonceAsUsed(signedPermitResult.signedPermitData);
@@ -472,7 +523,7 @@ function useDeltaFlow({
472
523
  account,
473
524
  receiverAddress
474
525
  };
475
- } catch (error_0) {
526
+ } catch (error_1) {
476
527
  if (signedPermitResult) {
477
528
  clearNonce(signedPermitResult.signedPermitData);
478
529
  }
@@ -481,24 +532,29 @@ function useDeltaFlow({
481
532
  name: "Swap:failed",
482
533
  params: {
483
534
  swapMode: "delta",
484
- error: error_0
535
+ error: error_1
485
536
  }
486
537
  }
487
538
  });
488
- throw error_0;
539
+ throw error_1;
489
540
  } finally {
490
541
  unsubscribeFromPrice?.();
491
542
  }
492
543
  };
493
- const cancelDeltaOrder = cancelOrderMut.cancelDeltaOrder;
544
+ const cancelDeltaOrder = () => {
545
+ assert(deltaOrderSubmission.order, "No order to cancel");
546
+ cancelOrderMut.mutate({
547
+ orderIds: [deltaOrderSubmission.order.id]
548
+ });
549
+ };
494
550
  const deltaOrderMut = useMutation({
495
551
  mutationFn: submitDeltaOrder,
496
552
  mutationKey: [DELTA_ORDER_MUTATION_KEY],
497
553
  onSuccess: (data_0) => {
498
554
  logger.log("Delta Order success", data_0);
499
555
  },
500
- onError: (error_2) => {
501
- logger.error("Delta Order error", error_2);
556
+ onError: (error_3) => {
557
+ logger.error("Delta Order error", error_3);
502
558
  },
503
559
  onSettled: () => {
504
560
  logger.log("Delta Order settled");
@@ -513,11 +569,14 @@ function useDeltaFlow({
513
569
  deltaOrderMut.reset();
514
570
  cancelOrderMut.reset();
515
571
  resetPreSignAndSubmitDeltaOrder();
516
- resetDepositAndSubmitDeltaOrder();
517
572
  };
518
573
  const retryFlow = (options) => {
574
+ const lastPrice_0 = usingPriceRef.current;
519
575
  reset();
520
- return runDeltaOrderFlow(options);
576
+ return runDeltaOrderFlow({
577
+ ...options,
578
+ lastPrice: lastPrice_0
579
+ });
521
580
  };
522
581
  const usedPrice = usingPriceRef.current || deltaPrice;
523
582
  const result = deltaOrderMut.data;
@@ -533,7 +592,6 @@ function useDeltaFlow({
533
592
  approval,
534
593
  signPermit,
535
594
  deltaOrderPreSign,
536
- deltaOrderDeposit,
537
595
  deltaOrderSubmission,
538
596
  deltaOrderExecution,
539
597
  deltaOrderCancelation,
@@ -545,6 +603,7 @@ function useDeltaFlow({
545
603
  error: deltaOrderMut.error,
546
604
  result,
547
605
  usedPrice,
606
+ freshPrice: deltaPrice,
548
607
  submittedDeltaOrder
549
608
  };
550
609
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useDeltaFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"sourcesContent":["import type {\n BridgePrice,\n DeltaAuction,\n DeltaOrderApiResponse,\n DeltaPrice,\n} from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../prices/delta/queries/useDeltaOrders\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport {\n useEnsureDeltaOrderExecuted,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport type { OrderSentObject } from \"@/lib/utils/toasts\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { produceDeltaOrderDeadline } from \"@/hooks/permit/utils/deadlines\";\nimport { encodePermit2TransferFromSigDataForDelta } from \"@/hooks/permit/utils/encodeArgs\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n isBridgePrice,\n useDeltaPriceQueryForPrice,\n useSubscribeToDeltaPrice,\n} from \"../prices/delta/queries/useDeltaPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n type DeltaOrderPreSignResult,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { getSwapSideFromDeltaPrice } from \"../prices/delta/queries/utils\";\nimport { extractSelectedBridgePrice } from \"../prices/delta/bridge/utils\";\nimport type { DeltaOrBridgePrice } from \"../prices/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { bridgePreferenceAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom\";\nimport { protocolNameAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom\";\nimport {\n useDepositAndSubmitDeltaOrder,\n type DeltaOrderDepositResult,\n} from \"./common/useDepositAndSubmitDeltaOrder\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useCancelOrWithdrawAndCancelDeltaOrder } from \"../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder\";\nimport type { CancelDeltaOrdersReturn } from \"../prices/delta/mutations/useCancelDeltaOrders\";\n\nconst deltaOrderFlowType = \"deltaOrder\";\n\nexport type UseDeltaFlowInput = {\n deltaPrice?: DeltaPrice | BridgePrice;\n};\n\nexport type SubmitDeltaOrderResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n approve: SubmitTxResult;\n deltaOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n lastOrderState: MaybeVeloraDeltaAuction;\n };\n deltaPrice: DeltaPrice | BridgePrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype OnOrderSent = (orderSent: OrderSentObject) => void;\n\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt|Order executed}) when mined,\n// maybe??\ntype RunDeltaOrderOptions = {\n onTxSent?: OnTxSent;\n onOrderSent?: OnOrderSent;\n};\n\ntype DeltaOrderSubmissionResult = {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype DeltaOrderExecutionResult = {\n sentOrder?: SubmittedDeltaOrderFromAPI;\n lastOrderState?: MaybeVeloraDeltaAuction;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype DeltaOrderCancelationResult = {\n receipt?: TransactionReceipt;\n isCancelingOrder: boolean;\n isOrderCancellable: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type UseDeltaFlowResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n chainId: SupportedChainId;\n runDeltaOrderFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>; // reset and retry flow\n cancelDeltaOrder: () => Promise<TransactionReceipt | CancelDeltaOrdersReturn>;\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n deltaOrderPreSign: DeltaOrderPreSignResult;\n deltaOrderDeposit: DeltaOrderDepositResult;\n // submission represents either normal signing and POSTing of Order or pre-signing (in a tx) and POSTing\n deltaOrderSubmission: DeltaOrderSubmissionResult;\n deltaOrderExecution: DeltaOrderExecutionResult;\n deltaOrderCancelation: DeltaOrderCancelationResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitDeltaOrderResult;\n usedPrice?: DeltaPrice | BridgePrice;\n submittedDeltaOrder?: Omit<DeltaAuction, \"signature\" | \"transactions\">;\n};\n\nconst DELTA_ORDER_MUTATION_KEY = \"runDeltaOrderFlow\";\n\nexport function useDeltaFlow({\n deltaPrice,\n}: UseDeltaFlowInput): UseDeltaFlowResult {\n const logger = useLogger(\"DeltaFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage(\"swap\");\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n\n const swapSideFromInput = useSwapSide();\n\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: deltaPrice?.srcToken,\n srcAmount: deltaPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide:\n (deltaPrice && getSwapSideFromDeltaPrice(deltaPrice)) ||\n swapSideFromInput,\n tradeMode: \"swap\",\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 const queryClient = useQueryClient();\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Delta Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderCreateAndSubmit: UseDeltaFlowResult[\"deltaOrderSubmission\"] =\n {\n order: createOrderMut.data,\n isCreatingOrder: createOrderMut.isPending,\n isOrderSent: createOrderMut.isSuccess,\n isPending: createOrderMut.isPending,\n isError: createOrderMut.isError,\n isSuccess: createOrderMut.isSuccess,\n error: createOrderMut.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 deltaOrderSubmission: UseDeltaFlowResult[\"deltaOrderSubmission\"] = {\n order:\n deltaOrderCreateAndSubmit.order ||\n deltaOrderPreSign.order ||\n deltaOrderDeposit.order,\n isCreatingOrder:\n deltaOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isCreatingOrder ||\n deltaOrderDeposit.isCreatingOrder,\n isOrderSent:\n deltaOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isOrderSent ||\n deltaOrderDeposit.isOrderSent,\n isPending:\n deltaOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isPending ||\n deltaOrderDeposit.isPending,\n isError:\n deltaOrderCreateAndSubmit.isError ||\n deltaOrderPreSign.isError ||\n deltaOrderDeposit.isError,\n isSuccess:\n deltaOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isSuccess ||\n deltaOrderDeposit.isSuccess,\n error:\n deltaOrderCreateAndSubmit.error ||\n deltaOrderPreSign.error ||\n deltaOrderDeposit.error,\n };\n\n /* 5. await Order execution */\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: deltaOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Delta Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Delta Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Delta Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Delta Order timeout\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n // refetching stops after one minute of not finding an order (order==null)\n const neverFetchedFinishedOrder =\n watchOrderExecution.data === null && watchOrderExecution.isSuccess;\n\n const deltaOrderExecution: UseDeltaFlowResult[\"deltaOrderExecution\"] = {\n sentOrder: deltaOrderSubmission.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:\n watchOrderExecution.isError ||\n orderStatus === \"failed\" ||\n neverFetchedFinishedOrder,\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: deltaOrderExecution.lastOrderState || deltaOrderExecution.sentOrder,\n chainId,\n account,\n client: minClient,\n logger,\n });\n\n const deltaOrderCancelation: UseDeltaFlowResult[\"deltaOrderCancelation\"] = {\n receipt: cancelOrderMut.receipt,\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 };\n\n const ensureOrderExecuted = useEnsureDeltaOrderExecuted({\n onAuctionSuccess: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onAuctionFailure: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n });\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<DeltaPrice | BridgePrice | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useSwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { partner, partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n usePartner();\n const protocolName = useAtomValue(protocolNameAtom);\n const bridgePreference = useAtomValue(bridgePreferenceAtom);\n\n const getQueryForPrice = useDeltaPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToDeltaPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitDeltaOrder = async ({\n onTxSent,\n onOrderSent,\n }: RunDeltaOrderOptions = {}): Promise<SubmitDeltaOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n createOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(deltaPrice, \"Delta price is not available\");\n const swapSide = getSwapSideFromDeltaPrice(deltaPrice);\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n // on Delta the order.deadline must exactly match permit2.deadline\n const orderDeadline = produceDeltaOrderDeadline();\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n const allowanceToPermit = signPermit.amountToPermit;\n // we use this allowance as a max allowance we will accept new prices for\n\n // deltaPrice here is the starting price, available before async code and waiting\n let freshPrice = deltaPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(freshPrice.srcToken);\n\n /*\n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const { shouldDoApprovalTxOrPermit, tryPermit, shouldPreSignBatch } =\n shouldApproveOrBatch({\n approval,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTxOrPermit && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = getQueryForPrice({\n chainId,\n price: freshPrice,\n })?.queryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (price) => {\n let newPrice: DeltaOrBridgePrice = price;\n if (isBridgePrice(price)) {\n newPrice = extractSelectedBridgePrice({\n price,\n protocolName,\n bridgePreference,\n });\n }\n\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher srcAmount if BUY with slippage,\n // slightly lower destAmount if SELL with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n swapSide\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } else {\n approveOrPermitEvents.onSignPermit.request({\n allowanceToSet: allowanceToPermit,\n });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n deadline: orderDeadline,\n value: allowanceToPermit,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet: allowanceToPermit,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet: allowanceToPermit,\n error: error as Error,\n });\n }\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const deltaPriceToUse = freshPrice;\n usingPriceRef.current = deltaPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(deltaPriceToUse, \"Delta price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: deltaPriceToUse.srcAmount,\n destAmount: deltaPriceToUse.destAmount,\n },\n resolvedSlippage,\n swapSide\n );\n\n let permit = signedPermitResult?.permitEncodedArgs;\n if (\n signedPermitResult?.signedPermitData.type === \"permit2\" &&\n signedPermitResult.signedPermitData.variant === \"transferFrom\"\n ) {\n // In the Delta Contract, specifically for Permit2 transferFrom, we have signature consisting of\n // bytes32(permit2nonce) + bytes64(signature) = bytes96 Permit2 Transfer format\n permit = encodePermit2TransferFromSigDataForDelta({\n nonce: signedPermitResult.signedPermitData.nonce,\n signature: signedPermitResult.signature,\n });\n }\n\n const destChainId = isBridgePrice(deltaPriceToUse)\n ? deltaPriceToUse.bridge.destinationChainId\n : chainId;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n },\n },\n });\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n const createOrderInput: CreateDeltaOrderInput = {\n signal,\n type: \"MARKET\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: deltaPriceToUse.srcToken,\n destToken: deltaPriceToUse.destToken,\n permit,\n destChainId,\n deltaPrice: deltaPriceToUse,\n\n partner,\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus,\n\n ...amountsAfterSlippage,\n deadline: Number(orderDeadline),\n side: swapSide,\n },\n };\n\n if (shouldDepositAndPreSign) {\n orderFromAPI = await depositAndSubmitDeltaOrder({\n createDeltaOrderInput: createOrderInput,\n depositAmount: createOrderInput.orderInput.srcAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createDeltaOrderInput: createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n // creating signing and POSTing the Order all together in one mutation\n orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);\n }\n\n // Order is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // will refetch Order on interval until completed.\n // in parallel with useWatchDeltaAuction but independently if useWatchDeltaAuction is unmounted\n const lastOrderStatePromise = ensureOrderExecuted({\n orderId: orderFromAPI.id,\n // signal, // fails the toast if aborted, don't use\n });\n\n if (onOrderSent) {\n onOrderSent({\n order: orderFromAPI,\n lastOrderState: lastOrderStatePromise,\n });\n }\n\n const lastOrderState = await lastOrderStatePromise;\n\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // no use aborting past this point, Order is already being processed\n\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: deltaOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n deltaOrder: {\n sentOrder: orderFromAPI,\n lastOrderState,\n },\n deltaPrice: deltaPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Order failed, we can't be sure if nonce can be reused or it was incremented in a different Order\n // or even a Market swap tx in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"delta\",\n error: error as Error,\n },\n },\n });\n\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const cancelDeltaOrder = cancelOrderMut.cancelDeltaOrder;\n\n const deltaOrderMut = useMutation({\n mutationFn: submitDeltaOrder,\n mutationKey: [DELTA_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Delta Order success\", data);\n },\n onError: (error) => {\n logger.error(\"Delta Order error\", error);\n },\n onSettled: () => {\n logger.log(\"Delta Order settled\");\n },\n });\n\n const runDeltaOrderFlow = deltaOrderMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n createOrderMut.reset();\n deltaOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunDeltaOrderOptions\n ): Promise<SubmitDeltaOrderResult> => {\n reset();\n return runDeltaOrderFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice: typeof deltaPrice = usingPriceRef.current || deltaPrice;\n\n const result = deltaOrderMut.data;\n\n /**\n * priority:\n * 1. lastOrderState = updated sent Order from final result\n * 2. sentOrder = just sent Order from final result\n * 3. deltaOrderExecution.lastOrderState = updated sent Order from watchOrderExecution (intermediate result)\n * 4. deltaOrderExecution.sentOrder = just sent Order from watchOrderExecution (intermediate result)\n */\n const submittedDeltaOrder:\n | Omit<DeltaAuction, \"signature\" | \"transactions\">\n | undefined =\n result?.deltaOrder.lastOrderState ||\n result?.deltaOrder.sentOrder ||\n deltaOrderExecution.lastOrderState ||\n deltaOrderExecution.sentOrder;\n\n /* 6. return result */\n return {\n tradeFlowType: deltaOrderFlowType,\n chainId,\n runDeltaOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelDeltaOrder,\n approval,\n signPermit,\n deltaOrderPreSign,\n deltaOrderDeposit,\n deltaOrderSubmission,\n deltaOrderExecution,\n deltaOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: deltaOrderMut.isPending,\n isSuccess: deltaOrderSubmission.isSuccess && deltaOrderExecution.isSuccess, // approval is an optional step\n isError: deltaOrderMut.isError,\n error: deltaOrderMut.error,\n result,\n usedPrice,\n submittedDeltaOrder,\n };\n}\n"],"names":["deltaOrderFlowType","DELTA_ORDER_MUTATION_KEY","useDeltaFlow","deltaPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSideFromInput","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcToken","srcAmount","spenderContractType","swapSide","getSwapSideFromDeltaPrice","tradeMode","address","account","useAccount","minClient","useMinViemClient","queryClient","useQueryClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","deltaOrderCreateAndSubmit","data","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","deltaOrderDeposit","resetDepositAndSubmitDeltaOrder","depositAndSubmitDeltaOrder","useDepositAndSubmitDeltaOrder","deltaOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","deltaOrderExecution","sentOrder","lastOrderState","isOrderPending","isOrderExecuting","isOrderExecuted","isLoading","isRefetching","cancelOrderMut","useCancelOrWithdrawAndCancelDeltaOrder","deltaOrderCancelation","receipt","isCancelingOrder","isOrderCancellable","isOrderCanceled","ensureOrderExecuted","useEnsureDeltaOrderExecuted","invalidateQueries","queryKey","deltaOrdersQueryKey","userAddress","user","exact","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","partner","partnerAddress","partnerFeeBps","partnerTakesSurplus","usePartner","protocolName","useAtomValue","protocolNameAtom","bridgePreference","bridgePreferenceAtom","getQueryForPrice","useDeltaPriceQueryForPrice","subscribeToPrice","useSubscribeToDeltaPrice","onSwap","useWidgetEvents","submitDeltaOrder","onTxSent","onOrderSent","assert","abortController","AbortController","signal","orderDeadline","produceDeltaOrderDeadline","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","allowanceToPermit","amountToPermit","freshPrice","unsubscribeFromPrice","shouldDepositAndPreSign","isETHaddress","shouldDoApprovalTxOrPermit","tryPermit","shouldPreSignBatch","shouldApproveOrBatch","price","approvedAmount","onData","newPrice","isBridgePrice","extractSelectedBridgePrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","onApproveTx","request","approveAsync","allowanceData","sent","txHash","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","deadline","value","permit","permitEncodedArgs","failed","deltaPriceToUse","signedPermitData","type","variant","encodePermit2TransferFromSigDataForDelta","nonce","signature","destChainId","bridge","destinationChainId","event","name","params","swapMode","orderFromAPI","createOrderInput","orderInput","owner","beneficiary","destToken","Number","side","createDeltaOrderInput","depositAmount","mutateAsync","lastOrderStatePromise","tradeFlowType","approve","deltaOrder","cancelDeltaOrder","deltaOrderMut","useMutation","mutationFn","mutationKey","onSettled","runDeltaOrderFlow","retryFlow","options","usedPrice","result","submittedDeltaOrder"],"mappings":"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"}
1
+ {"version":3,"file":"useDeltaFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useDeltaFlow.ts"],"sourcesContent":["import type {\n BridgePrice,\n DeltaAuction,\n DeltaOrderApiResponse,\n DeltaPrice,\n} from \"@velora-dex/sdk\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport {\n deltaOrdersQueryKey,\n type SubmittedDeltaOrderFromAPI,\n} from \"../prices/delta/queries/useDeltaOrders\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport {\n useCreateDeltaOrder,\n type CreateDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport {\n deltaAuctionPollingQueryKey,\n useEnsureDeltaOrderExecuted,\n useWatchDeltaAuction,\n type MaybeVeloraDeltaAuction,\n} from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport type { OrderSentObject } from \"@/lib/utils/toasts\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { produceDeltaOrderDeadline } from \"@/hooks/permit/utils/deadlines\";\nimport { encodePermit2TransferFromSigDataForDelta } from \"@/hooks/permit/utils/encodeArgs\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n isBridgePrice,\n useDeltaPriceQuery,\n useSubscribeToDeltaPrice,\n} from \"../prices/delta/queries/useDeltaPriceQuery\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n type DeltaOrderPreSignResult,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { getSwapSideFromDeltaPrice } from \"../prices/delta/queries/utils\";\nimport { extractSelectedBridgePrice } from \"../prices/delta/bridge/utils\";\nimport type { DeltaOrBridgePrice } from \"../prices/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { bridgePreferenceAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom\";\nimport { protocolNameAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom\";\nimport {\n useCancelDeltaOrderEventCallbacks,\n useCancelDeltaOrders,\n} from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport { useChainMatches } from \"@/hooks/useChainMatches\";\nimport { useSwitchChainWithGuard } from \"@/hooks/useSwitchChainWithGuard\";\nimport {\n useExtraDeltaPriceParams,\n usePricesParams,\n} from \"../prices/usePricesParams\";\nimport { useSelectedBridgePrice } from \"../prices/delta/bridge/useSelectedBridgePrice\";\n\nconst deltaOrderFlowType = \"deltaOrder\";\n\nexport type UseDeltaFlowInput = {\n deltaPrice?: DeltaPrice | BridgePrice;\n preWrapETH?: boolean;\n};\n\nexport type SubmitDeltaOrderResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n approve: SubmitTxResult;\n deltaOrder: {\n sentOrder: SubmittedDeltaOrderFromAPI;\n lastOrderState: MaybeVeloraDeltaAuction;\n };\n deltaPrice: DeltaPrice | BridgePrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype OnOrderSent = (orderSent: OrderSentObject) => void;\n\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt|Order executed}) when mined,\n// maybe??\ntype RunDeltaOrderOptions = {\n onTxSent?: OnTxSent;\n onOrderSent?: OnOrderSent;\n};\n\ntype DeltaOrderSubmissionResult = {\n order?: SubmittedDeltaOrderFromAPI;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype DeltaOrderExecutionResult = {\n sentOrder?: SubmittedDeltaOrderFromAPI;\n lastOrderState?: MaybeVeloraDeltaAuction;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\ntype DeltaOrderCancelationResult = {\n isCancelingOrder: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type UseDeltaFlowResult = {\n tradeFlowType: typeof deltaOrderFlowType;\n chainId: SupportedChainId;\n runDeltaOrderFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunDeltaOrderOptions\n ) => Promise<SubmitDeltaOrderResult>; // reset and retry flow\n cancelDeltaOrder: () => void;\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n deltaOrderPreSign: DeltaOrderPreSignResult;\n // submission represents either normal signing and POSTing of Order or pre-signing (in a tx) and POSTing\n deltaOrderSubmission: DeltaOrderSubmissionResult;\n deltaOrderExecution: DeltaOrderExecutionResult;\n deltaOrderCancelation: DeltaOrderCancelationResult;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitDeltaOrderResult;\n usedPrice?: DeltaPrice | BridgePrice;\n freshPrice?: DeltaPrice | BridgePrice;\n submittedDeltaOrder?: Omit<DeltaAuction, \"signature\" | \"transactions\">;\n};\n\nconst DELTA_ORDER_MUTATION_KEY = \"runDeltaOrderFlow\";\n\nexport function useDeltaFlow({\n deltaPrice: _deltaPrice,\n preWrapETH,\n}: UseDeltaFlowInput): UseDeltaFlowResult {\n const logger = useLogger(\"DeltaFlow\");\n const { resolvedSlippage } = useSlippage(\"swap\");\n\n const { priceParams, chainId, destChainId } = usePricesParams(\"swap\");\n const extraDeltaPriceParams = useExtraDeltaPriceParams({\n srcToken: priceParams.srcToken,\n chainId,\n });\n const { result: deltaPriceQuery, queryKey: deltaPriceQueryKey } =\n useDeltaPriceQuery({\n priceParams: {\n ...priceParams,\n ...extraDeltaPriceParams,\n },\n chainId,\n destChainId,\n query: {\n enabled: false,\n },\n });\n const selectedBridgePrice = useSelectedBridgePrice({\n price: deltaPriceQuery.data,\n });\n const deltaPrice: DeltaOrBridgePrice | undefined =\n selectedBridgePrice || deltaPriceQuery.data || _deltaPrice;\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n\n const swapSideFromInput = useSwapSide();\n\n const {\n approval,\n signPermit,\n approveTxMut,\n signPermitMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: deltaPrice?.srcToken,\n srcAmount: deltaPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide:\n (deltaPrice && getSwapSideFromDeltaPrice(deltaPrice)) ||\n swapSideFromInput,\n tradeMode: \"swap\",\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 const queryClient = useQueryClient();\n\n const createOrderMut = useCreateDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Delta Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Delta Order error\", error);\n },\n },\n });\n\n const deltaOrderCreateAndSubmit: UseDeltaFlowResult[\"deltaOrderSubmission\"] =\n {\n order: createOrderMut.data,\n isCreatingOrder: createOrderMut.isPending,\n isOrderSent: createOrderMut.isSuccess,\n isPending: createOrderMut.isPending,\n isError: createOrderMut.isError,\n isSuccess: createOrderMut.isSuccess,\n error: createOrderMut.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 /* final Delta Order submission for step 4 */\n const deltaOrderSubmission: UseDeltaFlowResult[\"deltaOrderSubmission\"] = {\n order: deltaOrderCreateAndSubmit.order || deltaOrderPreSign.order,\n isCreatingOrder:\n deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder,\n isOrderSent:\n deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent,\n isPending:\n deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending,\n isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError,\n isSuccess:\n deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess,\n error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.error,\n };\n\n /* 5. await Order execution */\n\n const watchOrderExecution = useWatchDeltaAuction({\n orderId: deltaOrderSubmission.order?.id,\n onAuctionSuccess: (order) => {\n logger.log(\"Delta Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Delta Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Delta Order updated\", order);\n },\n onTimeoutGettingOrder: (order) => {\n logger.log(\"Delta Order timeout\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n // refetching stops after one minute of not finding an order (order==null)\n const neverFetchedFinishedOrder =\n watchOrderExecution.data === null && watchOrderExecution.isSuccess;\n\n const deltaOrderExecution: UseDeltaFlowResult[\"deltaOrderExecution\"] = {\n sentOrder: deltaOrderSubmission.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:\n watchOrderExecution.isError ||\n orderStatus === \"failed\" ||\n neverFetchedFinishedOrder,\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderEvents = useCancelDeltaOrderEventCallbacks(\n createOrderMut.data\n );\n\n const orderChainId = deltaOrderSubmission.order?.chainId as\n | SupportedChainId\n | undefined;\n const { forcedChainMatchesWalletChain } = useChainMatches(orderChainId);\n const { mutateAsync: switchChain } = useSwitchChainWithGuard();\n\n const cancelOrderMut = useCancelDeltaOrders({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onMutate: async (variables) => {\n assert(orderChainId, \"orderChainId is undefined\");\n if (!forcedChainMatchesWalletChain) {\n await switchChain({\n chainId: orderChainId,\n });\n }\n cancelOrderEvents.onMutate?.(variables);\n },\n onSuccess: (successResponse, vars) => {\n logger.log(\"Cancel Delta Order success\", successResponse);\n if (deltaOrderExecution.sentOrder?.id) {\n // refetch the order to get updated status\n queryClient.invalidateQueries({\n queryKey: deltaAuctionPollingQueryKey({\n orderId: deltaOrderExecution.sentOrder.id,\n }),\n });\n }\n cancelOrderEvents.onSuccess?.(successResponse, vars);\n },\n onError: (error, vars) => {\n logger.error(\"Cancel Delta Order error\", error);\n cancelOrderEvents.onError?.(error, vars);\n },\n },\n });\n\n const deltaOrderCancelation: UseDeltaFlowResult[\"deltaOrderCancelation\"] = {\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCanceled: cancelOrderMut.isSuccess && !!cancelOrderMut.data?.success,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n };\n\n const ensureOrderExecuted = useEnsureDeltaOrderExecuted({\n onAuctionSuccess: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n onAuctionFailure: (order) => {\n queryClient.invalidateQueries({\n queryKey: deltaOrdersQueryKey({\n userAddress: order.user,\n }),\n exact: false,\n });\n },\n });\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<DeltaPrice | BridgePrice | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useSwapReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { partner, partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n usePartner();\n const protocolName = useAtomValue(protocolNameAtom);\n const bridgePreference = useAtomValue(bridgePreferenceAtom);\n\n const subscribeToPrice = useSubscribeToDeltaPrice();\n\n const { onSwap } = useWidgetEvents();\n\n const submitDeltaOrder = async ({\n onTxSent,\n onOrderSent,\n lastPrice,\n }: RunDeltaOrderOptions & {\n lastPrice?: DeltaPrice | BridgePrice | null;\n } = {}): Promise<SubmitDeltaOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n createOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(deltaPrice, \"Delta price is not available\");\n const swapSide = getSwapSideFromDeltaPrice(deltaPrice);\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n // on Delta the order.deadline must exactly match permit2.deadline\n const orderDeadline = produceDeltaOrderDeadline();\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n const allowanceToPermit = signPermit.amountToPermit;\n // we use this allowance as a max allowance we will accept new prices for\n\n // deltaPrice here is the starting price, available before async code and waiting\n let freshPrice = deltaPrice;\n if (freshPrice.hmac === lastPrice?.hmac) {\n // we are resubmitting the Delta order, because it failed the last time,\n // but the price hasn't updated yet, so force refetch,\n // comparing raw prices here before mutating to select by bridge preference\n const newPriceResult = await deltaPriceQuery.refetch({\n cancelRefetch: false,\n });\n // check if cancelled during refetch\n signal.throwIfAborted();\n\n if (newPriceResult.data) {\n freshPrice = newPriceResult.data;\n\n // if we have a specific bridge we need to use\n if (isBridgePrice(freshPrice)) {\n // extract the selected bridge price\n freshPrice = extractSelectedBridgePrice({\n price: freshPrice,\n protocolName,\n bridgePreference,\n });\n }\n }\n }\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n /*\n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, not Permit),\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const { shouldDoApprovalTxOrPermit, tryPermit, shouldPreSignBatch } =\n shouldApproveOrBatch({\n approval,\n preWrapETH,\n signPermit,\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTxOrPermit && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = deltaPriceQueryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (price) => {\n let newPrice: DeltaOrBridgePrice = price;\n if (isBridgePrice(price)) {\n newPrice = extractSelectedBridgePrice({\n price,\n protocolName,\n bridgePreference,\n });\n }\n\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher srcAmount if BUY with slippage,\n // slightly lower destAmount if SELL with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n swapSide\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n // add this check to resubmit flow\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n try {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } else {\n approveOrPermitEvents.onSignPermit.request({\n allowanceToSet: allowanceToPermit,\n });\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n deadline: orderDeadline,\n value: allowanceToPermit,\n });\n\n approveOrPermitEvents.onSignPermit.confirmed({\n allowanceToSet: allowanceToPermit,\n permit: signedPermitResult?.permitEncodedArgs,\n });\n }\n } catch (error) {\n if (!tryPermit) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n } else {\n approveOrPermitEvents.onSignPermit.failed({\n allowanceToSet: allowanceToPermit,\n error: error as Error,\n });\n }\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const deltaPriceToUse = freshPrice;\n usingPriceRef.current = deltaPriceToUse;\n\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(deltaPriceToUse, \"Delta price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: deltaPriceToUse.srcAmount,\n destAmount: deltaPriceToUse.destAmount,\n },\n resolvedSlippage,\n swapSide\n );\n\n let permit = signedPermitResult?.permitEncodedArgs;\n if (\n signedPermitResult?.signedPermitData.type === \"permit2\" &&\n signedPermitResult.signedPermitData.variant === \"transferFrom\"\n ) {\n // In the Delta Contract, specifically for Permit2 transferFrom, we have signature consisting of\n // bytes32(permit2nonce) + bytes64(signature) = bytes96 Permit2 Transfer format\n permit = encodePermit2TransferFromSigDataForDelta({\n nonce: signedPermitResult.signedPermitData.nonce,\n signature: signedPermitResult.signature,\n });\n }\n\n const destChainId = isBridgePrice(deltaPriceToUse)\n ? deltaPriceToUse.bridge.destinationChainId\n : chainId;\n\n onSwap?.({\n event: {\n name: \"Swap:request\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n },\n },\n });\n\n let orderFromAPI: DeltaOrderApiResponse;\n\n const createOrderInput: CreateDeltaOrderInput = {\n signal,\n type: \"MARKET\",\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: deltaPriceToUse.srcToken,\n destToken: deltaPriceToUse.destToken,\n permit,\n destChainId,\n deltaPrice: deltaPriceToUse,\n\n partner,\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus,\n\n ...amountsAfterSlippage,\n deadline: Number(orderDeadline),\n side: swapSide,\n },\n };\n\n if (!shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n orderFromAPI = await createOrderMut.mutateAsync(createOrderInput);\n } else {\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 createDeltaOrderInput: createOrderInput,\n approval,\n preWrapETH,\n onTxSent,\n });\n }\n\n // Order is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n onSwap?.({\n event: {\n name: \"Swap:sent\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // will refetch Order on interval until completed.\n // in parallel with useWatchDeltaAuction but independently if useWatchDeltaAuction is unmounted\n const lastOrderStatePromise = ensureOrderExecuted({\n orderId: orderFromAPI.id,\n // signal, // fails the toast if aborted, don't use\n });\n\n if (onOrderSent) {\n onOrderSent({\n order: orderFromAPI,\n lastOrderState: lastOrderStatePromise,\n });\n }\n\n const lastOrderState = await lastOrderStatePromise;\n\n onSwap?.({\n event: {\n name: \"Swap:confirmed\",\n params: {\n swapMode: \"delta\",\n price: deltaPriceToUse,\n order: orderFromAPI,\n },\n },\n });\n\n // no use aborting past this point, Order is already being processed\n\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: deltaOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n deltaOrder: {\n sentOrder: orderFromAPI,\n lastOrderState,\n },\n deltaPrice: deltaPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Order failed, we can't be sure if nonce can be reused or it was incremented in a different Order\n // or even a Market swap tx in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n onSwap?.({\n event: {\n name: \"Swap:failed\",\n params: {\n swapMode: \"delta\",\n error: error as Error,\n },\n },\n });\n\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const cancelDeltaOrder = () => {\n assert(deltaOrderSubmission.order, \"No order to cancel\");\n cancelOrderMut.mutate({\n orderIds: [deltaOrderSubmission.order.id],\n });\n };\n\n const deltaOrderMut = useMutation({\n mutationFn: submitDeltaOrder,\n mutationKey: [DELTA_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Delta Order success\", data);\n },\n onError: (error) => {\n logger.error(\"Delta Order error\", error);\n },\n onSettled: () => {\n logger.log(\"Delta Order settled\");\n },\n });\n\n const runDeltaOrderFlow = deltaOrderMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n createOrderMut.reset();\n deltaOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunDeltaOrderOptions\n ): Promise<SubmitDeltaOrderResult> => {\n const lastPrice = usingPriceRef.current;\n reset();\n return runDeltaOrderFlow({ ...options, lastPrice });\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice: typeof deltaPrice = usingPriceRef.current || deltaPrice;\n\n const result = deltaOrderMut.data;\n\n /**\n * priority:\n * 1. lastOrderState = updated sent Order from final result\n * 2. sentOrder = just sent Order from final result\n * 3. deltaOrderExecution.lastOrderState = updated sent Order from watchOrderExecution (intermediate result)\n * 4. deltaOrderExecution.sentOrder = just sent Order from watchOrderExecution (intermediate result)\n */\n const submittedDeltaOrder:\n | Omit<DeltaAuction, \"signature\" | \"transactions\">\n | undefined =\n result?.deltaOrder.lastOrderState ||\n result?.deltaOrder.sentOrder ||\n deltaOrderExecution.lastOrderState ||\n deltaOrderExecution.sentOrder;\n\n /* 6. return result */\n return {\n tradeFlowType: deltaOrderFlowType,\n chainId,\n runDeltaOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelDeltaOrder,\n approval,\n signPermit,\n deltaOrderPreSign,\n deltaOrderSubmission,\n deltaOrderExecution,\n deltaOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: deltaOrderMut.isPending,\n isSuccess: deltaOrderSubmission.isSuccess && deltaOrderExecution.isSuccess, // approval is an optional step\n isError: deltaOrderMut.isError,\n error: deltaOrderMut.error,\n result,\n usedPrice,\n freshPrice: deltaPrice,\n submittedDeltaOrder,\n };\n}\n"],"names":["deltaOrderFlowType","DELTA_ORDER_MUTATION_KEY","useDeltaFlow","deltaPrice","_deltaPrice","preWrapETH","logger","useLogger","resolvedSlippage","useSlippage","priceParams","chainId","destChainId","usePricesParams","extraDeltaPriceParams","useExtraDeltaPriceParams","srcToken","result","deltaPriceQuery","queryKey","deltaPriceQueryKey","useDeltaPriceQuery","query","enabled","selectedBridgePrice","useSelectedBridgePrice","price","data","swapSideFromInput","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","events","approveOrPermitEvents","useApproveOrPermit","srcAmount","spenderContractType","swapSide","getSwapSideFromDeltaPrice","tradeMode","address","account","useAccount","minClient","useMinViemClient","queryClient","useQueryClient","createOrderMut","useCreateDeltaOrder","client","mutationOptions","onSuccess","order","log","onError","error","deltaOrderCreateAndSubmit","isCreatingOrder","isPending","isOrderSent","isSuccess","isError","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","reset","resetPreSignAndSubmitDeltaOrder","usePreSignAndSubmitDeltaOrder","viemClient","deltaOrderSubmission","watchOrderExecution","useWatchDeltaAuction","orderId","id","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","onTimeoutGettingOrder","orderStatus","getOverallOrderStatus","neverFetchedFinishedOrder","deltaOrderExecution","sentOrder","lastOrderState","isOrderPending","isOrderExecuting","isOrderExecuted","isLoading","isRefetching","cancelOrderEvents","useCancelDeltaOrderEventCallbacks","orderChainId","forcedChainMatchesWalletChain","useChainMatches","mutateAsync","switchChain","useSwitchChainWithGuard","cancelOrderMut","useCancelDeltaOrders","onMutate","variables","assert","successResponse","vars","invalidateQueries","deltaAuctionPollingQueryKey","deltaOrderCancelation","isCancelingOrder","isOrderCanceled","success","ensureOrderExecuted","useEnsureDeltaOrderExecuted","deltaOrdersQueryKey","userAddress","user","exact","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useSwapReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","partner","partnerAddress","partnerFeeBps","partnerTakesSurplus","usePartner","protocolName","useAtomValue","protocolNameAtom","bridgePreference","bridgePreferenceAtom","subscribeToPrice","useSubscribeToDeltaPrice","onSwap","useWidgetEvents","submitDeltaOrder","onTxSent","onOrderSent","lastPrice","abortController","AbortController","signal","orderDeadline","produceDeltaOrderDeadline","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","allowanceToPermit","amountToPermit","freshPrice","hmac","newPriceResult","refetch","cancelRefetch","throwIfAborted","isBridgePrice","extractSelectedBridgePrice","unsubscribeFromPrice","shouldDoApprovalTxOrPermit","tryPermit","shouldPreSignBatch","shouldApproveOrBatch","approvedAmount","onData","newPrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","onApproveTx","request","approveAsync","allowanceData","sent","txHash","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","onSignPermit","signPermitAsync","deadline","value","permit","permitEncodedArgs","failed","deltaPriceToUse","signedPermitData","type","variant","encodePermit2TransferFromSigDataForDelta","nonce","signature","bridge","destinationChainId","event","name","params","swapMode","orderFromAPI","createOrderInput","orderInput","owner","beneficiary","destToken","Number","side","createDeltaOrderInput","lastOrderStatePromise","tradeFlowType","approve","receipt","deltaOrder","cancelDeltaOrder","mutate","orderIds","deltaOrderMut","useMutation","mutationFn","mutationKey","onSettled","runDeltaOrderFlow","retryFlow","options","usedPrice","submittedDeltaOrder"],"mappings":"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"}