@velora-dex/widget 0.4.13 → 0.4.14-dev.2
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/ui/button.d.ts +1 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +1 -0
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
- 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 +2 -1
- package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js +2 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +44 -26
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Duration/Duration.d.ts +1 -1
- package/dist/components/widget/Duration/Duration.d.ts.map +1 -1
- package/dist/components/widget/Duration/Duration.js +1 -4
- package/dist/components/widget/Duration/Duration.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts +2 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +9 -7
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.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 +2 -2
- package/dist/components/widget/LimitOrderItem/utils.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.js +25 -9
- package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
- package/dist/components/widget/NumberInput/NumberInput.d.ts +18 -0
- package/dist/components/widget/NumberInput/NumberInput.d.ts.map +1 -0
- package/dist/components/widget/NumberInput/NumberInput.js +255 -0
- package/dist/components/widget/NumberInput/NumberInput.js.map +1 -0
- package/dist/components/widget/NumberInput/assets/arrow-down.svg.js +12 -0
- package/dist/components/widget/NumberInput/assets/arrow-down.svg.js.map +1 -0
- package/dist/components/widget/NumberInput/assets/arrow-up.svg.js +12 -0
- package/dist/components/widget/NumberInput/assets/arrow-up.svg.js.map +1 -0
- package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +8 -4
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.d.ts +2 -1
- package/dist/components/widget/SwapRate/SwapRate.d.ts.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.js +29 -20
- package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +77 -86
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js +28 -46
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/constants.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/constants.js +2 -1
- package/dist/components/widget/TradeOverview/TradeComplete/constants.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +105 -72
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js +46 -11
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewScreen.d.ts +7 -2
- package/dist/components/widget/TradeOverview/TradeOverviewScreen.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewScreen.js +19 -7
- package/dist/components/widget/TradeOverview/TradeOverviewScreen.js.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +15 -0
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js +241 -0
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -0
- package/dist/components/widget/TradeOverview/steps.d.ts +37 -0
- package/dist/components/widget/TradeOverview/steps.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/steps.js +10 -1
- package/dist/components/widget/TradeOverview/steps.js.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts +2 -2
- package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/swapAmounts.d.ts +14 -0
- package/dist/components/widget/TradeOverview/utils/swapAmounts.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/utils/swapAmounts.js +43 -0
- package/dist/components/widget/TradeOverview/utils/swapAmounts.js.map +1 -0
- package/dist/components/widget/Twap/OrderDuration.d.ts +2 -0
- package/dist/components/widget/Twap/OrderDuration.d.ts.map +1 -0
- package/dist/components/widget/Twap/OrderDuration.js +75 -0
- package/dist/components/widget/Twap/OrderDuration.js.map +1 -0
- package/dist/components/widget/Twap/OrderSplit.d.ts +2 -0
- package/dist/components/widget/Twap/OrderSplit.d.ts.map +1 -0
- package/dist/components/widget/Twap/OrderSplit.js +57 -0
- package/dist/components/widget/Twap/OrderSplit.js.map +1 -0
- package/dist/components/widget/Twap/RateProtection.d.ts +2 -0
- package/dist/components/widget/Twap/RateProtection.d.ts.map +1 -0
- package/dist/components/widget/Twap/RateProtection.js +57 -0
- package/dist/components/widget/Twap/RateProtection.js.map +1 -0
- package/dist/components/widget/Twap/TwapDetailWithTooltip.d.ts +3 -0
- package/dist/components/widget/Twap/TwapDetailWithTooltip.d.ts.map +1 -0
- package/dist/components/widget/Twap/TwapDetailWithTooltip.js +33 -0
- package/dist/components/widget/Twap/TwapDetailWithTooltip.js.map +1 -0
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/configurator/components/TradeModesSelector.d.ts.map +1 -1
- package/dist/core/TradeFlowScreenButton.d.ts +5 -0
- package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
- package/dist/core/TradeFlowScreenButton.js +58 -1
- package/dist/core/TradeFlowScreenButton.js.map +1 -1
- package/dist/core/TwapDetails.d.ts +2 -0
- package/dist/core/TwapDetails.d.ts.map +1 -0
- package/dist/core/TwapDetails.js +24 -0
- package/dist/core/TwapDetails.js.map +1 -0
- package/dist/core/across/isCrosschainPossible.d.ts.map +1 -1
- package/dist/core/across/isCrosschainPossible.js +1 -1
- package/dist/core/across/isCrosschainPossible.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts +1 -0
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +71 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +199 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/state/common.d.ts +2 -0
- package/dist/core/inputs/state/common.d.ts.map +1 -1
- package/dist/core/inputs/state/common.js +40 -4
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js +2 -2
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/limit/state/utils.d.ts +1 -1
- package/dist/core/limit/useLimitRate.d.ts.map +1 -1
- package/dist/core/limit/useLimitRate.js +0 -2
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/state/chainToAtom.d.ts +2 -0
- package/dist/core/state/chainToAtom.d.ts.map +1 -1
- package/dist/core/state/chainToAtom.js +28 -7
- package/dist/core/state/chainToAtom.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/tradeModeAtom.d.ts +1 -1
- package/dist/core/state/tradeModeAtom.d.ts.map +1 -1
- package/dist/core/state/tradeModeAtom.js.map +1 -1
- package/dist/core/state/widgetEventsAtom.d.ts.map +1 -1
- package/dist/core/state/widgetEventsAtom.js +55 -33
- package/dist/core/state/widgetEventsAtom.js.map +1 -1
- package/dist/core/twap/state/constants.d.ts +15 -0
- package/dist/core/twap/state/constants.d.ts.map +1 -0
- package/dist/core/twap/state/constants.js +19 -0
- package/dist/core/twap/state/constants.js.map +1 -0
- package/dist/core/twap/state/currentTwapInputAtom.d.ts +4 -0
- package/dist/core/twap/state/currentTwapInputAtom.d.ts.map +1 -0
- package/dist/core/twap/state/currentTwapInputAtom.js +6 -0
- package/dist/core/twap/state/currentTwapInputAtom.js.map +1 -0
- package/dist/core/twap/state/isCrosschainAtom.d.ts +3 -0
- package/dist/core/twap/state/isCrosschainAtom.d.ts.map +1 -0
- package/dist/core/twap/state/isCrosschainAtom.js +16 -0
- package/dist/core/twap/state/isCrosschainAtom.js.map +1 -0
- package/dist/core/twap/state/selectedTokenActionsAtom.d.ts +13 -0
- package/dist/core/twap/state/selectedTokenActionsAtom.d.ts.map +1 -0
- package/dist/core/twap/state/selectedTokenActionsAtom.js +198 -0
- package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -0
- package/dist/core/twap/state/twapInputAmountAtom.d.ts +9 -0
- package/dist/core/twap/state/twapInputAmountAtom.d.ts.map +1 -0
- package/dist/core/twap/state/twapInputAmountAtom.js +21 -0
- package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -0
- package/dist/core/twap/state/twapParamsAtom.d.ts +16 -0
- package/dist/core/twap/state/twapParamsAtom.d.ts.map +1 -0
- package/dist/core/twap/state/twapParamsAtom.js +22 -0
- package/dist/core/twap/state/twapParamsAtom.js.map +1 -0
- package/dist/core/twap/state/twapReceiverAddressAtom.d.ts +5 -0
- package/dist/core/twap/state/twapReceiverAddressAtom.d.ts.map +1 -0
- package/dist/core/twap/state/twapReceiverAddressAtom.js +10 -0
- package/dist/core/twap/state/twapReceiverAddressAtom.js.map +1 -0
- package/dist/core/twap/state/twapSideAtom.d.ts +4 -0
- package/dist/core/twap/state/twapSideAtom.d.ts.map +1 -0
- package/dist/core/twap/state/twapSideAtom.js +19 -0
- package/dist/core/twap/state/twapSideAtom.js.map +1 -0
- package/dist/core/twap/state/twapTokenAtoms.d.ts +10 -0
- package/dist/core/twap/state/twapTokenAtoms.d.ts.map +1 -0
- package/dist/core/twap/state/twapTokenAtoms.js +17 -0
- package/dist/core/twap/state/twapTokenAtoms.js.map +1 -0
- package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +12 -0
- package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -0
- package/dist/core/twap/twapDetails/minimumReceiveable.js +44 -0
- package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -0
- package/dist/core/twap/useTwapDetailsListProps.d.ts +3 -0
- package/dist/core/twap/useTwapDetailsListProps.d.ts.map +1 -0
- package/dist/core/twap/useTwapDetailsListProps.js +109 -0
- package/dist/core/twap/useTwapDetailsListProps.js.map +1 -0
- package/dist/core/twap/useTwapTokenFromInputProps.d.ts +9 -0
- package/dist/core/twap/useTwapTokenFromInputProps.d.ts.map +1 -0
- package/dist/core/twap/useTwapTokenFromInputProps.js +455 -0
- package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -0
- package/dist/core/twap/useTwapTokenSwitcherProps.d.ts +3 -0
- package/dist/core/twap/useTwapTokenSwitcherProps.d.ts.map +1 -0
- package/dist/core/twap/useTwapTokenSwitcherProps.js +38 -0
- package/dist/core/twap/useTwapTokenSwitcherProps.js.map +1 -0
- package/dist/core/twap/useTwapTokenToInputProps.d.ts +9 -0
- package/dist/core/twap/useTwapTokenToInputProps.d.ts.map +1 -0
- package/dist/core/twap/useTwapTokenToInputProps.js +271 -0
- package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -0
- package/dist/events/effects/formInput.d.ts +3 -0
- package/dist/events/effects/formInput.d.ts.map +1 -1
- package/dist/events/effects/formInput.js +17 -1
- package/dist/events/effects/formInput.js.map +1 -1
- package/dist/events/getters/twap.d.ts +6 -0
- package/dist/events/getters/twap.d.ts.map +1 -0
- package/dist/events/getters/twap.js +65 -0
- package/dist/events/getters/twap.js.map +1 -0
- package/dist/events/getters/widgetState.d.ts.map +1 -1
- package/dist/events/getters/widgetState.js +3 -1
- package/dist/events/getters/widgetState.js.map +1 -1
- package/dist/events/hooks/useActivateEffects.d.ts.map +1 -1
- package/dist/events/hooks/useActivateEffects.js +2 -1
- package/dist/events/hooks/useActivateEffects.js.map +1 -1
- package/dist/events/types/common.d.ts +6 -0
- package/dist/events/types/common.d.ts.map +1 -1
- package/dist/events/types/formInput.d.ts +11 -2
- package/dist/events/types/formInput.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +4 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/events/types/limit.d.ts +2 -2
- package/dist/events/types/limit.d.ts.map +1 -1
- package/dist/events/types/swap.d.ts +3 -2
- package/dist/events/types/swap.d.ts.map +1 -1
- package/dist/events/types/twap.d.ts +26 -0
- package/dist/events/types/twap.d.ts.map +1 -0
- package/dist/hooks/batch/useSendBatchTx.d.ts +1 -1
- package/dist/hooks/batch/useSendBatchTx.d.ts.map +1 -1
- package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
- package/dist/hooks/permit/utils/deadlines.d.ts +2 -2
- package/dist/hooks/permit/utils/deadlines.d.ts.map +1 -1
- package/dist/hooks/permit/utils/deadlines.js +4 -4
- package/dist/hooks/permit/utils/deadlines.js.map +1 -1
- package/dist/hooks/swap/prices/constants.d.ts +1 -0
- package/dist/hooks/swap/prices/constants.d.ts.map +1 -1
- package/dist/hooks/swap/prices/constants.js +2 -1
- package/dist/hooks/swap/prices/constants.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.d.ts +19 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js +86 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +37 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +164 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.d.ts +69 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js +278 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +15 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +89 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.d.ts +60 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js +325 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts +18 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +87 -0
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -0
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts +10 -1
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts +2 -5
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts +2 -3
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +6 -6
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +3 -3
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +3 -15
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts +4 -5
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +17 -6
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.js +34 -2
- package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts +11 -46
- 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/types.d.ts +6 -5
- package/dist/hooks/swap/prices/delta/orders/unposted/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +67 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +24 -6
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +17 -10
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +32 -4
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts +5 -6
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +7 -7
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +37 -35
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +14 -17
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/utils.d.ts +1 -0
- package/dist/hooks/swap/prices/delta/queries/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/utils.js +8 -1
- package/dist/hooks/swap/prices/delta/queries/utils.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +37 -35
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.d.ts.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +3 -4
- 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 +0 -2
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +16 -0
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -0
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js +73 -0
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -0
- package/dist/hooks/swap/prices/useTwapPrices.d.ts +28 -0
- package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -0
- package/dist/hooks/swap/prices/useTwapPrices.js +175 -0
- package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +48 -0
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +71 -0
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts +50 -0
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js +94 -0
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/common/types.d.ts +4 -2
- package/dist/hooks/swap/tradeFlow/common/types.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts +1 -0
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +57 -55
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts +6 -6
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js +263 -152
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts +7 -7
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +296 -181
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts +2 -1
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js +85 -83
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +8 -9
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +4 -3
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +5 -6
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +5 -9
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +88 -0
- package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js +591 -0
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -0
- package/dist/hooks/swap/tradeFlow/useTwapSwapStep.d.ts +25 -0
- package/dist/hooks/swap/tradeFlow/useTwapSwapStep.d.ts.map +1 -0
- package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js +237 -0
- package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js.map +1 -0
- package/dist/hooks/useSDK.d.ts +4 -4
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js +4 -4
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSlippage.d.ts.map +1 -1
- package/dist/hooks/useSlippage.js +2 -1
- package/dist/hooks/useSlippage.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/constants/delta.d.ts.map +1 -1
- package/dist/lib/constants/delta.js +1 -1
- package/dist/lib/constants/delta.js.map +1 -1
- package/dist/lib/constants/time.d.ts +1 -0
- package/dist/lib/constants/time.d.ts.map +1 -1
- package/dist/lib/constants/time.js +2 -1
- package/dist/lib/constants/time.js.map +1 -1
- package/dist/lib/queryClient.js +2 -2
- package/dist/lib/queryClient.js.map +1 -1
- package/dist/lib/tradeMode.d.ts +1 -1
- package/dist/lib/tradeMode.d.ts.map +1 -1
- package/dist/lib/tradeMode.js +1 -1
- package/dist/lib/tradeMode.js.map +1 -1
- package/dist/lib/utils/index.d.ts +8 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +18 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/time.d.ts +2 -0
- package/dist/lib/utils/time.d.ts.map +1 -1
- package/dist/lib/utils/time.js +7 -1
- package/dist/lib/utils/time.js.map +1 -1
- package/dist/lib/utils/toasts.d.ts +4 -4
- 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 +17 -0
- package/dist/lib/utils/twap.d.ts.map +1 -0
- package/dist/lib/utils/twap.js +34 -0
- package/dist/lib/utils/twap.js.map +1 -0
- package/dist/lib/web3/privy/config.js +1 -1
- package/dist/lib/web3/privy/config.js.map +1 -1
- package/dist/lib/web3/wagmi/config.js +1 -1
- package/dist/lib/web3/wagmi/config.js.map +1 -1
- package/dist/styles.css +63 -2
- package/dist/tokens/constants.d.ts.map +1 -1
- package/dist/tokens/constants.js +9 -9
- package/dist/tokens/constants.js.map +1 -1
- package/dist/tokens/defaultTokens.d.ts.map +1 -1
- package/dist/tokens/defaultTokens.js +21 -18
- package/dist/tokens/defaultTokens.js.map +1 -1
- package/dist/tokens/lists/constants.d.ts +1 -1
- package/dist/tokens/lists/constants.d.ts.map +1 -1
- package/dist/tokens/lists/constants.js +1 -1
- package/dist/tokens/lists/constants.js.map +1 -1
- package/dist/transactions/types.d.ts +3 -3
- package/dist/transactions/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport {\n enabledTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use enabledTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const enabledTradeModes = get.peek(enabledTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\" && selectedForm !== \"limit\") {\n // swap and limit forms support crosschain,\n // force destChainId = srcChainId for any other form\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n let side = formInputProps.side;\n if (isValidSide(side)) {\n set(currentSwapInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n if (selectedForm === \"swap\") {\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current swap side if both or none amounts are given\n side = get.peek(swapSideAtom);\n }\n } else {\n // fallback to current swap side for non-swap forms\n side = get.peek(swapSideAtom);\n }\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n // given a valid sendAmount\n sendAmount &&\n Number(sendAmount) >= 0 &&\n // and the form is a swap with side=sell or limit or otc\n (isSwapWithSell || isLimitOrOtc)\n ) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (\n // given a valid receiveAmount\n receiveAmount &&\n Number(receiveAmount) >= 0 &&\n // and the form is a swap with side=buy or limit or otc\n (isSwapWithBuy || isLimitOrOtc)\n ) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModesFromConfigAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSwapInputAtom","sideToInputType","swapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport {\n enabledTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use enabledTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const enabledTradeModes = get.peek(enabledTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\" && selectedForm !== \"limit\") {\n // swap and limit forms support crosschain,\n // force destChainId = srcChainId for any other form\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n let side = formInputProps.side;\n if (isValidSide(side)) {\n set(currentSwapInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n if (selectedForm === \"swap\") {\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current swap side if both or none amounts are given\n side = get.peek(swapSideAtom);\n }\n } else {\n // fallback to current swap side for non-swap forms\n side = get.peek(swapSideAtom);\n }\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n // given a valid sendAmount\n sendAmount &&\n Number(sendAmount) >= 0 &&\n // and the form is a swap with side=sell or limit or otc\n (isSwapWithSell || isLimitOrOtc)\n ) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (\n // given a valid receiveAmount\n receiveAmount &&\n Number(receiveAmount) >= 0 &&\n // and the form is a swap with side=buy or limit or otc\n (isSwapWithBuy || isLimitOrOtc)\n ) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModesFromConfigAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tradeModeAtom","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSwapInputAtom","sideToInputType","swapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare function getClosestTimeUnit(timestampS: number): {
|
|
|
6
6
|
readonly label: "never";
|
|
7
7
|
readonly value: 0;
|
|
8
8
|
} | {
|
|
9
|
-
label: "minutes" | "
|
|
9
|
+
label: "minutes" | "hours" | "days" | "months";
|
|
10
10
|
value: number;
|
|
11
11
|
};
|
|
12
12
|
export declare function calculateReceiveAmount(payAmount: string, priceRates: PriceRates, isReversed: boolean): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAkDlD,eAAO,MAAM,yBAAyB,GAAI,0CAIvC;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;CAC5B;;;;CAwCA,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,kBAoHF,CAAC"}
|
|
@@ -67,7 +67,6 @@ const useSwapPriceForLimit = (t0) => {
|
|
|
67
67
|
t6 = {
|
|
68
68
|
priceParams: priceParamsWithAmount,
|
|
69
69
|
chainId,
|
|
70
|
-
timeout: 5e3,
|
|
71
70
|
query: t5
|
|
72
71
|
};
|
|
73
72
|
$[8] = chainId;
|
|
@@ -158,7 +157,6 @@ const useDeltaSwapPriceForLimit = (t0) => {
|
|
|
158
157
|
priceParams: t4,
|
|
159
158
|
chainId,
|
|
160
159
|
destChainId,
|
|
161
|
-
timeout: 5e3,
|
|
162
160
|
query: t5
|
|
163
161
|
};
|
|
164
162
|
$[8] = chainId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitRate.js","sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport { parseUnits, formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tradeModeToTokenAtoms } from \"../inputs/state/common\";\nimport { useMemo } from \"react\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n// 5 min, so as not to change limit price in front of the user too often\nconst PRICE_REFETCH_INTERVAL = 60_000 * 5;\n\nconst useSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = PRICE_REFETCH_INTERVAL,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const tokenFrom = useAtomValue(\n tradeModeToTokenAtoms[tradeMode].tokenFromAtom\n );\n const { priceParams, chainId } = usePricesParams(tradeMode);\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n amount: parseUnits(\"1\", tokenFrom.decimals).toString(),\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // @TODO: delta price return quote for less tokens than market price with srcAmount=1,\n // but maybe we should increase srcAmount and use delta prices instead, need to test.\n const { result: marketPriceQuery } = useMarketPriceQuery({\n priceParams: priceParamsWithAmount,\n chainId,\n timeout: 5000,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: marketPriceQuery.data,\n isLoading: marketPriceQuery.isLoading,\n };\n};\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const { priceParams, chainId, destChainId, isCrossChain } =\n usePricesParams(tradeMode);\n\n // should fetch delta price for crosschain limit order?\n const queryEnabled = enabled && tradeMode === \"limit\";\n\n const crosschainPriceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ...priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n const isLimitOrder = tradeMode === \"limit\";\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : undefined;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n },\n chainId,\n destChainId,\n timeout: 5000,\n query: {\n enabled: queryEnabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { data: tokenFromPrice, isLoading: isTokenFromPriceLoading } =\n useTokenPrice(tokenFrom, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n // for crosschain limit orders, use the delta price query to correctly set the starting price,\n // accounting for bridge fees, because ex. 1USDC=1USDT will never be possible\n const isCrosschainLOrder =\n tradeMode === \"limit\" && tokenTo && tokenTo.network !== tokenFrom.network;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice =\n !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({\n enabled: fetchSwapPrice,\n tradeMode,\n });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({\n enabled: isCrosschainLOrder,\n tradeMode,\n });\n\n const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading: isNonDeltaLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder) {\n if (!deltaCrosschainPrice) {\n return { isLoading: isDeltaCrosschainPriceLoading };\n }\n const srcUnits = formatUnits(\n BigInt(deltaCrosschainPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaCrosschainPrice.receivedDestAmount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n // for Crosschain price we care only about its loading state, not all others\n isLoading: isDeltaCrosschainPriceLoading,\n };\n } else if (fiatPricesAvailable) {\n if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\n }\n } else if (swapPrice) {\n const srcUnits = formatUnits(\n BigInt(swapPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n BigInt(swapPrice.destAmount),\n tokenTo.decimals\n );\n\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n if (!rate || !rateReversed) {\n return { isLoading: isNonDeltaLoading };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading: isNonDeltaLoading,\n };\n }, [\n fiatPricesAvailable,\n isNonDeltaLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\n isCrosschainLOrder,\n deltaCrosschainPrice,\n isDeltaCrosschainPriceLoading,\n ]);\n};\n"],"names":["PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","useAtomValue","tradeModeToTokenAtoms","tokenFromAtom","priceParams","chainId","usePricesParams","t3","decimals","parseUnits","toString","t4","amount","side","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","timeout","query","result","marketPriceQuery","useMarketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","deltaPriceQuery","useDeltaPriceQuery","error","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":";;;;;;;;;;;AAgBA,MAAMA,yBAAyB,GAAA,GAAS,CAAA;AAExC,MAAMC,uBAAuBC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,OAAAA,EAAAC,EAAAA;AAAAA,IAAAC,eAAAA,EAAAC,EAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAAP,EAAAA;AAC5B,EAAA,MAAAG,OAAAA,GAAAC,EAAAA,KAAAI,MAAAA,GAAA,IAAA,GAAAJ,EAAAA;AACA,EAAA,MAAAC,eAAAA,GAAAC,EAAAA,KAAAE,MAAAA,GAAAV,sBAAAA,GAAAQ,EAAAA;AAOA,EAAA,MAAAG,SAAAA,GAAkBC,YAAAA,CAChBC,qBAAAA,CAAsBJ,SAAS,EAACK,aAClC,CAAA;AACA,EAAA,MAAA;AAAA,IAAAC,WAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAiCC,gBAAgBR,SAAS,CAAA;AAAE,EAAA,IAAAS,EAAAA;AAAA,EAAA,IAAAf,CAAAA,CAAA,CAAA,CAAA,KAAAQ,SAAAA,CAAAQ,QAAAA,EAAA;AAIlDD,IAAAA,EAAAA,GAAAE,UAAAA,CAAW,GAAA,EAAKT,SAAAA,CAASQ,QAAS,EAACE,QAAAA,EAAU;AAAClB,IAAAA,CAAAA,CAAA,CAAA,IAAAQ,SAAAA,CAAAQ,QAAAA;AAAAhB,IAAAA,CAAAA,MAAAe,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAf,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAmB,EAAAA;AAAA,EAAA,IAAAnB,EAAA,CAAA,CAAA,KAAAY,eAAAZ,CAAAA,QAAAe,EAAAA,EAAA;AAFRI,IAAAA,EAAAA,GAAA;AAAA,MAAA,GAC3CP,WAAAA;AAAAA,MAAWQ,MAAAA,EACNL,EAAAA;AAAAA,MAA8CM,IAAAA,EAChD,MAAA;AAAA,MAAeC,iBAAAA,EACF;AAAA,KACrB;AAACtB,IAAAA,CAAAA,MAAAY,WAAAA;AAAAZ,IAAAA,CAAAA,MAAAe,EAAAA;AAAAf,IAAAA,CAAAA,MAAAmB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAnB,EAAA,CAAA,CAAA;AAAA,EAAA;AALD,EAAA,MAAAuB,qBAAAA,GAAgDJ,EAAAA;AAK9C,EAAA,IAAAK,EAAAA;AAAA,EAAA,IAAAxB,EAAA,CAAA,CAAA,KAAAE,WAAAF,CAAAA,QAAAI,eAAAA,EAAA;AAQOoB,IAAAA,EAAAA,GAAA;AAAA,MAAAtB,OAAAA;AAAAA,MAAAE,eAAAA;AAAAA,MAAAqB,KAAAA,EAGE,KAAA;AAAA,MAAKC,oBAAAA,EACU,KAAA;AAAA,MAAKC,cAAAA,EACX;AAAA,KAClB;AAAC3B,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAI,eAAAA;AAAAJ,IAAAA,CAAAA,MAAAwB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAxB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA4B,EAAAA;AAAA,EAAA,IAAA5B,CAAAA,CAAA,CAAA,CAAA,KAAAa,OAAAA,IAAAb,CAAAA,QAAAuB,qBAAAA,IAAAvB,CAAAA,CAAA,EAAA,CAAA,KAAAwB,EAAAA,EAAA;AAVsDI,IAAAA,EAAAA,GAAA;AAAA,MAAAhB,WAAAA,EAC1CW,qBAAAA;AAAAA,MAAqBV,OAAAA;AAAAA,MAAAgB,OAAAA,EAEzB,GAAA;AAAA,MAAIC,KAAAA,EACNN;AAAAA,KAOT;AAACxB,IAAAA,CAAAA,MAAAa,OAAAA;AAAAb,IAAAA,CAAAA,MAAAuB,qBAAAA;AAAAvB,IAAAA,CAAAA,OAAAwB,EAAAA;AAAAxB,IAAAA,CAAAA,OAAA4B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA5B,EAAA,EAAA,CAAA;AAAA,EAAA;AAXD,EAAA,MAAA;AAAA,IAAA+B,MAAAA,EAAAC;AAAAA,GAAA,GAAqCC,oBAAoBL,EAWxD,CAAA;AAAE,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAlC,CAAAA,CAAA,EAAA,CAAA,KAAAgC,gBAAAA,CAAAG,QAAAnC,CAAAA,CAAA,EAAA,CAAA,KAAAgC,gBAAAA,CAAAI,SAAAA,EAAA;AAEIF,IAAAA,EAAAA,GAAA;AAAA,MAAAG,OACEL,gBAAAA,CAAgBG,IAAAA;AAAAA,MAAKC,WACjBJ,gBAAAA,CAAgBI;AAAAA,KAC7B;AAACpC,IAAAA,CAAAA,CAAA,EAAA,IAAAgC,gBAAAA,CAAAG,IAAAA;AAAAnC,IAAAA,CAAAA,CAAA,EAAA,IAAAgC,gBAAAA,CAAAI,SAAAA;AAAApC,IAAAA,CAAAA,OAAAkC,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAlC,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAHMkC,EAAAA;AAGN,CAAA;AAGI,MAAMI,4BAA4BvC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,OAAAA,EAAAC,EAAAA;AAAAA,IAAAC,eAAAA,EAAAC,EAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAAP,EAAAA;AACxC,EAAA,MAAAG,OAAAA,GAAAC,EAAAA,KAAAI,MAAAA,GAAA,IAAA,GAAAJ,EAAAA;AACA,EAAA,MAAAC,eAAAA,GAAAC,EAAAA,KAAAE,MAAAA,GAAA,GAAA,GAAAF,EAAAA;AAOA,EAAA,MAAA;AAAA,IAAAO,WAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAA0B,WAAAA;AAAAA,IAAAC;AAAAA,GAAA,GACE1B,gBAAgBR,SAAS,CAAA;AAG3B,EAAA,MAAAmC,YAAAA,GAAqBvC,WAAWI,SAAAA,KAAc,OAAA;AAAQ,EAAA,IAAAS,EAAAA;AAAA,EAAA,IAAAf,CAAAA,QAAAY,WAAAA,EAAA;AAENG,IAAAA,EAAAA,GAAA;AAAA,MAAA,GAE3CH,WAAAA;AAAAA,MAAWS,IAAAA,EACR,MAAA;AAAA,MAAeC,iBAAAA,EACF;AAAA,KACrB;AAACtB,IAAAA,CAAAA,MAAAY,WAAAA;AAAAZ,IAAAA,CAAAA,MAAAe,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAf,EAAA,CAAA,CAAA;AAAA,EAAA;AALD,EAAA,MAAA0C,qBAAAA,GAAgD3B,EAAAA;AAOhD,EAAA,MAAA4B,eAAqBrC,SAAAA,KAAc,OAAA;AAGnC,EAAA,MAAAsC,kBAAAA,GAA2BJ,YAAAA,IAAAG,YAAAA,GAAA,KAAA,GAAApC,MAAAA;AAAiD,EAAA,IAAAY,EAAAA;AAAA,EAAA,IAAAnB,EAAA,CAAA,CAAA,KAAA4C,sBAAA5C,CAAAA,QAAA0C,qBAAAA,EAAA;AAG7DvB,IAAAA,EAAAA,GAAA;AAAA,MAAA,GACRuB,qBAAAA;AAAAA,MAAqBE;AAAAA,KAE1B;AAAC5C,IAAAA,CAAAA,MAAA4C,kBAAAA;AAAA5C,IAAAA,CAAAA,MAAA0C,qBAAAA;AAAA1C,IAAAA,CAAAA,MAAAmB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAnB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAwB,EAAAA;AAAA,EAAA,IAAAxB,EAAA,CAAA,CAAA,KAAAyC,gBAAAzC,CAAAA,QAAAI,eAAAA,EAAA;AAIMoB,IAAAA,EAAAA,GAAA;AAAA,MAAAtB,OAAAA,EACIuC,YAAAA;AAAAA,MAAYrC,eAAAA;AAAAA,MAAAqB,KAAAA,EAEd,KAAA;AAAA,MAAKC,oBAAAA,EACU,KAAA;AAAA,MAAKC,cAAAA,EACX;AAAA,KAClB;AAAC3B,IAAAA,CAAAA,MAAAyC,YAAAA;AAAAzC,IAAAA,CAAAA,MAAAI,eAAAA;AAAAJ,IAAAA,CAAAA,MAAAwB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAxB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA4B,EAAAA;AAAA,EAAA,IAAA5B,CAAAA,CAAA,CAAA,CAAA,KAAAa,OAAAA,IAAAb,EAAA,CAAA,CAAA,KAAAuC,WAAAA,IAAAvC,CAAAA,CAAA,EAAA,CAAA,KAAAmB,EAAAA,IAAAnB,CAAAA,SAAAwB,EAAAA,EAAA;AAdoDI,IAAAA,EAAAA,GAAA;AAAA,MAAAhB,WAAAA,EACxCO,EAAAA;AAAAA,MAGZN,OAAAA;AAAAA,MAAA0B,WAAAA;AAAAA,MAAAV,OAAAA,EAGQ,GAAA;AAAA,MAAIC,KAAAA,EACNN;AAAAA,KAOT;AAACxB,IAAAA,CAAAA,MAAAa,OAAAA;AAAAb,IAAAA,CAAAA,MAAAuC,WAAAA;AAAAvC,IAAAA,CAAAA,OAAAmB,EAAAA;AAAAnB,IAAAA,CAAAA,OAAAwB,EAAAA;AAAAxB,IAAAA,CAAAA,OAAA4B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA5B,EAAA,EAAA,CAAA;AAAA,EAAA;AAfD,EAAA,MAAA;AAAA,IAAA+B,MAAAA,EAAAc;AAAAA,GAAA,GAAoCC,mBAAmBlB,EAetD,CAAA;AAAE,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAlC,CAAAA,CAAA,EAAA,CAAA,KAAA6C,eAAAA,CAAAV,QAAAnC,CAAAA,CAAA,EAAA,CAAA,KAAA6C,eAAAA,CAAAE,KAAAA,IAAA/C,CAAAA,CAAA,EAAA,CAAA,KAAA6C,gBAAAT,SAAAA,EAAA;AAEIF,IAAAA,EAAAA,GAAA;AAAA,MAAAG,OACEQ,eAAAA,CAAeV,IAAAA;AAAAA,MAAKC,WAChBS,eAAAA,CAAeT,SAAAA;AAAAA,MAAUW,OAC7BF,eAAAA,CAAeE;AAAAA,KACxB;AAAC/C,IAAAA,CAAAA,CAAA,EAAA,IAAA6C,eAAAA,CAAAV,IAAAA;AAAAnC,IAAAA,CAAAA,CAAA,EAAA,IAAA6C,eAAAA,CAAAE,KAAAA;AAAA/C,IAAAA,CAAAA,CAAA,EAAA,IAAA6C,eAAAA,CAAAT,SAAAA;AAAApC,IAAAA,CAAAA,OAAAkC,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAlC,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAJMkC,EAAAA;AAIN;AAII,MAAMc,YAAAA,GAAeA,CAC1B1C,SAAAA,KACuB;AACvB,EAAA,MAAM;AAAA,IAAEE,SAAAA;AAAAA,IAAWyC;AAAAA,GAAQ,GAAIC,gBAAgB5C,SAAS,CAAA;AAExD,EAAA,MAAM;AAAA,IAAE6B,IAAAA,EAAMgB,cAAAA;AAAAA,IAAgBf,SAAAA,EAAWgB;AAAAA,GAAwB,GAC/DC,cAAc7C,SAAAA,EAAW;AAAA,IACvBJ,eAAAA,EAAiBP;AAAAA,GAClB,CAAA;AACH,EAAA,MAAM;AAAA,IAAEsC,IAAAA,EAAMmB,YAAAA;AAAAA,IAAclB,SAAAA,EAAWmB;AAAAA,GAAsB,GAC3DF,cAAcJ,OAAAA,EAAS;AAAA,IACrB7C,eAAAA,EAAiBP;AAAAA,GAClB,CAAA;AAEH,EAAA,MAAM2D,uBAAuBJ,uBAAAA,IAA2BG,qBAAAA;AAIxD,EAAA,MAAME,qBACJnD,SAAAA,KAAc,OAAA,IAAW2C,OAAAA,IAAWA,OAAAA,CAAQS,YAAYlD,SAAAA,CAAUkD,OAAAA;AAEpE,EAAA,MAAMC,mBAAAA,GAAsB,CAAC,EAAER,cAAAA,IAAkBG,YAAAA,CAAAA;AACjD,EAAA,MAAMM,cAAAA,GACJ,CAACD,mBAAAA,IAAuB,CAACH,wBAAwB,CAACC,kBAAAA;AAEpD,EAAA,MAAM;AAAA,IAAEpB,KAAAA,EAAOwB,SAAAA;AAAAA,IAAWzB,SAAAA,EAAW0B;AAAAA,MACnChE,oBAAAA,CAAqB;AAAA,IACnBI,OAAAA,EAAS0D,cAAAA;AAAAA,IACTtD;AAAAA,GACD,CAAA;AAEH,EAAA,MAAM;AAAA,IACJ+B,KAAAA,EAAO0B,oBAAAA;AAAAA,IACP3B,SAAAA,EAAW4B;AAAAA,MACT1B,yBAAAA,CAA0B;AAAA,IAC5BpC,OAAAA,EAASuD,kBAAAA;AAAAA,IACTnD;AAAAA,GACD,CAAA;AAED,EAAA,MAAM2D,oBAAoBT,oBAAAA,IAAwBM,kBAAAA;AAElD,EAAA,OAAOI,QAAQ,MAAM;AACnB,IAAA,IAAI,CAACjB,OAAAA,EAAS;AACZ,MAAA,OAAO;AAAA,QAAEb,SAAAA,EAAW6B;AAAAA,OAAkB;AAAA,IACxC;AAEA,IAAA,IAAIE,IAAAA,GAA2B5D,MAAAA;AAC/B,IAAA,IAAI6D,YAAAA,GAAmC7D,MAAAA;AACvC,IAAA,IAAIkD,kBAAAA,EAAoB;AACtB,MAAA,IAAI,CAACM,oBAAAA,EAAsB;AACzB,QAAA,OAAO;AAAA,UAAE3B,SAAAA,EAAW4B;AAAAA,SAA8B;AAAA,MACpD;AACA,MAAA,MAAMK,WAAWC,WAAAA,CACfC,MAAAA,CAAOR,qBAAqBS,SAAS,CAAA,EACrChE,UAAUQ,QACZ,CAAA;AACA,MAAA,MAAMyD,SAAAA,GAAYH,WAAAA;AAAAA;AAAAA,QAEhBC,MAAAA,CAAOR,qBAAqBW,kBAAkB,CAAA;AAAA,QAC9CzB,OAAAA,CAAQjC;AAAAA,OACV;AACA,MAAA,IAAIqD,QAAAA,KAAa,GAAA,IAAOI,SAAAA,KAAc,GAAA,EAAK;AACzCN,QAAAA,IAAAA,GAAO,GAAA;AACPC,QAAAA,YAAAA,GAAe,GAAA;AAAA,MACjB,CAAA,MAAO;AACLD,QAAAA,IAAAA,GAAOQ,IAAIF,SAAS,CAAA,CAAEG,GAAAA,CAAIP,QAAQ,EAAEQ,OAAAA,EAAQ;AAC5CT,QAAAA,YAAAA,GAAeO,IAAIN,QAAQ,CAAA,CAAEO,GAAAA,CAAIH,SAAS,EAAEI,OAAAA,EAAQ;AAAA,MACtD;AAEA,MAAA,OAAO;AAAA,QACLC,KAAAA,EAAO;AAAA,UAAEX,IAAAA;AAAAA,UAAMC;AAAAA,SAAa;AAAA;AAAA,QAE5BhC,SAAAA,EAAW4B;AAAAA,OACb;AAAA,IACF,WAAWL,mBAAAA,EAAqB;AAC9B,MAAA,IAAIR,cAAAA,CAAed,KAAAA,KAAU,CAAA,IAAKiB,YAAAA,CAAajB,UAAU,CAAA,EAAG;AAC1D8B,QAAAA,IAAAA,GAAO,GAAA;AACPC,QAAAA,YAAAA,GAAe,GAAA;AAAA,MACjB,CAAA,MAAO;AACLD,QAAAA,IAAAA,GAAOQ,GAAAA,CAAIxB,eAAed,KAAK,CAAA,CAAEuC,IAAItB,YAAAA,CAAajB,KAAK,EAAEwC,OAAAA,EAAQ;AACjET,QAAAA,YAAAA,GAAeO,GAAAA,CAAIrB,aAAajB,KAAK,CAAA,CAClCuC,IAAIzB,cAAAA,CAAed,KAAK,EACxBwC,OAAAA,EAAQ;AAAA,MACb;AAAA,IACF,WAAWhB,SAAAA,EAAW;AACpB,MAAA,MAAMQ,aAAWC,WAAAA,CACfC,MAAAA,CAAOV,UAAUW,SAAS,CAAA,EAC1BhE,UAAUQ,QACZ,CAAA;AACA,MAAA,MAAMyD,cAAYH,WAAAA,CAChBC,MAAAA,CAAOV,UAAUkB,UAAU,CAAA,EAC3B9B,QAAQjC,QACV,CAAA;AAEAmD,MAAAA,IAAAA,GAAOQ,IAAIF,WAAS,CAAA,CAAEG,GAAAA,CAAIP,UAAQ,EAAEQ,OAAAA,EAAQ;AAC5CT,MAAAA,YAAAA,GAAeO,IAAIN,UAAQ,CAAA,CAAEO,GAAAA,CAAIH,WAAS,EAAEI,OAAAA,EAAQ;AAAA,IACtD;AAEA,IAAA,IAAI,CAACV,IAAAA,IAAQ,CAACC,YAAAA,EAAc;AAC1B,MAAA,OAAO;AAAA,QAAEhC,SAAAA,EAAW6B;AAAAA,OAAkB;AAAA,IACxC;AAEA,IAAA,OAAO;AAAA,MACLa,KAAAA,EAAO;AAAA,QAAEX,IAAAA;AAAAA,QAAMC;AAAAA,OAAa;AAAA,MAC5BhC,SAAAA,EAAW6B;AAAAA,KACb;AAAA,EACF,CAAA,EAAG,CACDN,mBAAAA,EACAM,iBAAAA,EACAJ,WACArD,SAAAA,CAAUQ,QAAAA,EACVmC,cAAAA,EAAgBd,KAAAA,EAChBY,SACAK,YAAAA,EAAcjB,KAAAA,EACdoB,kBAAAA,EACAM,oBAAAA,EACAC,6BAA6B,CAC9B,CAAA;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"useLimitRate.js","sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport { parseUnits, formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tradeModeToTokenAtoms } from \"../inputs/state/common\";\nimport { useMemo } from \"react\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n// 5 min, so as not to change limit price in front of the user too often\nconst PRICE_REFETCH_INTERVAL = 60_000 * 5;\n\nconst useSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = PRICE_REFETCH_INTERVAL,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const tokenFrom = useAtomValue(\n tradeModeToTokenAtoms[tradeMode].tokenFromAtom\n );\n const { priceParams, chainId } = usePricesParams(tradeMode);\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n amount: parseUnits(\"1\", tokenFrom.decimals).toString(),\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // @TODO: delta price return quote for less tokens than market price with srcAmount=1,\n // but maybe we should increase srcAmount and use delta prices instead, need to test.\n const { result: marketPriceQuery } = useMarketPriceQuery({\n priceParams: priceParamsWithAmount,\n chainId,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: marketPriceQuery.data,\n isLoading: marketPriceQuery.isLoading,\n };\n};\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const { priceParams, chainId, destChainId, isCrossChain } =\n usePricesParams(tradeMode);\n\n // should fetch delta price for crosschain limit order?\n const queryEnabled = enabled && tradeMode === \"limit\";\n\n const crosschainPriceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ...priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n const isLimitOrder = tradeMode === \"limit\";\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : undefined;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n },\n chainId,\n destChainId,\n query: {\n enabled: queryEnabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { data: tokenFromPrice, isLoading: isTokenFromPriceLoading } =\n useTokenPrice(tokenFrom, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n // for crosschain limit orders, use the delta price query to correctly set the starting price,\n // accounting for bridge fees, because ex. 1USDC=1USDT will never be possible\n const isCrosschainLOrder =\n tradeMode === \"limit\" && tokenTo && tokenTo.network !== tokenFrom.network;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice =\n !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({\n enabled: fetchSwapPrice,\n tradeMode,\n });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({\n enabled: isCrosschainLOrder,\n tradeMode,\n });\n\n const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading: isNonDeltaLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder) {\n if (!deltaCrosschainPrice) {\n return { isLoading: isDeltaCrosschainPriceLoading };\n }\n const srcUnits = formatUnits(\n BigInt(deltaCrosschainPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaCrosschainPrice.receivedDestAmount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n // for Crosschain price we care only about its loading state, not all others\n isLoading: isDeltaCrosschainPriceLoading,\n };\n } else if (fiatPricesAvailable) {\n if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\n }\n } else if (swapPrice) {\n const srcUnits = formatUnits(\n BigInt(swapPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n BigInt(swapPrice.destAmount),\n tokenTo.decimals\n );\n\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n if (!rate || !rateReversed) {\n return { isLoading: isNonDeltaLoading };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading: isNonDeltaLoading,\n };\n }, [\n fiatPricesAvailable,\n isNonDeltaLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\n isCrosschainLOrder,\n deltaCrosschainPrice,\n isDeltaCrosschainPriceLoading,\n ]);\n};\n"],"names":["PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","useAtomValue","tradeModeToTokenAtoms","tokenFromAtom","priceParams","chainId","usePricesParams","t3","decimals","parseUnits","toString","t4","amount","side","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","query","result","marketPriceQuery","useMarketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","deltaPriceQuery","useDeltaPriceQuery","error","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":"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"}
|
|
@@ -2,4 +2,6 @@ export declare const swapChainToAtom: import('jotai').WritableAtom<1 | 10 | 137
|
|
|
2
2
|
export declare const useSwapChainTo: () => 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined;
|
|
3
3
|
export declare const limitChainToAtom: import('jotai').WritableAtom<1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined, [newChainTo: 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130], void>;
|
|
4
4
|
export declare const useLimitChainTo: () => 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined;
|
|
5
|
+
export declare const twapChainToAtom: import('jotai').WritableAtom<1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined, [newChainTo: 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130], void>;
|
|
6
|
+
export declare const useTwapChainTo: () => 1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 130 | undefined;
|
|
5
7
|
//# sourceMappingURL=chainToAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainToAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/chainToAtom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chainToAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/chainToAtom.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,eAAe,0KAkC3B,CAAC;AAEF,eAAO,MAAM,cAAc,wEAE1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,0KAmC5B,CAAC;AAEF,eAAO,MAAM,eAAe,wEAE3B,CAAC;AAEF,eAAO,MAAM,eAAe,0KA4B3B,CAAC;AAEF,eAAO,MAAM,cAAc,wEAE1B,CAAC"}
|
|
@@ -7,13 +7,13 @@ import { areTokensSame } from '../../tokens/utils/areTokensSame.js';
|
|
|
7
7
|
import { setSwapModeAtom } from '../../components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js';
|
|
8
8
|
import { allTokensByChainAtom } from '../../tokens/state/allTokensByChainAtom.js';
|
|
9
9
|
import { limitTokenToAtom, limitTokenFromAtom } from '../limit/state/limitTokenAtoms.js';
|
|
10
|
+
import { twapTokenToAtom, twapTokenFromAtom } from '../twap/state/twapTokenAtoms.js';
|
|
10
11
|
|
|
11
12
|
const swapChainToAtom = atom(
|
|
12
13
|
// chainTo always follows tokenTo network (either SupportedChainId or undefined)
|
|
13
14
|
(get) => get(swapTokenToAtom)?.network,
|
|
14
15
|
// set(chainToAtom) = (chainTo) => set(tokenToAtom to default token for that chain)
|
|
15
16
|
(get, set, newChainTo) => {
|
|
16
|
-
const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(newChainTo, "swap");
|
|
17
17
|
const tokenFrom = get(swapTokenFromAtom);
|
|
18
18
|
const srcChainId = tokenFrom.network;
|
|
19
19
|
if (srcChainId !== newChainTo) {
|
|
@@ -26,6 +26,7 @@ const swapChainToAtom = atom(
|
|
|
26
26
|
set(swapTokenToAtom, maybeAcrossToken);
|
|
27
27
|
set(setSwapModeAtom, "delta");
|
|
28
28
|
} else {
|
|
29
|
+
const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(newChainTo, "swap");
|
|
29
30
|
const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo) ? defaultTokenFrom : defaultTokenTo;
|
|
30
31
|
set(swapTokenToAtom, newTokenTo);
|
|
31
32
|
}
|
|
@@ -39,11 +40,6 @@ const limitChainToAtom = atom(
|
|
|
39
40
|
(get) => get(limitTokenToAtom)?.network,
|
|
40
41
|
// set(chainToAtom) = (chainTo) => set(tokenToAtom to default token for that chain)
|
|
41
42
|
(get, set, newChainTo) => {
|
|
42
|
-
const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(
|
|
43
|
-
newChainTo,
|
|
44
|
-
"limit"
|
|
45
|
-
// @TODO check that default tokenTo can be crosschain swapped
|
|
46
|
-
);
|
|
47
43
|
const tokenFrom = get(limitTokenFromAtom);
|
|
48
44
|
const srcChainId = tokenFrom.network;
|
|
49
45
|
if (srcChainId !== newChainTo) {
|
|
@@ -55,6 +51,11 @@ const limitChainToAtom = atom(
|
|
|
55
51
|
});
|
|
56
52
|
set(limitTokenToAtom, maybeAcrossToken);
|
|
57
53
|
} else {
|
|
54
|
+
const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(
|
|
55
|
+
newChainTo,
|
|
56
|
+
"limit"
|
|
57
|
+
// @TODO check that default tokenTo can be crosschain swapped
|
|
58
|
+
);
|
|
58
59
|
const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo) ? defaultTokenFrom : defaultTokenTo;
|
|
59
60
|
set(limitTokenToAtom, newTokenTo);
|
|
60
61
|
}
|
|
@@ -63,6 +64,26 @@ const limitChainToAtom = atom(
|
|
|
63
64
|
const useLimitChainTo = () => {
|
|
64
65
|
return useAtomValue(limitChainToAtom);
|
|
65
66
|
};
|
|
67
|
+
const twapChainToAtom = atom((get) => get(twapTokenToAtom)?.network, (get, set, newChainTo) => {
|
|
68
|
+
const tokenFrom = get(twapTokenFromAtom);
|
|
69
|
+
const srcChainId = tokenFrom.network;
|
|
70
|
+
if (srcChainId !== newChainTo) {
|
|
71
|
+
const maybeAcrossToken = findFirstTokenFromAcross({
|
|
72
|
+
fromChainId: srcChainId,
|
|
73
|
+
toChainId: newChainTo,
|
|
74
|
+
listByChainId: get(allTokensByChainAtom).listByChainId,
|
|
75
|
+
mode: "limit"
|
|
76
|
+
});
|
|
77
|
+
set(twapTokenToAtom, maybeAcrossToken);
|
|
78
|
+
} else {
|
|
79
|
+
const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(newChainTo, "twap");
|
|
80
|
+
const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo) ? defaultTokenFrom : defaultTokenTo;
|
|
81
|
+
set(twapTokenToAtom, newTokenTo);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
const useTwapChainTo = () => {
|
|
85
|
+
return useAtomValue(twapChainToAtom);
|
|
86
|
+
};
|
|
66
87
|
|
|
67
|
-
export { limitChainToAtom, swapChainToAtom, useLimitChainTo, useSwapChainTo };
|
|
88
|
+
export { limitChainToAtom, swapChainToAtom, twapChainToAtom, useLimitChainTo, useSwapChainTo, useTwapChainTo };
|
|
68
89
|
//# sourceMappingURL=chainToAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainToAtom.js","sources":["../../../src/core/state/chainToAtom.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport {\n swapTokenFromAtom,\n swapTokenToAtom,\n} from \"../inputs/state/selectedTokenAtom\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { findFirstTokenFromAcross } from \"../across/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { setSwapModeAtom } from \"@/components/widget/SwapModeSwitcher/state/swapModeActionsAtom\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport {\n limitTokenFromAtom,\n limitTokenToAtom,\n} from \"../limit/state/limitTokenAtoms\";\n\nexport const swapChainToAtom = atom(\n // chainTo always follows tokenTo network (either SupportedChainId or undefined)\n (get) => get(swapTokenToAtom)?.network,\n // set(chainToAtom) = (chainTo) => set(tokenToAtom to default token for that chain)\n (get, set, newChainTo: SupportedChainId) => {\n const
|
|
1
|
+
{"version":3,"file":"chainToAtom.js","sources":["../../../src/core/state/chainToAtom.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport {\n swapTokenFromAtom,\n swapTokenToAtom,\n} from \"../inputs/state/selectedTokenAtom\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { findFirstTokenFromAcross } from \"../across/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { setSwapModeAtom } from \"@/components/widget/SwapModeSwitcher/state/swapModeActionsAtom\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport {\n limitTokenFromAtom,\n limitTokenToAtom,\n} from \"../limit/state/limitTokenAtoms\";\nimport {\n twapTokenFromAtom,\n twapTokenToAtom,\n} from \"../twap/state/twapTokenAtoms\";\n\nexport const swapChainToAtom = atom(\n // chainTo always follows tokenTo network (either SupportedChainId or undefined)\n (get) => get(swapTokenToAtom)?.network,\n // set(chainToAtom) = (chainTo) => set(tokenToAtom to default token for that chain)\n (get, set, newChainTo: SupportedChainId) => {\n const tokenFrom = get(swapTokenFromAtom);\n const srcChainId = tokenFrom.network;\n\n // cross-chain? try to set the first token from the across list as tokenTo\n // otherwise tokenTo will be reset\n if (srcChainId !== newChainTo) {\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: srcChainId,\n toChainId: newChainTo,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"swap\",\n });\n\n set(swapTokenToAtom, maybeAcrossToken);\n set(setSwapModeAtom, \"delta\");\n } else {\n // single chain? set tokenTo to one of the default tokens\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n newChainTo,\n \"swap\"\n );\n\n const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n\n set(swapTokenToAtom, newTokenTo);\n }\n }\n);\n\nexport const useSwapChainTo = () => {\n return useAtomValue(swapChainToAtom);\n};\n\nexport const limitChainToAtom = atom(\n // chainTo always follows tokenTo network (either SupportedChainId or undefined)\n (get) => get(limitTokenToAtom)?.network,\n // set(chainToAtom) = (chainTo) => set(tokenToAtom to default token for that chain)\n (get, set, newChainTo: SupportedChainId) => {\n const tokenFrom = get(limitTokenFromAtom);\n\n const srcChainId = tokenFrom.network;\n\n // cross-chain? try to set the first token from the across list as tokenTo\n // otherwise tokenTo will be reset\n if (srcChainId !== newChainTo) {\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: srcChainId,\n toChainId: newChainTo,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(limitTokenToAtom, maybeAcrossToken);\n } else {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n newChainTo,\n \"limit\"\n // @TODO check that default tokenTo can be crosschain swapped\n );\n\n // single chain? set tokenTo to one of the default tokens\n const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n\n set(limitTokenToAtom, newTokenTo);\n }\n }\n);\n\nexport const useLimitChainTo = () => {\n return useAtomValue(limitChainToAtom);\n};\n\nexport const twapChainToAtom = atom(\n (get) => get(twapTokenToAtom)?.network,\n (get, set, newChainTo: SupportedChainId) => {\n const tokenFrom = get(twapTokenFromAtom);\n const srcChainId = tokenFrom.network;\n\n if (srcChainId !== newChainTo) {\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: srcChainId,\n toChainId: newChainTo,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(twapTokenToAtom, maybeAcrossToken);\n } else {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n newChainTo,\n \"twap\"\n );\n\n const newTokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n\n set(twapTokenToAtom, newTokenTo);\n }\n }\n);\n\nexport const useTwapChainTo = () => {\n return useAtomValue(twapChainToAtom);\n};\n"],"names":["swapChainToAtom","atom","get","swapTokenToAtom","network","set","newChainTo","tokenFrom","swapTokenFromAtom","srcChainId","maybeAcrossToken","findFirstTokenFromAcross","fromChainId","toChainId","listByChainId","allTokensByChainAtom","mode","setSwapModeAtom","defaultTokenFrom","defaultTokenTo","pickDefaultTokenPair","newTokenTo","areTokensSame","useSwapChainTo","useAtomValue","limitChainToAtom","limitTokenToAtom","limitTokenFromAtom","useLimitChainTo","twapChainToAtom","twapTokenToAtom","twapTokenFromAtom","useTwapChainTo"],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ const defaultWidgetConfig = {
|
|
|
9
9
|
theme: getDefaultTheme(),
|
|
10
10
|
enableDelta: true,
|
|
11
11
|
enableCrossChain: true,
|
|
12
|
-
privyAppId:
|
|
13
|
-
privyClientId:
|
|
12
|
+
privyAppId: undefined ,
|
|
13
|
+
privyClientId: undefined ,
|
|
14
14
|
debug: false,
|
|
15
15
|
widgetMode: "standalone",
|
|
16
16
|
enableDegenMode: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configAtom.js","sources":["../../../src/core/state/configAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport type {\n WidgetElements,\n WidgetConfig,\n DevURLs,\n PartnerConfig,\n} from \"../types\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual, unorderedShallowEqual } from \"@/lib/utils\";\nimport { type TradeMode } from \"./tradeModeAtom\";\nimport { getDefaultTheme } from \"@/lib/utils/theme\";\n\nexport type PrimitiveConfig = Pick<\n WidgetConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport type IterableConfig = Pick<\n WidgetConfig,\n | \"srcChains\"\n | \"destChains\"\n | \"tokenLists\"\n | \"tradeModes\"\n | \"excludeUI\"\n | \"devURLs\"\n | \"partnerConfig\"\n>;\n\ntype PrimitiveConfigState = MarkRequired<\n PrimitiveConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport const defaultWidgetConfig = {\n theme: getDefaultTheme(),\n enableDelta: true,\n enableCrossChain: true,\n privyAppId: import.meta.env.VITE_PRIVY_APP_ID,\n privyClientId: import.meta.env.VITE_PRIVY_CLIENT_ID,\n debug: false,\n widgetMode: \"standalone\",\n enableDegenMode: true,\n} as const satisfies PrimitiveConfig;\n\nexport const widgetConfigAtom = atom<PrimitiveConfigState>(defaultWidgetConfig);\n\nexport const useWidgetConfig = () => {\n return useAtomValue(widgetConfigAtom);\n};\n\nexport const defaultSubConfig = {\n tokenLists: emptyArray,\n srcChains: emptyArray,\n destChains: emptyArray,\n tradeModes: emptyArray,\n excludeUI: emptyArray,\n devURLs: emptyObject,\n partnerConfig: emptyObject,\n} as const satisfies IterableConfig;\n\n// independent atoms for each iterable config property\n// with comparison to avoid unnecessary re-renders\nexport const tokenListsAtom = atomWithCompare<string[]>(\n defaultSubConfig.tokenLists,\n unorderedShallowEqual\n);\nexport const srcChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.srcChains,\n unorderedShallowEqual\n);\nexport const destChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.destChains,\n unorderedShallowEqual\n);\n\nexport const tradeModesAtom = atomWithCompare<TradeMode[]>(\n defaultSubConfig.tradeModes,\n unorderedShallowEqual\n);\n\nexport const excludeUIAtom = atomWithCompare<WidgetElements[]>(\n defaultSubConfig.excludeUI,\n unorderedShallowEqual\n);\n\nexport const devURLsAtom = atomWithCompare<DevURLs>(\n defaultSubConfig.devURLs,\n // known properties only comparison\n constructPropertiesEqual([\"apiProxyURL\", \"apiURL\", \"explorerURL\"])\n);\n\nexport const partnerConfigAtom = atomWithCompare<PartnerConfig>(\n defaultSubConfig.partnerConfig,\n constructPropertiesEqual([\n \"partner\",\n \"partnerAddress\",\n \"partnerFeeBps\",\n \"partnerTakesSurplus\",\n ])\n);\n\npartnerConfigAtom.debugLabel = \"partnerConfigAtom\";\n"],"names":["defaultWidgetConfig","theme","getDefaultTheme","enableDelta","enableCrossChain","privyAppId","import","privyClientId","debug","widgetMode","enableDegenMode","widgetConfigAtom","atom","useWidgetConfig","useAtomValue","defaultSubConfig","tokenLists","emptyArray","srcChains","destChains","tradeModes","excludeUI","devURLs","emptyObject","partnerConfig","tokenListsAtom","atomWithCompare","unorderedShallowEqual","srcChainsAtom","destChainsAtom","tradeModesAtom","excludeUIAtom","devURLsAtom","constructPropertiesEqual","partnerConfigAtom","debugLabel"],"mappings":";;;;;;;AAmDO,MAAMA,mBAAAA,GAAsB;AAAA,EACjCC,OAAOC,eAAAA,EAAgB;AAAA,EACvBC,WAAAA,EAAa,IAAA;AAAA,EACbC,gBAAAA,EAAkB,IAAA;AAAA,EAClBC,
|
|
1
|
+
{"version":3,"file":"configAtom.js","sources":["../../../src/core/state/configAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport type {\n WidgetElements,\n WidgetConfig,\n DevURLs,\n PartnerConfig,\n} from \"../types\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual, unorderedShallowEqual } from \"@/lib/utils\";\nimport { type TradeMode } from \"./tradeModeAtom\";\nimport { getDefaultTheme } from \"@/lib/utils/theme\";\n\nexport type PrimitiveConfig = Pick<\n WidgetConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport type IterableConfig = Pick<\n WidgetConfig,\n | \"srcChains\"\n | \"destChains\"\n | \"tokenLists\"\n | \"tradeModes\"\n | \"excludeUI\"\n | \"devURLs\"\n | \"partnerConfig\"\n>;\n\ntype PrimitiveConfigState = MarkRequired<\n PrimitiveConfig,\n | \"theme\"\n | \"enableDelta\"\n | \"enableCrossChain\"\n | \"privyAppId\"\n | \"privyClientId\"\n | \"debug\"\n | \"widgetMode\"\n | \"enableDegenMode\"\n>;\n\nexport const defaultWidgetConfig = {\n theme: getDefaultTheme(),\n enableDelta: true,\n enableCrossChain: true,\n privyAppId: import.meta.env.VITE_PRIVY_APP_ID,\n privyClientId: import.meta.env.VITE_PRIVY_CLIENT_ID,\n debug: false,\n widgetMode: \"standalone\",\n enableDegenMode: true,\n} as const satisfies PrimitiveConfig;\n\nexport const widgetConfigAtom = atom<PrimitiveConfigState>(defaultWidgetConfig);\n\nexport const useWidgetConfig = () => {\n return useAtomValue(widgetConfigAtom);\n};\n\nexport const defaultSubConfig = {\n tokenLists: emptyArray,\n srcChains: emptyArray,\n destChains: emptyArray,\n tradeModes: emptyArray,\n excludeUI: emptyArray,\n devURLs: emptyObject,\n partnerConfig: emptyObject,\n} as const satisfies IterableConfig;\n\n// independent atoms for each iterable config property\n// with comparison to avoid unnecessary re-renders\nexport const tokenListsAtom = atomWithCompare<string[]>(\n defaultSubConfig.tokenLists,\n unorderedShallowEqual\n);\nexport const srcChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.srcChains,\n unorderedShallowEqual\n);\nexport const destChainsAtom = atomWithCompare<SupportedChainId[]>(\n defaultSubConfig.destChains,\n unorderedShallowEqual\n);\n\nexport const tradeModesAtom = atomWithCompare<TradeMode[]>(\n defaultSubConfig.tradeModes,\n unorderedShallowEqual\n);\n\nexport const excludeUIAtom = atomWithCompare<WidgetElements[]>(\n defaultSubConfig.excludeUI,\n unorderedShallowEqual\n);\n\nexport const devURLsAtom = atomWithCompare<DevURLs>(\n defaultSubConfig.devURLs,\n // known properties only comparison\n constructPropertiesEqual([\"apiProxyURL\", \"apiURL\", \"explorerURL\"])\n);\n\nexport const partnerConfigAtom = atomWithCompare<PartnerConfig>(\n defaultSubConfig.partnerConfig,\n constructPropertiesEqual([\n \"partner\",\n \"partnerAddress\",\n \"partnerFeeBps\",\n \"partnerTakesSurplus\",\n ])\n);\n\npartnerConfigAtom.debugLabel = \"partnerConfigAtom\";\n"],"names":["defaultWidgetConfig","theme","getDefaultTheme","enableDelta","enableCrossChain","privyAppId","import","VITE_PRIVY_APP_ID","privyClientId","VITE_PRIVY_CLIENT_ID","debug","widgetMode","enableDegenMode","widgetConfigAtom","atom","useWidgetConfig","useAtomValue","defaultSubConfig","tokenLists","emptyArray","srcChains","destChains","tradeModes","excludeUI","devURLs","emptyObject","partnerConfig","tokenListsAtom","atomWithCompare","unorderedShallowEqual","srcChainsAtom","destChainsAtom","tradeModesAtom","excludeUIAtom","devURLsAtom","constructPropertiesEqual","partnerConfigAtom","debugLabel"],"mappings":";;;;;;;AAmDO,MAAMA,mBAAAA,GAAsB;AAAA,EACjCC,OAAOC,eAAAA,EAAgB;AAAA,EACvBC,WAAAA,EAAa,IAAA;AAAA,EACbC,gBAAAA,EAAkB,IAAA;AAAA,EAClBC,YAAYC,SAAAA;AAAgBC,EAC5BC,eAAeF,SAAAA;AAAgBG,EAC/BC,KAAAA,EAAO,KAAA;AAAA,EACPC,UAAAA,EAAY,YAAA;AAAA,EACZC,eAAAA,EAAiB;AACnB;AAEO,MAAMC,gBAAAA,GAAmBC,KAA2Bd,mBAAmB;AAEvE,MAAMe,kBAAkBA,MAAA;AAAA,EAAA,OACtBC,aAAaH,gBAAgB,CAAA;AAAC;AAGhC,MAAMI,gBAAAA,GAAmB;AAAA,EAC9BC,UAAAA,EAAYC,UAAAA;AAAAA,EACZC,SAAAA,EAAWD,UAAAA;AAAAA,EACXE,UAAAA,EAAYF,UAAAA;AAAAA,EACZG,UAAAA,EAAYH,UAAAA;AAAAA,EACZI,SAAAA,EAAWJ,UAAAA;AAAAA,EACXK,OAAAA,EAASC,WAAAA;AAAAA,EACTC,aAAAA,EAAeD;AACjB;AAIO,MAAME,cAAAA,GAAiBC,eAAAA,CAC5BX,gBAAAA,CAAiBC,UAAAA,EACjBW,qBACF;AACO,MAAMC,aAAAA,GAAgBF,eAAAA,CAC3BX,gBAAAA,CAAiBG,SAAAA,EACjBS,qBACF;AACO,MAAME,cAAAA,GAAiBH,eAAAA,CAC5BX,gBAAAA,CAAiBI,UAAAA,EACjBQ,qBACF;AAEO,MAAMG,cAAAA,GAAiBJ,eAAAA,CAC5BX,gBAAAA,CAAiBK,UAAAA,EACjBO,qBACF;AAEO,MAAMI,aAAAA,GAAgBL,eAAAA,CAC3BX,gBAAAA,CAAiBM,SAAAA,EACjBM,qBACF;AAEO,MAAMK,WAAAA,GAAcN,eAAAA;AAAAA,EACzBX,gBAAAA,CAAiBO,OAAAA;AAAAA;AAAAA,EAEjBW,wBAAAA,CAAyB,CAAC,aAAA,EAAe,QAAA,EAAU,aAAa,CAAC;AACnE;AAEO,MAAMC,iBAAAA,GAAoBR,eAAAA,CAC/BX,gBAAAA,CAAiBS,aAAAA,EACjBS,wBAAAA,CAAyB,CACvB,SAAA,EACA,gBAAA,EACA,eAAA,EACA,qBAAqB,CACtB,CACH;AAEAC,iBAAAA,CAAkBC,UAAAA,GAAa,mBAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tradeModeAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/tradeModeAtom.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tradeModeAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/tradeModeAtom.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAG1D,eAAO,MAAM,iBAAiB;;CAA0B,CAAC;AAGzD,eAAO,MAAM,aAAa,iCAOxB,CAAC;AAEH,eAAO,MAAM,YAAY,iBAExB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tradeModeAtom.js","sources":["../../../src/core/state/tradeModeAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport { enabledTradeModesAtom } from \"./enabledTradeModesAtom\";\n\nexport type TradeMode = \"swap\" | \"limit\" | \"otc\";\n\n// atom to store user selected trade mode\nexport const userTradeModeAtom = atom<TradeMode>(\"swap\");\n\n// derived atom to get effective trade mode based on enabled modes\nexport const tradeModeAtom = atom<TradeMode>((get) => {\n const userTradeMode = get(userTradeModeAtom);\n const enabledTradeModes = get(enabledTradeModesAtom);\n // prioritize user selected mode if it's enabled\n if (enabledTradeModes.includes(userTradeMode)) return userTradeMode;\n // otherwise fallback to the first enabled mode\n return enabledTradeModes[0];\n});\n\nexport const useTradeMode = () => {\n return useAtomValue(tradeModeAtom);\n};\n"],"names":["userTradeModeAtom","atom","tradeModeAtom","get","userTradeMode","enabledTradeModes","enabledTradeModesAtom","includes","useTradeMode","useAtomValue"],"mappings":";;;;AAOO,MAAMA,iBAAAA,GAAoBC,KAAgB,MAAM;AAGhD,MAAMC,aAAAA,GAAgBD,KAAiBE,CAAAA,GAAAA,KAAQ;AACpD,EAAA,MAAMC,aAAAA,GAAgBD,IAAIH,iBAAiB,CAAA;AAC3C,EAAA,MAAMK,iBAAAA,GAAoBF,IAAIG,qBAAqB,CAAA;AAEnD,EAAA,IAAID,iBAAAA,CAAkBE,QAAAA,CAASH,aAAa,CAAA,EAAG,OAAOA,aAAAA;AAEtD,EAAA,OAAOC,kBAAkB,CAAC,CAAA;AAC5B,CAAC;AAEM,MAAMG,eAAeA,MAAA;AAAA,EAAA,OACnBC,aAAaP,aAAa,CAAA;AAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"tradeModeAtom.js","sources":["../../../src/core/state/tradeModeAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport { enabledTradeModesAtom } from \"./enabledTradeModesAtom\";\n\nexport type TradeMode = \"swap\" | \"limit\" | \"otc\" | \"twap\";\n\n// atom to store user selected trade mode\nexport const userTradeModeAtom = atom<TradeMode>(\"swap\");\n\n// derived atom to get effective trade mode based on enabled modes\nexport const tradeModeAtom = atom<TradeMode>((get) => {\n const userTradeMode = get(userTradeModeAtom);\n const enabledTradeModes = get(enabledTradeModesAtom);\n // prioritize user selected mode if it's enabled\n if (enabledTradeModes.includes(userTradeMode)) return userTradeMode;\n // otherwise fallback to the first enabled mode\n return enabledTradeModes[0];\n});\n\nexport const useTradeMode = () => {\n return useAtomValue(tradeModeAtom);\n};\n"],"names":["userTradeModeAtom","atom","tradeModeAtom","get","userTradeMode","enabledTradeModes","enabledTradeModesAtom","includes","useTradeMode","useAtomValue"],"mappings":";;;;AAOO,MAAMA,iBAAAA,GAAoBC,KAAgB,MAAM;AAGhD,MAAMC,aAAAA,GAAgBD,KAAiBE,CAAAA,GAAAA,KAAQ;AACpD,EAAA,MAAMC,aAAAA,GAAgBD,IAAIH,iBAAiB,CAAA;AAC3C,EAAA,MAAMK,iBAAAA,GAAoBF,IAAIG,qBAAqB,CAAA;AAEnD,EAAA,IAAID,iBAAAA,CAAkBE,QAAAA,CAASH,aAAa,CAAA,EAAG,OAAOA,aAAAA;AAEtD,EAAA,OAAOC,kBAAkB,CAAC,CAAA;AAC5B,CAAC;AAEM,MAAMG,eAAeA,MAAA;AAAA,EAAA,OACnBC,aAAaP,aAAa,CAAA;AAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetEventsAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/widgetEventsAtom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAQxB,eAAO,MAAM,gBAAgB;;
|
|
1
|
+
{"version":3,"file":"widgetEventsAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/widgetEventsAtom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAQxB,eAAO,MAAM,gBAAgB;;CA4N3B,CAAC;AAEH,eAAO,MAAM,eAAe,QAAO,uBAElC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,YAAY,oBAAoB,SAmCrE,CAAC"}
|
|
@@ -23,6 +23,23 @@ const widgetEventsAtom = atom({}, (get, set, callbacks) => {
|
|
|
23
23
|
};
|
|
24
24
|
callbacks.onSwap(payloadWithState);
|
|
25
25
|
};
|
|
26
|
+
const onTwapOrder = (payload) => {
|
|
27
|
+
if (!callbacks.onTwapOrder) return;
|
|
28
|
+
const widgetState = getWidgetState(get);
|
|
29
|
+
const twapFormState = widgetState.formState.twap;
|
|
30
|
+
assert(isFullTokenFormState(twapFormState), "Twap form state is required to perform twap order");
|
|
31
|
+
const payloadWithState = {
|
|
32
|
+
event: {
|
|
33
|
+
...payload.event,
|
|
34
|
+
params: {
|
|
35
|
+
...payload.event.params,
|
|
36
|
+
...twapFormState
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
state: widgetState
|
|
40
|
+
};
|
|
41
|
+
callbacks.onTwapOrder(payloadWithState);
|
|
42
|
+
};
|
|
26
43
|
const onLimitOrder = (payload) => {
|
|
27
44
|
if (!callbacks.onLimitOrder) return;
|
|
28
45
|
const widgetState = getWidgetState(get);
|
|
@@ -140,6 +157,7 @@ const widgetEventsAtom = atom({}, (get, set, callbacks) => {
|
|
|
140
157
|
} : void 0;
|
|
141
158
|
set(widgetEventsAtom, {
|
|
142
159
|
onSwap,
|
|
160
|
+
onTwapOrder,
|
|
143
161
|
onLimitOrder,
|
|
144
162
|
onOTCOrder,
|
|
145
163
|
onAllowToken,
|
|
@@ -157,16 +175,17 @@ const useWidgetEvents = () => {
|
|
|
157
175
|
return useAtomValue(widgetEventsAtom);
|
|
158
176
|
};
|
|
159
177
|
const useWidgetEventsSetter = (callbacks) => {
|
|
160
|
-
const $ = distExports.c(
|
|
178
|
+
const $ = distExports.c(30);
|
|
161
179
|
const setWidgetEvents = useSetAtom(widgetEventsAtom);
|
|
162
180
|
let t0;
|
|
163
|
-
if ($[0] !== callbacks?.onAllowToken || $[1] !== callbacks?.onCancelOrder || $[2] !== callbacks?.onConnectWallet || $[3] !== callbacks?.onConnectWalletClick || $[4] !== callbacks?.onFillOTCOrder || $[5] !== callbacks?.onFormInputChange || $[6] !== callbacks?.onLimitOrder || $[7] !== callbacks?.onOTCOrder || $[8] !== callbacks?.onPriceChange || $[9] !== callbacks?.onSettingsChange || $[10] !== callbacks?.onSwap || $[11] !== callbacks?.
|
|
181
|
+
if ($[0] !== callbacks?.onAllowToken || $[1] !== callbacks?.onCancelOrder || $[2] !== callbacks?.onConnectWallet || $[3] !== callbacks?.onConnectWalletClick || $[4] !== callbacks?.onFillOTCOrder || $[5] !== callbacks?.onFormInputChange || $[6] !== callbacks?.onLimitOrder || $[7] !== callbacks?.onOTCOrder || $[8] !== callbacks?.onPriceChange || $[9] !== callbacks?.onSettingsChange || $[10] !== callbacks?.onSwap || $[11] !== callbacks?.onTwapOrder || $[12] !== callbacks?.onWrapETH || $[13] !== setWidgetEvents) {
|
|
164
182
|
t0 = () => {
|
|
165
183
|
setWidgetEvents({
|
|
166
184
|
onConnectWallet: callbacks?.onConnectWallet,
|
|
167
185
|
onConnectWalletClick: callbacks?.onConnectWalletClick,
|
|
168
186
|
onAllowToken: callbacks?.onAllowToken,
|
|
169
187
|
onSwap: callbacks?.onSwap,
|
|
188
|
+
onTwapOrder: callbacks?.onTwapOrder,
|
|
170
189
|
onOTCOrder: callbacks?.onOTCOrder,
|
|
171
190
|
onLimitOrder: callbacks?.onLimitOrder,
|
|
172
191
|
onWrapETH: callbacks?.onWrapETH,
|
|
@@ -188,45 +207,48 @@ const useWidgetEventsSetter = (callbacks) => {
|
|
|
188
207
|
$[8] = callbacks?.onPriceChange;
|
|
189
208
|
$[9] = callbacks?.onSettingsChange;
|
|
190
209
|
$[10] = callbacks?.onSwap;
|
|
191
|
-
$[11] = callbacks?.
|
|
192
|
-
$[12] =
|
|
193
|
-
$[13] =
|
|
210
|
+
$[11] = callbacks?.onTwapOrder;
|
|
211
|
+
$[12] = callbacks?.onWrapETH;
|
|
212
|
+
$[13] = setWidgetEvents;
|
|
213
|
+
$[14] = t0;
|
|
194
214
|
} else {
|
|
195
|
-
t0 = $[
|
|
215
|
+
t0 = $[14];
|
|
196
216
|
}
|
|
197
217
|
const t1 = callbacks?.onConnectWallet;
|
|
198
218
|
const t2 = callbacks?.onConnectWalletClick;
|
|
199
219
|
const t3 = callbacks?.onAllowToken;
|
|
200
220
|
const t4 = callbacks?.onSwap;
|
|
201
|
-
const t5 = callbacks?.
|
|
202
|
-
const t6 = callbacks?.
|
|
203
|
-
const t7 = callbacks?.
|
|
204
|
-
const t8 = callbacks?.
|
|
205
|
-
const t9 = callbacks?.
|
|
206
|
-
const t10 = callbacks?.
|
|
207
|
-
const t11 = callbacks?.
|
|
208
|
-
const t12 = callbacks?.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
$[15] =
|
|
214
|
-
$[16] =
|
|
215
|
-
$[17] =
|
|
216
|
-
$[18] =
|
|
217
|
-
$[19] =
|
|
218
|
-
$[20] =
|
|
219
|
-
$[21] =
|
|
220
|
-
$[22] =
|
|
221
|
-
$[23] =
|
|
222
|
-
$[24] =
|
|
223
|
-
$[25] =
|
|
224
|
-
$[26] =
|
|
225
|
-
$[27] =
|
|
221
|
+
const t5 = callbacks?.onTwapOrder;
|
|
222
|
+
const t6 = callbacks?.onOTCOrder;
|
|
223
|
+
const t7 = callbacks?.onLimitOrder;
|
|
224
|
+
const t8 = callbacks?.onWrapETH;
|
|
225
|
+
const t9 = callbacks?.onSettingsChange;
|
|
226
|
+
const t10 = callbacks?.onCancelOrder;
|
|
227
|
+
const t11 = callbacks?.onFillOTCOrder;
|
|
228
|
+
const t12 = callbacks?.onFormInputChange;
|
|
229
|
+
const t13 = callbacks?.onPriceChange;
|
|
230
|
+
let t14;
|
|
231
|
+
if ($[15] !== setWidgetEvents || $[16] !== t1 || $[17] !== t10 || $[18] !== t11 || $[19] !== t12 || $[20] !== t13 || $[21] !== t2 || $[22] !== t3 || $[23] !== t4 || $[24] !== t5 || $[25] !== t6 || $[26] !== t7 || $[27] !== t8 || $[28] !== t9) {
|
|
232
|
+
t14 = [t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, setWidgetEvents];
|
|
233
|
+
$[15] = setWidgetEvents;
|
|
234
|
+
$[16] = t1;
|
|
235
|
+
$[17] = t10;
|
|
236
|
+
$[18] = t11;
|
|
237
|
+
$[19] = t12;
|
|
238
|
+
$[20] = t13;
|
|
239
|
+
$[21] = t2;
|
|
240
|
+
$[22] = t3;
|
|
241
|
+
$[23] = t4;
|
|
242
|
+
$[24] = t5;
|
|
243
|
+
$[25] = t6;
|
|
244
|
+
$[26] = t7;
|
|
245
|
+
$[27] = t8;
|
|
246
|
+
$[28] = t9;
|
|
247
|
+
$[29] = t14;
|
|
226
248
|
} else {
|
|
227
|
-
|
|
249
|
+
t14 = $[29];
|
|
228
250
|
}
|
|
229
|
-
useLayoutEffect(t0,
|
|
251
|
+
useLayoutEffect(t0, t14);
|
|
230
252
|
};
|
|
231
253
|
function isFullTokenFormState(state) {
|
|
232
254
|
return !!(state.tokenTo && state.receiverAddress && state.destChainId && state.connectedAccount);
|