@velora-dex/widget 0.8.4-dev.0 → 0.8.4
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/hooks.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js +51 -51
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/utils.d.ts +3 -3
- package/dist/components/widget/AppHeader/Activities/utils.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/utils.js +26 -25
- package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
- package/dist/components/widget/BridgeList/hooks.d.ts +2 -2
- package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
- package/dist/components/widget/BridgeList/hooks.js +72 -78
- package/dist/components/widget/BridgeList/hooks.js.map +1 -1
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +2 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js +22 -18
- 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/LimitOrderItem/LimitOrderListItem.d.ts +3 -6
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +54 -58
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/constants.d.ts +1 -1
- package/dist/components/widget/LimitOrderItem/constants.js +1 -1
- package/dist/components/widget/LimitOrderItem/constants.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/types.d.ts +2 -2
- package/dist/components/widget/LimitOrderItem/types.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.d.ts +4 -2
- package/dist/components/widget/LimitOrderItem/utils.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.js +4 -1
- package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js +9 -9
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +10 -15
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.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 +86 -86
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js +83 -83
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +1 -4
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
- package/dist/core/LimitOrderButton.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.js +53 -47
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/TradeFlowScreenButton.d.ts +4 -3
- package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
- package/dist/core/TradeFlowScreenButton.js.map +1 -1
- package/dist/core/Updaters.js +1 -1
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/across/isCrosschainPossible.d.ts +2 -2
- package/dist/core/across/isCrosschainPossible.d.ts.map +1 -1
- package/dist/core/across/isCrosschainPossible.js.map +1 -1
- package/dist/core/across/utils.d.ts +4 -4
- package/dist/core/across/utils.d.ts.map +1 -1
- package/dist/core/across/utils.js +15 -25
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +4 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js +3 -3
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useWarningMessage.d.ts +2 -2
- package/dist/core/inputs/hooks/useWarningMessage.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
- package/dist/core/inputs/hooks/utils.d.ts.map +1 -1
- package/dist/core/inputs/hooks/utils.js +5 -7
- package/dist/core/inputs/hooks/utils.js.map +1 -1
- package/dist/core/inputs/state/guards.d.ts +3 -0
- package/dist/core/inputs/state/guards.d.ts.map +1 -0
- package/dist/core/inputs/state/guards.js +12 -0
- package/dist/core/inputs/state/guards.js.map +1 -0
- package/dist/core/inputs/state/inputAmountAtom.d.ts +2 -2
- package/dist/core/inputs/state/inputAmountAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/inputAmountAtom.js +8 -7
- package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.d.ts +2 -2
- package/dist/core/limit/state/limitInputAmountAtom.d.ts.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.js +14 -13
- package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
- package/dist/core/limit/state/utils.d.ts +1 -1
- package/dist/core/limit/useLimitRate.d.ts +3 -2
- package/dist/core/limit/useLimitRate.d.ts.map +1 -1
- package/dist/core/limit/useLimitRate.js +110 -54
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js +4 -1
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.d.ts +2 -2
- package/dist/core/otc/state/otcInputAmountAtom.d.ts.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.js +14 -13
- package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
- package/dist/core/state/configAtom.js +2 -2
- package/dist/core/state/configAtom.js.map +1 -1
- package/dist/core/state/configEffectAtom.js +1 -1
- package/dist/core/state/configEffectAtom.js.map +1 -1
- package/dist/core/state/getSelectableDestChains.d.ts +2 -2
- package/dist/core/state/getSelectableDestChains.d.ts.map +1 -1
- package/dist/core/state/getSelectableDestChains.js.map +1 -1
- package/dist/core/swapDetails/fees.d.ts.map +1 -1
- package/dist/core/swapDetails/fees.js +11 -16
- package/dist/core/swapDetails/fees.js.map +1 -1
- package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
- package/dist/core/swapDetails/maxToPay.js +17 -18
- package/dist/core/swapDetails/maxToPay.js.map +1 -1
- package/dist/core/twap/state/twapInputAmountAtom.d.ts +2 -2
- package/dist/core/twap/state/twapInputAmountAtom.d.ts.map +1 -1
- package/dist/core/twap/state/twapInputAmountAtom.js +10 -9
- package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
- package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
- package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
- package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
- package/dist/core/twap/useTwapTokenFromInputProps.js +3 -3
- package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -1
- package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
- package/dist/events/types/cancelOrder.d.ts +2 -2
- package/dist/events/types/cancelOrder.d.ts.map +1 -1
- package/dist/events/types/priceChange.d.ts +2 -2
- package/dist/events/types/priceChange.d.ts.map +1 -1
- package/dist/events/types/swap.d.ts +3 -3
- package/dist/events/types/swap.d.ts.map +1 -1
- package/dist/events/types/twap.d.ts +2 -2
- package/dist/events/types/twap.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/const.d.ts +8 -0
- package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/const.js +13 -0
- package/dist/hooks/swap/prices/delta/bridge/const.js.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +4 -3
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +3 -6
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js +17 -20
- package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +6 -6
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +28 -27
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +3 -3
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js +84 -85
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +4 -4
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +28 -27
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +6 -5
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.js +5 -5
- package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts +28 -8
- package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/orders/unposted/index.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +42 -31
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +18 -18
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +49 -19
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +58 -23
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts +2 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/{bridgeRoutes/bridgeRoutesLoadedAtom.js → bridgeInfo/bridgeInfosLoadedAtom.js} +4 -4
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts +6 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js +9 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts +4 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js +11 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts +19 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts +3 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/{bridgeRoutes/useBridgeRoutes.js → bridgeInfo/useBridgeInfo.js} +6 -6
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/{useDeltaOrderRequiredBalance.d.ts → useDeltaLimitOrderRequiredBalance.d.ts} +10 -10
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/{useDeltaOrderRequiredBalance.js → useDeltaLimitOrderRequiredBalance.js} +5 -5
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts +6 -6
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +36 -19
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +5 -5
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js +1 -1
- package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +22 -14
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +62 -71
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/factory.d.ts.map +1 -1
- package/dist/hooks/swap/prices/factory.js +1 -1
- package/dist/hooks/swap/prices/factory.js.map +1 -1
- package/dist/hooks/swap/prices/types.d.ts +3 -2
- package/dist/hooks/swap/prices/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js +111 -108
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTwapPrices.d.ts +5 -4
- package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useTwapPrices.js +73 -70
- package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +19 -12
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts +4 -4
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +1 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js +1 -1
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +227 -222
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -2
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +196 -159
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +5 -5
- package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js +233 -221
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.d.ts +2 -2
- package/dist/hooks/tokens/useAllTokensWithFilter.d.ts.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.d.ts +2 -2
- package/dist/hooks/tokens/useTokensFromAcross.d.ts.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.js +10 -7
- package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.d.ts +3 -3
- package/dist/hooks/useAvailableCrosses.d.ts.map +1 -1
- package/dist/hooks/useAvailableCrosses.js +17 -18
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBridgeInfo.d.ts +7 -0
- package/dist/hooks/useBridgeInfo.d.ts.map +1 -0
- package/dist/hooks/{useBridgeRoutes.js → useBridgeInfo.js} +4 -4
- package/dist/hooks/useBridgeInfo.js.map +1 -0
- package/dist/hooks/useIsCrosschainPossible.d.ts +2 -2
- package/dist/hooks/useIsCrosschainPossible.d.ts.map +1 -1
- package/dist/hooks/useIsCrosschainPossible.js +13 -15
- package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
- package/dist/hooks/useSDK.d.ts +11 -11
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js +42 -42
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSelectableDestChains.d.ts +2 -2
- package/dist/hooks/useSelectableDestChains.d.ts.map +1 -1
- package/dist/hooks/useSelectableDestChains.js.map +1 -1
- package/dist/lib/queryClient.js +3 -3
- package/dist/lib/queryClient.js.map +1 -1
- package/dist/lib/utils/price.d.ts +2 -5
- package/dist/lib/utils/price.d.ts.map +1 -1
- package/dist/lib/utils/price.js +5 -8
- package/dist/lib/utils/price.js.map +1 -1
- package/dist/lib/utils/toasts.d.ts +3 -3
- package/dist/lib/utils/toasts.d.ts.map +1 -1
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/utils/twap.d.ts +4 -19
- package/dist/lib/utils/twap.d.ts.map +1 -1
- package/dist/lib/utils/twap.js +18 -29
- package/dist/lib/utils/twap.js.map +1 -1
- package/package.json +2 -2
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.d.ts +0 -2
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/bridgeRoutesLoadedAtom.js.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.d.ts +0 -6
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.js +0 -9
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/common.js.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.d.ts +0 -3
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.js +0 -11
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/getBridgeRoutesQueryData.js.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/types.d.ts +0 -19
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/types.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.d.ts +0 -3
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeRoutes/useBridgeRoutes.js.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js.map +0 -1
- package/dist/hooks/useBridgeRoutes.d.ts +0 -6
- package/dist/hooks/useBridgeRoutes.d.ts.map +0 -1
- package/dist/hooks/useBridgeRoutes.js.map +0 -1
|
@@ -11,264 +11,301 @@ import { usePartner as l } from "../../usePartner.js";
|
|
|
11
11
|
import { useEnsureTxReceipt as u } from "../../txs/queries/useAwaitTx.js";
|
|
12
12
|
import { useCancelOrWithdrawAndCancelDeltaOrder as d } from "../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js";
|
|
13
13
|
import { UserCancelledError as f } from "./common/errors.js";
|
|
14
|
-
import { useCreateAndSubmitDeltaOrder as
|
|
15
|
-
import { useApproveOrPermit as
|
|
16
|
-
import { shouldApproveOrBatch as
|
|
17
|
-
import { useDepositAndSubmitDeltaOrder as
|
|
18
|
-
import { useReferrer as
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
14
|
+
import { useCreateAndSubmitDeltaOrder as ee } from "../prices/delta/mutations/useCreateDeltaOrder.js";
|
|
15
|
+
import { useApproveOrPermit as te } from "./common/useApproveOrPermit.js";
|
|
16
|
+
import { shouldApproveOrBatch as ne, usePreSignAndSubmitDeltaOrder as p } from "./common/usePreSignAndSubmitDeltaOrder.js";
|
|
17
|
+
import { useDepositAndSubmitDeltaOrder as m } from "./common/useDepositAndSubmitDeltaOrder.js";
|
|
18
|
+
import { useReferrer as h } from "../../useReferrer.js";
|
|
19
|
+
import { DEFAULT_DELTA_BRIDGE as g } from "../prices/delta/bridge/const.js";
|
|
20
|
+
import { useRef as _ } from "react";
|
|
21
|
+
import { useMutation as re } from "@tanstack/react-query";
|
|
22
|
+
import { assert as v } from "ts-essentials";
|
|
23
|
+
import { useAccount as ie, useChainId as ae } from "wagmi";
|
|
23
24
|
//#region src/hooks/swap/tradeFlow/useLimitOrderFlow.ts
|
|
24
|
-
var
|
|
25
|
-
function
|
|
26
|
-
let
|
|
27
|
-
srcToken:
|
|
28
|
-
srcAmount:
|
|
25
|
+
var y = "limitOrder", b = "runLimitOrderFlow";
|
|
26
|
+
function x({ limitPrice: x }) {
|
|
27
|
+
let S = e("LimitOrderFlow"), C = ae(), { approval: w, approveTxMut: T, events: E } = te({
|
|
28
|
+
srcToken: x?.srcTokenAddress,
|
|
29
|
+
srcAmount: x?.srcAmount,
|
|
29
30
|
spenderContractType: "ParaswapDelta",
|
|
30
31
|
swapSide: "SELL",
|
|
31
32
|
tradeMode: "limit",
|
|
32
|
-
chainId:
|
|
33
|
-
}), { address:
|
|
34
|
-
chainId:
|
|
35
|
-
account:
|
|
36
|
-
}),
|
|
37
|
-
chainId:
|
|
38
|
-
account:
|
|
39
|
-
client:
|
|
33
|
+
chainId: C
|
|
34
|
+
}), { address: D } = ie(), { minClient: O } = c({
|
|
35
|
+
chainId: C,
|
|
36
|
+
account: D
|
|
37
|
+
}), k = ee({
|
|
38
|
+
chainId: C,
|
|
39
|
+
account: D,
|
|
40
|
+
client: O,
|
|
40
41
|
mutationOptions: {
|
|
41
42
|
onSuccess: (e) => {
|
|
42
|
-
|
|
43
|
+
S.log("Create Limit Order success", e);
|
|
43
44
|
},
|
|
44
45
|
onError: (e) => {
|
|
45
|
-
|
|
46
|
+
S.error("Create Limit Order error", e);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
}),
|
|
49
|
-
order:
|
|
50
|
-
isCreatingOrder:
|
|
51
|
-
isPostingOrder:
|
|
52
|
-
isOrderSent:
|
|
53
|
-
isPending:
|
|
54
|
-
isError:
|
|
55
|
-
isSuccess:
|
|
56
|
-
error:
|
|
57
|
-
}, { deltaOrderPreSign:
|
|
58
|
-
chainId:
|
|
59
|
-
account:
|
|
60
|
-
logger:
|
|
61
|
-
viemClient:
|
|
62
|
-
}), { deltaOrderDeposit:
|
|
63
|
-
chainId:
|
|
64
|
-
account:
|
|
65
|
-
logger:
|
|
66
|
-
viemClient:
|
|
67
|
-
}),
|
|
68
|
-
order:
|
|
69
|
-
isPostingOrder:
|
|
70
|
-
isCreatingOrder:
|
|
71
|
-
isOrderSent:
|
|
72
|
-
isPending:
|
|
73
|
-
isError:
|
|
74
|
-
isSuccess:
|
|
75
|
-
error:
|
|
76
|
-
},
|
|
77
|
-
orderId:
|
|
49
|
+
}), A = {
|
|
50
|
+
order: k.order,
|
|
51
|
+
isCreatingOrder: k.isCreatingOrder,
|
|
52
|
+
isPostingOrder: k.isPostingOrder,
|
|
53
|
+
isOrderSent: k.isOrderSent,
|
|
54
|
+
isPending: k.isPending,
|
|
55
|
+
isError: k.isError,
|
|
56
|
+
isSuccess: k.isSuccess,
|
|
57
|
+
error: k.error
|
|
58
|
+
}, { deltaOrderPreSign: j, canBatchTxs: M, isConnectedToSafe: N, preSignAndSubmitDeltaOrder: P, reset: F } = p({
|
|
59
|
+
chainId: C,
|
|
60
|
+
account: D,
|
|
61
|
+
logger: S,
|
|
62
|
+
viemClient: O
|
|
63
|
+
}), { deltaOrderDeposit: I, reset: L, depositAndSubmitDeltaOrder: R } = m({
|
|
64
|
+
chainId: C,
|
|
65
|
+
account: D,
|
|
66
|
+
logger: S,
|
|
67
|
+
viemClient: O
|
|
68
|
+
}), z = {
|
|
69
|
+
order: A.order || j.order || I.order,
|
|
70
|
+
isPostingOrder: A.isPostingOrder || j.postingOrder.isPostingOrder || I.postingOrder.isPostingOrder,
|
|
71
|
+
isCreatingOrder: A.isCreatingOrder || j.isCreatingOrder || I.isCreatingOrder,
|
|
72
|
+
isOrderSent: A.isOrderSent || j.isOrderSent || I.isOrderSent,
|
|
73
|
+
isPending: A.isPending || j.isPending || I.isPending,
|
|
74
|
+
isError: A.isError || j.isError || I.isError,
|
|
75
|
+
isSuccess: A.isSuccess || j.isSuccess || I.isSuccess,
|
|
76
|
+
error: A.error || j.error || I.error
|
|
77
|
+
}, B = s({
|
|
78
|
+
orderId: z.order?.id,
|
|
78
79
|
refetchInterval: i,
|
|
79
80
|
onAuctionSuccess: (e) => {
|
|
80
|
-
|
|
81
|
+
S.log("Limit Order success", e);
|
|
81
82
|
},
|
|
82
83
|
onAuctionFailure: (e) => {
|
|
83
|
-
|
|
84
|
+
S.log("Limit Order failure", e);
|
|
84
85
|
},
|
|
85
86
|
onUpdatedAuction: (e) => {
|
|
86
|
-
|
|
87
|
+
S.log("Limit Order updated", e);
|
|
87
88
|
}
|
|
88
|
-
}),
|
|
89
|
-
sentOrder:
|
|
90
|
-
lastOrderState:
|
|
91
|
-
isOrderPending:
|
|
92
|
-
isOrderExecuting:
|
|
93
|
-
isOrderExecuted:
|
|
94
|
-
isPending:
|
|
95
|
-
isError:
|
|
96
|
-
isSuccess:
|
|
97
|
-
error:
|
|
98
|
-
},
|
|
99
|
-
order:
|
|
100
|
-
chainId:
|
|
101
|
-
account:
|
|
102
|
-
client:
|
|
103
|
-
logger:
|
|
104
|
-
}),
|
|
105
|
-
receipt:
|
|
106
|
-
txHash:
|
|
107
|
-
response:
|
|
108
|
-
isCancelingOrder:
|
|
109
|
-
isOrderCancellable:
|
|
110
|
-
isOrderCanceled:
|
|
111
|
-
isPending:
|
|
112
|
-
isError:
|
|
113
|
-
isSuccess:
|
|
114
|
-
error:
|
|
115
|
-
step:
|
|
116
|
-
},
|
|
117
|
-
|
|
118
|
-
}, { partner:
|
|
119
|
-
|
|
89
|
+
}), V = B.data ? o(B.data) : null, H = {
|
|
90
|
+
sentOrder: z.order,
|
|
91
|
+
lastOrderState: B.data,
|
|
92
|
+
isOrderPending: V === "pending",
|
|
93
|
+
isOrderExecuting: V === "executing",
|
|
94
|
+
isOrderExecuted: V === "confirmed",
|
|
95
|
+
isPending: B.isLoading || B.isRefetching || V === "pending" || V === "executing",
|
|
96
|
+
isError: B.isError || V === "failed",
|
|
97
|
+
isSuccess: V === "confirmed",
|
|
98
|
+
error: B.error
|
|
99
|
+
}, U = d({
|
|
100
|
+
order: H.lastOrderState || H.sentOrder,
|
|
101
|
+
chainId: C,
|
|
102
|
+
account: D,
|
|
103
|
+
client: O,
|
|
104
|
+
logger: S
|
|
105
|
+
}), oe = {
|
|
106
|
+
receipt: U.receipt,
|
|
107
|
+
txHash: U.txHash,
|
|
108
|
+
response: U.cancelOrderResponse,
|
|
109
|
+
isCancelingOrder: U.isPending,
|
|
110
|
+
isOrderCancellable: U.isOrderCancellable,
|
|
111
|
+
isOrderCanceled: U.isSuccess,
|
|
112
|
+
isPending: U.isPending,
|
|
113
|
+
isError: U.isError,
|
|
114
|
+
isSuccess: U.isSuccess,
|
|
115
|
+
error: U.error,
|
|
116
|
+
step: U.step
|
|
117
|
+
}, se = u(), W = _(null), ce = () => {
|
|
118
|
+
W.current?.abort(new f()), W.current = null;
|
|
119
|
+
}, { partner: G } = l(), { referrerAddress: K } = h(), q = r(), J = n(), { onLimitOrder: Y } = a(), le = async ({ onTxSent: e } = {}) => {
|
|
120
|
+
T.reset(), k.reset(), U.reset(), F(), L(), v(x, "Limit price data is not available");
|
|
120
121
|
let n = new AbortController();
|
|
121
|
-
|
|
122
|
-
let r = n.signal, i, a, o =
|
|
123
|
-
approval:
|
|
122
|
+
W.current = n;
|
|
123
|
+
let r = n.signal, i, a, o = w.allowanceToSet, s = t(x.srcTokenAddress), { shouldDoApprovalTxOrPermit: c, shouldPreSignBatch: l } = ne({
|
|
124
|
+
approval: w,
|
|
124
125
|
signPermit: {
|
|
125
126
|
isPermitSupported: !1,
|
|
126
127
|
isPermitReadyToSign: !1
|
|
127
128
|
},
|
|
128
|
-
canBatchTxs:
|
|
129
|
-
isConnectedToSafe:
|
|
129
|
+
canBatchTxs: M,
|
|
130
|
+
isConnectedToSafe: N
|
|
130
131
|
});
|
|
131
132
|
try {
|
|
132
133
|
if (c && o) try {
|
|
133
|
-
|
|
134
|
+
E.onApproveTx.request({ allowanceToSet: o }), i = await T.approveAsync({ allowanceData: { allowanceToSet: o } }), E.onApproveTx.sent({
|
|
134
135
|
allowanceToSet: o,
|
|
135
136
|
txHash: i
|
|
136
137
|
}), r.throwIfAborted();
|
|
137
|
-
let t =
|
|
138
|
+
let t = se({
|
|
138
139
|
hash: i,
|
|
139
|
-
chainId:
|
|
140
|
+
chainId: C,
|
|
140
141
|
onReplaced: (e) => {
|
|
141
|
-
|
|
142
|
+
S.log("onReplaced:approveTx", i, e);
|
|
142
143
|
}
|
|
143
144
|
});
|
|
144
145
|
e && e({
|
|
145
|
-
chainId:
|
|
146
|
+
chainId: C,
|
|
146
147
|
action: "approve",
|
|
147
148
|
transactionHash: i,
|
|
148
149
|
receiptPromise: t,
|
|
149
150
|
transactionSpecificData: {
|
|
150
151
|
action: "approve",
|
|
151
152
|
approvedAmount: o,
|
|
152
|
-
tokenAddress:
|
|
153
|
-
spenderAddress:
|
|
153
|
+
tokenAddress: w.token,
|
|
154
|
+
spenderAddress: w.spender
|
|
154
155
|
}
|
|
155
|
-
}), a = await t,
|
|
156
|
+
}), a = await t, E.onApproveTx.confirmed({
|
|
156
157
|
allowanceToSet: o,
|
|
157
158
|
txHash: i,
|
|
158
159
|
txReceipt: a
|
|
159
|
-
}),
|
|
160
|
+
}), S.log("~ approveTx ~ receipt:", a);
|
|
160
161
|
} catch (e) {
|
|
161
|
-
throw
|
|
162
|
+
throw E.onApproveTx.failed({
|
|
162
163
|
allowanceToSet: o,
|
|
163
164
|
error: e,
|
|
164
165
|
txHash: i
|
|
165
166
|
}), e;
|
|
166
167
|
}
|
|
167
|
-
r.throwIfAborted(),
|
|
168
|
+
r.throwIfAborted(), v(D, "Account is not connected"), v(x, "limitPrice is not available"), Y?.({ event: {
|
|
168
169
|
name: "LimitOrder:request",
|
|
169
|
-
params: { price:
|
|
170
|
+
params: { price: x }
|
|
170
171
|
} });
|
|
171
|
-
let t =
|
|
172
|
+
let t = x.bridgePrice, n = t?.bridge.destinationChainId, u;
|
|
173
|
+
u = t ? {
|
|
172
174
|
signal: r,
|
|
173
175
|
type: "LIMIT",
|
|
174
|
-
referrerAddress:
|
|
176
|
+
referrerAddress: K,
|
|
175
177
|
orderInput: {
|
|
176
|
-
owner:
|
|
177
|
-
beneficiary:
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
178
|
+
owner: D,
|
|
179
|
+
beneficiary: q,
|
|
180
|
+
srcToken: x.srcTokenAddress,
|
|
181
|
+
destToken: x.destTokenAddress,
|
|
182
|
+
srcAmount: x.srcAmount,
|
|
183
|
+
destAmount: x.destAmount,
|
|
184
|
+
destChainId: n,
|
|
185
|
+
deltaPrice: {
|
|
186
|
+
...t,
|
|
187
|
+
bridge: {
|
|
188
|
+
...t.bridge,
|
|
189
|
+
protocolSelector: g.protocolSelector,
|
|
190
|
+
protocolData: g.protocolData
|
|
191
|
+
},
|
|
192
|
+
partner: G,
|
|
193
|
+
partnerFee: 0
|
|
194
|
+
},
|
|
195
|
+
partner: G,
|
|
196
|
+
deadline: J
|
|
184
197
|
}
|
|
185
|
-
}
|
|
198
|
+
} : {
|
|
199
|
+
signal: r,
|
|
200
|
+
type: "LIMIT",
|
|
201
|
+
referrerAddress: K,
|
|
202
|
+
orderInput: {
|
|
203
|
+
owner: D,
|
|
204
|
+
beneficiary: q,
|
|
205
|
+
srcToken: x.srcTokenAddress,
|
|
206
|
+
srcAmount: x.srcAmount,
|
|
207
|
+
destToken: x.destTokenAddress,
|
|
208
|
+
destAmount: x.destAmount,
|
|
209
|
+
destChainId: n,
|
|
210
|
+
deltaPrice: {
|
|
211
|
+
destToken: x.destTokenAddress,
|
|
212
|
+
destAmount: x.destAmount,
|
|
213
|
+
srcAmount: x.srcAmount,
|
|
214
|
+
bridge: g,
|
|
215
|
+
partner: G,
|
|
216
|
+
partnerFee: 0
|
|
217
|
+
},
|
|
218
|
+
partner: G,
|
|
219
|
+
deadline: J
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
let d;
|
|
186
223
|
if (s) {
|
|
187
|
-
let
|
|
188
|
-
|
|
189
|
-
createOrderInput:
|
|
190
|
-
depositAmount:
|
|
224
|
+
let t = u.orderInput.srcAmount;
|
|
225
|
+
d = await R({
|
|
226
|
+
createOrderInput: u,
|
|
227
|
+
depositAmount: t,
|
|
191
228
|
onTxSent: e
|
|
192
229
|
});
|
|
193
|
-
} else
|
|
194
|
-
createOrderInput:
|
|
195
|
-
approval:
|
|
230
|
+
} else d = l ? await P({
|
|
231
|
+
createOrderInput: u,
|
|
232
|
+
approval: w,
|
|
196
233
|
onTxSent: e
|
|
197
|
-
}) : await
|
|
234
|
+
}) : await k.mutateAsync(u);
|
|
198
235
|
return Y?.({ event: {
|
|
199
236
|
name: "LimitOrder:sent",
|
|
200
237
|
params: {
|
|
201
|
-
price:
|
|
202
|
-
order:
|
|
238
|
+
price: x,
|
|
239
|
+
order: d
|
|
203
240
|
}
|
|
204
241
|
} }), {
|
|
205
|
-
tradeFlowType:
|
|
242
|
+
tradeFlowType: y,
|
|
206
243
|
approve: {
|
|
207
244
|
txHash: i,
|
|
208
245
|
receipt: a
|
|
209
246
|
},
|
|
210
|
-
limitOrder: { sentOrder:
|
|
211
|
-
limitPrice:
|
|
212
|
-
account:
|
|
213
|
-
receiverAddress:
|
|
247
|
+
limitOrder: { sentOrder: d },
|
|
248
|
+
limitPrice: x,
|
|
249
|
+
account: D,
|
|
250
|
+
receiverAddress: q
|
|
214
251
|
};
|
|
215
252
|
} catch (e) {
|
|
216
|
-
throw
|
|
253
|
+
throw S.error("Order submission error", e), Y?.({ event: {
|
|
217
254
|
name: "LimitOrder:failed",
|
|
218
255
|
params: {
|
|
219
|
-
price:
|
|
256
|
+
price: x,
|
|
220
257
|
error: e
|
|
221
258
|
}
|
|
222
259
|
} }), e;
|
|
223
260
|
}
|
|
224
|
-
},
|
|
261
|
+
}, ue = async () => {
|
|
225
262
|
try {
|
|
226
|
-
return await
|
|
263
|
+
return await U.cancelDeltaOrder();
|
|
227
264
|
} catch (e) {
|
|
228
|
-
|
|
265
|
+
S.error("Cancel Limit order error", e), U.reset();
|
|
229
266
|
}
|
|
230
|
-
}, X =
|
|
231
|
-
mutationFn:
|
|
232
|
-
mutationKey: [
|
|
267
|
+
}, X = re({
|
|
268
|
+
mutationFn: le,
|
|
269
|
+
mutationKey: [b],
|
|
233
270
|
onSuccess: (e) => {
|
|
234
|
-
|
|
271
|
+
S.log("Order submission success", e);
|
|
235
272
|
},
|
|
236
273
|
onError: (e) => {
|
|
237
|
-
|
|
274
|
+
S.error("Order submission error", e);
|
|
238
275
|
},
|
|
239
276
|
onSettled: () => {
|
|
240
|
-
|
|
277
|
+
S.log("Order submission settled");
|
|
241
278
|
}
|
|
242
279
|
}), Z = X.mutateAsync, Q = () => {
|
|
243
|
-
|
|
244
|
-
},
|
|
245
|
-
return $ &&
|
|
280
|
+
T.reset(), k.reset(), X.reset(), U.reset(), F(), L();
|
|
281
|
+
}, de = (e) => (Q(), Z(e)), $ = X.data;
|
|
282
|
+
return $ && H.lastOrderState && ($ = {
|
|
246
283
|
...$,
|
|
247
284
|
limitOrder: {
|
|
248
285
|
sentOrder: $.limitOrder.sentOrder,
|
|
249
|
-
lastOrderState:
|
|
286
|
+
lastOrderState: H.lastOrderState
|
|
250
287
|
}
|
|
251
288
|
}), {
|
|
252
|
-
tradeFlowType:
|
|
253
|
-
chainId:
|
|
289
|
+
tradeFlowType: y,
|
|
290
|
+
chainId: C,
|
|
254
291
|
runLimitOrderFlow: Z,
|
|
255
292
|
reset: Q,
|
|
256
|
-
cancelFlow:
|
|
257
|
-
retryFlow:
|
|
258
|
-
cancelLimitOrder:
|
|
259
|
-
approval:
|
|
260
|
-
limitOrderSubmission:
|
|
261
|
-
limitOrderExecution:
|
|
262
|
-
limitOrderCancelation:
|
|
293
|
+
cancelFlow: ce,
|
|
294
|
+
retryFlow: de,
|
|
295
|
+
cancelLimitOrder: ue,
|
|
296
|
+
approval: w,
|
|
297
|
+
limitOrderSubmission: z,
|
|
298
|
+
limitOrderExecution: H,
|
|
299
|
+
limitOrderCancelation: oe,
|
|
263
300
|
isPending: X.isPending,
|
|
264
|
-
isSuccess:
|
|
301
|
+
isSuccess: z.isSuccess,
|
|
265
302
|
isError: X.isError,
|
|
266
303
|
error: X.error,
|
|
267
304
|
result: $,
|
|
268
|
-
limitPrice:
|
|
305
|
+
limitPrice: x
|
|
269
306
|
};
|
|
270
307
|
}
|
|
271
308
|
//#endregion
|
|
272
|
-
export {
|
|
309
|
+
export { x as useLimitOrderFlow };
|
|
273
310
|
|
|
274
311
|
//# sourceMappingURL=useLimitOrderFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitOrderFlow.js","names":["useAccount","useChainId","assert","useEnsureTxReceipt","Address","Hash","TransactionReceipt","ApprovalFlowResult","SubmitTxResult","useCreateAndSubmitDeltaOrder","CreateAndSubmitDeltaOrderInput","useMinViemClient","useMutation","useRef","SupportedChainId","UserCancelledError","CallsSentObject","TxSentObject","useApproveOrPermit","useLogger","usePartner","useLimitDeadline","getOverallOrderStatus","useWatchDeltaAuction","useWidgetEvents","shouldApproveOrBatch","usePreSignAndSubmitDeltaOrder","DeltaV2","useLimitReceiverAddressValue","useDepositAndSubmitDeltaOrder","isETHaddress","useCancelOrWithdrawAndCancelDeltaOrder","CancelDeltaOrdersReturn","DeltaAuctionWithOrder","CancelOrderStepKey","HALF_MINUTE_MS","useReferrer","limitOrderFlowType","UserDefinedLimitPrice","srcTokenAddress","destTokenAddress","srcAmount","destAmount","route","DeltaRoute","UseLimitOrderFlowInput","limitPrice","SubmitLimitOrderResult","tradeFlowType","approve","limitOrder","sentOrder","lastOrderState","account","receiverAddress","OnTxSent","txSent","RunLimitOrderOptions","onTxSent","UseLimitOrderFlowResult","chainId","runLimitOrderFlow","options","Promise","reset","cancelFlow","retryFlow","cancelLimitOrder","approval","limitOrderSubmission","order","isPostingOrder","isCreatingOrder","isOrderSent","isPending","isError","isSuccess","error","Error","limitOrderExecution","isOrderPending","isOrderExecuting","isOrderExecuted","limitOrderCancelation","receipt","txHash","response","isCancelingOrder","isOrderCancellable","isOrderCanceled","step","result","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","logger","approveTxMut","events","approveOrPermitEvents","srcToken","spenderContractType","swapSide","tradeMode","address","minClient","createAndSubmitOrderMut","client","mutationOptions","onSuccess","log","onError","limitOrderCreateAndSubmit","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","resetPreSignAndSubmitDeltaOrder","viemClient","deltaOrderDeposit","resetDepositAndSubmitDeltaOrder","depositAndSubmitDeltaOrder","postingOrder","watchOrderExecution","orderId","id","refetchInterval","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","orderStatus","data","isLoading","isRefetching","cancelOrderMut","cancelOrderResponse","ensureTxReceipt","currentAbortControllerRef","AbortController","current","abort","partner","referrerAddress","deadline","onLimitOrder","submitLimitOrder","abortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDepositAndPreSign","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","createOrderInput","type","orderInput","owner","beneficiary","limitAmount","side","partnerFeeBps","orderFromAPI","depositAmount","mutateAsync","cancelDeltaOrder","limitOrderMut","mutationFn","mutationKey","onSettled"],"sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateAndSubmitDeltaOrder,\n type CreateAndSubmitDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\n\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { useWatchDeltaAuction } from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { DeltaV2 } from \"@velora-dex/sdk\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\nimport { useDepositAndSubmitDeltaOrder } from \"./common/useDepositAndSubmitDeltaOrder\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useCancelOrWithdrawAndCancelDeltaOrder } from \"../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder\";\nimport type { CancelDeltaOrdersReturn } from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport type { DeltaAuctionWithOrder } from \"../prices/delta/orders/types\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { HALF_MINUTE_MS } from \"@/lib/constants/time\";\nimport { useReferrer } from \"@/hooks/useReferrer\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n route: DeltaV2.DeltaRoute;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => Promise<\n TransactionReceipt | CancelDeltaOrdersReturn | undefined\n >;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: DeltaAuctionWithOrder;\n isPostingOrder: boolean;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n receipt?: TransactionReceipt;\n txHash?: string;\n response?: CancelDeltaOrdersReturn;\n isCancelingOrder: boolean;\n isOrderCancellable: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n step?: CancelOrderStepKey;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n chainId,\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createAndSubmitOrderMut = useCreateAndSubmitDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createAndSubmitOrderMut.order,\n isCreatingOrder: createAndSubmitOrderMut.isCreatingOrder,\n isPostingOrder: createAndSubmitOrderMut.isPostingOrder,\n isOrderSent: createAndSubmitOrderMut.isOrderSent,\n isPending: createAndSubmitOrderMut.isPending,\n isError: createAndSubmitOrderMut.isError,\n isSuccess: createAndSubmitOrderMut.isSuccess,\n error: createAndSubmitOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n const {\n deltaOrderDeposit,\n reset: resetDepositAndSubmitDeltaOrder,\n depositAndSubmitDeltaOrder: depositAndSubmitDeltaOrder,\n } = useDepositAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order:\n limitOrderCreateAndSubmit.order ||\n deltaOrderPreSign.order ||\n deltaOrderDeposit.order,\n isPostingOrder:\n limitOrderCreateAndSubmit.isPostingOrder ||\n deltaOrderPreSign.postingOrder.isPostingOrder ||\n deltaOrderDeposit.postingOrder.isPostingOrder,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isCreatingOrder ||\n deltaOrderPreSign.isCreatingOrder ||\n deltaOrderDeposit.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isOrderSent ||\n deltaOrderPreSign.isOrderSent ||\n deltaOrderDeposit.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isPending ||\n deltaOrderDeposit.isPending,\n isError:\n limitOrderCreateAndSubmit.isError ||\n deltaOrderPreSign.isError ||\n deltaOrderDeposit.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isSuccess ||\n deltaOrderDeposit.isSuccess,\n error:\n limitOrderCreateAndSubmit.error ||\n deltaOrderPreSign.error ||\n deltaOrderDeposit.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction<DeltaAuctionWithOrder>({\n orderId: limitOrderSubmission.order?.id,\n refetchInterval: HALF_MINUTE_MS,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: limitOrderSubmission.order,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError: watchOrderExecution.isError || orderStatus === \"failed\",\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderMut = useCancelOrWithdrawAndCancelDeltaOrder({\n // supply the must up-to-date order for cancellation\n order: limitOrderExecution.lastOrderState || limitOrderExecution.sentOrder,\n chainId,\n account,\n client: minClient,\n logger,\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n receipt: cancelOrderMut.receipt,\n txHash: cancelOrderMut.txHash,\n response: cancelOrderMut.cancelOrderResponse,\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCancellable: cancelOrderMut.isOrderCancellable,\n isOrderCanceled: cancelOrderMut.isSuccess,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n step: cancelOrderMut.step,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const { partner } = usePartner();\n const { referrerAddress } = useReferrer();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the synchronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(limitPrice.srcTokenAddress);\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n\n const createOrderInput: CreateAndSubmitDeltaOrderInput = {\n signal,\n type: \"LIMIT\",\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n route: limitPrice.route,\n limitAmount: limitPrice.destAmount,\n side: \"SELL\",\n partner,\n partnerFeeBps: 0,\n deadline,\n },\n };\n\n let orderFromAPI: DeltaAuctionWithOrder;\n\n if (shouldDepositAndPreSign) {\n const depositAmount = limitPrice.srcAmount;\n // deposit ETH + depositTx + POST order\n orderFromAPI = await depositAndSubmitDeltaOrder({\n createOrderInput,\n depositAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n orderFromAPI =\n await createAndSubmitOrderMut.mutateAsync(createOrderInput);\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = async () => {\n try {\n return await cancelOrderMut.cancelDeltaOrder();\n } catch (error) {\n logger.error(\"Cancel Limit order error\", error);\n // allow to re-trigger cancellation after error (like UserCancelledError)\n cancelOrderMut.reset();\n }\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n\n let result: SubmitLimitOrderResult | undefined = limitOrderMut.data;\n if (result && limitOrderExecution.lastOrderState) {\n result = {\n ...result,\n limitOrder: {\n sentOrder: result.limitOrder.sentOrder,\n // lastOrderState may be CANCELLED here\n lastOrderState: limitOrderExecution.lastOrderState,\n },\n };\n }\n\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result,\n limitPrice,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useLimitOrderFlow.js","names":["useAccount","useChainId","assert","useEnsureTxReceipt","Address","Hash","TransactionReceipt","ApprovalFlowResult","SubmitTxResult","useCreateAndSubmitDeltaOrder","CreateAndSubmitDeltaOrderInput","useMinViemClient","useMutation","useRef","SupportedChainId","UserCancelledError","CallsSentObject","TxSentObject","useApproveOrPermit","useLogger","usePartner","useLimitDeadline","getOverallOrderStatus","useWatchDeltaAuction","useWidgetEvents","shouldApproveOrBatch","usePreSignAndSubmitDeltaOrder","BridgePrice","DEFAULT_DELTA_BRIDGE","useLimitReceiverAddressValue","useDepositAndSubmitDeltaOrder","isETHaddress","useCancelOrWithdrawAndCancelDeltaOrder","CancelDeltaOrdersReturn","DeltaAuctionWithOrder","CancelOrderStepKey","HALF_MINUTE_MS","useReferrer","limitOrderFlowType","UserDefinedLimitPrice","srcTokenAddress","destTokenAddress","srcAmount","destAmount","bridgePrice","UseLimitOrderFlowInput","limitPrice","SubmitLimitOrderResult","tradeFlowType","approve","limitOrder","sentOrder","lastOrderState","account","receiverAddress","OnTxSent","txSent","RunLimitOrderOptions","onTxSent","UseLimitOrderFlowResult","chainId","runLimitOrderFlow","options","Promise","reset","cancelFlow","retryFlow","cancelLimitOrder","approval","limitOrderSubmission","order","isPostingOrder","isCreatingOrder","isOrderSent","isPending","isError","isSuccess","error","Error","limitOrderExecution","isOrderPending","isOrderExecuting","isOrderExecuted","limitOrderCancelation","receipt","txHash","response","isCancelingOrder","isOrderCancellable","isOrderCanceled","step","result","LIMIT_ORDER_MUTATION_KEY","useLimitOrderFlow","logger","approveTxMut","events","approveOrPermitEvents","srcToken","spenderContractType","swapSide","tradeMode","address","minClient","createAndSubmitOrderMut","client","mutationOptions","onSuccess","log","onError","limitOrderCreateAndSubmit","deltaOrderPreSign","canBatchTxs","isConnectedToSafe","preSignAndSubmitDeltaOrder","resetPreSignAndSubmitDeltaOrder","viemClient","deltaOrderDeposit","resetDepositAndSubmitDeltaOrder","depositAndSubmitDeltaOrder","postingOrder","watchOrderExecution","orderId","id","refetchInterval","onAuctionSuccess","onAuctionFailure","onUpdatedAuction","orderStatus","data","isLoading","isRefetching","cancelOrderMut","cancelOrderResponse","ensureTxReceipt","currentAbortControllerRef","AbortController","current","abort","partner","referrerAddress","deadline","onLimitOrder","submitLimitOrder","abortController","signal","approveTxHash","approveTxReceipt","allowanceToSet","shouldDepositAndPreSign","shouldDoApprovalTxOrPermit","shouldDoApprovalTx","shouldPreSignBatch","signPermit","isPermitSupported","isPermitReadyToSign","onApproveTx","request","approveAsync","allowanceData","sent","throwIfAborted","approveTxReceiptPromise","hash","onReplaced","action","transactionHash","receiptPromise","transactionSpecificData","approvedAmount","tokenAddress","token","spenderAddress","spender","confirmed","txReceipt","failed","event","name","params","price","destChainId","bridge","destinationChainId","createOrderInput","type","orderInput","owner","beneficiary","destToken","deltaPrice","protocolSelector","protocolData","partnerFee","orderFromAPI","depositAmount","mutateAsync","cancelDeltaOrder","limitOrderMut","mutationFn","mutationKey","onSettled"],"sources":["../../../../src/hooks/swap/tradeFlow/useLimitOrderFlow.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type { ApprovalFlowResult, SubmitTxResult } from \"./common/types\";\nimport {\n useCreateAndSubmitDeltaOrder,\n type CreateAndSubmitDeltaOrderInput,\n} from \"../prices/delta/mutations/useCreateDeltaOrder\";\nimport { useMinViemClient } from \"@/hooks/useMinViemClient\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport type {\n CallsSentObject,\n TxSentObject,\n} from \"@/lib/utils/transactionHandlers\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\n\nimport { useLogger } from \"@/core/logger\";\n\nimport { usePartner } from \"@/hooks/usePartner\";\nimport { useLimitDeadline } from \"@/core/limit/state/deadlineAtom\";\n\nimport { getOverallOrderStatus } from \"../prices/delta/orders/utils\";\nimport { useWatchDeltaAuction } from \"../prices/delta/queries/useWatchDeltaOrder\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport {\n shouldApproveOrBatch,\n usePreSignAndSubmitDeltaOrder,\n} from \"./common/usePreSignAndSubmitDeltaOrder\";\nimport type { BridgePrice } from \"@velora-dex/sdk\";\nimport { DEFAULT_DELTA_BRIDGE } from \"../prices/delta/bridge/const\";\nimport { useLimitReceiverAddressValue } from \"@/core/limit/state/receiverAddressAtom\";\nimport { useDepositAndSubmitDeltaOrder } from \"./common/useDepositAndSubmitDeltaOrder\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { useCancelOrWithdrawAndCancelDeltaOrder } from \"../prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder\";\nimport type { CancelDeltaOrdersReturn } from \"../prices/delta/mutations/useCancelDeltaOrders\";\nimport type { DeltaAuctionWithOrder } from \"../prices/delta/orders/types\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { HALF_MINUTE_MS } from \"@/lib/constants/time\";\nimport { useReferrer } from \"@/hooks/useReferrer\";\n\nconst limitOrderFlowType = \"limitOrder\";\n\nexport type UserDefinedLimitPrice = {\n srcTokenAddress: string;\n destTokenAddress: string;\n srcAmount: string;\n destAmount: string;\n bridgePrice?: BridgePrice;\n};\n\nexport type UseLimitOrderFlowInput = {\n limitPrice?: UserDefinedLimitPrice;\n};\n\nexport type SubmitLimitOrderResult = {\n tradeFlowType: typeof limitOrderFlowType;\n approve: SubmitTxResult;\n limitOrder: {\n sentOrder: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n };\n limitPrice: UserDefinedLimitPrice;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject | CallsSentObject) => void;\n\ntype RunLimitOrderOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseLimitOrderFlowResult = {\n tradeFlowType: typeof limitOrderFlowType;\n chainId: SupportedChainId;\n runLimitOrderFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (\n options?: RunLimitOrderOptions\n ) => Promise<SubmitLimitOrderResult>; // reset and retry flow\n cancelLimitOrder: () => Promise<\n TransactionReceipt | CancelDeltaOrdersReturn | undefined\n >;\n approval: ApprovalFlowResult;\n limitOrderSubmission: {\n order?: DeltaAuctionWithOrder;\n isPostingOrder: boolean;\n isCreatingOrder: boolean;\n isOrderSent: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderExecution: {\n sentOrder?: DeltaAuctionWithOrder;\n lastOrderState?: DeltaAuctionWithOrder;\n isOrderPending: boolean;\n isOrderExecuting: boolean;\n isOrderExecuted: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n limitOrderCancelation: {\n receipt?: TransactionReceipt;\n txHash?: string;\n response?: CancelDeltaOrdersReturn;\n isCancelingOrder: boolean;\n isOrderCancellable: boolean;\n isOrderCanceled: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n step?: CancelOrderStepKey;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitLimitOrderResult;\n limitPrice?: UserDefinedLimitPrice;\n};\n\nconst LIMIT_ORDER_MUTATION_KEY = \"runLimitOrderFlow\";\n\nexport function useLimitOrderFlow({\n limitPrice,\n}: UseLimitOrderFlowInput): UseLimitOrderFlowResult {\n const logger = useLogger(\"LimitOrderFlow\");\n const chainId = useChainId();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 3. await Approve tx\n */\n\n const {\n approval,\n approveTxMut,\n events: approveOrPermitEvents,\n } = useApproveOrPermit({\n srcToken: limitPrice?.srcTokenAddress,\n srcAmount: limitPrice?.srcAmount,\n spenderContractType: \"ParaswapDelta\",\n swapSide: \"SELL\",\n tradeMode: \"limit\",\n chainId,\n });\n\n /* 4.1. Build and Submit Delta Order */\n\n const { address: account } = useAccount();\n\n const { minClient } = useMinViemClient({\n chainId,\n account,\n });\n\n const createAndSubmitOrderMut = useCreateAndSubmitDeltaOrder({\n chainId,\n account,\n client: minClient,\n mutationOptions: {\n onSuccess: (order) => {\n logger.log(\"Create Limit Order success\", order);\n },\n onError: (error) => {\n logger.error(\"Create Limit Order error\", error);\n },\n },\n });\n\n const limitOrderCreateAndSubmit: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order: createAndSubmitOrderMut.order,\n isCreatingOrder: createAndSubmitOrderMut.isCreatingOrder,\n isPostingOrder: createAndSubmitOrderMut.isPostingOrder,\n isOrderSent: createAndSubmitOrderMut.isOrderSent,\n isPending: createAndSubmitOrderMut.isPending,\n isError: createAndSubmitOrderMut.isError,\n isSuccess: createAndSubmitOrderMut.isSuccess,\n error: createAndSubmitOrderMut.error,\n };\n\n /* 4.2.\n 1. submit Batch tx (Approve + Delta pre-sign)\n 2. await Batch tx\n 3. post Pre-signed Order\n */\n\n const {\n deltaOrderPreSign,\n canBatchTxs,\n isConnectedToSafe,\n preSignAndSubmitDeltaOrder,\n reset: resetPreSignAndSubmitDeltaOrder,\n } = usePreSignAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n const {\n deltaOrderDeposit,\n reset: resetDepositAndSubmitDeltaOrder,\n depositAndSubmitDeltaOrder: depositAndSubmitDeltaOrder,\n } = useDepositAndSubmitDeltaOrder({\n chainId,\n account,\n logger,\n viemClient: minClient,\n });\n\n /* final Delta Order submission for step 4 */\n const limitOrderSubmission: UseLimitOrderFlowResult[\"limitOrderSubmission\"] =\n {\n order:\n limitOrderCreateAndSubmit.order ||\n deltaOrderPreSign.order ||\n deltaOrderDeposit.order,\n isPostingOrder:\n limitOrderCreateAndSubmit.isPostingOrder ||\n deltaOrderPreSign.postingOrder.isPostingOrder ||\n deltaOrderDeposit.postingOrder.isPostingOrder,\n isCreatingOrder:\n limitOrderCreateAndSubmit.isCreatingOrder ||\n deltaOrderPreSign.isCreatingOrder ||\n deltaOrderDeposit.isCreatingOrder,\n isOrderSent:\n limitOrderCreateAndSubmit.isOrderSent ||\n deltaOrderPreSign.isOrderSent ||\n deltaOrderDeposit.isOrderSent,\n isPending:\n limitOrderCreateAndSubmit.isPending ||\n deltaOrderPreSign.isPending ||\n deltaOrderDeposit.isPending,\n isError:\n limitOrderCreateAndSubmit.isError ||\n deltaOrderPreSign.isError ||\n deltaOrderDeposit.isError,\n isSuccess:\n limitOrderCreateAndSubmit.isSuccess ||\n deltaOrderPreSign.isSuccess ||\n deltaOrderDeposit.isSuccess,\n error:\n limitOrderCreateAndSubmit.error ||\n deltaOrderPreSign.error ||\n deltaOrderDeposit.error,\n };\n\n const watchOrderExecution = useWatchDeltaAuction<DeltaAuctionWithOrder>({\n orderId: limitOrderSubmission.order?.id,\n refetchInterval: HALF_MINUTE_MS,\n onAuctionSuccess: (order) => {\n logger.log(\"Limit Order success\", order);\n },\n onAuctionFailure: (order) => {\n logger.log(\"Limit Order failure\", order);\n },\n onUpdatedAuction: (order) => {\n logger.log(\"Limit Order updated\", order);\n },\n });\n\n const orderStatus = watchOrderExecution.data\n ? getOverallOrderStatus(watchOrderExecution.data)\n : null;\n\n const limitOrderExecution: UseLimitOrderFlowResult[\"limitOrderExecution\"] = {\n sentOrder: limitOrderSubmission.order,\n lastOrderState: watchOrderExecution.data,\n isOrderPending: orderStatus === \"pending\",\n isOrderExecuting: orderStatus === \"executing\",\n isOrderExecuted: orderStatus === \"confirmed\",\n isPending:\n watchOrderExecution.isLoading ||\n watchOrderExecution.isRefetching ||\n orderStatus === \"pending\" ||\n orderStatus === \"executing\",\n isError: watchOrderExecution.isError || orderStatus === \"failed\",\n isSuccess: orderStatus === \"confirmed\",\n error: watchOrderExecution.error,\n };\n\n const cancelOrderMut = useCancelOrWithdrawAndCancelDeltaOrder({\n // supply the must up-to-date order for cancellation\n order: limitOrderExecution.lastOrderState || limitOrderExecution.sentOrder,\n chainId,\n account,\n client: minClient,\n logger,\n });\n\n const limitOrderCancelation: UseLimitOrderFlowResult[\"limitOrderCancelation\"] =\n {\n receipt: cancelOrderMut.receipt,\n txHash: cancelOrderMut.txHash,\n response: cancelOrderMut.cancelOrderResponse,\n isCancelingOrder: cancelOrderMut.isPending,\n isOrderCancellable: cancelOrderMut.isOrderCancellable,\n isOrderCanceled: cancelOrderMut.isSuccess,\n isPending: cancelOrderMut.isPending,\n isError: cancelOrderMut.isError,\n isSuccess: cancelOrderMut.isSuccess,\n error: cancelOrderMut.error,\n step: cancelOrderMut.step,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const { partner } = usePartner();\n const { referrerAddress } = useReferrer();\n const receiverAddress = useLimitReceiverAddressValue();\n const deadline = useLimitDeadline();\n\n const { onLimitOrder } = useWidgetEvents();\n\n const submitLimitOrder = async ({\n onTxSent,\n }: RunLimitOrderOptions = {}): Promise<SubmitLimitOrderResult> => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n\n // no sense in starting flow without a price data,\n // Otherwise this flow will be stopped by disabling ReviewOrder button in the first place\n assert(limitPrice, \"Limit price data is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the synchronously available price\n const allowanceToSet = approval.allowanceToSet;\n\n const shouldDepositAndPreSign =\n // @TODO [depositNativeAndPreSign] ensureDeltaEthBalance and compare with price.srcAmount to skip the deposit,\n // or deposit the difference between user dETH balance and price.srcAmount to avoid unnecessary deposits\n isETHaddress(limitPrice.srcTokenAddress);\n\n /* \n if connected to Safe, or needs to approve a token with a tx, or needs to pre-wrap ETH\n and can batch txs, then pre-sign the batch;\n that way Safe does only one action (wrapETH?+Approve+setPreSignature batch tx)\n and a wallet that would otherwise potentially wrap ETH and then Approve Token (tx, no Permit for Limit Orders)\n and then sign Order, basically has to make at least one tx, does only one action as well.\n */\n const {\n shouldDoApprovalTxOrPermit: shouldDoApprovalTx,\n shouldPreSignBatch,\n } = shouldApproveOrBatch({\n approval,\n signPermit: {\n isPermitSupported: false,\n isPermitReadyToSign: false,\n },\n canBatchTxs,\n isConnectedToSafe,\n });\n\n try {\n if (shouldDoApprovalTx && allowanceToSet) {\n try {\n approveOrPermitEvents.onApproveTx.request({ allowanceToSet });\n\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n approveOrPermitEvents.onApproveTx.sent({\n allowanceToSet,\n txHash: approveTxHash,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n action: \"approve\",\n transactionHash: approveTxHash,\n receiptPromise: approveTxReceiptPromise,\n transactionSpecificData: {\n action: \"approve\",\n approvedAmount: allowanceToSet,\n tokenAddress: approval.token as Address,\n spenderAddress: approval.spender as Address,\n },\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n approveOrPermitEvents.onApproveTx.confirmed({\n allowanceToSet,\n txHash: approveTxHash,\n txReceipt: approveTxReceipt,\n });\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n } catch (error) {\n approveOrPermitEvents.onApproveTx.failed({\n allowanceToSet,\n error: error as Error,\n txHash: approveTxHash, // won't necessarily be available\n });\n throw error;\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n\n assert(limitPrice, \"limitPrice is not available\");\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:request\",\n params: {\n price: limitPrice,\n },\n },\n });\n const bridgePrice = limitPrice.bridgePrice;\n const destChainId = bridgePrice?.bridge.destinationChainId;\n\n let createOrderInput: CreateAndSubmitDeltaOrderInput;\n if (bridgePrice) {\n // crosschain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n destToken: limitPrice.destTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n ...bridgePrice,\n bridge: {\n ...bridgePrice.bridge,\n protocolSelector: DEFAULT_DELTA_BRIDGE.protocolSelector,\n protocolData: DEFAULT_DELTA_BRIDGE.protocolData,\n },\n partner,\n partnerFee: 0,\n },\n partner,\n\n deadline,\n },\n };\n } else {\n // singlechain order\n createOrderInput = {\n signal,\n type: \"LIMIT\",\n referrerAddress,\n orderInput: {\n owner: account,\n beneficiary: receiverAddress,\n srcToken: limitPrice.srcTokenAddress,\n srcAmount: limitPrice.srcAmount,\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n destChainId,\n deltaPrice: {\n destToken: limitPrice.destTokenAddress,\n destAmount: limitPrice.destAmount,\n srcAmount: limitPrice.srcAmount,\n bridge: DEFAULT_DELTA_BRIDGE,\n partner,\n partnerFee: 0,\n },\n partner,\n deadline,\n },\n };\n }\n\n let orderFromAPI: DeltaAuctionWithOrder;\n\n if (shouldDepositAndPreSign) {\n const depositAmount = createOrderInput.orderInput.srcAmount;\n // deposit ETH + depositTx + POST order\n orderFromAPI = await depositAndSubmitDeltaOrder({\n createOrderInput,\n depositAmount,\n onTxSent,\n });\n } else if (shouldPreSignBatch) {\n // creating signing and POSTing the Order all together in one mutation\n // prepare Order for pre-signing and POSTing:\n // 1. builds the order\n // 2. hashes the built order\n // 3. construct DeltaContract.setPreSignature(orderHash, true) tx calldata\n\n orderFromAPI = await preSignAndSubmitDeltaOrder({\n createOrderInput,\n approval,\n onTxSent,\n });\n } else {\n orderFromAPI =\n await createAndSubmitOrderMut.mutateAsync(createOrderInput);\n }\n\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:sent\",\n params: {\n price: limitPrice,\n order: orderFromAPI,\n },\n },\n });\n\n return {\n tradeFlowType: limitOrderFlowType,\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n limitOrder: {\n sentOrder: orderFromAPI,\n },\n limitPrice: limitPrice,\n account,\n receiverAddress,\n };\n } catch (error) {\n logger.error(\"Order submission error\", error);\n onLimitOrder?.({\n event: {\n name: \"LimitOrder:failed\",\n params: {\n price: limitPrice,\n error: error as Error,\n },\n },\n });\n throw error;\n }\n };\n\n const cancelLimitOrder = async () => {\n try {\n return await cancelOrderMut.cancelDeltaOrder();\n } catch (error) {\n logger.error(\"Cancel Limit order error\", error);\n // allow to re-trigger cancellation after error (like UserCancelledError)\n cancelOrderMut.reset();\n }\n };\n\n const limitOrderMut = useMutation({\n mutationFn: submitLimitOrder,\n mutationKey: [LIMIT_ORDER_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Order submission success\", data);\n },\n onError: (error) => {\n logger.error(\"Order submission error\", error);\n },\n onSettled: () => {\n logger.log(\"Order submission settled\");\n },\n });\n\n const runLimitOrderFlow = limitOrderMut.mutateAsync;\n\n const reset = () => {\n approveTxMut.reset();\n createAndSubmitOrderMut.reset();\n limitOrderMut.reset();\n cancelOrderMut.reset();\n resetPreSignAndSubmitDeltaOrder();\n resetDepositAndSubmitDeltaOrder();\n };\n\n const retryFlow = (\n options?: RunLimitOrderOptions\n ): Promise<SubmitLimitOrderResult> => {\n reset();\n return runLimitOrderFlow(options);\n };\n\n /* 5. return result */\n\n let result: SubmitLimitOrderResult | undefined = limitOrderMut.data;\n if (result && limitOrderExecution.lastOrderState) {\n result = {\n ...result,\n limitOrder: {\n sentOrder: result.limitOrder.sentOrder,\n // lastOrderState may be CANCELLED here\n lastOrderState: limitOrderExecution.lastOrderState,\n },\n };\n }\n\n return {\n tradeFlowType: limitOrderFlowType,\n chainId,\n runLimitOrderFlow,\n reset,\n cancelFlow,\n retryFlow,\n cancelLimitOrder,\n approval,\n limitOrderSubmission,\n limitOrderExecution,\n limitOrderCancelation,\n // deltaOrderMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: limitOrderMut.isPending,\n isSuccess: limitOrderSubmission.isSuccess, // approval is an optional step\n isError: limitOrderMut.isError,\n error: limitOrderMut.error,\n result,\n limitPrice,\n };\n}\n"],"mappings":"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"}
|