@velora-dex/widget 0.2.5-dev.6 → 0.2.5-dev.8
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/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js +43 -42
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.d.ts +2 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js +30 -32
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts +1 -3
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +114 -97
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +3 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js +17 -14
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +1 -2
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js +16 -17
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.d.ts.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js +76 -73
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +3 -0
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/types.d.ts +2 -1
- package/dist/components/widget/ReceiverAddress/types.d.ts.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.d.ts.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.js +9 -8
- package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
- package/dist/components/widget/Screen/ScreenContainer.d.ts.map +1 -1
- package/dist/components/widget/Screen/ScreenContainer.js +7 -31
- package/dist/components/widget/Screen/ScreenContainer.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.d.ts.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js +5 -0
- package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.d.ts +3 -2
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.d.ts.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +24 -20
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.d.ts +3 -3
- package/dist/components/widget/TradeOverview/utils/preWrap.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/configurator/components/FormPropsInputs.d.ts.map +1 -1
- package/dist/configurator/components/common/ButtonGroup.d.ts +12 -0
- package/dist/configurator/components/common/ButtonGroup.d.ts.map +1 -0
- package/dist/core/LimitOrderButton.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.js +49 -23
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/Updaters.d.ts.map +1 -1
- package/dist/core/Updaters.js +22 -1
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/across/isCrosshcainPossible.d.ts +10 -0
- package/dist/core/across/isCrosshcainPossible.d.ts.map +1 -0
- package/dist/core/across/isCrosshcainPossible.js +41 -0
- package/dist/core/across/isCrosshcainPossible.js.map +1 -0
- package/dist/core/across/utils.d.ts +7 -3
- package/dist/core/across/utils.d.ts.map +1 -1
- package/dist/core/across/utils.js +10 -7
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +56 -33
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +72 -17
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +76 -66
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/state/common.d.ts +15 -3
- package/dist/core/inputs/state/common.d.ts.map +1 -1
- package/dist/core/inputs/state/common.js +51 -12
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js +33 -44
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js +85 -21
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/inputs/state/types.d.ts +9 -1
- package/dist/core/inputs/state/types.d.ts.map +1 -1
- package/dist/core/limit/state/deadlineAtom.d.ts +10 -2
- package/dist/core/limit/state/deadlineAtom.d.ts.map +1 -1
- package/dist/core/limit/state/deadlineAtom.js +15 -8
- package/dist/core/limit/state/deadlineAtom.js.map +1 -1
- package/dist/core/limit/state/isCrosschainAtom.d.ts +3 -0
- package/dist/core/limit/state/isCrosschainAtom.d.ts.map +1 -0
- package/dist/core/limit/state/isCrosschainAtom.js +13 -0
- package/dist/core/limit/state/isCrosschainAtom.js.map +1 -0
- package/dist/core/limit/state/limitInputActionsAtom.d.ts +4 -1
- package/dist/core/limit/state/limitInputActionsAtom.d.ts.map +1 -1
- package/dist/core/limit/state/limitInputActionsAtom.js +6 -2
- package/dist/core/limit/state/limitInputActionsAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.js +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
- package/dist/core/limit/state/limitTokenAtoms.d.ts +10 -0
- package/dist/core/limit/state/limitTokenAtoms.d.ts.map +1 -0
- package/dist/core/limit/state/limitTokenAtoms.js +17 -0
- package/dist/core/limit/state/limitTokenAtoms.js.map +1 -0
- package/dist/core/limit/state/receiverAddressAtom.d.ts +7 -0
- package/dist/core/limit/state/receiverAddressAtom.d.ts.map +1 -0
- package/dist/core/limit/state/receiverAddressAtom.js +40 -0
- package/dist/core/limit/state/receiverAddressAtom.js.map +1 -0
- package/dist/core/limit/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/limit/state/selectedTokenActionsAtom.js +94 -18
- package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenAtom.d.ts +0 -9
- package/dist/core/limit/state/selectedTokenAtom.d.ts.map +1 -1
- package/dist/core/limit/state/selectedTokenAtom.js +53 -21
- package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/limit/state/utils.d.ts +9 -1
- package/dist/core/limit/state/utils.d.ts.map +1 -1
- package/dist/core/limit/state/utils.js +44 -2
- package/dist/core/limit/state/utils.js.map +1 -1
- package/dist/core/limit/useLimitRate.d.ts +9 -0
- package/dist/core/limit/useLimitRate.d.ts.map +1 -1
- package/dist/core/limit/useLimitRate.js +145 -8
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.js +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js +132 -72
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/otc/state/deadlineAtom.d.ts +8 -3
- package/dist/core/otc/state/deadlineAtom.d.ts.map +1 -1
- package/dist/core/otc/state/deadlineAtom.js +16 -10
- package/dist/core/otc/state/deadlineAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputActionsAtom.d.ts +4 -1
- package/dist/core/otc/state/otcInputActionsAtom.d.ts.map +1 -1
- package/dist/core/otc/state/otcInputActionsAtom.js +6 -2
- package/dist/core/otc/state/otcInputActionsAtom.js.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.d.ts +2 -0
- package/dist/core/screen/hooks/useOnClickOutside.d.ts.map +1 -0
- package/dist/core/screen/hooks/useOnClickOutside.js +30 -0
- package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -0
- package/dist/core/screen/screenByType.d.ts +1 -3
- package/dist/core/screen/screenByType.d.ts.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 +37 -7
- package/dist/core/state/chainToAtom.js.map +1 -1
- package/dist/core/state/configEffectAtom.d.ts +0 -3
- package/dist/core/state/configEffectAtom.d.ts.map +1 -1
- package/dist/core/state/configEffectAtom.js +49 -37
- package/dist/core/state/configEffectAtom.js.map +1 -1
- package/dist/core/state/enabledChainsAtom.d.ts +3 -0
- package/dist/core/state/enabledChainsAtom.d.ts.map +1 -1
- package/dist/core/state/enabledChainsAtom.js.map +1 -1
- package/dist/core/state/getSelectableDestChains.d.ts +8 -0
- package/dist/core/state/getSelectableDestChains.d.ts.map +1 -0
- package/dist/core/state/getSelectableDestChains.js +34 -0
- package/dist/core/state/getSelectableDestChains.js.map +1 -0
- package/dist/events/getters/limit.d.ts.map +1 -1
- package/dist/events/getters/limit.js +5 -2
- package/dist/events/getters/limit.js.map +1 -1
- package/dist/events/hooks/useOnPriceUpdates.d.ts.map +1 -1
- package/dist/events/hooks/useOnPriceUpdates.js +37 -25
- package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
- package/dist/events/types/formInput.d.ts +1 -1
- package/dist/events/types/formInput.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts +2 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js +24 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts +6 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js +9 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts +4 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js +12 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts +19 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts +4 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js +81 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +3 -0
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +2 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +8 -7
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts +4 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js +61 -43
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts +0 -2
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +6 -8
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -0
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +54 -21
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.d.ts +3 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.d.ts.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.js +25 -22
- package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.d.ts +3 -1
- package/dist/hooks/tokens/useTokensFromAcross.d.ts.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.js +36 -25
- package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.d.ts +7 -2
- package/dist/hooks/useAvailableCrosses.d.ts.map +1 -1
- package/dist/hooks/useAvailableCrosses.js +39 -25
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBridgeInfo.d.ts +4 -1
- package/dist/hooks/useBridgeInfo.d.ts.map +1 -1
- package/dist/hooks/useBridgeInfo.js +26 -11
- package/dist/hooks/useBridgeInfo.js.map +1 -1
- package/dist/hooks/useClickOutside.d.ts +1 -1
- package/dist/hooks/useClickOutside.d.ts.map +1 -1
- package/dist/hooks/useClickOutside.js +27 -13
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/hooks/useIsCrosschainPossible.d.ts +3 -1
- package/dist/hooks/useIsCrosschainPossible.d.ts.map +1 -1
- package/dist/hooks/useIsCrosschainPossible.js +33 -22
- package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
- package/dist/hooks/useSelectableDestChains.d.ts +5 -1
- package/dist/hooks/useSelectableDestChains.d.ts.map +1 -1
- package/dist/hooks/useSelectableDestChains.js +42 -36
- package/dist/hooks/useSelectableDestChains.js.map +1 -1
- package/dist/styles.css +3 -0
- package/package.json +2 -2
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.d.ts +0 -15
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js +0 -92
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js.map +0 -1
|
@@ -1,27 +1,59 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { isCrosschainPossible } from '../../across/isCrosshcainPossible.js';
|
|
2
|
+
import { isTokenFromAcross, findFirstTokenFromAcross } from '../../across/utils.js';
|
|
3
|
+
import { jotaiStore } from '../../store.js';
|
|
4
|
+
import { getSelectableDestChains } from '../../state/getSelectableDestChains.js';
|
|
5
|
+
import { enabledSrcChainsAtom } from '../../state/enabledChainsAtom.js';
|
|
3
6
|
import { pickDefaultTokenPair } from '../../../tokens/defaultTokens.js';
|
|
4
|
-
import {
|
|
7
|
+
import { allTokensByChainAtom } from '../../../tokens/state/allTokensByChainAtom.js';
|
|
8
|
+
import { limitTokenFromAtom, limitTokenToAtom } from './limitTokenAtoms.js';
|
|
5
9
|
|
|
6
|
-
const [defaultTokenFrom] = pickDefaultTokenPair(wagmiConfig.state.chainId, "limit");
|
|
7
|
-
const limitTokenFromAtom = atom(defaultTokenFrom);
|
|
8
|
-
const limitTokenToAtom = atom();
|
|
9
|
-
const useLimitTokenFrom = () => {
|
|
10
|
-
return useAtomValue(limitTokenFromAtom);
|
|
11
|
-
};
|
|
12
|
-
const useLimitTokenTo = () => {
|
|
13
|
-
return useAtomValue(limitTokenToAtom);
|
|
14
|
-
};
|
|
15
10
|
const syncLimitTokensAfterChainSwitch = (chainId) => {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
const enabledSrcChains = jotaiStore.get(enabledSrcChainsAtom);
|
|
12
|
+
if (!enabledSrcChains.includes(chainId)) return;
|
|
13
|
+
let tokenFrom = jotaiStore.get(limitTokenFromAtom);
|
|
14
|
+
if (tokenFrom.network === chainId) return;
|
|
15
|
+
const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(chainId, "limit");
|
|
16
|
+
jotaiStore.set(limitTokenFromAtom, defaultTokenFrom);
|
|
17
|
+
tokenFrom = defaultTokenFrom;
|
|
18
|
+
let tokenTo = jotaiStore.get(limitTokenToAtom);
|
|
19
|
+
if (!tokenTo) return;
|
|
20
|
+
const crosschainPossible = isCrosschainPossible({
|
|
21
|
+
get: jotaiStore.get,
|
|
22
|
+
chainIdFrom: chainId,
|
|
23
|
+
chainIdTo: tokenTo.network,
|
|
24
|
+
mode: "limit"
|
|
25
|
+
});
|
|
26
|
+
if (crosschainPossible) {
|
|
27
|
+
const isTokenToFromAcross = isTokenFromAcross({
|
|
28
|
+
token: tokenTo,
|
|
29
|
+
fromChainId: chainId,
|
|
30
|
+
toChainId: tokenTo.network,
|
|
31
|
+
mode: "limit"
|
|
32
|
+
});
|
|
33
|
+
if (!isTokenToFromAcross) {
|
|
34
|
+
const maybeAcrossToken = findFirstTokenFromAcross({
|
|
35
|
+
fromChainId: chainId,
|
|
36
|
+
toChainId: tokenTo.network,
|
|
37
|
+
listByChainId: jotaiStore.get(allTokensByChainAtom).listByChainId,
|
|
38
|
+
mode: "limit"
|
|
39
|
+
});
|
|
40
|
+
jotaiStore.set(limitTokenToAtom, maybeAcrossToken);
|
|
41
|
+
tokenTo = maybeAcrossToken;
|
|
42
|
+
}
|
|
43
|
+
} else {
|
|
44
|
+
const selectableDestChains = getSelectableDestChains(jotaiStore.get, {
|
|
45
|
+
fromChainId: tokenFrom.network,
|
|
46
|
+
mode: "limit"
|
|
47
|
+
});
|
|
48
|
+
if (selectableDestChains.includes(chainId)) {
|
|
49
|
+
jotaiStore.set(limitTokenToAtom, defaultTokenTo);
|
|
50
|
+
tokenTo = defaultTokenTo;
|
|
51
|
+
} else {
|
|
52
|
+
jotaiStore.set(limitTokenToAtom, void 0);
|
|
53
|
+
tokenTo = void 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
24
56
|
};
|
|
25
57
|
|
|
26
|
-
export {
|
|
58
|
+
export { syncLimitTokensAfterChainSwitch };
|
|
27
59
|
//# sourceMappingURL=selectedTokenAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectedTokenAtom.js","sources":["../../../../src/core/limit/state/selectedTokenAtom.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"selectedTokenAtom.js","sources":["../../../../src/core/limit/state/selectedTokenAtom.ts"],"sourcesContent":["import { isCrosschainPossible } from \"@/core/across/isCrosshcainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { jotaiStore } from \"@/core/store\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\n\nexport const syncLimitTokensAfterChainSwitch = (chainId: SupportedChainId) => {\n const enabledSrcChains = jotaiStore.get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(chainId)) return;\n\n let tokenFrom = jotaiStore.get(limitTokenFromAtom);\n\n // chains are the same? do nothing\n if (tokenFrom.network === chainId) return;\n // token will already be set on new chain, the new token may have been the reason for switchChain\n\n // get default tokens for the new chain\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n chainId,\n \"limit\"\n );\n\n // update tokenFrom\n jotaiStore.set(limitTokenFromAtom, defaultTokenFrom);\n tokenFrom = defaultTokenFrom;\n\n let tokenTo = jotaiStore.get(limitTokenToAtom);\n\n // toChainId derives from tokenTo.network, if no tokenTo - do nothing\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get: jotaiStore.get,\n chainIdFrom: chainId,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: chainId,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // set the token from across as tokenTo,\n // or reset tokenTo if token not found\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: chainId,\n toChainId: tokenTo.network,\n listByChainId: jotaiStore.get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n jotaiStore.set(limitTokenToAtom, maybeAcrossToken);\n tokenTo = maybeAcrossToken;\n }\n } else {\n const selectableDestChains = getSelectableDestChains(jotaiStore.get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (selectableDestChains.includes(chainId)) {\n // can do single-chain on the new chain, set defaults\n jotaiStore.set(limitTokenToAtom, defaultTokenTo);\n tokenTo = defaultTokenTo;\n } else {\n // avoid complexity and reset tokenTo\n jotaiStore.set(limitTokenToAtom, undefined);\n tokenTo = undefined;\n }\n }\n};\n"],"names":["syncLimitTokensAfterChainSwitch","chainId","enabledSrcChains","jotaiStore","get","enabledSrcChainsAtom","includes","tokenFrom","limitTokenFromAtom","network","defaultTokenFrom","defaultTokenTo","pickDefaultTokenPair","set","tokenTo","limitTokenToAtom","crosschainPossible","isCrosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","isTokenFromAcross","token","fromChainId","toChainId","maybeAcrossToken","findFirstTokenFromAcross","listByChainId","allTokensByChainAtom","selectableDestChains","getSelectableDestChains","undefined"],"mappings":";;;;;;;;;AAaO,MAAMA,+BAAAA,GAAkCA,CAACC,OAAAA,KAA8B;AAC5E,EAAA,MAAMC,gBAAAA,GAAmBC,UAAAA,CAAWC,GAAAA,CAAIC,oBAAoB,CAAA;AAC5D,EAAA,IAAI,CAACH,gBAAAA,CAAiBI,QAAAA,CAASL,OAAO,CAAA,EAAG;AAEzC,EAAA,IAAIM,SAAAA,GAAYJ,UAAAA,CAAWC,GAAAA,CAAII,kBAAkB,CAAA;AAGjD,EAAA,IAAID,SAAAA,CAAUE,YAAYR,OAAAA,EAAS;AAInC,EAAA,MAAM,CAACS,gBAAAA,EAAkBC,cAAc,CAAA,GAAIC,oBAAAA,CACzCX,SACA,OACF,CAAA;AAGAE,EAAAA,UAAAA,CAAWU,GAAAA,CAAIL,oBAAoBE,gBAAgB,CAAA;AACnDH,EAAAA,SAAAA,GAAYG,gBAAAA;AAEZ,EAAA,IAAII,OAAAA,GAAUX,UAAAA,CAAWC,GAAAA,CAAIW,gBAAgB,CAAA;AAG7C,EAAA,IAAI,CAACD,OAAAA,EAAS;AAEd,EAAA,MAAME,qBAAqBC,oBAAAA,CAAqB;AAAA,IAC9Cb,KAAKD,UAAAA,CAAWC,GAAAA;AAAAA,IAChBc,WAAAA,EAAajB,OAAAA;AAAAA,IACbkB,WAAWL,OAAAA,CAAQL,OAAAA;AAAAA,IACnBW,IAAAA,EAAM;AAAA,GACP,CAAA;AAED,EAAA,IAAIJ,kBAAAA,EAAoB;AACtB,IAAA,MAAMK,sBAAsBC,iBAAAA,CAAkB;AAAA,MAC5CC,KAAAA,EAAOT,OAAAA;AAAAA,MACPU,WAAAA,EAAavB,OAAAA;AAAAA,MACbwB,WAAWX,OAAAA,CAAQL,OAAAA;AAAAA,MACnBW,IAAAA,EAAM;AAAA,KACP,CAAA;AAED,IAAA,IAAI,CAACC,mBAAAA,EAAqB;AAGxB,MAAA,MAAMK,mBAAmBC,wBAAAA,CAAyB;AAAA,QAChDH,WAAAA,EAAavB,OAAAA;AAAAA,QACbwB,WAAWX,OAAAA,CAAQL,OAAAA;AAAAA,QACnBmB,aAAAA,EAAezB,UAAAA,CAAWC,GAAAA,CAAIyB,oBAAoB,CAAA,CAAED,aAAAA;AAAAA,QACpDR,IAAAA,EAAM;AAAA,OACP,CAAA;AAEDjB,MAAAA,UAAAA,CAAWU,GAAAA,CAAIE,kBAAkBW,gBAAgB,CAAA;AACjDZ,MAAAA,OAAAA,GAAUY,gBAAAA;AAAAA,IACZ;AAAA,EACF,CAAA,MAAO;AACL,IAAA,MAAMI,oBAAAA,GAAuBC,uBAAAA,CAAwB5B,UAAAA,CAAWC,GAAAA,EAAK;AAAA,MACnEoB,aAAajB,SAAAA,CAAUE,OAAAA;AAAAA,MACvBW,IAAAA,EAAM;AAAA,KACP,CAAA;AACD,IAAA,IAAIU,oBAAAA,CAAqBxB,QAAAA,CAASL,OAAO,CAAA,EAAG;AAE1CE,MAAAA,UAAAA,CAAWU,GAAAA,CAAIE,kBAAkBJ,cAAc,CAAA;AAC/CG,MAAAA,OAAAA,GAAUH,cAAAA;AAAAA,IACZ,CAAA,MAAO;AAELR,MAAAA,UAAAA,CAAWU,GAAAA,CAAIE,kBAAkBiB,MAAS,CAAA;AAC1ClB,MAAAA,OAAAA,GAAUkB,MAAAA;AAAAA,IACZ;AAAA,EACF;AACF;;;;"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import { TimeUnitObject } from './deadlineAtom';
|
|
1
|
+
import { TimeUnitObject, TimeUnitState } from './deadlineAtom';
|
|
2
2
|
import { PriceRates } from '../types';
|
|
3
3
|
export declare function timeUnitToSeconds(timeUnitObj: TimeUnitObject): number;
|
|
4
|
+
export declare function getTimeUnitState(timeUnitObj: TimeUnitObject | TimeUnitState): TimeUnitState;
|
|
5
|
+
export declare function getClosestTimeUnit(timestampS: number): {
|
|
6
|
+
readonly label: "never";
|
|
7
|
+
readonly value: 0;
|
|
8
|
+
} | {
|
|
9
|
+
label: "minutes" | "days" | "hours" | "months";
|
|
10
|
+
value: number;
|
|
11
|
+
};
|
|
4
12
|
export declare function calculateReceiveAmount(payAmount: string, priceRates: PriceRates, isReversed: boolean): string;
|
|
5
13
|
export declare function calculatePayAmount(receiveAmount: string, priceRates: PriceRates, isReversed: boolean): string;
|
|
6
14
|
export declare function calculateRates(receiveAmount: string, payAmount: string): PriceRates;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,UAa5D;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,cAAc,GAAG,aAAa,GAC1C,aAAa,CAWf;AAeD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM;;;;;;EAoBpD;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,UAAU,CAYZ;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAClB,UAAU,CAWZ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Big from 'big.js';
|
|
2
|
-
import { zeroRates } from './constants.js';
|
|
2
|
+
import { neverTimeUnit, zeroRates } from './constants.js';
|
|
3
3
|
|
|
4
4
|
function timeUnitToSeconds(timeUnitObj) {
|
|
5
5
|
switch (timeUnitObj.label) {
|
|
@@ -15,6 +15,48 @@ function timeUnitToSeconds(timeUnitObj) {
|
|
|
15
15
|
return 0;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
function getTimeUnitState(timeUnitObj) {
|
|
19
|
+
if (isTimeUnitState(timeUnitObj)) {
|
|
20
|
+
return timeUnitObj;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
...timeUnitObj,
|
|
24
|
+
timestamp: timeUnitObj.label === neverTimeUnit.label ? 0 : Math.floor(Date.now() / 1e3 + timeUnitToSeconds(timeUnitObj))
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function isTimeUnitState(timeUnitObj) {
|
|
28
|
+
return "timestamp" in timeUnitObj && timeUnitObj.timestamp !== void 0;
|
|
29
|
+
}
|
|
30
|
+
const units = [{
|
|
31
|
+
label: "months",
|
|
32
|
+
ms: 30 * 24 * 60 * 60 * 1e3
|
|
33
|
+
}, {
|
|
34
|
+
label: "days",
|
|
35
|
+
ms: 24 * 60 * 60 * 1e3
|
|
36
|
+
}, {
|
|
37
|
+
label: "hours",
|
|
38
|
+
ms: 60 * 60 * 1e3
|
|
39
|
+
}, {
|
|
40
|
+
label: "minutes",
|
|
41
|
+
ms: 60 * 1e3
|
|
42
|
+
}];
|
|
43
|
+
function getClosestTimeUnit(timestampS) {
|
|
44
|
+
if (timestampS <= 0) return neverTimeUnit;
|
|
45
|
+
const timestampMs = timestampS * 1e3;
|
|
46
|
+
const now = Date.now();
|
|
47
|
+
if (timestampMs <= now) return neverTimeUnit;
|
|
48
|
+
const diffMs = timestampMs - now;
|
|
49
|
+
for (const unit of units) {
|
|
50
|
+
const value = Math.floor(diffMs / unit.ms);
|
|
51
|
+
if (value > 0) {
|
|
52
|
+
return {
|
|
53
|
+
label: unit.label,
|
|
54
|
+
value
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return neverTimeUnit;
|
|
59
|
+
}
|
|
18
60
|
function calculateReceiveAmount(payAmount, priceRates, isReversed) {
|
|
19
61
|
const pay = Big(payAmount || "0");
|
|
20
62
|
if (isReversed) {
|
|
@@ -62,5 +104,5 @@ function getUpdatedRates(value, isReversed) {
|
|
|
62
104
|
return zeroRates;
|
|
63
105
|
}
|
|
64
106
|
|
|
65
|
-
export { calculatePayAmount, calculateRates, calculateReceiveAmount, getUpdatedRates, timeUnitToSeconds };
|
|
107
|
+
export { calculatePayAmount, calculateRates, calculateReceiveAmount, getClosestTimeUnit, getTimeUnitState, getUpdatedRates, timeUnitToSeconds };
|
|
66
108
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject } from \"./deadlineAtom\";\nimport type { PriceRates } from \"../types\";\nimport { zeroRates } from \"./constants\";\n\nexport function timeUnitToSeconds(timeUnitObj: TimeUnitObject) {\n switch (timeUnitObj.label) {\n case \"minutes\":\n return timeUnitObj.value * 60;\n case \"hours\":\n return timeUnitObj.value * 60 * 60;\n case \"days\":\n return timeUnitObj.value * 60 * 60 * 24;\n case \"months\":\n return timeUnitObj.value * 60 * 60 * 24 * 30;\n default:\n return 0;\n }\n}\n\nexport function calculateReceiveAmount(\n payAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const pay = Big(payAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → receive = pay / price\n const price = Big(priceRates.rateReversed || \"0\");\n if (price.eq(0)) return \"0\";\n return pay.div(price).toFixed();\n }\n\n const price = Big(priceRates.rate || \"0\");\n // normal: price = to/from → receive = pay * price\n return pay.mul(price).toFixed();\n}\n\nexport function calculatePayAmount(\n receiveAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const receive = Big(receiveAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → pay = receive * price\n const price = Big(priceRates.rateReversed || \"0\");\n return receive.mul(price).toFixed();\n }\n\n // normal: pay = receive / price\n const price = Big(priceRates.rate || \"0\");\n if (price.eq(0)) return \"0\";\n return receive.div(price).toFixed();\n}\n\nexport function calculateRates(\n receiveAmount: string,\n payAmount: string\n): PriceRates {\n const receive = Big(receiveAmount || \"0\");\n const pay = Big(payAmount || \"0\");\n\n if (pay.eq(0) || receive.eq(0)) return zeroRates;\n\n // normal: price = to/from → price = receive / pay\n const rate = receive.div(pay).toFixed();\n // reversed: price = from/to → price = pay / receive\n const rateReversed = pay.div(receive).toFixed();\n\n return { rate, rateReversed };\n}\n\nexport function getUpdatedRates(\n value: string,\n isReversed: boolean\n): PriceRates {\n const bigPrice = Big(value || 0);\n if (!bigPrice.eq(0)) {\n const rate = bigPrice.toFixed();\n const rateReversed = Big(1).div(bigPrice).toFixed();\n\n return isReversed\n ? { rate: rateReversed, rateReversed: rate }\n : { rate, rateReversed };\n }\n return zeroRates;\n}\n"],"names":["timeUnitToSeconds","timeUnitObj","label","value","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","Big","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","zeroRates","getUpdatedRates","bigPrice"],"mappings":";;;AAKO,SAASA,kBAAkBC,WAAAA,EAA6B;AAC7D,EAAA,QAAQA,YAAYC,KAAAA;AAAK,IACvB,KAAK,SAAA;AACH,MAAA,OAAOD,YAAYE,KAAAA,GAAQ,EAAA;AAAA,IAC7B,KAAK,OAAA;AACH,MAAA,OAAOF,WAAAA,CAAYE,QAAQ,EAAA,GAAK,EAAA;AAAA,IAClC,KAAK,MAAA;AACH,MAAA,OAAOF,WAAAA,CAAYE,KAAAA,GAAQ,EAAA,GAAK,EAAA,GAAK,EAAA;AAAA,IACvC,KAAK,QAAA;AACH,MAAA,OAAOF,WAAAA,CAAYE,KAAAA,GAAQ,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AAAA,IAC5C;AACE,MAAA,OAAO,CAAA;AAAA;AAEb;AAEO,SAASC,sBAAAA,CACdC,SAAAA,EACAC,UAAAA,EACAC,UAAAA,EACA;AACA,EAAA,MAAMC,GAAAA,GAAMC,GAAAA,CAAIJ,SAAAA,IAAa,GAAG,CAAA;AAEhC,EAAA,IAAIE,UAAAA,EAAY;AAEd,IAAA,MAAMG,MAAAA,GAAQD,GAAAA,CAAIH,UAAAA,CAAWK,YAAAA,IAAgB,GAAG,CAAA;AAChD,IAAA,IAAID,MAAAA,CAAME,EAAAA,CAAG,CAAC,CAAA,EAAG,OAAO,GAAA;AACxB,IAAA,OAAOJ,GAAAA,CAAIK,GAAAA,CAAIH,MAAK,CAAA,CAAEI,OAAAA,EAAQ;AAAA,EAChC;AAEA,EAAA,MAAMJ,KAAAA,GAAQD,GAAAA,CAAIH,UAAAA,CAAWS,IAAAA,IAAQ,GAAG,CAAA;AAExC,EAAA,OAAOP,GAAAA,CAAIQ,GAAAA,CAAIN,KAAK,CAAA,CAAEI,OAAAA,EAAQ;AAChC;AAEO,SAASG,kBAAAA,CACdC,aAAAA,EACAZ,UAAAA,EACAC,UAAAA,EACA;AACA,EAAA,MAAMY,OAAAA,GAAUV,GAAAA,CAAIS,aAAAA,IAAiB,GAAG,CAAA;AAExC,EAAA,IAAIX,UAAAA,EAAY;AAEd,IAAA,MAAMG,MAAAA,GAAQD,GAAAA,CAAIH,UAAAA,CAAWK,YAAAA,IAAgB,GAAG,CAAA;AAChD,IAAA,OAAOQ,OAAAA,CAAQH,GAAAA,CAAIN,MAAK,CAAA,CAAEI,OAAAA,EAAQ;AAAA,EACpC;AAGA,EAAA,MAAMJ,KAAAA,GAAQD,GAAAA,CAAIH,UAAAA,CAAWS,IAAAA,IAAQ,GAAG,CAAA;AACxC,EAAA,IAAIL,KAAAA,CAAME,EAAAA,CAAG,CAAC,CAAA,EAAG,OAAO,GAAA;AACxB,EAAA,OAAOO,OAAAA,CAAQN,GAAAA,CAAIH,KAAK,CAAA,CAAEI,OAAAA,EAAQ;AACpC;AAEO,SAASM,cAAAA,CACdF,eACAb,SAAAA,EACY;AACZ,EAAA,MAAMc,OAAAA,GAAUV,GAAAA,CAAIS,aAAAA,IAAiB,GAAG,CAAA;AACxC,EAAA,MAAMV,GAAAA,GAAMC,GAAAA,CAAIJ,SAAAA,IAAa,GAAG,CAAA;AAEhC,EAAA,IAAIG,GAAAA,CAAII,GAAG,CAAC,CAAA,IAAKO,QAAQP,EAAAA,CAAG,CAAC,GAAG,OAAOS,SAAAA;AAGvC,EAAA,MAAMN,IAAAA,GAAOI,OAAAA,CAAQN,GAAAA,CAAIL,GAAG,EAAEM,OAAAA,EAAQ;AAEtC,EAAA,MAAMH,YAAAA,GAAeH,GAAAA,CAAIK,GAAAA,CAAIM,OAAO,EAAEL,OAAAA,EAAQ;AAE9C,EAAA,OAAO;AAAA,IAAEC,IAAAA;AAAAA,IAAMJ;AAAAA,GAAa;AAC9B;AAEO,SAASW,eAAAA,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject, TimeUnitState } from \"./deadlineAtom\";\nimport type { PriceRates } from \"../types\";\nimport { neverTimeUnit, zeroRates } from \"./constants\";\n\nexport function timeUnitToSeconds(timeUnitObj: TimeUnitObject) {\n switch (timeUnitObj.label) {\n case \"minutes\":\n return timeUnitObj.value * 60;\n case \"hours\":\n return timeUnitObj.value * 60 * 60;\n case \"days\":\n return timeUnitObj.value * 60 * 60 * 24;\n case \"months\":\n return timeUnitObj.value * 60 * 60 * 24 * 30;\n default:\n return 0;\n }\n}\n\nexport function getTimeUnitState(\n timeUnitObj: TimeUnitObject | TimeUnitState\n): TimeUnitState {\n if (isTimeUnitState(timeUnitObj)) {\n return timeUnitObj;\n }\n return {\n ...timeUnitObj,\n timestamp:\n timeUnitObj.label === neverTimeUnit.label\n ? 0\n : Math.floor(Date.now() / 1000 + timeUnitToSeconds(timeUnitObj)),\n };\n}\n\nfunction isTimeUnitState(\n timeUnitObj: TimeUnitObject | TimeUnitState\n): timeUnitObj is TimeUnitState {\n return \"timestamp\" in timeUnitObj && timeUnitObj.timestamp !== undefined;\n}\n\nconst units = [\n { label: \"months\", ms: 30 * 24 * 60 * 60 * 1000 },\n { label: \"days\", ms: 24 * 60 * 60 * 1000 },\n { label: \"hours\", ms: 60 * 60 * 1000 },\n { label: \"minutes\", ms: 60 * 1000 },\n] as const;\n\nexport function getClosestTimeUnit(timestampS: number) {\n if (timestampS <= 0) return neverTimeUnit;\n const timestampMs = timestampS * 1000;\n\n const now = Date.now();\n\n if (timestampMs <= now) return neverTimeUnit;\n\n const diffMs = timestampMs - now;\n\n for (const unit of units) {\n const value = Math.floor(diffMs / unit.ms);\n if (value > 0) {\n return {\n label: unit.label,\n value,\n };\n }\n }\n return neverTimeUnit;\n}\n\nexport function calculateReceiveAmount(\n payAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const pay = Big(payAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → receive = pay / price\n const price = Big(priceRates.rateReversed || \"0\");\n if (price.eq(0)) return \"0\";\n return pay.div(price).toFixed();\n }\n\n const price = Big(priceRates.rate || \"0\");\n // normal: price = to/from → receive = pay * price\n return pay.mul(price).toFixed();\n}\n\nexport function calculatePayAmount(\n receiveAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const receive = Big(receiveAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → pay = receive * price\n const price = Big(priceRates.rateReversed || \"0\");\n return receive.mul(price).toFixed();\n }\n\n // normal: pay = receive / price\n const price = Big(priceRates.rate || \"0\");\n if (price.eq(0)) return \"0\";\n return receive.div(price).toFixed();\n}\n\nexport function calculateRates(\n receiveAmount: string,\n payAmount: string\n): PriceRates {\n const receive = Big(receiveAmount || \"0\");\n const pay = Big(payAmount || \"0\");\n\n if (pay.eq(0) || receive.eq(0)) return zeroRates;\n\n // normal: price = to/from → price = receive / pay\n const rate = receive.div(pay).toFixed();\n // reversed: price = from/to → price = pay / receive\n const rateReversed = pay.div(receive).toFixed();\n\n return { rate, rateReversed };\n}\n\nexport function getUpdatedRates(\n value: string,\n isReversed: boolean\n): PriceRates {\n const bigPrice = Big(value || 0);\n if (!bigPrice.eq(0)) {\n const rate = bigPrice.toFixed();\n const rateReversed = Big(1).div(bigPrice).toFixed();\n\n return isReversed\n ? { rate: rateReversed, rateReversed: rate }\n : { rate, rateReversed };\n }\n return zeroRates;\n}\n"],"names":["timeUnitToSeconds","timeUnitObj","label","value","getTimeUnitState","isTimeUnitState","timestamp","neverTimeUnit","Math","floor","Date","now","undefined","units","ms","getClosestTimeUnit","timestampS","timestampMs","diffMs","unit","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","Big","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","zeroRates","getUpdatedRates","bigPrice"],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import { UseLimitRateResult } from './types';
|
|
2
|
+
export declare const useDeltaSwapPriceForLimit: ({ enabled, refetchInterval, tradeMode, }: {
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
refetchInterval?: number;
|
|
5
|
+
tradeMode: "limit" | "otc";
|
|
6
|
+
}) => {
|
|
7
|
+
price: import('@velora-dex/sdk').DeltaPrice | import('@velora-dex/sdk').BridgePrice | undefined;
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
error: Error | null;
|
|
10
|
+
};
|
|
2
11
|
export declare const useLimitRate: (tradeMode: "limit" | "otc") => UseLimitRateResult;
|
|
3
12
|
//# sourceMappingURL=useLimitRate.d.ts.map
|
|
@@ -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;AAqDlD,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;;;;CAkDA,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,kBA8FF,CAAC"}
|
|
@@ -7,6 +7,9 @@ import { formatUnits, parseUnits } from 'viem';
|
|
|
7
7
|
import { useWidgetTokens, tradeModeToTokenAtoms } from '../inputs/state/common.js';
|
|
8
8
|
import { useAtomValue } from '../store.js';
|
|
9
9
|
import { useMemo } from 'react';
|
|
10
|
+
import { useDeltaPriceQuery } from '../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js';
|
|
11
|
+
import { isETH } from '../../tokens/utils/eth.js';
|
|
12
|
+
import { wrappedNativeCurrency } from '../../lib/constants/weth.js';
|
|
10
13
|
|
|
11
14
|
const PRICE_REFETCH_INTERVAL = 6e4 * 5;
|
|
12
15
|
const useSwapPriceForLimit = (t0) => {
|
|
@@ -93,6 +96,115 @@ const useSwapPriceForLimit = (t0) => {
|
|
|
93
96
|
}
|
|
94
97
|
return t7;
|
|
95
98
|
};
|
|
99
|
+
const useDeltaSwapPriceForLimit = (t0) => {
|
|
100
|
+
const $ = distExports.c(22);
|
|
101
|
+
const {
|
|
102
|
+
enabled: t1,
|
|
103
|
+
refetchInterval: t2,
|
|
104
|
+
tradeMode
|
|
105
|
+
} = t0;
|
|
106
|
+
const enabled = t1 === void 0 ? true : t1;
|
|
107
|
+
const refetchInterval = t2 === void 0 ? 1e4 : t2;
|
|
108
|
+
const {
|
|
109
|
+
priceParams,
|
|
110
|
+
chainId,
|
|
111
|
+
destChainId,
|
|
112
|
+
isCrossChain
|
|
113
|
+
} = usePricesParams(tradeMode);
|
|
114
|
+
const queryEnabled = enabled && tradeMode === "limit";
|
|
115
|
+
let t3;
|
|
116
|
+
if ($[0] !== priceParams) {
|
|
117
|
+
t3 = {
|
|
118
|
+
...priceParams,
|
|
119
|
+
side: "SELL",
|
|
120
|
+
ignoreBadUsdPrice: true
|
|
121
|
+
};
|
|
122
|
+
$[0] = priceParams;
|
|
123
|
+
$[1] = t3;
|
|
124
|
+
} else {
|
|
125
|
+
t3 = $[1];
|
|
126
|
+
}
|
|
127
|
+
const crosschainPriceParams = t3;
|
|
128
|
+
const isLimitOrder = tradeMode === "limit";
|
|
129
|
+
const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : void 0;
|
|
130
|
+
let t4;
|
|
131
|
+
if ($[2] !== chainId || $[3] !== isLimitOrder || $[4] !== priceParams) {
|
|
132
|
+
t4 = isLimitOrder && isETH({
|
|
133
|
+
address: priceParams.srcToken
|
|
134
|
+
}) ? wrappedNativeCurrency[chainId] : priceParams.srcToken;
|
|
135
|
+
$[2] = chainId;
|
|
136
|
+
$[3] = isLimitOrder;
|
|
137
|
+
$[4] = priceParams;
|
|
138
|
+
$[5] = t4;
|
|
139
|
+
} else {
|
|
140
|
+
t4 = $[5];
|
|
141
|
+
}
|
|
142
|
+
const srcTokenForDelta = t4;
|
|
143
|
+
let t5;
|
|
144
|
+
if ($[6] !== allowBridgeAndSwap || $[7] !== crosschainPriceParams || $[8] !== srcTokenForDelta) {
|
|
145
|
+
t5 = {
|
|
146
|
+
...crosschainPriceParams,
|
|
147
|
+
allowBridgeAndSwap,
|
|
148
|
+
srcToken: srcTokenForDelta
|
|
149
|
+
};
|
|
150
|
+
$[6] = allowBridgeAndSwap;
|
|
151
|
+
$[7] = crosschainPriceParams;
|
|
152
|
+
$[8] = srcTokenForDelta;
|
|
153
|
+
$[9] = t5;
|
|
154
|
+
} else {
|
|
155
|
+
t5 = $[9];
|
|
156
|
+
}
|
|
157
|
+
let t6;
|
|
158
|
+
if ($[10] !== queryEnabled || $[11] !== refetchInterval) {
|
|
159
|
+
t6 = {
|
|
160
|
+
enabled: queryEnabled,
|
|
161
|
+
refetchInterval,
|
|
162
|
+
retry: false,
|
|
163
|
+
refetchOnWindowFocus: false,
|
|
164
|
+
refetchOnMount: false
|
|
165
|
+
};
|
|
166
|
+
$[10] = queryEnabled;
|
|
167
|
+
$[11] = refetchInterval;
|
|
168
|
+
$[12] = t6;
|
|
169
|
+
} else {
|
|
170
|
+
t6 = $[12];
|
|
171
|
+
}
|
|
172
|
+
let t7;
|
|
173
|
+
if ($[13] !== chainId || $[14] !== destChainId || $[15] !== t5 || $[16] !== t6) {
|
|
174
|
+
t7 = {
|
|
175
|
+
priceParams: t5,
|
|
176
|
+
chainId,
|
|
177
|
+
destChainId,
|
|
178
|
+
timeout: 5e3,
|
|
179
|
+
query: t6
|
|
180
|
+
};
|
|
181
|
+
$[13] = chainId;
|
|
182
|
+
$[14] = destChainId;
|
|
183
|
+
$[15] = t5;
|
|
184
|
+
$[16] = t6;
|
|
185
|
+
$[17] = t7;
|
|
186
|
+
} else {
|
|
187
|
+
t7 = $[17];
|
|
188
|
+
}
|
|
189
|
+
const {
|
|
190
|
+
result: deltaPriceQuery
|
|
191
|
+
} = useDeltaPriceQuery(t7);
|
|
192
|
+
let t8;
|
|
193
|
+
if ($[18] !== deltaPriceQuery.data || $[19] !== deltaPriceQuery.error || $[20] !== deltaPriceQuery.isLoading) {
|
|
194
|
+
t8 = {
|
|
195
|
+
price: deltaPriceQuery.data,
|
|
196
|
+
isLoading: deltaPriceQuery.isLoading,
|
|
197
|
+
error: deltaPriceQuery.error
|
|
198
|
+
};
|
|
199
|
+
$[18] = deltaPriceQuery.data;
|
|
200
|
+
$[19] = deltaPriceQuery.error;
|
|
201
|
+
$[20] = deltaPriceQuery.isLoading;
|
|
202
|
+
$[21] = t8;
|
|
203
|
+
} else {
|
|
204
|
+
t8 = $[21];
|
|
205
|
+
}
|
|
206
|
+
return t8;
|
|
207
|
+
};
|
|
96
208
|
const useLimitRate = (tradeMode) => {
|
|
97
209
|
const {
|
|
98
210
|
tokenFrom,
|
|
@@ -111,8 +223,9 @@ const useLimitRate = (tradeMode) => {
|
|
|
111
223
|
refetchInterval: PRICE_REFETCH_INTERVAL
|
|
112
224
|
});
|
|
113
225
|
const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;
|
|
226
|
+
const isCrosschainLOrder = tradeMode === "limit" && tokenTo && tokenTo.network !== tokenFrom.network;
|
|
114
227
|
const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);
|
|
115
|
-
const fetchSwapPrice = !fiatPricesAvailable && !areFiatPricesLoading;
|
|
228
|
+
const fetchSwapPrice = !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;
|
|
116
229
|
const {
|
|
117
230
|
price: swapPrice,
|
|
118
231
|
isLoading: isSwapPriceLoading
|
|
@@ -120,6 +233,13 @@ const useLimitRate = (tradeMode) => {
|
|
|
120
233
|
enabled: fetchSwapPrice,
|
|
121
234
|
tradeMode
|
|
122
235
|
});
|
|
236
|
+
const {
|
|
237
|
+
price: deltaCrosschainPrice,
|
|
238
|
+
isLoading: isDeltaCrosschainPriceLoading
|
|
239
|
+
} = useDeltaSwapPriceForLimit({
|
|
240
|
+
enabled: isCrosschainLOrder,
|
|
241
|
+
tradeMode
|
|
242
|
+
});
|
|
123
243
|
const isLoading = areFiatPricesLoading || isSwapPriceLoading;
|
|
124
244
|
return useMemo(() => {
|
|
125
245
|
if (!tokenTo) {
|
|
@@ -129,14 +249,31 @@ const useLimitRate = (tradeMode) => {
|
|
|
129
249
|
}
|
|
130
250
|
let rate = void 0;
|
|
131
251
|
let rateReversed = void 0;
|
|
132
|
-
if (
|
|
252
|
+
if (isCrosschainLOrder && deltaCrosschainPrice) {
|
|
253
|
+
const srcUnits = formatUnits(BigInt(deltaCrosschainPrice.srcAmount), tokenFrom.decimals);
|
|
254
|
+
const destUnits = formatUnits(
|
|
255
|
+
// amount on destChain accounting for decimals
|
|
256
|
+
BigInt(deltaCrosschainPrice.receivedDestAmount),
|
|
257
|
+
tokenTo.decimals
|
|
258
|
+
);
|
|
259
|
+
rate = Big(destUnits).div(srcUnits).toFixed();
|
|
260
|
+
rateReversed = Big(srcUnits).div(destUnits).toFixed();
|
|
261
|
+
return {
|
|
262
|
+
rates: {
|
|
263
|
+
rate,
|
|
264
|
+
rateReversed
|
|
265
|
+
},
|
|
266
|
+
// for Crosschain price we care only about its loading state, not all others
|
|
267
|
+
isLoading: isDeltaCrosschainPriceLoading
|
|
268
|
+
};
|
|
269
|
+
} else if (fiatPricesAvailable) {
|
|
133
270
|
rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();
|
|
134
271
|
rateReversed = Big(tokenToPrice.price).div(tokenFromPrice.price).toFixed();
|
|
135
272
|
} else if (swapPrice) {
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
rate = Big(
|
|
139
|
-
rateReversed = Big(
|
|
273
|
+
const srcUnits_0 = formatUnits(BigInt(swapPrice.srcAmount), tokenFrom.decimals);
|
|
274
|
+
const destUnits_0 = formatUnits(BigInt(swapPrice.destAmount), tokenTo.decimals);
|
|
275
|
+
rate = Big(destUnits_0).div(srcUnits_0).toFixed();
|
|
276
|
+
rateReversed = Big(srcUnits_0).div(destUnits_0).toFixed();
|
|
140
277
|
}
|
|
141
278
|
if (!rate || !rateReversed) {
|
|
142
279
|
return {
|
|
@@ -150,8 +287,8 @@ const useLimitRate = (tradeMode) => {
|
|
|
150
287
|
},
|
|
151
288
|
isLoading
|
|
152
289
|
};
|
|
153
|
-
}, [fiatPricesAvailable, isLoading, swapPrice, tokenFrom.decimals, tokenFromPrice?.price, tokenTo, tokenToPrice?.price]);
|
|
290
|
+
}, [fiatPricesAvailable, isLoading, swapPrice, tokenFrom.decimals, tokenFromPrice?.price, tokenTo, tokenToPrice?.price, isCrosschainLOrder, deltaCrosschainPrice, isDeltaCrosschainPriceLoading]);
|
|
154
291
|
};
|
|
155
292
|
|
|
156
|
-
export { useLimitRate };
|
|
293
|
+
export { useDeltaSwapPriceForLimit, useLimitRate };
|
|
157
294
|
//# sourceMappingURL=useLimitRate.js.map
|
|
@@ -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\";\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\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, { refetchInterval: PRICE_REFETCH_INTERVAL });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, { refetchInterval: PRICE_REFETCH_INTERVAL });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice = !fiatPricesAvailable && !areFiatPricesLoading;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({ enabled: fetchSwapPrice, tradeMode });\n\n const isLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (fiatPricesAvailable) {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\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 };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading,\n };\n }, [\n fiatPricesAvailable,\n isLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\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","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","useMemo","rate","rateReversed","Big","div","toFixed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","destAmount","rates"],"mappings":"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"}
|
|
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\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\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 // Delta /prices errors when srcToken=ETH;\n // we will pre-wrap ETH->WETH before Swap anyway;\n // be careful not to use deltaPrices.srcToken with the assumption that (tokenFrom=ETH) !== (deltaPrices.srcToken=WETH)\n const srcTokenForDelta =\n isLimitOrder && isETH({ address: priceParams.srcToken })\n ? wrappedNativeCurrency[chainId]\n : priceParams.srcToken;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n srcToken: srcTokenForDelta,\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, { refetchInterval: PRICE_REFETCH_INTERVAL });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, { refetchInterval: PRICE_REFETCH_INTERVAL });\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({ enabled: fetchSwapPrice, tradeMode });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({ enabled: isCrosschainLOrder, tradeMode });\n\n const isLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder && deltaCrosschainPrice) {\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\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\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 rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\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 };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading,\n };\n }, [\n fiatPricesAvailable,\n isLoading,\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","isETH","address","srcToken","wrappedNativeCurrency","srcTokenForDelta","deltaPriceQuery","useDeltaPriceQuery","t8","error","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ import Big from 'big.js';
|
|
|
17
17
|
import { WRAP_ETH_GAS_LIMIT_INACCURATE } from '../../lib/constants/index.js';
|
|
18
18
|
import { useUnsupportedLimitChain } from './useLimitNotSupported.js';
|
|
19
19
|
import { selectLimitTokenFromAtom } from './state/selectedTokenActionsAtom.js';
|
|
20
|
-
import { useLimitTokenFrom } from './state/
|
|
20
|
+
import { useLimitTokenFrom } from './state/limitTokenAtoms.js';
|
|
21
21
|
import { formatTokenAmount } from '../../lib/utils/formatTokenBalance.js';
|
|
22
22
|
import { getInsufficientBalanceToFillOrderMessage } from '../../lib/utils/delta.js';
|
|
23
23
|
import { useDeltaOrderRequiredAllowance } from '../../hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js';
|