@velora-dex/widget 0.2.5-dev.9 → 0.3.2-dev.1
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/assets/bridges/canonical-uni.svg.js +12 -0
- package/dist/assets/bridges/canonical-uni.svg.js.map +1 -0
- package/dist/assets/bridges/cctp.svg.js +12 -0
- package/dist/assets/bridges/cctp.svg.js.map +1 -0
- package/dist/assets/bridges/celer.svg.js +16 -0
- package/dist/assets/bridges/celer.svg.js.map +1 -0
- package/dist/assets/bridges/relay.svg.js +12 -0
- package/dist/assets/bridges/relay.svg.js.map +1 -0
- package/dist/assets/refresh.svg.js +12 -0
- package/dist/assets/refresh.svg.js.map +1 -0
- package/dist/assets/speedometer.svg.js +12 -0
- package/dist/assets/speedometer.svg.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +3 -2
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +66 -42
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js +2 -2
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.d.ts +5 -1
- package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js +63 -5
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/ActivityButton.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/ActivityButton.js +76 -36
- package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js +52 -70
- package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeListItem.d.ts +7 -0
- package/dist/components/widget/BridgeList/BridgeListItem.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/BridgeListItem.js +475 -0
- package/dist/components/widget/BridgeList/BridgeListItem.js.map +1 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.d.ts +9 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.js +219 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.js.map +1 -0
- package/dist/components/widget/BridgeList/BridgesList.d.ts +12 -0
- package/dist/components/widget/BridgeList/BridgesList.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/BridgesList.js +76 -0
- package/dist/components/widget/BridgeList/BridgesList.js.map +1 -0
- package/dist/components/widget/BridgeList/hooks.d.ts +17 -0
- package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/hooks.js +254 -0
- package/dist/components/widget/BridgeList/hooks.js.map +1 -0
- package/dist/components/widget/BridgeList/types.d.ts +19 -0
- package/dist/components/widget/BridgeList/types.d.ts.map +1 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.d.ts +3 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.d.ts.map +1 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.js +136 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.js.map +1 -0
- package/dist/components/widget/BridgePreferences/types.d.ts +11 -0
- package/dist/components/widget/BridgePreferences/types.d.ts.map +1 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +8 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js +137 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.d.ts +2 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.d.ts.map +1 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.js +208 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.js.map +1 -0
- package/dist/components/widget/Details/DetailWithValueListExpandable.d.ts.map +1 -1
- package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
- package/dist/components/widget/DexesList/DexItem.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +19 -17
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Duration/Duration.d.ts +6 -0
- package/dist/components/widget/Duration/Duration.d.ts.map +1 -0
- package/dist/components/widget/Duration/Duration.js +85 -0
- package/dist/components/widget/Duration/Duration.js.map +1 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.d.ts +2 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.d.ts.map +1 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.js +42 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.js.map +1 -0
- package/dist/components/widget/ImportToken/ImportToken.d.ts +2 -0
- package/dist/components/widget/ImportToken/ImportToken.d.ts.map +1 -1
- package/dist/components/widget/ImportToken/ImportToken.js +4 -1
- package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
- package/dist/components/widget/ImportToken/useImportTokenDrawer.d.ts +3 -1
- package/dist/components/widget/ImportToken/useImportTokenDrawer.d.ts.map +1 -1
- package/dist/components/widget/ImportToken/useImportTokenDrawer.js +23 -21
- package/dist/components/widget/ImportToken/useImportTokenDrawer.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +10 -64
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.d.ts.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js +14 -13
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.d.ts +2 -2
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.d.ts.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js +4 -4
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.d.ts.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.js +2 -2
- package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.d.ts.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.js +64 -61
- package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
- package/dist/components/widget/SettingsButton/SettingsButton.d.ts +5 -0
- package/dist/components/widget/SettingsButton/SettingsButton.d.ts.map +1 -0
- package/dist/components/widget/SettingsButton/SettingsButton.js +61 -0
- package/dist/components/widget/SettingsButton/SettingsButton.js.map +1 -0
- package/dist/components/widget/TokenBadge/TokenBadge.d.ts.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js +115 -66
- package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
- package/dist/components/widget/TokenBadge/types.d.ts +1 -0
- package/dist/components/widget/TokenBadge/types.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.js +34 -18
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenInput/types.d.ts +1 -0
- package/dist/components/widget/TokenInput/types.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +121 -70
- 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 +17 -21
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js +24 -28
- 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 +90 -72
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js +24 -28
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/Step.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/Step/Step.js +122 -68
- package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js +46 -26
- package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/index.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/index.js +15 -24
- package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +56 -47
- 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 +2 -2
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js +143 -98
- package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js +15 -11
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/index.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/index.js +9 -20
- package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js +112 -57
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/motionProps.d.ts +20 -0
- package/dist/components/widget/TradeOverview/motionProps.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/motionProps.js +121 -0
- package/dist/components/widget/TradeOverview/motionProps.js.map +1 -0
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +18 -0
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -0
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +74 -0
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.d.ts +21 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js +90 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js.map +1 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.d.ts +12 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js +68 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js.map +1 -0
- package/dist/components/widget/TradeParameters/TradeParameters.d.ts +3 -2
- package/dist/components/widget/TradeParameters/TradeParameters.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.js +64 -45
- package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js +3 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.d.ts +9 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js +14 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.d.ts +4 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.js +7 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.d.ts +8 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js +15 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.d.ts +2 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js +11 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolSelectorAtom.d.ts +4 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolSelectorAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolSelectorAtom.js +6 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolSelectorAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/types.d.ts +3 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/types.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.d.ts +14 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js +58 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js.map +1 -0
- package/dist/components/widget/TradeParameters/useTempTradeParameters.d.ts +5 -0
- package/dist/components/widget/TradeParameters/useTempTradeParameters.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js +150 -67
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
- package/dist/configurator/components/FormPropsInputs.d.ts.map +1 -1
- package/dist/configurator/components/common/Input.d.ts +2 -1
- package/dist/configurator/components/common/Input.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.js +11 -9
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/OtcOrderButton.d.ts.map +1 -1
- package/dist/core/OtcOrderButton.js +11 -9
- package/dist/core/OtcOrderButton.js.map +1 -1
- package/dist/core/TradeFlowScreenButton.js +4 -4
- package/dist/core/TradeFlowScreenButton.js.map +1 -1
- package/dist/core/Updaters.d.ts.map +1 -1
- package/dist/core/Updaters.js +2 -0
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/across/{isCrosshcainPossible.d.ts → isCrosschainPossible.d.ts} +1 -1
- package/dist/core/across/{isCrosshcainPossible.d.ts.map → isCrosschainPossible.d.ts.map} +1 -1
- package/dist/core/across/{isCrosshcainPossible.js → isCrosschainPossible.js} +1 -1
- package/dist/core/across/{isCrosshcainPossible.js.map → isCrosschainPossible.js.map} +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts +1 -2
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +90 -61
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/constants.d.ts +1 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +2 -1
- package/dist/core/constants.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +66 -65
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/types.d.ts +1 -1
- package/dist/core/inputs/hooks/types.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useMaxButtonProps.d.ts +19 -0
- package/dist/core/inputs/hooks/useMaxButtonProps.d.ts.map +1 -0
- package/dist/core/inputs/hooks/useMaxButtonProps.js +119 -0
- package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -0
- package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js +28 -80
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +25 -12
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/state/common.d.ts +4 -2
- package/dist/core/inputs/state/common.d.ts.map +1 -1
- package/dist/core/inputs/state/common.js +4 -6
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/inputAmountAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/inputAmountAtom.js +1 -1
- package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js +18 -3
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js +15 -7
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/limit/state/deadlineAtom.d.ts +2 -3
- package/dist/core/limit/state/deadlineAtom.d.ts.map +1 -1
- package/dist/core/limit/state/deadlineAtom.js +1 -2
- package/dist/core/limit/state/deadlineAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.d.ts.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/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/limit/state/selectedTokenActionsAtom.js +23 -6
- package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenAtom.js +4 -4
- package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/limit/state/utils.d.ts.map +1 -1
- package/dist/core/limit/state/utils.js +4 -1
- package/dist/core/limit/state/utils.js.map +1 -1
- package/dist/core/limit/useLimitRate.d.ts.map +1 -1
- package/dist/core/limit/useLimitRate.js +25 -10
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js +20 -63
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.js +26 -16
- package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
- package/dist/core/otc/state/deadlineAtom.d.ts +2 -3
- package/dist/core/otc/state/deadlineAtom.d.ts.map +1 -1
- package/dist/core/otc/state/deadlineAtom.js +1 -2
- package/dist/core/otc/state/deadlineAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.d.ts.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.js +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.js +21 -64
- package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.d.ts +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.js +3 -3
- package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
- package/dist/core/screen/hooks/useRunOnMount.d.ts +2 -0
- package/dist/core/screen/hooks/useRunOnMount.d.ts.map +1 -0
- package/dist/core/screen/hooks/useRunOnMount.js +28 -0
- package/dist/core/screen/hooks/useRunOnMount.js.map +1 -0
- package/dist/core/screen/screenByType.d.ts +10 -1
- package/dist/core/screen/screenByType.d.ts.map +1 -1
- package/dist/core/screen/screenByType.js +5 -1
- package/dist/core/screen/screenByType.js.map +1 -1
- package/dist/core/screen/state/hooks/useScreen.d.ts +5 -0
- package/dist/core/screen/state/hooks/useScreen.d.ts.map +1 -0
- package/dist/core/screen/state/hooks/useScreen.js +25 -0
- package/dist/core/screen/state/hooks/useScreen.js.map +1 -0
- package/dist/core/screen/state/hooks/useScreenValue.d.ts +8 -0
- package/dist/core/screen/state/hooks/useScreenValue.d.ts.map +1 -0
- package/dist/core/screen/state/hooks/useScreenValue.js +42 -0
- package/dist/core/screen/state/hooks/useScreenValue.js.map +1 -0
- package/dist/core/screen/state/hooks/useSetScreen.d.ts +13 -0
- package/dist/core/screen/state/hooks/useSetScreen.d.ts.map +1 -0
- package/dist/core/screen/state/hooks/useSetScreen.js +113 -0
- package/dist/core/screen/state/hooks/useSetScreen.js.map +1 -0
- package/dist/core/screen/state/screenAtom.d.ts +4 -17
- package/dist/core/screen/state/screenAtom.d.ts.map +1 -1
- package/dist/core/screen/state/screenAtom.js +5 -104
- package/dist/core/screen/state/screenAtom.js.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.d.ts.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.js.map +1 -1
- package/dist/core/swapDetails/priceImpact.d.ts.map +1 -1
- package/dist/core/swapDetails/priceImpact.js +7 -3
- package/dist/core/swapDetails/priceImpact.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/events/getters/settings.d.ts.map +1 -1
- package/dist/events/getters/settings.js +7 -1
- package/dist/events/getters/settings.js.map +1 -1
- package/dist/events/types/common.d.ts +6 -1
- package/dist/events/types/common.d.ts.map +1 -1
- package/dist/events/types/settings.d.ts +2 -1
- package/dist/events/types/settings.d.ts.map +1 -1
- package/dist/hooks/gas/useGasPrices.d.ts.map +1 -1
- package/dist/hooks/gas/useGasPrices.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js +0 -12
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js +0 -12
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
- package/dist/hooks/swap/prices/constants.d.ts +3 -0
- package/dist/hooks/swap/prices/constants.d.ts.map +1 -0
- package/dist/hooks/swap/prices/constants.js +5 -0
- package/dist/hooks/swap/prices/constants.js.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +6 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js +36 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +7 -0
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js +34 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +2 -2
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts +3 -3
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/types.d.ts +13 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/types.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.d.ts +3 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js +75 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +3 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +37 -21
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/utils.d.ts +2 -1
- 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/mutations/useBuildTx.d.ts +3 -3
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.d.ts.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
- package/dist/hooks/swap/prices/types.d.ts +1 -0
- package/dist/hooks/swap/prices/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +0 -5
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts +5 -0
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js +119 -94
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js +4 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +2 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +41 -11
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +1 -0
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +16 -14
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +11 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js +10 -5
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts +1 -0
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +12 -10
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/tokens/prices/queries.d.ts.map +1 -1
- package/dist/hooks/tokens/prices/queries.js.map +1 -1
- package/dist/hooks/useBridgeProtocols.d.ts +4 -0
- package/dist/hooks/useBridgeProtocols.d.ts.map +1 -0
- package/dist/hooks/useBridgeProtocols.js +52 -0
- package/dist/hooks/useBridgeProtocols.js.map +1 -0
- package/dist/hooks/useClickOutside.d.ts +1 -3
- package/dist/hooks/useClickOutside.d.ts.map +1 -1
- package/dist/hooks/useClickOutside.js +23 -7
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/lib/constants/index.d.ts +1 -0
- package/dist/lib/constants/index.d.ts.map +1 -1
- package/dist/lib/constants/index.js +2 -1
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/constants/weth.js.map +1 -1
- package/dist/lib/utils/priceImpact.d.ts +5 -2
- package/dist/lib/utils/priceImpact.d.ts.map +1 -1
- package/dist/lib/utils/priceImpact.js +8 -5
- package/dist/lib/utils/priceImpact.js.map +1 -1
- package/dist/lib/utils/tuple.d.ts +1 -0
- package/dist/lib/utils/tuple.d.ts.map +1 -1
- package/dist/lib/utils/tuple.js +5 -1
- package/dist/lib/utils/tuple.js.map +1 -1
- package/dist/styles.css +91 -10
- package/dist/tokens/queries.d.ts.map +1 -1
- package/dist/tokens/queries.js.map +1 -1
- package/dist/tokens/utils/sorting.d.ts.map +1 -1
- package/dist/tokens/utils/sorting.js +3 -0
- package/dist/tokens/utils/sorting.js.map +1 -1
- package/package.json +3 -2
|
@@ -5,7 +5,7 @@ import { unlockLimitPriceAtom } from './limitInputActionsAtom.js';
|
|
|
5
5
|
import { limitTokenFromAtom, limitTokenToAtom } from './limitTokenAtoms.js';
|
|
6
6
|
import { wagmiConfig } from '../../../lib/web3/wagmi/config.js';
|
|
7
7
|
import { switchChain } from '../../../lib/web3/wagmi/switchChain.js';
|
|
8
|
-
import { isCrosschainPossible } from '../../across/
|
|
8
|
+
import { isCrosschainPossible } from '../../across/isCrosschainPossible.js';
|
|
9
9
|
import { isTokenFromAcross, findFirstTokenFromAcross } from '../../across/utils.js';
|
|
10
10
|
import { allTokensByChainAtom } from '../../../tokens/state/allTokensByChainAtom.js';
|
|
11
11
|
import { getSelectableDestChains } from '../../state/getSelectableDestChains.js';
|
|
@@ -14,6 +14,8 @@ import { enabledSrcChainsAtom } from '../../state/enabledChainsAtom.js';
|
|
|
14
14
|
const switchLimitTokensAtom = atom(null, async (get, set) => {
|
|
15
15
|
const tokenTo = get(limitTokenToAtom);
|
|
16
16
|
if (!tokenTo) return;
|
|
17
|
+
const enabledSrcChains = get(enabledSrcChainsAtom);
|
|
18
|
+
if (!enabledSrcChains.includes(tokenTo.network)) return;
|
|
17
19
|
const tokenFrom = get(limitTokenFromAtom);
|
|
18
20
|
const initChainFrom = tokenFrom.network;
|
|
19
21
|
set(limitTokenFromAtom, tokenTo);
|
|
@@ -22,7 +24,7 @@ const switchLimitTokensAtom = atom(null, async (get, set) => {
|
|
|
22
24
|
const currentTokenFrom = get(limitTokenFromAtom);
|
|
23
25
|
if (currentTokenFrom.network !== initChainFrom) {
|
|
24
26
|
switchChain({
|
|
25
|
-
chainId:
|
|
27
|
+
chainId: currentTokenFrom.network
|
|
26
28
|
});
|
|
27
29
|
}
|
|
28
30
|
});
|
|
@@ -70,8 +72,8 @@ const selectLimitTokenFromAtom = atom(null, async (get, set, newTokenFrom) => {
|
|
|
70
72
|
set(limitTokenToAtom, tokenTo);
|
|
71
73
|
} else {
|
|
72
74
|
if (areTokensSame(tokenFrom, tokenTo)) {
|
|
73
|
-
set(limitTokenToAtom, initTokenFrom);
|
|
74
75
|
tokenTo = initTokenFrom;
|
|
76
|
+
set(limitTokenToAtom, tokenTo);
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
}
|
|
@@ -125,8 +127,23 @@ const selectLimitTokenToAtom = atom(null, async (get, set, newTokenTo) => {
|
|
|
125
127
|
needResetTokenFrom = true;
|
|
126
128
|
}
|
|
127
129
|
const enabledSrcChains = get(enabledSrcChainsAtom);
|
|
128
|
-
if (needResetTokenFrom
|
|
129
|
-
|
|
130
|
+
if (needResetTokenFrom) {
|
|
131
|
+
let firstPossibleSrcChain = tokenTo.network;
|
|
132
|
+
if (!enabledSrcChains.includes(tokenTo.network)) {
|
|
133
|
+
for (const srcChain of enabledSrcChains) {
|
|
134
|
+
const crosschainPossible2 = isCrosschainPossible({
|
|
135
|
+
get,
|
|
136
|
+
chainIdFrom: srcChain,
|
|
137
|
+
chainIdTo: tokenTo.network,
|
|
138
|
+
mode: "limit"
|
|
139
|
+
});
|
|
140
|
+
if (crosschainPossible2) {
|
|
141
|
+
firstPossibleSrcChain = srcChain;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(firstPossibleSrcChain, "limit");
|
|
130
147
|
const newTokenFrom = areTokensSame(tokenTo, defaultTokenFrom) ? defaultTokenTo : defaultTokenFrom;
|
|
131
148
|
set(limitTokenFromAtom, newTokenFrom);
|
|
132
149
|
tokenFrom = newTokenFrom;
|
|
@@ -136,7 +153,7 @@ const selectLimitTokenToAtom = atom(null, async (get, set, newTokenTo) => {
|
|
|
136
153
|
}
|
|
137
154
|
if (tokenFrom.network !== wagmiConfig.state.chainId) {
|
|
138
155
|
switchChain({
|
|
139
|
-
chainId:
|
|
156
|
+
chainId: tokenFrom.network
|
|
140
157
|
});
|
|
141
158
|
}
|
|
142
159
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectedTokenActionsAtom.js","sources":["../../../../src/core/limit/state/selectedTokenActionsAtom.ts"],"sourcesContent":["import { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { atom } from \"jotai\";\nimport { unlockLimitPriceAtom } from \"./limitInputActionsAtom\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { isCrosschainPossible } from \"@/core/across/isCrosshcainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\n\nexport const switchLimitTokensAtom = atom(null, async (get, set) => {\n const tokenTo = get(limitTokenToAtom);\n\n if (!tokenTo) return;\n\n const tokenFrom = get(limitTokenFromAtom);\n const initChainFrom = tokenFrom.network;\n\n // set tokenFrom as is\n set(limitTokenFromAtom, tokenTo);\n // set tokenTo, including running all crosschain logic inside\n set(selectLimitTokenToAtom, tokenFrom);\n\n set(unlockLimitPriceAtom);\n\n const currentTokenFrom = get(limitTokenFromAtom);\n\n // switch a token from a different chain?\n if (currentTokenFrom.network !== initChainFrom) {\n // switch chain first\n switchChain({\n chainId: tokenTo.network,\n });\n }\n});\n\nexport const selectLimitTokenFromAtom = atom(\n null,\n async (get, set, newTokenFrom: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n let tokenTo = get(limitTokenToAtom);\n const initTokenFrom = tokenFrom;\n\n // then set the tokenFrom\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n\n // do not unlock limit price if token has not actually changed\n if (!areTokensSame(tokenFrom, initTokenFrom)) {\n set(unlockLimitPriceAtom);\n }\n\n // selecting a token from a different chain?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\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: tokenFrom.network,\n toChainId: tokenTo.network,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(limitTokenToAtom, maybeAcrossToken);\n }\n } else {\n // cross-chain not possible between new chainFrom and chainTo,\n // so need to reset tokenTo to default\n if (tokenFrom.network !== tokenTo.network) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenFrom.network,\n \"limit\"\n );\n\n tokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n set(limitTokenToAtom, tokenTo);\n } else {\n // or simply flip the tokens if they are from the same chain\n if (areTokensSame(tokenFrom, tokenTo)) {\n set(limitTokenToAtom, initTokenFrom);\n tokenTo = initTokenFrom;\n }\n // otherwise do nothing, tokenTo is already on the same chain and different from newTokenFrom\n }\n }\n }\n);\n\nexport const selectLimitTokenToAtom = atom(\n null,\n async (get, set, newTokenTo: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n\n const selectableDestChains = getSelectableDestChains(get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (!selectableDestChains.includes(newTokenTo.network)) return;\n\n let tokenTo = get(limitTokenToAtom);\n const initTokenTo = tokenTo;\n\n set(limitTokenToAtom, newTokenTo);\n tokenTo = newTokenTo;\n\n if (areTokensSame(tokenTo, tokenFrom)) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenTo.network,\n \"limit\"\n );\n\n const defaultToken = areTokensSame(tokenFrom, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n // Will be true if crosschain tokens were selected\n const wasCrosschain =\n initTokenTo && tokenFrom.network !== initTokenTo.network;\n\n const newTokenFrom = wasCrosschain\n ? // We cannot flip the tokens if switching from the crosschain, because if we do, we will end up with tokenFrom network different from app chainId.\n // Switching app chainId when selecting tokenTo is not what we want, because we cannot dictate the main network when selecting tokenTo.\n // Maybe user wants to trade singlechain but we are forcing crosschain.\n defaultToken\n : // Otherwise, we can flip the tokens, or pick from defaults\n (initTokenTo ?? defaultToken);\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // after switching we may have ended up with a crosschain pair,\n // but tokenTo may not be crossable depending on srcChainId;\n // this can easily happen if tokenTo was set from WidgetProps\n let needResetTokenFrom = false;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // tokenFrom -> tokenTo is crosschain, but tokenTo can't be destToken for that chain\n needResetTokenFrom = true;\n }\n }\n\n if (tokenFrom.network !== tokenTo.network && !crosschainPossible) {\n // tokenFrom -> tokenTo is crosschain, but delta is explicitly disabled,\n needResetTokenFrom = true;\n }\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n\n if (needResetTokenFrom && enabledSrcChains.includes(tokenTo.network)) {\n // set the tokenFrom to default token from tokenTo.network\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenTo.network,\n \"limit\"\n );\n // make sure it's not the same as tokenTo\n const newTokenFrom = areTokensSame(tokenTo, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // do not unlock limit price if token has not actually changed\n if (tokenTo && initTokenTo && !areTokensSame(tokenTo, initTokenTo)) {\n set(unlockLimitPriceAtom);\n }\n\n // ended up changing tokenFrom network?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenTo.network,\n });\n }\n }\n);\n"],"names":["switchLimitTokensAtom","atom","get","set","tokenTo","limitTokenToAtom","tokenFrom","limitTokenFromAtom","initChainFrom","network","selectLimitTokenToAtom","unlockLimitPriceAtom","currentTokenFrom","switchChain","chainId","selectLimitTokenFromAtom","newTokenFrom","initTokenFrom","areTokensSame","wagmiConfig","state","crosschainPossible","isCrosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","isTokenFromAcross","token","fromChainId","toChainId","maybeAcrossToken","findFirstTokenFromAcross","listByChainId","allTokensByChainAtom","defaultTokenFrom","defaultTokenTo","pickDefaultTokenPair","newTokenTo","selectableDestChains","getSelectableDestChains","includes","initTokenTo","defaultToken","wasCrosschain","needResetTokenFrom","enabledSrcChains","enabledSrcChainsAtom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectedTokenActionsAtom.js","sources":["../../../../src/core/limit/state/selectedTokenActionsAtom.ts"],"sourcesContent":["import { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { atom } from \"jotai\";\nimport { unlockLimitPriceAtom } from \"./limitInputActionsAtom\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\n\nexport const switchLimitTokensAtom = atom(null, async (get, set) => {\n const tokenTo = get(limitTokenToAtom);\n\n if (!tokenTo) return;\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(tokenTo.network)) return;\n\n const tokenFrom = get(limitTokenFromAtom);\n const initChainFrom = tokenFrom.network;\n\n // set tokenFrom as is\n set(limitTokenFromAtom, tokenTo);\n // set tokenTo, including running all crosschain logic inside\n set(selectLimitTokenToAtom, tokenFrom);\n\n set(unlockLimitPriceAtom);\n\n const currentTokenFrom = get(limitTokenFromAtom);\n\n // switch a token from a different chain?\n if (currentTokenFrom.network !== initChainFrom) {\n // switch chain first\n switchChain({\n chainId: currentTokenFrom.network,\n });\n }\n});\n\nexport const selectLimitTokenFromAtom = atom(\n null,\n async (get, set, newTokenFrom: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n let tokenTo = get(limitTokenToAtom);\n const initTokenFrom = tokenFrom;\n\n // then set the tokenFrom\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n\n // do not unlock limit price if token has not actually changed\n if (!areTokensSame(tokenFrom, initTokenFrom)) {\n set(unlockLimitPriceAtom);\n }\n\n // selecting a token from a different chain?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\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: tokenFrom.network,\n toChainId: tokenTo.network,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(limitTokenToAtom, maybeAcrossToken);\n }\n } else {\n // cross-chain not possible between new chainFrom and chainTo,\n // so need to reset tokenTo to default\n if (tokenFrom.network !== tokenTo.network) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenFrom.network,\n \"limit\"\n );\n\n tokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n set(limitTokenToAtom, tokenTo);\n } else {\n // or simply flip the tokens if they are from the same chain\n if (areTokensSame(tokenFrom, tokenTo)) {\n tokenTo = initTokenFrom;\n set(limitTokenToAtom, tokenTo);\n }\n // otherwise do nothing, tokenTo is already on the same chain and different from newTokenFrom\n }\n }\n }\n);\n\nexport const selectLimitTokenToAtom = atom(\n null,\n async (get, set, newTokenTo: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n\n const selectableDestChains = getSelectableDestChains(get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (!selectableDestChains.includes(newTokenTo.network)) return;\n\n let tokenTo = get(limitTokenToAtom);\n const initTokenTo = tokenTo;\n\n set(limitTokenToAtom, newTokenTo);\n tokenTo = newTokenTo;\n\n if (areTokensSame(tokenTo, tokenFrom)) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenTo.network,\n \"limit\"\n );\n\n const defaultToken = areTokensSame(tokenFrom, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n // Will be true if crosschain tokens were selected\n const wasCrosschain =\n initTokenTo && tokenFrom.network !== initTokenTo.network;\n\n const newTokenFrom = wasCrosschain\n ? // We cannot flip the tokens if switching from the crosschain, because if we do, we will end up with tokenFrom network different from app chainId.\n // Switching app chainId when selecting tokenTo is not what we want, because we cannot dictate the main network when selecting tokenTo.\n // Maybe user wants to trade singlechain but we are forcing crosschain.\n defaultToken\n : // Otherwise, we can flip the tokens, or pick from defaults\n (initTokenTo ?? defaultToken);\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // after switching we may have ended up with a crosschain pair,\n // but tokenTo may not be crossable depending on srcChainId;\n // this can easily happen if tokenTo was set from WidgetProps\n let needResetTokenFrom = false;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // tokenFrom -> tokenTo is crosschain, but tokenTo can't be destToken for that chain\n needResetTokenFrom = true;\n }\n }\n\n if (tokenFrom.network !== tokenTo.network && !crosschainPossible) {\n // tokenFrom -> tokenTo is crosschain, but delta is explicitly disabled,\n needResetTokenFrom = true;\n }\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n\n if (needResetTokenFrom) {\n let firstPossibleSrcChain = tokenTo.network;\n // if tokenTo.network can't be srcChain, find the first possible srcChain\n if (!enabledSrcChains.includes(tokenTo.network)) {\n for (const srcChain of enabledSrcChains) {\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: srcChain,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n if (crosschainPossible) {\n firstPossibleSrcChain = srcChain;\n break;\n }\n }\n }\n // set the tokenFrom to default token from tokenTo.network\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n firstPossibleSrcChain,\n \"limit\"\n );\n // make sure it's not the same as tokenTo\n const newTokenFrom = areTokensSame(tokenTo, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // do not unlock limit price if token has not actually changed\n if (tokenTo && initTokenTo && !areTokensSame(tokenTo, initTokenTo)) {\n set(unlockLimitPriceAtom);\n }\n\n // ended up changing tokenFrom network?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n }\n);\n"],"names":["switchLimitTokensAtom","atom","get","set","tokenTo","limitTokenToAtom","enabledSrcChains","enabledSrcChainsAtom","includes","network","tokenFrom","limitTokenFromAtom","initChainFrom","selectLimitTokenToAtom","unlockLimitPriceAtom","currentTokenFrom","switchChain","chainId","selectLimitTokenFromAtom","newTokenFrom","initTokenFrom","areTokensSame","wagmiConfig","state","crosschainPossible","isCrosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","isTokenFromAcross","token","fromChainId","toChainId","maybeAcrossToken","findFirstTokenFromAcross","listByChainId","allTokensByChainAtom","defaultTokenFrom","defaultTokenTo","pickDefaultTokenPair","newTokenTo","selectableDestChains","getSelectableDestChains","initTokenTo","defaultToken","wasCrosschain","needResetTokenFrom","firstPossibleSrcChain","srcChain"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isCrosschainPossible } from '../../across/
|
|
1
|
+
import { isCrosschainPossible } from '../../across/isCrosschainPossible.js';
|
|
2
2
|
import { isTokenFromAcross, findFirstTokenFromAcross } from '../../across/utils.js';
|
|
3
3
|
import { jotaiStore } from '../../store.js';
|
|
4
4
|
import { getSelectableDestChains } from '../../state/getSelectableDestChains.js';
|
|
@@ -37,8 +37,8 @@ const syncLimitTokensAfterChainSwitch = (chainId) => {
|
|
|
37
37
|
listByChainId: jotaiStore.get(allTokensByChainAtom).listByChainId,
|
|
38
38
|
mode: "limit"
|
|
39
39
|
});
|
|
40
|
-
jotaiStore.set(limitTokenToAtom, maybeAcrossToken);
|
|
41
40
|
tokenTo = maybeAcrossToken;
|
|
41
|
+
jotaiStore.set(limitTokenToAtom, tokenTo);
|
|
42
42
|
}
|
|
43
43
|
} else {
|
|
44
44
|
const selectableDestChains = getSelectableDestChains(jotaiStore.get, {
|
|
@@ -46,11 +46,11 @@ const syncLimitTokensAfterChainSwitch = (chainId) => {
|
|
|
46
46
|
mode: "limit"
|
|
47
47
|
});
|
|
48
48
|
if (selectableDestChains.includes(chainId)) {
|
|
49
|
-
jotaiStore.set(limitTokenToAtom, defaultTokenTo);
|
|
50
49
|
tokenTo = defaultTokenTo;
|
|
50
|
+
jotaiStore.set(limitTokenToAtom, tokenTo);
|
|
51
51
|
} else {
|
|
52
|
-
jotaiStore.set(limitTokenToAtom, void 0);
|
|
53
52
|
tokenTo = void 0;
|
|
53
|
+
jotaiStore.set(limitTokenToAtom, tokenTo);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectedTokenAtom.js","sources":["../../../../src/core/limit/state/selectedTokenAtom.ts"],"sourcesContent":["import { isCrosschainPossible } from \"@/core/across/
|
|
1
|
+
{"version":3,"file":"selectedTokenAtom.js","sources":["../../../../src/core/limit/state/selectedTokenAtom.ts"],"sourcesContent":["import { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\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 tokenTo = maybeAcrossToken;\n jotaiStore.set(limitTokenToAtom, tokenTo);\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 tokenTo = defaultTokenTo;\n jotaiStore.set(limitTokenToAtom, tokenTo);\n } else {\n // avoid complexity and reset tokenTo\n tokenTo = undefined;\n jotaiStore.set(limitTokenToAtom, tokenTo);\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;AAEDN,MAAAA,OAAAA,GAAUY,gBAAAA;AACVvB,MAAAA,UAAAA,CAAWU,GAAAA,CAAIE,kBAAkBD,OAAO,CAAA;AAAA,IAC1C;AAAA,EACF,CAAA,MAAO;AACL,IAAA,MAAMgB,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;AAE1Ca,MAAAA,OAAAA,GAAUH,cAAAA;AACVR,MAAAA,UAAAA,CAAWU,GAAAA,CAAIE,kBAAkBD,OAAO,CAAA;AAAA,IAC1C,CAAA,MAAO;AAELA,MAAAA,OAAAA,GAAUkB,MAAAA;AACV7B,MAAAA,UAAAA,CAAWU,GAAAA,CAAIE,kBAAkBD,OAAO,CAAA;AAAA,IAC1C;AAAA,EACF;AACF;;;;"}
|
|
@@ -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,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,UAa5D;
|
|
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;AAMD,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"}
|
|
@@ -15,13 +15,16 @@ function timeUnitToSeconds(timeUnitObj) {
|
|
|
15
15
|
return 0;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
function timestampFromNow(timeUnitObj) {
|
|
19
|
+
return Math.floor(Date.now() / 1e3 + timeUnitToSeconds(timeUnitObj));
|
|
20
|
+
}
|
|
18
21
|
function getTimeUnitState(timeUnitObj) {
|
|
19
22
|
if (isTimeUnitState(timeUnitObj)) {
|
|
20
23
|
return timeUnitObj;
|
|
21
24
|
}
|
|
22
25
|
return {
|
|
23
26
|
...timeUnitObj,
|
|
24
|
-
timestamp: timeUnitObj.label === neverTimeUnit.label ? 0 :
|
|
27
|
+
timestamp: timeUnitObj.label === neverTimeUnit.label ? 0 : timestampFromNow(timeUnitObj)
|
|
25
28
|
};
|
|
26
29
|
}
|
|
27
30
|
function isTimeUnitState(timeUnitObj) {
|
|
@@ -1 +1 @@
|
|
|
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 :
|
|
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\nfunction timestampFromNow(timeUnitObj: TimeUnitObject) {\n return Math.floor(Date.now() / 1000 + timeUnitToSeconds(timeUnitObj));\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 : timestampFromNow(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","timestampFromNow","Math","floor","Date","now","getTimeUnitState","isTimeUnitState","timestamp","neverTimeUnit","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 +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;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,
|
|
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,kBAoHF,CAAC"}
|
|
@@ -240,24 +240,34 @@ const useLimitRate = (tradeMode) => {
|
|
|
240
240
|
enabled: isCrosschainLOrder,
|
|
241
241
|
tradeMode
|
|
242
242
|
});
|
|
243
|
-
const
|
|
243
|
+
const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;
|
|
244
244
|
return useMemo(() => {
|
|
245
245
|
if (!tokenTo) {
|
|
246
246
|
return {
|
|
247
|
-
isLoading
|
|
247
|
+
isLoading: isNonDeltaLoading
|
|
248
248
|
};
|
|
249
249
|
}
|
|
250
250
|
let rate = void 0;
|
|
251
251
|
let rateReversed = void 0;
|
|
252
|
-
if (isCrosschainLOrder
|
|
252
|
+
if (isCrosschainLOrder) {
|
|
253
|
+
if (!deltaCrosschainPrice) {
|
|
254
|
+
return {
|
|
255
|
+
isLoading: isDeltaCrosschainPriceLoading
|
|
256
|
+
};
|
|
257
|
+
}
|
|
253
258
|
const srcUnits = formatUnits(BigInt(deltaCrosschainPrice.srcAmount), tokenFrom.decimals);
|
|
254
259
|
const destUnits = formatUnits(
|
|
255
260
|
// amount on destChain accounting for decimals
|
|
256
261
|
BigInt(deltaCrosschainPrice.receivedDestAmount),
|
|
257
262
|
tokenTo.decimals
|
|
258
263
|
);
|
|
259
|
-
|
|
260
|
-
|
|
264
|
+
if (srcUnits === "0" || destUnits === "0") {
|
|
265
|
+
rate = "0";
|
|
266
|
+
rateReversed = "0";
|
|
267
|
+
} else {
|
|
268
|
+
rate = Big(destUnits).div(srcUnits).toFixed();
|
|
269
|
+
rateReversed = Big(srcUnits).div(destUnits).toFixed();
|
|
270
|
+
}
|
|
261
271
|
return {
|
|
262
272
|
rates: {
|
|
263
273
|
rate,
|
|
@@ -267,8 +277,13 @@ const useLimitRate = (tradeMode) => {
|
|
|
267
277
|
isLoading: isDeltaCrosschainPriceLoading
|
|
268
278
|
};
|
|
269
279
|
} else if (fiatPricesAvailable) {
|
|
270
|
-
|
|
271
|
-
|
|
280
|
+
if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {
|
|
281
|
+
rate = "0";
|
|
282
|
+
rateReversed = "0";
|
|
283
|
+
} else {
|
|
284
|
+
rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();
|
|
285
|
+
rateReversed = Big(tokenToPrice.price).div(tokenFromPrice.price).toFixed();
|
|
286
|
+
}
|
|
272
287
|
} else if (swapPrice) {
|
|
273
288
|
const srcUnits_0 = formatUnits(BigInt(swapPrice.srcAmount), tokenFrom.decimals);
|
|
274
289
|
const destUnits_0 = formatUnits(BigInt(swapPrice.destAmount), tokenTo.decimals);
|
|
@@ -277,7 +292,7 @@ const useLimitRate = (tradeMode) => {
|
|
|
277
292
|
}
|
|
278
293
|
if (!rate || !rateReversed) {
|
|
279
294
|
return {
|
|
280
|
-
isLoading
|
|
295
|
+
isLoading: isNonDeltaLoading
|
|
281
296
|
};
|
|
282
297
|
}
|
|
283
298
|
return {
|
|
@@ -285,9 +300,9 @@ const useLimitRate = (tradeMode) => {
|
|
|
285
300
|
rate,
|
|
286
301
|
rateReversed
|
|
287
302
|
},
|
|
288
|
-
isLoading
|
|
303
|
+
isLoading: isNonDeltaLoading
|
|
289
304
|
};
|
|
290
|
-
}, [fiatPricesAvailable,
|
|
305
|
+
}, [fiatPricesAvailable, isNonDeltaLoading, swapPrice, tokenFrom.decimals, tokenFromPrice?.price, tokenTo, tokenToPrice?.price, isCrosschainLOrder, deltaCrosschainPrice, isDeltaCrosschainPriceLoading]);
|
|
291
306
|
};
|
|
292
307
|
|
|
293
308
|
export { useDeltaSwapPriceForLimit, useLimitRate };
|
|
@@ -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\";\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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"}
|
|
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, {\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","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","isNonDeltaLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitTokenFromInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitTokenFromInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"useLimitTokenFromInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitTokenFromInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AA4K5E,eAAO,MAAM,oBAAoB,QAAO,eAAe,CAAC,SAAS,CAGhE,CAAC;AAEF,eAAO,MAAM,2BAA2B,QAAO,eAyB9C,CAAC"}
|
|
@@ -11,9 +11,6 @@ import { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from '../../lib/constants/time.js'
|
|
|
11
11
|
import { toDecimalTrimmed } from '../../lib/utils/toDecimal.js';
|
|
12
12
|
import { useGenericTokenAllowance } from '../../hooks/tokens/allowance/useGenericTokenAllowance.js';
|
|
13
13
|
import { useIsInsufficientBalanceToFillLimitOrder } from '../../hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js';
|
|
14
|
-
import { useGasPrices } from '../../hooks/gas/useGasPrices.js';
|
|
15
|
-
import { isETH } from '../../tokens/utils/eth.js';
|
|
16
|
-
import Big from 'big.js';
|
|
17
14
|
import { WRAP_ETH_GAS_LIMIT_INACCURATE } from '../../lib/constants/index.js';
|
|
18
15
|
import { useUnsupportedLimitChain } from './useLimitNotSupported.js';
|
|
19
16
|
import { selectLimitTokenFromAtom } from './state/selectedTokenActionsAtom.js';
|
|
@@ -23,6 +20,7 @@ import { getInsufficientBalanceToFillOrderMessage } from '../../lib/utils/delta.
|
|
|
23
20
|
import { useDeltaOrderRequiredAllowance } from '../../hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js';
|
|
24
21
|
import { useEnabledSrcChainsWithDelta } from '../state/enabledChainsAtom.js';
|
|
25
22
|
import { switchChain } from '../../lib/web3/wagmi/switchChain.js';
|
|
23
|
+
import { useMaxButtonPropsBase } from '../inputs/hooks/useMaxButtonProps.js';
|
|
26
24
|
|
|
27
25
|
const useLimitTokenFromAmountProps = () => {
|
|
28
26
|
const $ = distExports.c(8);
|
|
@@ -165,80 +163,39 @@ const useTokenConditionalProps = (t0) => {
|
|
|
165
163
|
return t8;
|
|
166
164
|
};
|
|
167
165
|
const useMaxButtonProps = (t0) => {
|
|
168
|
-
const $ = distExports.c(
|
|
166
|
+
const $ = distExports.c(6);
|
|
169
167
|
const {
|
|
170
168
|
tokenFrom
|
|
171
169
|
} = t0;
|
|
172
170
|
const setCurrentLimitInput = useSetAtom(currentLimitInputAtom);
|
|
173
171
|
const setPayInputAmount = useSetAtom(limitPayInputAmountAtom);
|
|
174
172
|
let t1;
|
|
175
|
-
if ($[0]
|
|
176
|
-
t1 = {
|
|
177
|
-
|
|
173
|
+
if ($[0] !== setCurrentLimitInput || $[1] !== setPayInputAmount) {
|
|
174
|
+
t1 = (balanceUnit) => {
|
|
175
|
+
setCurrentLimitInput("from");
|
|
176
|
+
setPayInputAmount(balanceUnit);
|
|
178
177
|
};
|
|
179
|
-
$[0] =
|
|
178
|
+
$[0] = setCurrentLimitInput;
|
|
179
|
+
$[1] = setPayInputAmount;
|
|
180
|
+
$[2] = t1;
|
|
180
181
|
} else {
|
|
181
|
-
t1 = $[
|
|
182
|
+
t1 = $[2];
|
|
182
183
|
}
|
|
184
|
+
const onClick = t1;
|
|
183
185
|
let t2;
|
|
184
|
-
if ($[
|
|
186
|
+
if ($[3] !== onClick || $[4] !== tokenFrom) {
|
|
185
187
|
t2 = {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
$[1] = tokenFrom;
|
|
190
|
-
$[2] = t2;
|
|
191
|
-
} else {
|
|
192
|
-
t2 = $[2];
|
|
193
|
-
}
|
|
194
|
-
const {
|
|
195
|
-
balanceUnit
|
|
196
|
-
} = useTokenBalance(t2);
|
|
197
|
-
const {
|
|
198
|
-
data: gasPrices
|
|
199
|
-
} = useGasPrices();
|
|
200
|
-
const hasBalance = !!balanceUnit && balanceUnit !== "0";
|
|
201
|
-
const showMaxButton = hasBalance;
|
|
202
|
-
let t3;
|
|
203
|
-
if ($[3] !== balanceUnit || $[4] !== gasPrices?.legacyPrices || $[5] !== hasBalance || $[6] !== setCurrentLimitInput || $[7] !== setPayInputAmount || $[8] !== tokenFrom) {
|
|
204
|
-
t3 = () => {
|
|
205
|
-
setCurrentLimitInput("from");
|
|
206
|
-
if (hasBalance) {
|
|
207
|
-
if (!isETH(tokenFrom)) {
|
|
208
|
-
setPayInputAmount(balanceUnit);
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
const gasPriceMultiplier = gasPrices?.legacyPrices.instant;
|
|
212
|
-
if (gasPriceMultiplier) {
|
|
213
|
-
const gasFeeETH = Big(WRAP_ETH_GAS_LIMIT_INACCURATE).mul(gasPriceMultiplier).div(1e9);
|
|
214
|
-
const balanceWithDeductedGas = Big(balanceUnit).minus(gasFeeETH);
|
|
215
|
-
setPayInputAmount(balanceWithDeductedGas.toString());
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
$[3] = balanceUnit;
|
|
220
|
-
$[4] = gasPrices?.legacyPrices;
|
|
221
|
-
$[5] = hasBalance;
|
|
222
|
-
$[6] = setCurrentLimitInput;
|
|
223
|
-
$[7] = setPayInputAmount;
|
|
224
|
-
$[8] = tokenFrom;
|
|
225
|
-
$[9] = t3;
|
|
226
|
-
} else {
|
|
227
|
-
t3 = $[9];
|
|
228
|
-
}
|
|
229
|
-
let t4;
|
|
230
|
-
if ($[10] !== showMaxButton || $[11] !== t3) {
|
|
231
|
-
t4 = {
|
|
232
|
-
showMaxButton,
|
|
233
|
-
onMaxClick: t3
|
|
188
|
+
tokenFrom,
|
|
189
|
+
gasLimit: WRAP_ETH_GAS_LIMIT_INACCURATE,
|
|
190
|
+
onClick
|
|
234
191
|
};
|
|
235
|
-
$[
|
|
236
|
-
$[
|
|
237
|
-
$[
|
|
192
|
+
$[3] = onClick;
|
|
193
|
+
$[4] = tokenFrom;
|
|
194
|
+
$[5] = t2;
|
|
238
195
|
} else {
|
|
239
|
-
|
|
196
|
+
t2 = $[5];
|
|
240
197
|
}
|
|
241
|
-
return
|
|
198
|
+
return useMaxButtonPropsBase(t2);
|
|
242
199
|
};
|
|
243
200
|
const useTokenFromBalanceUnit = () => {
|
|
244
201
|
const $ = distExports.c(5);
|