@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.
- package/dist/components/widget/AppHeader/Activities/Drawers.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js +23 -18
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +2 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js +2 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts +4 -6
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js +147 -133
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.d.ts +2 -2
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js +55 -138
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.d.ts +1 -1
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.d.ts.map +1 -1
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js +137 -87
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
- package/dist/components/widget/PayReceiveInfo/types.d.ts +5 -3
- package/dist/components/widget/PayReceiveInfo/types.d.ts.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.d.ts.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js +2 -2
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.d.ts +2 -2
- package/dist/components/widget/SwapRate/SwapRate.d.ts.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +108 -87
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js +14 -12
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts +3 -3
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js +74 -101
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js +72 -63
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js +16 -13
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/utils.d.ts +2 -1
- package/dist/components/widget/TradeOverview/Step/utils.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/Step/utils.js +4 -2
- package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.d.ts +1 -1
- package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js +59 -62
- package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js +5 -3
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js +181 -13
- package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts +2 -2
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js +4 -4
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts +18 -2
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js +145 -111
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts +2 -0
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js +65 -58
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/steps.d.ts +32 -0
- package/dist/components/widget/TradeOverview/steps.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/steps.js +12 -2
- package/dist/components/widget/TradeOverview/steps.js.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js +13 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/isNonFlowStep.d.ts +4 -0
- package/dist/components/widget/TradeOverview/utils/isNonFlowStep.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js +6 -0
- package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -0
- package/dist/components/widget/TradeOverview/utils/preWrap.d.ts +4 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.js +2 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.d.ts.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts +2 -0
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +236 -3
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.js +40 -18
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +46 -24
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useMaxButtonProps.js +2 -2
- package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
- package/dist/events/types/cancel.d.ts +1 -7
- package/dist/events/types/cancel.d.ts.map +1 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.d.ts.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +9 -8
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts +7 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +85 -13
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts +1 -13
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js +1 -80
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js +2 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +1 -27
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +2 -3
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +2 -8
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +1 -27
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts +9 -0
- package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +32 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js +149 -142
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +35 -35
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +3 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +20 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -8
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +127 -68
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +4 -3
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +186 -98
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +4 -6
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +72 -56
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js +33 -23
- package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +2 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js +37 -11
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts +2 -0
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +161 -79
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/tokens/allowance/utils.d.ts +10 -2
- package/dist/hooks/tokens/allowance/utils.d.ts.map +1 -1
- package/dist/hooks/tokens/allowance/utils.js +19 -8
- package/dist/hooks/tokens/allowance/utils.js.map +1 -1
- package/dist/hooks/useSDK.d.ts +3 -3
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js +3 -3
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/lib/constants/urls.d.ts.map +1 -1
- package/dist/lib/constants/urls.js.map +1 -1
- package/dist/lib/utils/fee.js +1 -1
- package/dist/lib/utils/fee.js.map +1 -1
- package/dist/lib/utils/slippage.d.ts.map +1 -1
- package/dist/lib/utils/slippage.js +1 -1
- package/dist/lib/utils/slippage.js.map +1 -1
- package/dist/lib/utils/toDecimal.d.ts.map +1 -1
- package/dist/lib/utils/toDecimal.js +5 -3
- package/dist/lib/utils/toDecimal.js.map +1 -1
- package/dist/styles.css +0 -3
- package/dist/transactions/types.d.ts +1 -9
- package/dist/transactions/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/components/widget/Button/CancelButton/CancelButton.d.ts +0 -7
- package/dist/components/widget/Button/CancelButton/CancelButton.d.ts.map +0 -1
- package/dist/components/widget/Button/CancelButton/CancelButton.js +0 -102
- package/dist/components/widget/Button/CancelButton/CancelButton.js.map +0 -1
- package/dist/components/widget/Button/CancelButton/constants.d.ts +0 -2
- package/dist/components/widget/Button/CancelButton/constants.d.ts.map +0 -1
- package/dist/components/widget/Button/CancelButton/constants.js +0 -4
- package/dist/components/widget/Button/CancelButton/constants.js.map +0 -1
- package/dist/components/widget/Button/DismissButton.d.ts +0 -4
- package/dist/components/widget/Button/DismissButton.d.ts.map +0 -1
- package/dist/components/widget/Button/DismissButton.js +0 -29
- package/dist/components/widget/Button/DismissButton.js.map +0 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts +0 -11
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js +0 -87
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +0 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts +0 -31
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +0 -246
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +0 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts +0 -44
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +0 -268
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.d.ts +0 -108
- package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.js +0 -168
- package/dist/hooks/swap/prices/delta/queries/useIsDeltaNonceUsed.js.map +0 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts +0 -69
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts.map +0 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +0 -192
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
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 {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
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
|
|
115
|
-
isCreatingOrder: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isCreatingOrder
|
|
116
|
-
isOrderSent: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isOrderSent
|
|
117
|
-
isPending: deltaOrderCreateAndSubmit.isPending || deltaOrderPreSign.isPending
|
|
118
|
-
isError: deltaOrderCreateAndSubmit.isError || deltaOrderPreSign.isError
|
|
119
|
-
isSuccess: deltaOrderCreateAndSubmit.isSuccess || deltaOrderPreSign.isSuccess
|
|
120
|
-
error: deltaOrderCreateAndSubmit.error || deltaOrderPreSign.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
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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 (
|
|
401
|
+
} catch (error_2) {
|
|
346
402
|
if (!tryPermit) {
|
|
347
403
|
approveOrPermitEvents.onApproveTx.failed({
|
|
348
404
|
allowanceToSet,
|
|
349
|
-
error:
|
|
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:
|
|
412
|
+
error: error_2
|
|
357
413
|
});
|
|
358
414
|
}
|
|
359
|
-
throw
|
|
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
|
|
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 (
|
|
412
|
-
orderFromAPI = await
|
|
413
|
-
|
|
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 (
|
|
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:
|
|
535
|
+
error: error_1
|
|
485
536
|
}
|
|
486
537
|
}
|
|
487
538
|
});
|
|
488
|
-
throw
|
|
539
|
+
throw error_1;
|
|
489
540
|
} finally {
|
|
490
541
|
unsubscribeFromPrice?.();
|
|
491
542
|
}
|
|
492
543
|
};
|
|
493
|
-
const 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: (
|
|
501
|
-
logger.error("Delta Order error",
|
|
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(
|
|
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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"}
|