@velora-dex/widget 0.8.1-dev.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/web3/AccountButton.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.d.ts +1 -0
- package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.d.ts.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js +30 -16
- package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
- package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
- package/dist/components/web3/ConnectWallets/index.js +1 -1
- package/dist/components/web3/ConnectWallets/index.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletFlags.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Activities.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivityItems.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
- package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
- 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 +61 -53
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/AppHeader/state/showMoreAtom.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeListItem.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeProtocolsList.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgesList.js.map +1 -1
- package/dist/components/widget/BridgeList/hooks.js.map +1 -1
- package/dist/components/widget/BridgePreferences/BridgePreferences.js.map +1 -1
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
- package/dist/components/widget/Button/CancelButton/CancelButton.js.map +1 -1
- package/dist/components/widget/Button/CancelButton/CancelButtonWithDrawer.js.map +1 -1
- package/dist/components/widget/Button/DismissButton.js.map +1 -1
- package/dist/components/widget/Button/RefreshButton.d.ts +3 -0
- package/dist/components/widget/Button/RefreshButton.d.ts.map +1 -0
- package/dist/components/widget/Button/RefreshButton.js +28 -0
- package/dist/components/widget/Button/RefreshButton.js.map +1 -0
- package/dist/components/widget/Button/types.d.ts +7 -0
- package/dist/components/widget/Button/types.d.ts.map +1 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.d.ts.map +1 -1
- package/dist/components/widget/CompareQuotes/CompareQuotes.js +67 -73
- package/dist/components/widget/CompareQuotes/CompareQuotes.js.map +1 -1
- package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
- package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
- package/dist/components/widget/DexesList/DexItem.js.map +1 -1
- package/dist/components/widget/DexesList/DexesList.js.map +1 -1
- package/dist/components/widget/DexesList/getDexProps.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
- package/dist/components/widget/Drawer/Overlay.js.map +1 -1
- package/dist/components/widget/Drawer/index.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/Dropdown/DropdownWithItems.d.ts.map +1 -1
- package/dist/components/widget/Dropdown/DropdownWithItems.js +3 -2
- package/dist/components/widget/Dropdown/DropdownWithItems.js.map +1 -1
- package/dist/components/widget/Dropdown/types.d.ts +1 -1
- package/dist/components/widget/Dropdown/types.d.ts.map +1 -1
- package/dist/components/widget/Duration/Duration.js.map +1 -1
- package/dist/components/widget/Duration/utils.js.map +1 -1
- package/dist/components/widget/EnabledExchanges/EnabledExchanges.js.map +1 -1
- package/dist/components/widget/EnabledExchanges/EnabledExchangesList.js.map +1 -1
- package/dist/components/widget/EnabledList/EnabledList.js.map +1 -1
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.js.map +1 -1
- package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
- package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
- package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
- package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
- package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
- package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
- package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
- package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
- package/dist/components/widget/ImportToken/useImportTokenDrawer.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +5 -8
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/constants.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
- package/dist/components/widget/LimitPriceInput/index.js +6 -6
- package/dist/components/widget/LimitPriceInput/index.js.map +1 -1
- package/dist/components/widget/Line/Line.js.map +1 -1
- package/dist/components/widget/ListItem/ListItemWithSwitch.js.map +1 -1
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/common/NetworkItem.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/utils/items.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
- package/dist/components/widget/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +5 -8
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/constants.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
- package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
- package/dist/components/widget/Screen/ScreenContainer.js.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
- package/dist/components/widget/SettingsButton/SettingsButton.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRateWithTooltip.js.map +1 -1
- package/dist/components/widget/SwapRate/utils.js.map +1 -1
- package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.d.ts +4 -1
- package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.d.ts.map +1 -1
- package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js +51 -28
- package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js.map +1 -1
- package/dist/components/widget/Tabs/Tabs.js.map +1 -1
- package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenLink.js.map +1 -1
- package/dist/components/widget/TokenInput/InputContainer.js.map +1 -1
- package/dist/components/widget/TokenInput/InputField.js.map +1 -1
- package/dist/components/widget/TokenInput/InputFooter.js.map +1 -1
- package/dist/components/widget/TokenInput/InputHeader.js.map +1 -1
- package/dist/components/widget/TokenInput/common/Balance.js.map +1 -1
- package/dist/components/widget/TokenInput/common/MaxButtons.js.map +1 -1
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelButtonWithDrawer.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelOrder/ConfirmCancel.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelOrder/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewScreen.js.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js.map +1 -1
- package/dist/components/widget/TradeParameters/DegenModeConfirmation.js.map +1 -1
- package/dist/components/widget/TradeParameters/DegenModeParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/EnabledExchangesParameters/EnabledExchangesParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/EnabledExchangesParameters/useDraftEnabledExchangesState.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/deltaParamActionsAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/enabledExchanges/disabledDexesAtomFamily.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/enabledExchanges/useDisabledDexes.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/slippageParamAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/tradePreferencesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/TransactionDetails/TransactionListItem.js.map +1 -1
- package/dist/components/widget/TransactionDetails/utils.js.map +1 -1
- package/dist/components/widget/Twap/CustomDurationDrawer.js.map +1 -1
- package/dist/components/widget/Twap/OrderDuration.js.map +1 -1
- package/dist/components/widget/Twap/OrderSplit.js.map +1 -1
- package/dist/components/widget/Twap/RateProtection.js.map +1 -1
- package/dist/components/widget/Twap/TwapDetailWithTooltip.js.map +1 -1
- package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
- package/dist/components/widget/Warning/Warning.js.map +1 -1
- package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
- package/dist/components/widget/YouGet/YouGet.js.map +1 -1
- package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/LimitOrderDetails.js.map +1 -1
- package/dist/core/OtcOrderButton.js.map +1 -1
- package/dist/core/OtcOrderDetails.js.map +1 -1
- package/dist/core/Toaster.js.map +1 -1
- package/dist/core/TradeFlowScreenButton.js.map +1 -1
- package/dist/core/TwapDetails.js.map +1 -1
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/Warnings.js.map +1 -1
- package/dist/core/across/isCrosschainPossible.js.map +1 -1
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
- package/dist/core/inputs/hooks/utils.js.map +1 -1
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/inputs/state/subscriptions.js.map +1 -1
- package/dist/core/limit/state/deadlineAtom.js.map +1 -1
- package/dist/core/limit/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputActionsAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
- package/dist/core/limit/state/receiverAddressAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/limit/state/utils.js.map +1 -1
- package/dist/core/limit/useLimitDetailsListProps.js.map +1 -1
- package/dist/core/limit/useLimitNotSupported.js.map +1 -1
- package/dist/core/limit/useLimitPriceDifference.js.map +1 -1
- package/dist/core/limit/useLimitPriceInputProps.js.map +1 -1
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/otc/state/deadlineAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputActionsAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
- package/dist/core/otc/state/receiverAddressAtom.js.map +1 -1
- package/dist/core/otc/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/otc/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/otc/useOtcDetailsListProps.js.map +1 -1
- package/dist/core/otc/useOtcNotSupported.js.map +1 -1
- package/dist/core/otc/useOtcPriceDifference.js.map +1 -1
- package/dist/core/otc/useOtcPriceInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenSwitcherProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
- package/dist/core/screen/hooks/useInitialValue.js.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
- package/dist/core/screen/hooks/useResizeObserver.js.map +1 -1
- package/dist/core/screen/hooks/useRunOnMount.js.map +1 -1
- package/dist/core/screen/state/hooks/useScreen.js.map +1 -1
- package/dist/core/screen/state/hooks/useScreenValue.js.map +1 -1
- package/dist/core/screen/state/hooks/useSetScreen.js.map +1 -1
- package/dist/core/screen/state/screenAtom.js.map +1 -1
- package/dist/core/state/apiConfigAtom.js.map +1 -1
- package/dist/core/state/chainToAtom.js.map +1 -1
- package/dist/core/state/configActionsAtom.js.map +1 -1
- package/dist/core/state/configAtom.js +2 -2
- package/dist/core/state/configAtom.js.map +1 -1
- package/dist/core/state/configEffectAtom.js.map +1 -1
- package/dist/core/state/containerAtom.js.map +1 -1
- package/dist/core/state/enabledChainsAtom.js.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.d.ts +7 -1
- package/dist/core/state/enabledTradeModesAtom.d.ts.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.js +1 -1
- package/dist/core/state/enabledTradeModesAtom.js.map +1 -1
- package/dist/core/state/externalProviderAtom.js.map +1 -1
- package/dist/core/state/getSelectableDestChains.js.map +1 -1
- package/dist/core/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/state/tradeModeAtom.js +1 -1
- package/dist/core/state/tradeModeAtom.js.map +1 -1
- package/dist/core/state/validatedPartnerConfigAtom.js.map +1 -1
- package/dist/core/state/validatedReferrerConfigAtom.js.map +1 -1
- package/dist/core/state/widgetEventsAtom.js.map +1 -1
- package/dist/core/subscriptions.js.map +1 -1
- package/dist/core/swapDetails/fees.js.map +1 -1
- package/dist/core/swapDetails/maxToPay.js.map +1 -1
- package/dist/core/swapDetails/orderRouting.js.map +1 -1
- package/dist/core/swapDetails/priceImpact.js.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.d.ts.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js +37 -31
- package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
- package/dist/core/swapDetails/youGet.js.map +1 -1
- package/dist/core/twap/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
- package/dist/core/twap/state/twapParamsAtom.js.map +1 -1
- package/dist/core/twap/state/twapSideAtom.js.map +1 -1
- package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
- package/dist/core/twap/useTwapDetailsListProps.d.ts.map +1 -1
- package/dist/core/twap/useTwapDetailsListProps.js +36 -31
- package/dist/core/twap/useTwapDetailsListProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenSwitcherProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -1
- package/dist/events/effects/formInput.js.map +1 -1
- package/dist/events/effects/price.js.map +1 -1
- package/dist/events/effects/swapMode.js.map +1 -1
- package/dist/events/getters/limit.js.map +1 -1
- package/dist/events/getters/otc.js.map +1 -1
- package/dist/events/getters/settings.js.map +1 -1
- package/dist/events/getters/swap.js.map +1 -1
- package/dist/events/getters/twap.js.map +1 -1
- package/dist/events/getters/widgetState.js.map +1 -1
- package/dist/events/hooks/useActivateEffects.js.map +1 -1
- package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
- package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__6feb48fe37bd41e9af5c8e81d5a6f4e1/external/vaul/dist/index.js.map +1 -1
- package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
- package/dist/hooks/batch/useBatchWithApproveTxs.js.map +1 -1
- package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
- package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
- package/dist/hooks/gas/useGasPrices.js.map +1 -1
- package/dist/hooks/gas/utils.js.map +1 -1
- package/dist/hooks/getCode/query.js.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
- package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
- package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/utils.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/utils/constants.js.map +1 -1
- package/dist/hooks/permit/utils/construct.js.map +1 -1
- package/dist/hooks/permit/utils/deadlines.js.map +1 -1
- package/dist/hooks/permit/utils/detect.js.map +1 -1
- package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
- package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
- package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
- package/dist/hooks/permit/utils/utils.js.map +1 -1
- package/dist/hooks/sdk/useGetContracts.js.map +1 -1
- package/dist/hooks/sdk/useSpender.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/effect.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/storage.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
- 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.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/factory.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/dexesList/useDexesList.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/errors.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts +4 -7
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js +28 -24
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermitEvents.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js.map +1 -1
- package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/allowance/utils.js.map +1 -1
- package/dist/hooks/tokens/balances/queries.js.map +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
- package/dist/hooks/tokens/data/useFetchTokens.js.map +1 -1
- package/dist/hooks/tokens/data/useMultichainTokensData.js.map +1 -1
- package/dist/hooks/tokens/prices/queries.js.map +1 -1
- package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
- package/dist/hooks/tokens/useNativeToken.js.map +1 -1
- package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
- package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
- package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
- package/dist/hooks/txs/mutations/useReplaceTx.js.map +1 -1
- package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
- package/dist/hooks/txs/queries/useAccountNonce.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/txs/queries/useTxFees.js.map +1 -1
- package/dist/hooks/txs/queries/useTxHistory.js.map +1 -1
- package/dist/hooks/txs/queries/useTxResponse.js.map +1 -1
- package/dist/hooks/txs/queries/useWalletCanReplaceTx.js.map +1 -1
- package/dist/hooks/txs/queries/utils.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBreakpoints.js.map +1 -1
- package/dist/hooks/useBridgeInfo.js.map +1 -1
- package/dist/hooks/useBridgeProtocols.js.map +1 -1
- package/dist/hooks/useCachedQueryError.js.map +1 -1
- package/dist/hooks/useChainMatches.js.map +1 -1
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/hooks/useCurrentChain.js.map +1 -1
- package/dist/hooks/useDebouncedInputState.js.map +1 -1
- package/dist/hooks/useEIP1559Enabled.js.map +1 -1
- package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
- package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
- package/dist/hooks/useMinViemClient.js.map +1 -1
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSelectableDestChains.js.map +1 -1
- package/dist/hooks/useSlippage.js.map +1 -1
- package/dist/hooks/useSwitchChainWithGuard.js.map +1 -1
- package/dist/lib/constants/urls.js.map +1 -1
- package/dist/lib/ipfs.js.map +1 -1
- package/dist/lib/queryClient.js.map +1 -1
- package/dist/lib/tradeMode.d.ts +1 -0
- package/dist/lib/tradeMode.d.ts.map +1 -1
- package/dist/lib/tradeMode.js +4 -1
- package/dist/lib/tradeMode.js.map +1 -1
- package/dist/lib/utils/approval.js.map +1 -1
- package/dist/lib/utils/atomWithCompare.js.map +1 -1
- package/dist/lib/utils/copyToClipboard.js.map +1 -1
- package/dist/lib/utils/delta.js.map +1 -1
- package/dist/lib/utils/dexes.js.map +1 -1
- package/dist/lib/utils/explorer.js.map +1 -1
- package/dist/lib/utils/fee.js.map +1 -1
- package/dist/lib/utils/formatFiatPrice.js.map +1 -1
- package/dist/lib/utils/formatPercent.js.map +1 -1
- package/dist/lib/utils/formatTokenBalance.js.map +1 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/logger.js.map +1 -1
- package/dist/lib/utils/metabase.js.map +1 -1
- package/dist/lib/utils/mobile.js.map +1 -1
- package/dist/lib/utils/price.js.map +1 -1
- package/dist/lib/utils/priceImpact.js.map +1 -1
- package/dist/lib/utils/providerErrors.js.map +1 -1
- package/dist/lib/utils/rate.js.map +1 -1
- package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
- package/dist/lib/utils/savedAmountUSD.js.map +1 -1
- package/dist/lib/utils/scaleFactor.js.map +1 -1
- package/dist/lib/utils/slippage.js.map +1 -1
- package/dist/lib/utils/time.js.map +1 -1
- package/dist/lib/utils/toDecimal.js.map +1 -1
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/utils/tradeFlow.js.map +1 -1
- package/dist/lib/utils/transactionHandlers.js.map +1 -1
- package/dist/lib/utils/tuple.js.map +1 -1
- package/dist/lib/utils/twap.js.map +1 -1
- package/dist/lib/utils/useDateNow.js.map +1 -1
- package/dist/lib/web3/wagmi/config.d.ts +0 -18
- package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/config.js +19 -6
- package/dist/lib/web3/wagmi/config.js.map +1 -1
- package/dist/lib/web3/wagmi/external.js.map +1 -1
- package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
- package/dist/lib/web3/wagmi/utils.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tokens/blacklist.js.map +1 -1
- package/dist/tokens/constructor.js.map +1 -1
- package/dist/tokens/defaultTokens.js.map +1 -1
- package/dist/tokens/hooks.js.map +1 -1
- package/dist/tokens/lists/constants.js.map +1 -1
- package/dist/tokens/lists/download.js.map +1 -1
- package/dist/tokens/lists/state/effects.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
- package/dist/tokens/overrides.js.map +1 -1
- package/dist/tokens/queries.js.map +1 -1
- package/dist/tokens/stabeCoins/hooks.js.map +1 -1
- package/dist/tokens/stabeCoins/index.js.map +1 -1
- package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
- package/dist/tokens/state/allTokensByChainAtom.js.map +1 -1
- package/dist/tokens/state/constructTokens.js.map +1 -1
- package/dist/tokens/state/fromListsAtom.js.map +1 -1
- package/dist/tokens/utils/areTokensSame.js.map +1 -1
- package/dist/tokens/utils/brand.js.map +1 -1
- package/dist/tokens/utils/eth.js.map +1 -1
- package/dist/tokens/utils/filtering.js.map +1 -1
- package/dist/tokens/utils/sets.js.map +1 -1
- package/dist/tokens/utils/sorting.js.map +1 -1
- package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -1
- package/dist/transactions/hash.js.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
- package/dist/transactions/queries/ensureEstimateFeesPerGas.js.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/transactions/queries/ensureTxResponse.js.map +1 -1
- package/dist/transactions/state/effects/finalize.js.map +1 -1
- package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
- package/dist/transactions/state/hooks/useMarkTxAsDropped.js.map +1 -1
- package/dist/transactions/state/hooks/useTransactions.js.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
- package/dist/transactions/state/transactionsAtom.js.map +1 -1
- package/dist/transactions/status.js.map +1 -1
- package/dist/transactions/utils.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenBalance.js","names":["ONE_MINUTE_MS","SupportedChainId","Token","isETH","erc20Abi","formatUnits","isAddress","useAccount","useReadContract","useBalance","useERC20Balance","t0","$","_c","token","queryOptions","_queryOptions","address","account","t1","t2","enabled","undefined","addressToFetch","t3","network","t4","t5","t6","refetchInterval","refetchOnWindowFocus","t7","functionName","const","chainId","abi","args","query","useNativeBalance","params","UseTokenBalanceInput","Pick","useTokenBalance","requestedNative","data","nativeTokenBalance","nativeBalanceQueryResult","erc20BalanceQueryResult","erc20TokenBalance","balance","getBalanceFromQueries","tokenDecimals","decimals","queryResult","GetBalanceReturnType","formatted","symbol","value","balanceUnit"],"sources":["../../../../src/hooks/tokens/balances/useTokenBalance.ts"],"sourcesContent":["import { ONE_MINUTE_MS } from \"@/lib/constants/time\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\n\nimport { erc20Abi, formatUnits, isAddress } from \"viem\";\nimport { useAccount, useReadContract, useBalance } from \"wagmi\";\n\nexport const useERC20Balance = ({\n token,\n queryOptions: _queryOptions,\n}: UseTokenBalanceInput) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = _queryOptions ?? {};\n\n const addressToFetch =\n token && isAddress(token.address) && !isETH({ address: token.address })\n ? token.address\n : undefined;\n\n return useReadContract({\n functionName: \"balanceOf\" as const,\n address: addressToFetch,\n chainId: token?.network,\n abi: erc20Abi,\n args: account ? [account] : undefined,\n query: {\n enabled: !!enabled && !!addressToFetch && !!account,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\nexport const useNativeBalance = (\n params?: Omit<UseTokenBalanceInput, \"token\">\n) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = params?.queryOptions ?? {};\n\n return useBalance({\n address: account,\n chainId: params?.chainId,\n query: {\n enabled: !!enabled && !!account && !!params?.chainId,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\ntype UseTokenBalanceInput = {\n token?: Pick<Token, \"address\" | \"decimals\" | \"network\">;\n chainId?: SupportedChainId;\n queryOptions?: {\n refetchInterval?: number;\n refetchOnWindowFocus?: boolean | \"always\";\n enabled?: boolean;\n };\n};\n\n// BOTH\nexport const useTokenBalance = ({\n token,\n chainId,\n queryOptions,\n}: UseTokenBalanceInput) => {\n const requestedNative = token?.address\n ? isETH({ address: token.address })\n : undefined;\n\n const { data: nativeTokenBalance, ...nativeBalanceQueryResult } =\n useNativeBalance({\n chainId: chainId ?? token?.network,\n queryOptions: {\n enabled: requestedNative,\n ...queryOptions,\n },\n });\n\n const { data: erc20TokenBalance, ...erc20BalanceQueryResult } =\n useERC20Balance({\n chainId: chainId ?? token?.network,\n token,\n queryOptions: {\n enabled: !requestedNative,\n ...queryOptions,\n },\n });\n\n const balance = getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals: token?.decimals,\n });\n\n const queryResult = requestedNative\n ? nativeBalanceQueryResult\n : erc20BalanceQueryResult;\n\n return {\n ...balance,\n ...queryResult,\n };\n};\n\ntype GetBalanceReturnType = {\n decimals: number;\n formatted: string;\n symbol: string;\n value: bigint;\n};\n\nfunction getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals,\n}: {\n requestedNative?: boolean;\n nativeTokenBalance?: GetBalanceReturnType;\n erc20TokenBalance?: bigint;\n tokenDecimals?: number;\n}) {\n if (requestedNative && nativeTokenBalance !== undefined) {\n const balance = nativeTokenBalance.value;\n const balanceUnit = formatUnits(balance, nativeTokenBalance.decimals);\n return { balance, balanceUnit };\n }\n\n if (erc20TokenBalance !== undefined && tokenDecimals !== undefined) {\n const balance = erc20TokenBalance;\n const balanceUnit = formatUnits(balance, tokenDecimals);\n return { balance, balanceUnit };\n }\n}\n"],"mappings":";;;;;;AAQA,IAAaU,KAAkBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAC,UAAAC,cAAAC,MAAAL,GAI9B,EAAAM,SAAAC,MAA6BX,GAAY,EAACY;
|
|
1
|
+
{"version":3,"file":"useTokenBalance.js","names":["ONE_MINUTE_MS","SupportedChainId","Token","isETH","erc20Abi","formatUnits","isAddress","useAccount","useReadContract","useBalance","useERC20Balance","t0","$","_c","token","queryOptions","_queryOptions","address","account","t1","t2","enabled","undefined","addressToFetch","t3","network","t4","t5","t6","refetchInterval","refetchOnWindowFocus","t7","functionName","const","chainId","abi","args","query","useNativeBalance","params","UseTokenBalanceInput","Pick","useTokenBalance","requestedNative","data","nativeTokenBalance","nativeBalanceQueryResult","erc20BalanceQueryResult","erc20TokenBalance","balance","getBalanceFromQueries","tokenDecimals","decimals","queryResult","GetBalanceReturnType","formatted","symbol","value","balanceUnit"],"sources":["../../../../src/hooks/tokens/balances/useTokenBalance.ts"],"sourcesContent":["import { ONE_MINUTE_MS } from \"@/lib/constants/time\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\n\nimport { erc20Abi, formatUnits, isAddress } from \"viem\";\nimport { useAccount, useReadContract, useBalance } from \"wagmi\";\n\nexport const useERC20Balance = ({\n token,\n queryOptions: _queryOptions,\n}: UseTokenBalanceInput) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = _queryOptions ?? {};\n\n const addressToFetch =\n token && isAddress(token.address) && !isETH({ address: token.address })\n ? token.address\n : undefined;\n\n return useReadContract({\n functionName: \"balanceOf\" as const,\n address: addressToFetch,\n chainId: token?.network,\n abi: erc20Abi,\n args: account ? [account] : undefined,\n query: {\n enabled: !!enabled && !!addressToFetch && !!account,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\nexport const useNativeBalance = (\n params?: Omit<UseTokenBalanceInput, \"token\">\n) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = params?.queryOptions ?? {};\n\n return useBalance({\n address: account,\n chainId: params?.chainId,\n query: {\n enabled: !!enabled && !!account && !!params?.chainId,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\ntype UseTokenBalanceInput = {\n token?: Pick<Token, \"address\" | \"decimals\" | \"network\">;\n chainId?: SupportedChainId;\n queryOptions?: {\n refetchInterval?: number;\n refetchOnWindowFocus?: boolean | \"always\";\n enabled?: boolean;\n };\n};\n\n// BOTH\nexport const useTokenBalance = ({\n token,\n chainId,\n queryOptions,\n}: UseTokenBalanceInput) => {\n const requestedNative = token?.address\n ? isETH({ address: token.address })\n : undefined;\n\n const { data: nativeTokenBalance, ...nativeBalanceQueryResult } =\n useNativeBalance({\n chainId: chainId ?? token?.network,\n queryOptions: {\n enabled: requestedNative,\n ...queryOptions,\n },\n });\n\n const { data: erc20TokenBalance, ...erc20BalanceQueryResult } =\n useERC20Balance({\n chainId: chainId ?? token?.network,\n token,\n queryOptions: {\n enabled: !requestedNative,\n ...queryOptions,\n },\n });\n\n const balance = getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals: token?.decimals,\n });\n\n const queryResult = requestedNative\n ? nativeBalanceQueryResult\n : erc20BalanceQueryResult;\n\n return {\n ...balance,\n ...queryResult,\n };\n};\n\ntype GetBalanceReturnType = {\n decimals: number;\n formatted: string;\n symbol: string;\n value: bigint;\n};\n\nfunction getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals,\n}: {\n requestedNative?: boolean;\n nativeTokenBalance?: GetBalanceReturnType;\n erc20TokenBalance?: bigint;\n tokenDecimals?: number;\n}) {\n if (requestedNative && nativeTokenBalance !== undefined) {\n const balance = nativeTokenBalance.value;\n const balanceUnit = formatUnits(balance, nativeTokenBalance.decimals);\n return { balance, balanceUnit };\n }\n\n if (erc20TokenBalance !== undefined && tokenDecimals !== undefined) {\n const balance = erc20TokenBalance;\n const balanceUnit = formatUnits(balance, tokenDecimals);\n return { balance, balanceUnit };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCombineTokensWithFetched.js","names":["TokenMaybeWithUsdBalance","useFetchTokens","isAddress","TokenRowForFetchedToken","SupportedChainId","useAttachTokenBalanceMultichain","constructToken","isBlacklistedToken","useAllEnabledChains","UseCombineTokensWithFetchedReturn","tokenRowsCombined","UseCombineTokensWithFetchedInput","allTokenRows","tokenFilter","selectableChains","useCombineTokensWithFetched","t0","$","_c","t1","address","isTokenFilterValidAddress","enabledChains","chainsToFetchOn","t2","Set","map","_temp","foundChains","t3","t4","chainId","has","filter","addresses","chainIds","tokenRowsFetched","possibleTokenImage","undefined","find","_temp2","img","tokensFetched","tokens","reduce","_temp3","tokenFetchedAddressesMap","t5","addressesMap","attachTokenBalance","tokensFetchedWithBalance","token_2","token","network","fetchedOnChain","combinedTokenRows","token_0","acc","token_1","chainId_0","push"],"sources":["../../../../src/hooks/tokens/data/useCombineTokensWithFetched.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useFetchTokens } from \"./useFetchTokens\";\nimport { isAddress } from \"viem\";\nimport type { TokenRowForFetchedToken } from \"@/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAttachTokenBalanceMultichain } from \"../balances/useAttachTokenBalanceMultichain\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport { isBlacklistedToken } from \"@/tokens/blacklist\";\nimport { useAllEnabledChains } from \"@/core/state/enabledChainsAtom\";\n\ntype UseCombineTokensWithFetchedReturn = {\n tokenRowsCombined: TokenRowForFetchedToken[];\n};\n\ntype UseCombineTokensWithFetchedInput = {\n allTokenRows: TokenMaybeWithUsdBalance[];\n tokenFilter: string;\n selectableChains?: SupportedChainId[];\n};\nexport const useCombineTokensWithFetched = ({\n allTokenRows,\n tokenFilter,\n selectableChains,\n}: UseCombineTokensWithFetchedInput): UseCombineTokensWithFetchedReturn => {\n const isTokenFilterValidAddress =\n isAddress(tokenFilter) && !isBlacklistedToken({ address: tokenFilter });\n\n // fetch on enabled chains only\n const enabledChains = useAllEnabledChains();\n let chainsToFetchOn: SupportedChainId[] = selectableChains || enabledChains;\n if (isTokenFilterValidAddress) {\n const foundChains = new Set(allTokenRows.map((token) => token.network));\n // if exact match by address found in tokenLists, no need to fetch Token data onchain for that chain\n chainsToFetchOn = chainsToFetchOn.filter(\n (chainId) => !foundChains.has(chainId)\n );\n }\n\n // if user's typed filter is a valid address, fetch tokens for all networks (as it's possible that lists data not enough -- even if token is spotted in one of the lists for one chain, it could be missing in another one)\n const tokenRowsFetched = useFetchTokens({\n addresses: isTokenFilterValidAddress ? [tokenFilter] : [],\n chainIds: chainsToFetchOn,\n });\n\n /**\n no way to get token icon for a token which data we just fetched onchain when knowing its address only:\n 1. coingecko, coinmarket and other APIs that return token data including icon are paid only,\n 2. public repos with many token icons (trustwallet, cowswap) don't include more than our tokenLists already have,\n 3. if token was not found in any of the lists, there are likely no other bigger lists out there.\n BUT it is possible that tokenLists have this token (same address) on other chains, with icon present,\n we can assume if addresses are same then tokens are too, coincidences are unlikely, though in reality tokens sometimes have old vs new icon on different chains:\n case in point -- USDT and USDT0\n */\n const possibleTokenImage = !isTokenFilterValidAddress\n ? undefined\n : // tokens here are found by address, so they must be the same as the fetched ones but on different chains\n allTokenRows.find((token) => token.img)?.img;\n\n const tokensFetched = tokenRowsFetched.tokens;\n\n const tokenFetchedAddressesMap = tokensFetched.reduce<\n Partial<Record<SupportedChainId, string[]>>\n >((acc, token) => {\n const chainId = token.network;\n if (!acc[chainId]) acc[chainId] = [];\n\n acc[chainId].push(token.address);\n return acc;\n }, {});\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: tokenFetchedAddressesMap,\n });\n\n const tokensFetchedWithBalance =\n tokenRowsFetched.tokens.map<TokenRowForFetchedToken>((token) =>\n attachTokenBalance({\n ...constructToken(token),\n network: token.network,\n fetchedOnChain: true,\n img: possibleTokenImage,\n })\n );\n\n const combinedTokenRows: TokenRowForFetchedToken[] = [\n ...allTokenRows,\n ...tokensFetchedWithBalance, // tokens not present in allTokenRows,\n // because chains to fetch on exclude chains found for exact token in another chain\n ];\n\n return {\n tokenRowsCombined: combinedTokenRows,\n };\n};\n"],"mappings":";;;;;;;;AAmBA,IAAae,KAA8BC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAN,iBAAAC,gBAAAC,wBAAAE,GAITG;
|
|
1
|
+
{"version":3,"file":"useCombineTokensWithFetched.js","names":["TokenMaybeWithUsdBalance","useFetchTokens","isAddress","TokenRowForFetchedToken","SupportedChainId","useAttachTokenBalanceMultichain","constructToken","isBlacklistedToken","useAllEnabledChains","UseCombineTokensWithFetchedReturn","tokenRowsCombined","UseCombineTokensWithFetchedInput","allTokenRows","tokenFilter","selectableChains","useCombineTokensWithFetched","t0","$","_c","t1","address","isTokenFilterValidAddress","enabledChains","chainsToFetchOn","t2","Set","map","_temp","foundChains","t3","t4","chainId","has","filter","addresses","chainIds","tokenRowsFetched","possibleTokenImage","undefined","find","_temp2","img","tokensFetched","tokens","reduce","_temp3","tokenFetchedAddressesMap","t5","addressesMap","attachTokenBalance","tokensFetchedWithBalance","token_2","token","network","fetchedOnChain","combinedTokenRows","token_0","acc","token_1","chainId_0","push"],"sources":["../../../../src/hooks/tokens/data/useCombineTokensWithFetched.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useFetchTokens } from \"./useFetchTokens\";\nimport { isAddress } from \"viem\";\nimport type { TokenRowForFetchedToken } from \"@/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAttachTokenBalanceMultichain } from \"../balances/useAttachTokenBalanceMultichain\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport { isBlacklistedToken } from \"@/tokens/blacklist\";\nimport { useAllEnabledChains } from \"@/core/state/enabledChainsAtom\";\n\ntype UseCombineTokensWithFetchedReturn = {\n tokenRowsCombined: TokenRowForFetchedToken[];\n};\n\ntype UseCombineTokensWithFetchedInput = {\n allTokenRows: TokenMaybeWithUsdBalance[];\n tokenFilter: string;\n selectableChains?: SupportedChainId[];\n};\nexport const useCombineTokensWithFetched = ({\n allTokenRows,\n tokenFilter,\n selectableChains,\n}: UseCombineTokensWithFetchedInput): UseCombineTokensWithFetchedReturn => {\n const isTokenFilterValidAddress =\n isAddress(tokenFilter) && !isBlacklistedToken({ address: tokenFilter });\n\n // fetch on enabled chains only\n const enabledChains = useAllEnabledChains();\n let chainsToFetchOn: SupportedChainId[] = selectableChains || enabledChains;\n if (isTokenFilterValidAddress) {\n const foundChains = new Set(allTokenRows.map((token) => token.network));\n // if exact match by address found in tokenLists, no need to fetch Token data onchain for that chain\n chainsToFetchOn = chainsToFetchOn.filter(\n (chainId) => !foundChains.has(chainId)\n );\n }\n\n // if user's typed filter is a valid address, fetch tokens for all networks (as it's possible that lists data not enough -- even if token is spotted in one of the lists for one chain, it could be missing in another one)\n const tokenRowsFetched = useFetchTokens({\n addresses: isTokenFilterValidAddress ? [tokenFilter] : [],\n chainIds: chainsToFetchOn,\n });\n\n /**\n no way to get token icon for a token which data we just fetched onchain when knowing its address only:\n 1. coingecko, coinmarket and other APIs that return token data including icon are paid only,\n 2. public repos with many token icons (trustwallet, cowswap) don't include more than our tokenLists already have,\n 3. if token was not found in any of the lists, there are likely no other bigger lists out there.\n BUT it is possible that tokenLists have this token (same address) on other chains, with icon present,\n we can assume if addresses are same then tokens are too, coincidences are unlikely, though in reality tokens sometimes have old vs new icon on different chains:\n case in point -- USDT and USDT0\n */\n const possibleTokenImage = !isTokenFilterValidAddress\n ? undefined\n : // tokens here are found by address, so they must be the same as the fetched ones but on different chains\n allTokenRows.find((token) => token.img)?.img;\n\n const tokensFetched = tokenRowsFetched.tokens;\n\n const tokenFetchedAddressesMap = tokensFetched.reduce<\n Partial<Record<SupportedChainId, string[]>>\n >((acc, token) => {\n const chainId = token.network;\n if (!acc[chainId]) acc[chainId] = [];\n\n acc[chainId].push(token.address);\n return acc;\n }, {});\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: tokenFetchedAddressesMap,\n });\n\n const tokensFetchedWithBalance =\n tokenRowsFetched.tokens.map<TokenRowForFetchedToken>((token) =>\n attachTokenBalance({\n ...constructToken(token),\n network: token.network,\n fetchedOnChain: true,\n img: possibleTokenImage,\n })\n );\n\n const combinedTokenRows: TokenRowForFetchedToken[] = [\n ...allTokenRows,\n ...tokensFetchedWithBalance, // tokens not present in allTokenRows,\n // because chains to fetch on exclude chains found for exact token in another chain\n ];\n\n return {\n tokenRowsCombined: combinedTokenRows,\n };\n};\n"],"mappings":";;;;;;;;AAmBA,IAAae,KAA8BC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAN,iBAAAC,gBAAAC,wBAAAE,GAITG;CAAA,AAAAF,EAAA,OAAAJ,IAEwCM,IAAAF,EAAA,MAAvEE,IAAAjB,EAAUW,EAA6D,IAAvE,CAA2BN,EAAmB,EAAAa,SAAWP,GAAa,CAAC,EAAAI,EAAA,KAAAJ,GAAAI,EAAA,KAAAE;CADzE,IAAAE,IACEF,GAGFG,IAAsBd,GAAqB,EAC3Ce,IAA0CT,KAAAQ;CAC1C,IAAID,GAAyB;EAAA,IAAAG;EAAA,AAAAP,EAAA,OAAAL,IAC4CY,IAAAP,EAAA,MAAnDO,IAAA,IAAIC,IAAIb,EAAYc,IAAKC,EAAyB,CAAC,EAAAV,EAAA,KAAAL,GAAAK,EAAA,KAAAO;EAAvE,IAAAI,IAAoBJ,GAAoDK;EAAA,IAAAZ,EAAA,OAAAM,KAAAN,EAAA,OAAAW,GAAA;GAAA,IAAAE;GAIvEb,AAJuEA,EAAA,OAAAW,IAGhCE,IAAAb,EAAA,MAAtCa,KAAAC,MAAa,CAACH,EAAWI,IAAKD,EAAQ,EAAAd,EAAA,KAAAW,GAAAX,EAAA,KAAAa,IADtBD,IAAAN,EAAeU,OAC/BH,EACD,EAAAb,EAAA,KAAAM,GAAAN,EAAA,KAAAW,GAAAX,EAAA,KAAAY;SAAAA,IAAAZ,EAAA;EAFDM,IAAkBA;;CAGnB,IAAAC;CAAA,AAAAP,EAAA,OAAAI,KAAAJ,EAAA,QAAAJ,KAIYW,IAAAH,IAAA,CAA6BR,EAAiB,GAA9C,EAA8C,EAAAI,EAAA,KAAAI,GAAAJ,EAAA,MAAAJ,GAAAI,EAAA,MAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,QAAAM,KAAAN,EAAA,QAAAO,KADnBK,IAAA;EAAAK,WAC3BV;EAA8CW,UAC/CZ;EACX,EAAAN,EAAA,MAAAM,GAAAN,EAAA,MAAAO,GAAAP,EAAA,MAAAY,KAAAA,IAAAZ,EAAA;CAHD,IAAAmB,IAAyBnC,EAAe4B,EAGtC,EAWFQ,IAA4BhB,IAGxBT,EAAY2B,KAAMC,EAA0B,EAAAC,MAHrBH,KAAAA,GAK3BI,IAAsBN,EAAgBO,QAAQb;CAAA,AAAAb,EAAA,QAAAyB,IAUxCZ,IAAAb,EAAA,OAR2Ba,IAAAY,EAAaE,OAE5CC,GAMC,EAAE,CAAC,EAAA5B,EAAA,MAAAyB,GAAAzB,EAAA,MAAAa;CARN,IAAAgB,IAAiChB,GAQ1BiB;CAAA,AAAA9B,EAAA,QAAA6B,IAINC,IAAA9B,EAAA,OAF0D8B,IAAA,EAAAC,cAC3CF,GACf,EAAA7B,EAAA,MAAA6B,GAAA7B,EAAA,MAAA8B;CAFD,IAAAE,IAA2B5C,EAAgC0C,EAEzD,EAEFG,IACEd,EAAgBO,OAAOjB,KAA8ByB,MACnDF,EAAmB;EAAA,GACd3C,EAAe8C,EAAM;EAAAC,SACfD,EAAKC;EAAQC,gBACN;EAAIb,KACfJ;EACN,CACH,CAAC;CAMD,OAEK,EAAA3B,mBACc6C,CAPgC,GAChD3C,GAAY,GACZsC,EAKgBK,EACpB;;AAzEwC,SAAA5B,EAAAyB,GAAA;CAAA,OAYiBA,EAAKC;;AAZtB,SAAAb,EAAAgB,GAAA;CAAA,OAqCRJ,EAAKX;;AArCG,SAAAI,EAAAY,GAAAC,GAAA;CA4CvC,IAAAC,IAAgBP,EAAKC;CAGW,OAF3BI,EAAI1B,OAAU0B,EAAI1B,KAAW,EAAH,GAE/B0B,EAAI1B,GAAQ6B,KAAMR,EAAKhC,QAAS,EACzBqC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchTokens.js","names":["useMultiChainTokensData","Address","SupportedChainId","MinErc20Token","UseQueryResult","combineFlatten","results","Error","allTokensTogether","flatMap","res","data","UseFetchTokensReturn","tokens","useFetchTokens","t0","$","_c","addresses","chainIds","t1","combine","minTokensData","t2"],"sources":["../../../../src/hooks/tokens/data/useFetchTokens.ts"],"sourcesContent":["import { useMultiChainTokensData } from \"./useMultichainTokensData\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { MinErc20Token } from \"@/tokens/state/types\";\nimport type { UseQueryResult } from \"@tanstack/react-query\";\n\nconst combineFlatten = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): MinErc20Token[] => {\n const allTokensTogether = results.flatMap((res) => res.data || []);\n return allTokensTogether;\n};\n\ntype UseFetchTokensReturn = {\n tokens: MinErc20Token[];\n};\nexport const useFetchTokens = ({\n addresses,\n chainIds,\n}: {\n addresses: Address[];\n chainIds: SupportedChainId[];\n}): UseFetchTokensReturn => {\n const minTokensData = useMultiChainTokensData({\n addresses,\n chainIds,\n combine: combineFlatten,\n });\n return {\n tokens: minTokensData,\n };\n};\n"],"mappings":";;;AAMA,IAAMK,KACJC,MAE0BA,EAAQG,SAASC,MAAQA,EAAIC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"useFetchTokens.js","names":["useMultiChainTokensData","Address","SupportedChainId","MinErc20Token","UseQueryResult","combineFlatten","results","Error","allTokensTogether","flatMap","res","data","UseFetchTokensReturn","tokens","useFetchTokens","t0","$","_c","addresses","chainIds","t1","combine","minTokensData","t2"],"sources":["../../../../src/hooks/tokens/data/useFetchTokens.ts"],"sourcesContent":["import { useMultiChainTokensData } from \"./useMultichainTokensData\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { MinErc20Token } from \"@/tokens/state/types\";\nimport type { UseQueryResult } from \"@tanstack/react-query\";\n\nconst combineFlatten = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): MinErc20Token[] => {\n const allTokensTogether = results.flatMap((res) => res.data || []);\n return allTokensTogether;\n};\n\ntype UseFetchTokensReturn = {\n tokens: MinErc20Token[];\n};\nexport const useFetchTokens = ({\n addresses,\n chainIds,\n}: {\n addresses: Address[];\n chainIds: SupportedChainId[];\n}): UseFetchTokensReturn => {\n const minTokensData = useMultiChainTokensData({\n addresses,\n chainIds,\n combine: combineFlatten,\n });\n return {\n tokens: minTokensData,\n };\n};\n"],"mappings":";;;AAMA,IAAMK,KACJC,MAE0BA,EAAQG,SAASC,MAAQA,EAAIC,QAAQ,EAAE,CAC1DH,EAMIM,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAC,EAAAC,cAAAC,gBAAAJ,GAM9BK;CAAA,AAAAJ,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAC+CC,IAAA;EAAAF;EAAAC;EAAAE,SAGnChB;EACV,EAAAW,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAJD,IAAAM,IAAsBtB,EAAwBoB,EAI5C,EAACG;CAGF,OAHEP,EAAA,OAAAM,IAGFC,IAAAP,EAAA,MAFMO,IAAA,EAAAV,QACGS,GACT,EAAAN,EAAA,KAAAM,GAAAN,EAAA,KAAAO,IAFMA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMultichainTokensData.js","names":["SupportedChainId","Address","assert","MarkOptional","MarkRequired","MinErc20Token","erc20Abi","MulticallReturnType","useConfig","ReadContractsData","useLogger","readContracts","Config","QueryClient","useQueries","UseQueryOptions","UseQueryResult","gatherObjectsByProp","isFilledArray","queryClient","wagmiConfig","TokensByAddressByChain","Partial","Record","defaultCombine","results","Error","mapping","reduce","accum","result","data","chainId","network","tokensMapping","token","address","toLowerCase","UseMultichainTokensDataInput","addresses","chainIds","combine","Res","UseMultichainTokensDataInputDefault","useMultiChainTokensData","input","T","t0","$","_c","logger","config","t1","produceQueries","queries","t2","t3","fetchedTokens","once","log","Omit","length","contractsArr","map","abi","functionName","const","callsPerToken","Calls","MulticallRes","contractsForAllChainsArr","flatMap","contractsCalls","contract","SingleChainResult","QueryOpts","select","contracts","tokenData","i","tokenDataSlice","slice","symbolResult","nameResult","decimalsResult","symbol","status","undefined","decimals","name","minTokenData","push","queryKey","queryFn","allowFailure","batchSize","res","enabled","staleTime","Infinity","gcTime","FetchUnknownTokenDataInput","client","fetchUnknownTokenData","Promise","queryOptions","ensureQueryData","selectedData"],"sources":["../../../../src/hooks/tokens/data/useMultichainTokensData.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { type Address } from \"viem\";\nimport { assert, type MarkOptional, type MarkRequired } from \"ts-essentials\";\nimport { type MinErc20Token } from \"@/tokens/state/types\";\nimport { erc20Abi, type MulticallReturnType } from \"viem\";\nimport { useConfig } from \"wagmi\";\nimport type { ReadContractsData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport { readContracts, type Config } from \"@wagmi/core\";\nimport {\n QueryClient,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\n\ntype TokensByAddressByChain = Partial<\n Record<SupportedChainId, Record<Address, MinErc20Token>>\n>;\n\nconst defaultCombine = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): TokensByAddressByChain => {\n const mapping = results.reduce<TokensByAddressByChain>((accum, result) => {\n if (!result.data || !isFilledArray(result.data)) return accum;\n const chainId = result.data[0].network;\n const tokensMapping: Record<Address, MinErc20Token> = gatherObjectsByProp(\n result.data,\n (token) => token.address.toLowerCase()\n );\n\n if (!accum[chainId]) {\n accum[chainId] = {};\n }\n\n accum[chainId] = tokensMapping;\n return accum;\n }, {});\n\n return mapping;\n};\n\ntype UseMultichainTokensDataInput<Res> = {\n addresses: Address[];\n chainIds: SupportedChainId[];\n combine: (results: UseQueryResult<MinErc20Token[], Error>[]) => Res;\n};\n\ntype UseMultichainTokensDataInputDefault = MarkOptional<\n UseMultichainTokensDataInput<never>,\n \"combine\"\n>;\n\n// Function overloads to accept combine function\nexport function useMultiChainTokensData(\n input: UseMultichainTokensDataInputDefault\n): TokensByAddressByChain;\nexport function useMultiChainTokensData<T>(\n input: UseMultichainTokensDataInput<T>\n): T;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain {\n const logger = useLogger(\"MultichainTokensData\");\n\n const config = useConfig();\n\n const queries = produceQueries({ addresses, chainIds, config });\n\n // useReadContracts uses a singular useQuery internally\n // which calls readContracts once only for multiple chainIds\n // and has to wait for all promises to resolve before returning the data.\n // useQueries allows to independently process readContracts results for each chainId\n const fetchedTokens = useQueries<typeof queries, T | TokensByAddressByChain>({\n queries,\n combine: combine || defaultCombine,\n });\n\n logger.once.log(\"TokensData result\", {\n addresses,\n chainIds,\n data: fetchedTokens,\n });\n\n return fetchedTokens;\n}\n\nfunction produceQueries({\n addresses,\n chainIds,\n config,\n}: Omit<UseMultichainTokensDataInputDefault, \"combine\"> & { config: Config }) {\n if (addresses.length === 0 || chainIds.length === 0) {\n // don't spawn any queries\n return [];\n }\n\n const contractsArr = addresses.map(\n (address) =>\n [\n {\n address,\n abi: erc20Abi,\n functionName: \"symbol\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"name\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"decimals\",\n },\n ] as const\n );\n\n const callsPerToken = contractsArr[0]?.length;\n\n type Calls = (typeof contractsArr)[0];\n type MulticallRes = MulticallReturnType<Calls, true>;\n const contractsForAllChainsArr = chainIds.map((chainId) =>\n contractsArr.flatMap((contractsCalls) =>\n contractsCalls.map((contract) => ({ ...contract, chainId }))\n )\n );\n\n type SingleChainResult = ReadContractsData<Calls[], true>;\n\n type QueryOpts = MarkRequired<\n UseQueryOptions<\n SingleChainResult,\n Error,\n MinErc20Token[],\n [\n \"readContracts/tokensData/batch\",\n { addresses: Address[]; chainId?: SupportedChainId },\n ]\n >,\n \"select\"\n >;\n\n const select = (\n result: SingleChainResult,\n contracts: { address: Address; chainId: SupportedChainId }[]\n ): MinErc20Token[] => {\n const tokenData: MinErc20Token[] = [];\n\n assert(callsPerToken, \"zero calls made\");\n for (let i = 0; i < result.length; i += callsPerToken) {\n const { address, chainId } = contracts[i] || {};\n assert(\n address && chainId,\n `contract call object for index ${i} should be defined`\n );\n\n const tokenDataSlice = result.slice(i, i + callsPerToken) as MulticallRes;\n\n const [symbolResult, nameResult, decimalsResult] = tokenDataSlice;\n\n const symbol =\n symbolResult?.status === \"success\" ? symbolResult.result : undefined;\n const decimals =\n decimalsResult?.status === \"success\"\n ? decimalsResult.result\n : undefined;\n\n const name =\n nameResult?.status === \"success\" ? nameResult.result : undefined;\n\n if (!symbol || !decimals || !name) {\n // skip if it's not a valid token.\n continue;\n }\n\n const minTokenData: MinErc20Token = {\n address: address.toLowerCase(),\n network: chainId,\n symbol,\n decimals,\n name,\n };\n tokenData.push(minTokenData);\n }\n\n return tokenData;\n };\n\n const queries = contractsForAllChainsArr.map<QueryOpts>((contracts) => ({\n queryKey: [\n \"readContracts/tokensData/batch\",\n { addresses, chainId: contracts[0]?.chainId },\n ],\n queryFn: async () => {\n const data = await readContracts(config, {\n contracts,\n allowFailure: true,\n batchSize: 512,\n });\n return data;\n },\n select: (res) => select(res, contracts),\n enabled: contracts.length > 0,\n staleTime: Infinity,\n gcTime: Infinity,\n }));\n\n return queries;\n}\n\ntype FetchUnknownTokenDataInput = {\n address: Address;\n chainId: SupportedChainId;\n config?: Config;\n client?: QueryClient;\n};\n\nexport async function fetchUnknownTokenData({\n address,\n chainId,\n config = wagmiConfig,\n client = queryClient,\n}: FetchUnknownTokenDataInput): Promise<MinErc20Token | null> {\n const [queryOptions] = produceQueries({\n addresses: [address],\n chainIds: [chainId],\n config,\n });\n\n if (!queryOptions) {\n return null;\n }\n\n try {\n // doesn't throw just returns {status:\"failure\"} which select eliminates\n const data = await client.ensureQueryData(queryOptions);\n // queryClient.fetch*|ensure doesn't use select\n const selectedData = queryOptions.select(data);\n return selectedData[0] ?? null;\n } catch {\n // in case of RPC/network error\n return null;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useMultichainTokensData.js","names":["SupportedChainId","Address","assert","MarkOptional","MarkRequired","MinErc20Token","erc20Abi","MulticallReturnType","useConfig","ReadContractsData","useLogger","readContracts","Config","QueryClient","useQueries","UseQueryOptions","UseQueryResult","gatherObjectsByProp","isFilledArray","queryClient","wagmiConfig","TokensByAddressByChain","Partial","Record","defaultCombine","results","Error","mapping","reduce","accum","result","data","chainId","network","tokensMapping","token","address","toLowerCase","UseMultichainTokensDataInput","addresses","chainIds","combine","Res","UseMultichainTokensDataInputDefault","useMultiChainTokensData","input","T","t0","$","_c","logger","config","t1","produceQueries","queries","t2","t3","fetchedTokens","once","log","Omit","length","contractsArr","map","abi","functionName","const","callsPerToken","Calls","MulticallRes","contractsForAllChainsArr","flatMap","contractsCalls","contract","SingleChainResult","QueryOpts","select","contracts","tokenData","i","tokenDataSlice","slice","symbolResult","nameResult","decimalsResult","symbol","status","undefined","decimals","name","minTokenData","push","queryKey","queryFn","allowFailure","batchSize","res","enabled","staleTime","Infinity","gcTime","FetchUnknownTokenDataInput","client","fetchUnknownTokenData","Promise","queryOptions","ensureQueryData","selectedData"],"sources":["../../../../src/hooks/tokens/data/useMultichainTokensData.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { type Address } from \"viem\";\nimport { assert, type MarkOptional, type MarkRequired } from \"ts-essentials\";\nimport { type MinErc20Token } from \"@/tokens/state/types\";\nimport { erc20Abi, type MulticallReturnType } from \"viem\";\nimport { useConfig } from \"wagmi\";\nimport type { ReadContractsData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport { readContracts, type Config } from \"@wagmi/core\";\nimport {\n QueryClient,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\n\ntype TokensByAddressByChain = Partial<\n Record<SupportedChainId, Record<Address, MinErc20Token>>\n>;\n\nconst defaultCombine = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): TokensByAddressByChain => {\n const mapping = results.reduce<TokensByAddressByChain>((accum, result) => {\n if (!result.data || !isFilledArray(result.data)) return accum;\n const chainId = result.data[0].network;\n const tokensMapping: Record<Address, MinErc20Token> = gatherObjectsByProp(\n result.data,\n (token) => token.address.toLowerCase()\n );\n\n if (!accum[chainId]) {\n accum[chainId] = {};\n }\n\n accum[chainId] = tokensMapping;\n return accum;\n }, {});\n\n return mapping;\n};\n\ntype UseMultichainTokensDataInput<Res> = {\n addresses: Address[];\n chainIds: SupportedChainId[];\n combine: (results: UseQueryResult<MinErc20Token[], Error>[]) => Res;\n};\n\ntype UseMultichainTokensDataInputDefault = MarkOptional<\n UseMultichainTokensDataInput<never>,\n \"combine\"\n>;\n\n// Function overloads to accept combine function\nexport function useMultiChainTokensData(\n input: UseMultichainTokensDataInputDefault\n): TokensByAddressByChain;\nexport function useMultiChainTokensData<T>(\n input: UseMultichainTokensDataInput<T>\n): T;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain {\n const logger = useLogger(\"MultichainTokensData\");\n\n const config = useConfig();\n\n const queries = produceQueries({ addresses, chainIds, config });\n\n // useReadContracts uses a singular useQuery internally\n // which calls readContracts once only for multiple chainIds\n // and has to wait for all promises to resolve before returning the data.\n // useQueries allows to independently process readContracts results for each chainId\n const fetchedTokens = useQueries<typeof queries, T | TokensByAddressByChain>({\n queries,\n combine: combine || defaultCombine,\n });\n\n logger.once.log(\"TokensData result\", {\n addresses,\n chainIds,\n data: fetchedTokens,\n });\n\n return fetchedTokens;\n}\n\nfunction produceQueries({\n addresses,\n chainIds,\n config,\n}: Omit<UseMultichainTokensDataInputDefault, \"combine\"> & { config: Config }) {\n if (addresses.length === 0 || chainIds.length === 0) {\n // don't spawn any queries\n return [];\n }\n\n const contractsArr = addresses.map(\n (address) =>\n [\n {\n address,\n abi: erc20Abi,\n functionName: \"symbol\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"name\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"decimals\",\n },\n ] as const\n );\n\n const callsPerToken = contractsArr[0]?.length;\n\n type Calls = (typeof contractsArr)[0];\n type MulticallRes = MulticallReturnType<Calls, true>;\n const contractsForAllChainsArr = chainIds.map((chainId) =>\n contractsArr.flatMap((contractsCalls) =>\n contractsCalls.map((contract) => ({ ...contract, chainId }))\n )\n );\n\n type SingleChainResult = ReadContractsData<Calls[], true>;\n\n type QueryOpts = MarkRequired<\n UseQueryOptions<\n SingleChainResult,\n Error,\n MinErc20Token[],\n [\n \"readContracts/tokensData/batch\",\n { addresses: Address[]; chainId?: SupportedChainId },\n ]\n >,\n \"select\"\n >;\n\n const select = (\n result: SingleChainResult,\n contracts: { address: Address; chainId: SupportedChainId }[]\n ): MinErc20Token[] => {\n const tokenData: MinErc20Token[] = [];\n\n assert(callsPerToken, \"zero calls made\");\n for (let i = 0; i < result.length; i += callsPerToken) {\n const { address, chainId } = contracts[i] || {};\n assert(\n address && chainId,\n `contract call object for index ${i} should be defined`\n );\n\n const tokenDataSlice = result.slice(i, i + callsPerToken) as MulticallRes;\n\n const [symbolResult, nameResult, decimalsResult] = tokenDataSlice;\n\n const symbol =\n symbolResult?.status === \"success\" ? symbolResult.result : undefined;\n const decimals =\n decimalsResult?.status === \"success\"\n ? decimalsResult.result\n : undefined;\n\n const name =\n nameResult?.status === \"success\" ? nameResult.result : undefined;\n\n if (!symbol || !decimals || !name) {\n // skip if it's not a valid token.\n continue;\n }\n\n const minTokenData: MinErc20Token = {\n address: address.toLowerCase(),\n network: chainId,\n symbol,\n decimals,\n name,\n };\n tokenData.push(minTokenData);\n }\n\n return tokenData;\n };\n\n const queries = contractsForAllChainsArr.map<QueryOpts>((contracts) => ({\n queryKey: [\n \"readContracts/tokensData/batch\",\n { addresses, chainId: contracts[0]?.chainId },\n ],\n queryFn: async () => {\n const data = await readContracts(config, {\n contracts,\n allowFailure: true,\n batchSize: 512,\n });\n return data;\n },\n select: (res) => select(res, contracts),\n enabled: contracts.length > 0,\n staleTime: Infinity,\n gcTime: Infinity,\n }));\n\n return queries;\n}\n\ntype FetchUnknownTokenDataInput = {\n address: Address;\n chainId: SupportedChainId;\n config?: Config;\n client?: QueryClient;\n};\n\nexport async function fetchUnknownTokenData({\n address,\n chainId,\n config = wagmiConfig,\n client = queryClient,\n}: FetchUnknownTokenDataInput): Promise<MinErc20Token | null> {\n const [queryOptions] = produceQueries({\n addresses: [address],\n chainIds: [chainId],\n config,\n });\n\n if (!queryOptions) {\n return null;\n }\n\n try {\n // doesn't throw just returns {status:\"failure\"} which select eliminates\n const data = await client.ensureQueryData(queryOptions);\n // queryClient.fetch*|ensure doesn't use select\n const selectedData = queryOptions.select(data);\n return selectedData[0] ?? null;\n } catch {\n // in case of RPC/network error\n return null;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","names":["queryClient","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","axios","isAddress","UseQueryOptions","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","SupportedChainId","getApiURL","keysToSkip","shouldTryOverride","key","includes","fetchTokenPricesWithFallback","chainId","fallbackToCachedPrices","signal","AbortSignal","data","prices","get","lastPrices","getQueryData","constructTokenPricesQueryKey","combined","Object","entries","reduce","acc","address","price","lastPrice","source","mergedPrice","changed","keys","val","updatedAt","constructTokenPricesQueryOptions","enabled","Error","queryKey","queryFn","notifyOnChangeProps","staleTime","refetchInterval"],"sources":["../../../../src/hooks/tokens/prices/queries.ts"],"sourcesContent":["import { queryClient } from \"@/lib/queryClient\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\n\nimport axios from \"axios\";\nimport { isAddress } from \"viem\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { getApiURL } from \"@/lib/constants/urls\";\n\nconst keysToSkip: (keyof FiatPriceFromApi)[] = [\n \"source\",\n \"address\",\n \"updatedAt\",\n];\n\nfunction shouldTryOverride(key: string): boolean {\n return !keysToSkip.includes(key as keyof FiatPriceFromApi);\n}\n\nexport async function fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n signal?: AbortSignal;\n}) {\n const {\n data: { prices },\n } = await axios.get<{ prices: FiatPriceMap }>(\n `${getApiURL()}/fiat/prices/${chainId}`,\n {\n signal,\n }\n );\n\n if (!fallbackToCachedPrices) return prices;\n\n // fiat-fetcher gives the prices either from coingecko or chainlink,\n // and in case of chainlink there are some missing values in price object\n\n const lastPrices = queryClient.getQueryData<FiatPriceMap>(\n constructTokenPricesQueryKey(chainId)\n );\n\n if (!lastPrices) return prices;\n\n const combined = Object.entries(prices).reduce<FiatPriceMap>(\n (acc, [address, price]) => {\n // skip if address is not valid\n if (!isAddress(address)) return acc;\n\n const lastPrice = lastPrices[address];\n // no previous price, do nothing\n if (!lastPrice) return acc;\n\n // assume that coinGecko prices have more data\n // and we don't want to change them\n if (price.source === \"coinGecko\") return acc;\n\n // no need to override the price when from the same source\n if (price.source === lastPrice.source) return acc;\n\n // make sure we have all the keys\n // not just the ones that are in the new price object\n const mergedPrice = { ...lastPrice, ...price };\n\n let changed = false;\n\n for (const key of Object.keys(mergedPrice)) {\n if (shouldTryOverride(key)) {\n const val =\n price[key as keyof typeof price] ??\n ((changed = true), lastPrice[key as keyof typeof lastPrice]);\n\n (mergedPrice[\n key as keyof typeof mergedPrice\n ] as FiatPriceFromApi[keyof FiatPriceFromApi]) = val;\n }\n }\n\n // we updated the price\n if (changed) {\n // let's keep updatedAt, source from the last price\n mergedPrice.updatedAt = lastPrice.updatedAt;\n mergedPrice.source = lastPrice.source;\n }\n\n acc[address] = mergedPrice;\n return acc;\n },\n prices\n );\n\n return combined;\n}\n\nexport function constructTokenPricesQueryKey(\n chainId: number\n): TokenPricesQueryKey {\n return [\"token-prices\", chainId];\n}\n\nexport function constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices,\n enabled,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n enabled?: boolean;\n}): UseQueryOptions<FiatPriceMap, Error, FiatPriceMap, TokenPricesQueryKey> {\n {\n return {\n queryKey: constructTokenPricesQueryKey(chainId),\n queryFn: ({ signal }) =>\n fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n }),\n enabled,\n notifyOnChangeProps: [\"data\", \"isLoading\", \"isError\"],\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n };\n }\n}\n"],"mappings":";;;;;;AAkBA,IAAMW,IAAyC;CAC7C;CACA;CACA;CACD;AAED,SAASC,EAAkBC,GAAsB;
|
|
1
|
+
{"version":3,"file":"queries.js","names":["queryClient","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","axios","isAddress","UseQueryOptions","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","SupportedChainId","getApiURL","keysToSkip","shouldTryOverride","key","includes","fetchTokenPricesWithFallback","chainId","fallbackToCachedPrices","signal","AbortSignal","data","prices","get","lastPrices","getQueryData","constructTokenPricesQueryKey","combined","Object","entries","reduce","acc","address","price","lastPrice","source","mergedPrice","changed","keys","val","updatedAt","constructTokenPricesQueryOptions","enabled","Error","queryKey","queryFn","notifyOnChangeProps","staleTime","refetchInterval"],"sources":["../../../../src/hooks/tokens/prices/queries.ts"],"sourcesContent":["import { queryClient } from \"@/lib/queryClient\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\n\nimport axios from \"axios\";\nimport { isAddress } from \"viem\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { getApiURL } from \"@/lib/constants/urls\";\n\nconst keysToSkip: (keyof FiatPriceFromApi)[] = [\n \"source\",\n \"address\",\n \"updatedAt\",\n];\n\nfunction shouldTryOverride(key: string): boolean {\n return !keysToSkip.includes(key as keyof FiatPriceFromApi);\n}\n\nexport async function fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n signal?: AbortSignal;\n}) {\n const {\n data: { prices },\n } = await axios.get<{ prices: FiatPriceMap }>(\n `${getApiURL()}/fiat/prices/${chainId}`,\n {\n signal,\n }\n );\n\n if (!fallbackToCachedPrices) return prices;\n\n // fiat-fetcher gives the prices either from coingecko or chainlink,\n // and in case of chainlink there are some missing values in price object\n\n const lastPrices = queryClient.getQueryData<FiatPriceMap>(\n constructTokenPricesQueryKey(chainId)\n );\n\n if (!lastPrices) return prices;\n\n const combined = Object.entries(prices).reduce<FiatPriceMap>(\n (acc, [address, price]) => {\n // skip if address is not valid\n if (!isAddress(address)) return acc;\n\n const lastPrice = lastPrices[address];\n // no previous price, do nothing\n if (!lastPrice) return acc;\n\n // assume that coinGecko prices have more data\n // and we don't want to change them\n if (price.source === \"coinGecko\") return acc;\n\n // no need to override the price when from the same source\n if (price.source === lastPrice.source) return acc;\n\n // make sure we have all the keys\n // not just the ones that are in the new price object\n const mergedPrice = { ...lastPrice, ...price };\n\n let changed = false;\n\n for (const key of Object.keys(mergedPrice)) {\n if (shouldTryOverride(key)) {\n const val =\n price[key as keyof typeof price] ??\n ((changed = true), lastPrice[key as keyof typeof lastPrice]);\n\n (mergedPrice[\n key as keyof typeof mergedPrice\n ] as FiatPriceFromApi[keyof FiatPriceFromApi]) = val;\n }\n }\n\n // we updated the price\n if (changed) {\n // let's keep updatedAt, source from the last price\n mergedPrice.updatedAt = lastPrice.updatedAt;\n mergedPrice.source = lastPrice.source;\n }\n\n acc[address] = mergedPrice;\n return acc;\n },\n prices\n );\n\n return combined;\n}\n\nexport function constructTokenPricesQueryKey(\n chainId: number\n): TokenPricesQueryKey {\n return [\"token-prices\", chainId];\n}\n\nexport function constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices,\n enabled,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n enabled?: boolean;\n}): UseQueryOptions<FiatPriceMap, Error, FiatPriceMap, TokenPricesQueryKey> {\n {\n return {\n queryKey: constructTokenPricesQueryKey(chainId),\n queryFn: ({ signal }) =>\n fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n }),\n enabled,\n notifyOnChangeProps: [\"data\", \"isLoading\", \"isError\"],\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n };\n }\n}\n"],"mappings":";;;;;;AAkBA,IAAMW,IAAyC;CAC7C;CACA;CACA;CACD;AAED,SAASC,EAAkBC,GAAsB;CAC/C,OAAO,CAACF,EAAWG,SAASD,EAA8B;;AAG5D,eAAsBE,EAA6B,EACjDC,YACAC,2BACAC,aAKC;CACD,IAAM,EACJE,MAAM,EAAEC,gBACN,MAAMlB,EAAMmB,IACd,GAAGZ,GAAW,CAAA,eAAgBM,KAC9B,EACEE,WAEJ,CAAC;CAED,IAAI,CAACD,GAAwB,OAAOI;CAKpC,IAAME,IAAavB,EAAYwB,aAC7BC,EAA6BT,EAC/B,CAAC;CAmDD,OAjDKO,IAEYI,OAAOC,QAAQP,EAAO,CAACQ,QACrCC,GAAK,CAACC,GAASC,OAAW;EAEzB,IAAI,CAAC5B,EAAU2B,EAAQ,EAAE,OAAOD;EAEhC,IAAMG,IAAYV,EAAWQ;EAS7B,IAPI,CAACE,KAIDD,EAAME,WAAW,eAGjBF,EAAME,WAAWD,EAAUC,QAAQ,OAAOJ;EAI9C,IAAMK,IAAc;GAAE,GAAGF;GAAW,GAAGD;GAAO,EAE1CI,IAAU;EAEd,KAAK,IAAMvB,KAAOc,OAAOU,KAAKF,EAAY,EACxC,AAAIvB,EAAkBC,EAAI,KAKxB,EACEA,KAJAmB,EAAMnB,OACJuB,IAAU,IAAOH,EAAUpB;EAgBnC,OAPIuB,MAEFD,EAAYI,YAAYN,EAAUM,WAClCJ,EAAYD,SAASD,EAAUC,SAGjCJ,EAAIC,KAAWI,GACRL;IAETT,EAGKK,GAjDiBL;;AAoD1B,SAAgBI,EACdT,GACqB;CACrB,OAAO,CAAC,gBAAgBA,EAAQ;;AAGlC,SAAgBwB,EAAiC,EAC/CxB,YACAC,2BACAwB,cAK0E;CAExE,OAAO;EACLE,UAAUlB,EAA6BT,EAAQ;EAC/C4B,UAAU,EAAE1B,gBACVH,EAA6B;GAC3BC;GACAC;GACAC;GACD,CAAC;EACJuB;EACAI,qBAAqB;GAAC;GAAQ;GAAa;GAAU;EACrDC,WAAW7C;EACX8C,iBAAiB7C;EAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMultichainTokenPrices.js","names":["useQueries","useMemo","FiatPriceMap","UseMultichainTokenPricesInput","constructTokenPricesQueryOptions","SupportedChainId","useMultiChainTokenPrices","chainIds","_params","$","_c","t0","t1","chainId","specificQueryParams","fallbackToCachedPrices","enabled","map","queries","queryResults","t2","t3","accum","chainId_0","index","result","data","reduce"],"sources":["../../../../src/hooks/tokens/prices/useMultichainTokenPrices.ts"],"sourcesContent":["import { useQueries } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport type { FiatPriceMap, UseMultichainTokenPricesInput } from \"./types\";\nimport { constructTokenPricesQueryOptions } from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useMultiChainTokenPrices = (\n chainIds: SupportedChainId[],\n _params?: UseMultichainTokenPricesInput\n): Record<number, FiatPriceMap> => {\n const queries = useMemo(\n () =>\n chainIds.map((chainId) => {\n const specificQueryParams = _params?.[chainId];\n\n return constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices: specificQueryParams?.fallbackToCachedPrices,\n enabled: specificQueryParams?.enabled,\n });\n }),\n [_params, chainIds]\n );\n\n const queryResults = useQueries({ queries });\n\n return useMemo(\n () =>\n chainIds.reduce<Record<number, FiatPriceMap>>((accum, chainId, index) => {\n const result = queryResults[index]?.data;\n if (result) accum[chainId] = result;\n return accum;\n }, {}),\n [chainIds, queryResults]\n );\n};\n"],"mappings":";;;;;AAMA,IAAaM,KAA2BC,GAAAC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;
|
|
1
|
+
{"version":3,"file":"useMultichainTokenPrices.js","names":["useQueries","useMemo","FiatPriceMap","UseMultichainTokenPricesInput","constructTokenPricesQueryOptions","SupportedChainId","useMultiChainTokenPrices","chainIds","_params","$","_c","t0","t1","chainId","specificQueryParams","fallbackToCachedPrices","enabled","map","queries","queryResults","t2","t3","accum","chainId_0","index","result","data","reduce"],"sources":["../../../../src/hooks/tokens/prices/useMultichainTokenPrices.ts"],"sourcesContent":["import { useQueries } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport type { FiatPriceMap, UseMultichainTokenPricesInput } from \"./types\";\nimport { constructTokenPricesQueryOptions } from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useMultiChainTokenPrices = (\n chainIds: SupportedChainId[],\n _params?: UseMultichainTokenPricesInput\n): Record<number, FiatPriceMap> => {\n const queries = useMemo(\n () =>\n chainIds.map((chainId) => {\n const specificQueryParams = _params?.[chainId];\n\n return constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices: specificQueryParams?.fallbackToCachedPrices,\n enabled: specificQueryParams?.enabled,\n });\n }),\n [_params, chainIds]\n );\n\n const queryResults = useQueries({ queries });\n\n return useMemo(\n () =>\n chainIds.reduce<Record<number, FiatPriceMap>>((accum, chainId, index) => {\n const result = queryResults[index]?.data;\n if (result) accum[chainId] = result;\n return accum;\n }, {}),\n [chainIds, queryResults]\n );\n};\n"],"mappings":";;;;;AAMA,IAAaM,KAA2BC,GAAAC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,IAAAF,EAAA,OAAAD,KAAAC,EAAA,OAAAF,GAAA;EAAA,IAAAK;EAchCH,AAdgCA,EAAA,OAAAD,IAcjCI,IAAAH,EAAA,MARYG,KAAAC,MAAA;GACX,IAAAC,IAA4BN,IAAUK;GAAS,OAExCT,EAAiC;IAAAS;IAAAE,wBAEdD,GAAmBC;IAAwBC,SAC1DF,GAAmBE;IAC7B,CAAC;KACHP,EAAA,KAAAD,GAAAC,EAAA,KAAAG,IARDD,IAAAJ,EAAQU,IAAKL,EAQX,EAAAH,EAAA,KAAAD,GAAAC,EAAA,KAAAF,GAAAE,EAAA,KAAAE;QAAAA,IAAAF,EAAA;CAVN,IAAAS,IAEIP,GAUFC;CAAA,AAAAH,EAAA,OAAAS,IAEyCN,IAAAH,EAAA,MAAXG,IAAA,EAAAM,YAAW,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAG;CAA3C,IAAAO,IAAqBnB,EAAWY,EAAY,EAACQ;CAAA,IAAAX,EAAA,OAAAF,KAAAE,EAAA,OAAAU,GAAA;EAAA,IAAAE;EAQnCZ,AARmCA,EAAA,QAAAU,IAQxCE,IAAAZ,EAAA,OAJ6CY,KAAAC,GAAAC,GAAAC,MAAA;GAC5C,IAAAC,IAAeN,EAAaK,IAAYE;GACJ,OAAhCD,MAAQH,EAAMT,KAAWY,IACtBH;KACRb,EAAA,MAAAU,GAAAV,EAAA,MAAAY,IAJDD,IAAAb,EAAQoB,OAAsCN,GAI3C,EAAE,CAAC,EAAAZ,EAAA,KAAAF,GAAAE,EAAA,KAAAU,GAAAV,EAAA,KAAAW;QAAAA,IAAAX,EAAA;CAAA,OAJNW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenPrices.js","names":["useQuery","UseQueryOptions","UseQueryResult","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","constructTokenPricesQueryKey","fetchTokenPricesWithFallback","SupportedChainId","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","Token","assert","Address","useNativeToken","UseTokenPricesInput","chainId","fallbackToCachedPrices","query","Omit","Error","TData","UseTokenPricesResult","useTokenPrices","t0","$","_c","queryEnabled","enabled","t1","t2","t3","t4","signal","t5","queryKey","queryFn","staleTime","refetchInterval","queryResults","useTokenPrice","token","network","address","data","toLowerCase","select","queryResult","useNativeTokenPrice","nativeToken"],"sources":["../../../../src/hooks/tokens/prices/useTokenPrices.ts"],"sourcesContent":["import {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport {\n constructTokenPricesQueryKey,\n fetchTokenPricesWithFallback,\n} from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { type Address } from \"viem\";\nimport { useNativeToken } from \"../useNativeToken\";\n\ntype UseTokenPricesInput<TData = FiatPriceMap> = {\n chainId?: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n query?: Omit<\n UseQueryOptions<FiatPriceMap, Error, TData, TokenPricesQueryKey>,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\ntype UseTokenPricesResult<TData = FiatPriceMap> = UseQueryResult<TData, Error>;\n\nexport const useTokenPrices = <TData = FiatPriceMap>({\n chainId,\n fallbackToCachedPrices,\n query,\n}: UseTokenPricesInput<TData>): UseTokenPricesResult<TData> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResults = useQuery<\n FiatPriceMap,\n Error,\n TData,\n TokenPricesQueryKey\n >({\n queryKey: constructTokenPricesQueryKey(chainId ?? 0),\n queryFn: ({ signal }) => {\n assert(chainId, \"chainId is required\");\n return fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n });\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n ...query,\n enabled: queryEnabled && !!chainId,\n });\n\n return queryResults;\n};\n\nexport const useTokenPrice = (\n token?: Pick<Token, \"address\" | \"network\">,\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n): UseQueryResult<FiatPriceFromApi | undefined, Error> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useTokenPrices({\n chainId: token?.network,\n fallbackToCachedPrices: true,\n query: {\n ...query,\n enabled: queryEnabled && !!token?.address,\n select: (data) => data[token?.address.toLowerCase() as Address],\n },\n });\n\n return queryResult;\n};\n\nexport const useNativeTokenPrice = (\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n) => {\n const nativeToken = useNativeToken();\n return useTokenPrice(nativeToken, query);\n};\n"],"mappings":";;;;;;;;AAmCA,IAAauB,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAuB,EAAAV,YAAAC,2BAAAC,aAAAM,GAKnDG,IAAqBT,GAAKU,WAAL,IAQoBC,IAAAb,KAAA,GAAYc;
|
|
1
|
+
{"version":3,"file":"useTokenPrices.js","names":["useQuery","UseQueryOptions","UseQueryResult","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","constructTokenPricesQueryKey","fetchTokenPricesWithFallback","SupportedChainId","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","Token","assert","Address","useNativeToken","UseTokenPricesInput","chainId","fallbackToCachedPrices","query","Omit","Error","TData","UseTokenPricesResult","useTokenPrices","t0","$","_c","queryEnabled","enabled","t1","t2","t3","t4","signal","t5","queryKey","queryFn","staleTime","refetchInterval","queryResults","useTokenPrice","token","network","address","data","toLowerCase","select","queryResult","useNativeTokenPrice","nativeToken"],"sources":["../../../../src/hooks/tokens/prices/useTokenPrices.ts"],"sourcesContent":["import {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport {\n constructTokenPricesQueryKey,\n fetchTokenPricesWithFallback,\n} from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { type Address } from \"viem\";\nimport { useNativeToken } from \"../useNativeToken\";\n\ntype UseTokenPricesInput<TData = FiatPriceMap> = {\n chainId?: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n query?: Omit<\n UseQueryOptions<FiatPriceMap, Error, TData, TokenPricesQueryKey>,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\ntype UseTokenPricesResult<TData = FiatPriceMap> = UseQueryResult<TData, Error>;\n\nexport const useTokenPrices = <TData = FiatPriceMap>({\n chainId,\n fallbackToCachedPrices,\n query,\n}: UseTokenPricesInput<TData>): UseTokenPricesResult<TData> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResults = useQuery<\n FiatPriceMap,\n Error,\n TData,\n TokenPricesQueryKey\n >({\n queryKey: constructTokenPricesQueryKey(chainId ?? 0),\n queryFn: ({ signal }) => {\n assert(chainId, \"chainId is required\");\n return fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n });\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n ...query,\n enabled: queryEnabled && !!chainId,\n });\n\n return queryResults;\n};\n\nexport const useTokenPrice = (\n token?: Pick<Token, \"address\" | \"network\">,\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n): UseQueryResult<FiatPriceFromApi | undefined, Error> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useTokenPrices({\n chainId: token?.network,\n fallbackToCachedPrices: true,\n query: {\n ...query,\n enabled: queryEnabled && !!token?.address,\n select: (data) => data[token?.address.toLowerCase() as Address],\n },\n });\n\n return queryResult;\n};\n\nexport const useNativeTokenPrice = (\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n) => {\n const nativeToken = useNativeToken();\n return useTokenPrice(nativeToken, query);\n};\n"],"mappings":";;;;;;;;AAmCA,IAAauB,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAuB,EAAAV,YAAAC,2BAAAC,aAAAM,GAKnDG,IAAqBT,GAAKU,WAAL,IAQoBC,IAAAb,KAAA,GAAYc;CAAA,AAAAL,EAAA,OAAAI,IAACC,IAAAL,EAAA,MAA1CK,IAAAxB,EAA6BuB,EAAa,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAAA,IAAAC;CAAA,AAAAN,EAAA,OAAAT,KAAAS,EAAA,OAAAR,KAC3Cc,KAAAC,MAAA;EAAC,IAAA,EAAAC,cAAAD;EAC8B,OAAtCpB,EAAOI,GAAS,sBAAsB,EAC/BT,EAA6B;GAAAS;GAAAC;GAAAgB;GAInC,CAAC;IACHR,EAAA,KAAAT,GAAAS,EAAA,KAAAR,GAAAQ,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAIQ,IAAAO,IAAAL,KAAA,CAAiB,CAACX,GAAOkB;CACjC,OADiCT,EAAA,OAAAP,KAAAO,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAAAN,EAAA,OAAAO,KAblCE,IAAA;EAAAC,UACUL;EAA0CM,SAC3CL;EAORM,WACU5B;EAAgC6B,iBAC1B5B;EAAa,GAC3BQ;EAAKU,SACCI;EACV,EAAAP,EAAA,KAAAP,GAAAO,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,GAAAP,EAAA,KAAAS,KAAAA,IAAAT,EAAA,IAnBoBzB,EAKnBkC,EAgBKK;GAGIC,KAAgBC,GAAAvB,MAAA;CAAA,IAAAO,IAAAC,EAAA,EAAA,EAY3BC,IAAqBT,GAAKU,WAAL,IAGVJ,IAAAiB,GAAKC,SAIHb,IAAAF,KAAA,CAAiB,CAACc,GAAKE,SAASb;CAAA,AAAAL,EAAA,OAAAgB,GAAAE,UACsBb,IAAAL,EAAA,MAAvDK,KAAAc,MAAUA,EAAKH,GAAKE,QAAqBE,aAAE,GAAYpB,EAAA,KAAAgB,GAAAE,SAAAlB,EAAA,KAAAK;CAAA,IAAAC;CAAA,AAAAN,EAAA,OAAAP,KAAAO,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAH1DC,IAAA;EAAA,GACFb;EAAKU,SACCC;EAAgCiB,QACjChB;EACT,EAAAL,EAAA,KAAAP,GAAAO,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAAA,IAAAO;CACA,OADAP,EAAA,OAAAD,KAAAC,EAAA,OAAAM,KAPgCC,IAAA;EAAAhB,SACxBQ;EAAcP,wBACC;EAAIC,OACrBa;EAKR,EAAAN,EAAA,KAAAD,GAAAC,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IARmBF,EAAeS,EAU5Be;GAGIC,KAAsB9B,MAY1BsB,EADa1B,GACCmC,EAAa/B,EAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAllTokensWithFilter.js","names":["createSortWithClosestMatch","filterTokens","useAllTokens","Token","TokenMaybeWithUsdBalance","useAtomValue","useMemo","useNativeToken","useAttachTokenBalanceMultichain","SupportedChainId","useChainId","useTokensFromAcross","emptyArray","isAddress","allTokensByChainAtom","BridgeInfoMode","useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","intent","t2","undefined","appChainId","allTokens","nativeToken","t3","concat","allIncludedTokens","filteredTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","searchOnAllChains","length","t4","t5","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t6","bb0","t7","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t8","t9","attachTokenBalance","trimmedTokenFilter","sorter","sort","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","AllTokensFromChainsInput","excludeChains","Record","listByChainId","tokensListsByChain","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","mode","crossTokens","_temp3"],"sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { createSortWithClosestMatch } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n intent = \"fetch\",\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n intent?: \"fetch\" | \"prefetch\";\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n (isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound) || // if it's a token address, always search on other chains, if allowed\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n intent,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n return filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sorter);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n intent: \"prefetch\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n mode,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n const filteredTokens = filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: crossTokens,\n });\n return filteredTokens.map(attachTokenBalance).sort(sorter);\n }, [attachTokenBalance, crossTokens, tokenFilter]);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAllTokensWithFilter.js","names":["createSortWithClosestMatch","filterTokens","useAllTokens","Token","TokenMaybeWithUsdBalance","useAtomValue","useMemo","useNativeToken","useAttachTokenBalanceMultichain","SupportedChainId","useChainId","useTokensFromAcross","emptyArray","isAddress","allTokensByChainAtom","BridgeInfoMode","useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","intent","t2","undefined","appChainId","allTokens","nativeToken","t3","concat","allIncludedTokens","filteredTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","searchOnAllChains","length","t4","t5","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t6","bb0","t7","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t8","t9","attachTokenBalance","trimmedTokenFilter","sorter","sort","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","AllTokensFromChainsInput","excludeChains","Record","listByChainId","tokensListsByChain","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","mode","crossTokens","_temp3"],"sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { createSortWithClosestMatch } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n intent = \"fetch\",\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n intent?: \"fetch\" | \"prefetch\";\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n (isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound) || // if it's a token address, always search on other chains, if allowed\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n intent,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n return filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sorter);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n intent: \"prefetch\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n mode,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n const filteredTokens = filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: crossTokens,\n });\n return filteredTokens.map(attachTokenBalance).sort(sorter);\n }, [attachTokenBalance, crossTokens, tokenFilter]);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNativeToken.js","names":["Token","useCurrentChainConfig","SupportedChainId","useChainId","constructNativeToken","constructWrappedNativeToken","useNativeToken","forcedChainId","$","_c","currentChainId","chainId","config","t0","useWrappedNativeToken"],"sources":["../../../src/hooks/tokens/useNativeToken.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { useCurrentChainConfig } from \"../useCurrentChain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport {\n constructNativeToken,\n constructWrappedNativeToken,\n} from \"@/tokens/constructor\";\n\nexport const useNativeToken = (forcedChainId?: SupportedChainId): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructNativeToken(config);\n};\n\nexport const useWrappedNativeToken = (\n forcedChainId?: SupportedChainId\n): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructWrappedNativeToken(config);\n};\n"],"mappings":";;;;;AASA,IAAaM,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAC5BC,IAAuBP,GAAY,EAEnCS,IAAeX,EADCM,KAAAG,EAC6B,EAACG;
|
|
1
|
+
{"version":3,"file":"useNativeToken.js","names":["Token","useCurrentChainConfig","SupportedChainId","useChainId","constructNativeToken","constructWrappedNativeToken","useNativeToken","forcedChainId","$","_c","currentChainId","chainId","config","t0","useWrappedNativeToken"],"sources":["../../../src/hooks/tokens/useNativeToken.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { useCurrentChainConfig } from \"../useCurrentChain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport {\n constructNativeToken,\n constructWrappedNativeToken,\n} from \"@/tokens/constructor\";\n\nexport const useNativeToken = (forcedChainId?: SupportedChainId): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructNativeToken(config);\n};\n\nexport const useWrappedNativeToken = (\n forcedChainId?: SupportedChainId\n): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructWrappedNativeToken(config);\n};\n"],"mappings":";;;;;AASA,IAAaM,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAC5BC,IAAuBP,GAAY,EAEnCS,IAAeX,EADCM,KAAAG,EAC6B,EAACG;CAEX,OAFWL,EAAA,OAAAI,IAEXC,IAAAL,EAAA,MAA5BK,IAAAT,EAAqBQ,EAAO,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,IAA5BA;GAGIC,KAAwBP,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGnCC,IAAuBP,GAAY,EAEnCS,IAAeX,EADCM,KAAAG,EAC6B,EAACG;CAEJ,OAFIL,EAAA,OAAAI,IAEJC,IAAAL,EAAA,MAAnCK,IAAAR,EAA4BO,EAAO,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,IAAnCA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenTaxFee.js","names":["LONG_STALE_TIME_FOR_REACTIVENESS","getApiURL","useQuery","UseQueryResult","axios","assert","UseTokenTaxFeeInput","tokenAddress","chainId","TokenTaxFeeResponse","sellTax","buyTax","useTokenTaxFee","t0","$","_c","t1","toLowerCase","t2","t3","data","get","t4","t5","queryKey","queryFn","staleTime","enabled"],"sources":["../../../src/hooks/tokens/useTokenTaxFee.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { getApiURL } from \"@/lib/constants/urls\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { assert } from \"ts-essentials\";\n\ntype UseTokenTaxFeeInput = {\n tokenAddress?: string;\n chainId?: number;\n};\n\ntype TokenTaxFeeResponse = {\n // empty object when not a tax Token\n sellTax?: number; // used as srcTokenDexTransferFee in GET /prices\n buyTax?: number; // used as destTokenDexTransferFee in GET /prices\n // for Delta no support for tax Tokens so far\n};\n\nexport function useTokenTaxFee({\n tokenAddress,\n chainId,\n}: UseTokenTaxFeeInput): UseQueryResult<TokenTaxFeeResponse, Error> {\n return useQuery<\n TokenTaxFeeResponse,\n Error,\n TokenTaxFeeResponse,\n [\"token-tax-fee\", string?, number?]\n >({\n queryKey: [\"token-tax-fee\", tokenAddress?.toLowerCase(), chainId],\n queryFn: async () => {\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const { data } = await axios.get<TokenTaxFeeResponse>(\n `${getApiURL()}/delta/tokens/${chainId}/${tokenAddress}`\n );\n return data;\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n enabled: !!tokenAddress && !!chainId,\n });\n}\n"],"mappings":";;;;;;;AAkBA,SAAOY,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAwB,EAAAR,iBAAAC,eAAAK,GAGTG;
|
|
1
|
+
{"version":3,"file":"useTokenTaxFee.js","names":["LONG_STALE_TIME_FOR_REACTIVENESS","getApiURL","useQuery","UseQueryResult","axios","assert","UseTokenTaxFeeInput","tokenAddress","chainId","TokenTaxFeeResponse","sellTax","buyTax","useTokenTaxFee","t0","$","_c","t1","toLowerCase","t2","t3","data","get","t4","t5","queryKey","queryFn","staleTime","enabled"],"sources":["../../../src/hooks/tokens/useTokenTaxFee.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { getApiURL } from \"@/lib/constants/urls\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { assert } from \"ts-essentials\";\n\ntype UseTokenTaxFeeInput = {\n tokenAddress?: string;\n chainId?: number;\n};\n\ntype TokenTaxFeeResponse = {\n // empty object when not a tax Token\n sellTax?: number; // used as srcTokenDexTransferFee in GET /prices\n buyTax?: number; // used as destTokenDexTransferFee in GET /prices\n // for Delta no support for tax Tokens so far\n};\n\nexport function useTokenTaxFee({\n tokenAddress,\n chainId,\n}: UseTokenTaxFeeInput): UseQueryResult<TokenTaxFeeResponse, Error> {\n return useQuery<\n TokenTaxFeeResponse,\n Error,\n TokenTaxFeeResponse,\n [\"token-tax-fee\", string?, number?]\n >({\n queryKey: [\"token-tax-fee\", tokenAddress?.toLowerCase(), chainId],\n queryFn: async () => {\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const { data } = await axios.get<TokenTaxFeeResponse>(\n `${getApiURL()}/delta/tokens/${chainId}/${tokenAddress}`\n );\n return data;\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n enabled: !!tokenAddress && !!chainId,\n });\n}\n"],"mappings":";;;;;;;AAkBA,SAAOY,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAwB,EAAAR,iBAAAC,eAAAK,GAGTG;CAAA,AAAAF,EAAA,OAAAP,IAOqCS,IAAAF,EAAA,MAA3BE,IAAAT,GAAYU,aAAe,EAAAH,EAAA,KAAAP,GAAAO,EAAA,KAAAE;CAAA,IAAAE;CAAA,AAAAJ,EAAA,OAAAN,KAAAM,EAAA,OAAAE,KAA7CE,IAAA;EAAC;EAAiBF;EAA6BR;EAAQ,EAAAM,EAAA,KAAAN,GAAAM,EAAA,KAAAE,GAAAF,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAK;CAAA,AAAAL,EAAA,OAAAN,KAAAM,EAAA,OAAAP,KACxDY,IAAA,YAAA;EAEPd,AADAA,EAAOE,GAAc,2BAA2B,EAChDF,EAAOG,GAAS,sBAAsB;EAEtC,IAAA,EAAAY,YAAiB,MAAMhB,EAAKiB,IAC1B,GAAGpB,GAAW,CAAA,gBAAiBO,EAAO,GAAID,IAC3C;EAAC,OACKa;IACRN,EAAA,KAAAN,GAAAM,EAAA,KAAAP,GAAAO,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAEQ,IAAAQ,IAAA,CAAC,CAACf,KAAF,CAAmB,CAACC,GAAOe;CACrC,OADqCT,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAAAL,EAAA,QAAAQ,KAZpCC,IAAA;EAAAC,UACUN;EAAuDO,SACxDN;EAQRO,WACU1B;EAAgC2B,SAClCL;EACV,EAAAR,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,MAAAQ,GAAAR,EAAA,MAAAS,KAAAA,IAAAT,EAAA,KAlBMZ,EAKLqB,EAaA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokensByAddress.js","names":["gatherObjectsByProp","SupportedChainId","useAllTokensMap","useTokensFromListsAllChains","Address","TokenChainKey","AllChainsTokenMap","Token","useNativeToken","nativeTokensAllChains","useTokensByAddress","forcedNetworkId","Record","allTokensMap","nativeToken","tokensMapWithNative","address","toLowerCase","useTokensByAddressAllChains","$","_c","tokensFromLists","t0","tokensFromListsWithNative","concat","prepTokenKey","token","Pick","Lowercase","network"],"sources":["../../../src/hooks/tokens/useTokensByAddress.ts"],"sourcesContent":["import { gatherObjectsByProp } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAllTokensMap, useTokensFromListsAllChains } from \"@/tokens/hooks\";\nimport type { Address } from \"viem\";\nimport type { TokenChainKey, AllChainsTokenMap } from \"./types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { nativeTokensAllChains } from \"@/tokens/constructor\";\n\n// mapping of {lowercaseAddress => Token} for all\nexport const useTokensByAddress = (\n forcedNetworkId?: SupportedChainId\n): Record<string, Token> => {\n const allTokensMap = useAllTokensMap(forcedNetworkId);\n const nativeToken = useNativeToken(forcedNetworkId);\n\n const tokensMapWithNative = {\n ...allTokensMap,\n [nativeToken.address.toLowerCase()]: nativeToken,\n };\n\n return tokensMapWithNative;\n};\n\n// mapping of {lowercaseAddress_chainId => Token} for all\nexport const useTokensByAddressAllChains = (): AllChainsTokenMap => {\n const tokensFromLists = useTokensFromListsAllChains();\n\n const tokensFromListsWithNative =\n nativeTokensAllChains.concat(tokensFromLists);\n\n return gatherObjectsByProp(tokensFromListsWithNative, prepTokenKey);\n};\n\nexport function prepTokenKey(\n token: Pick<Token, \"address\" | \"network\">\n): TokenChainKey {\n return `${token.address.toLowerCase() as Lowercase<Address>}_${token.network}`;\n}\n"],"mappings":";;;;;;AAUA,IAAaU,KACXC,MAC0B;CAC1B,IAAME,IAAeX,EAAgBS,EAAgB,EAC/CG,IAAcN,EAAeG,EAAgB;
|
|
1
|
+
{"version":3,"file":"useTokensByAddress.js","names":["gatherObjectsByProp","SupportedChainId","useAllTokensMap","useTokensFromListsAllChains","Address","TokenChainKey","AllChainsTokenMap","Token","useNativeToken","nativeTokensAllChains","useTokensByAddress","forcedNetworkId","Record","allTokensMap","nativeToken","tokensMapWithNative","address","toLowerCase","useTokensByAddressAllChains","$","_c","tokensFromLists","t0","tokensFromListsWithNative","concat","prepTokenKey","token","Pick","Lowercase","network"],"sources":["../../../src/hooks/tokens/useTokensByAddress.ts"],"sourcesContent":["import { gatherObjectsByProp } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAllTokensMap, useTokensFromListsAllChains } from \"@/tokens/hooks\";\nimport type { Address } from \"viem\";\nimport type { TokenChainKey, AllChainsTokenMap } from \"./types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { nativeTokensAllChains } from \"@/tokens/constructor\";\n\n// mapping of {lowercaseAddress => Token} for all\nexport const useTokensByAddress = (\n forcedNetworkId?: SupportedChainId\n): Record<string, Token> => {\n const allTokensMap = useAllTokensMap(forcedNetworkId);\n const nativeToken = useNativeToken(forcedNetworkId);\n\n const tokensMapWithNative = {\n ...allTokensMap,\n [nativeToken.address.toLowerCase()]: nativeToken,\n };\n\n return tokensMapWithNative;\n};\n\n// mapping of {lowercaseAddress_chainId => Token} for all\nexport const useTokensByAddressAllChains = (): AllChainsTokenMap => {\n const tokensFromLists = useTokensFromListsAllChains();\n\n const tokensFromListsWithNative =\n nativeTokensAllChains.concat(tokensFromLists);\n\n return gatherObjectsByProp(tokensFromListsWithNative, prepTokenKey);\n};\n\nexport function prepTokenKey(\n token: Pick<Token, \"address\" | \"network\">\n): TokenChainKey {\n return `${token.address.toLowerCase() as Lowercase<Address>}_${token.network}`;\n}\n"],"mappings":";;;;;;AAUA,IAAaU,KACXC,MAC0B;CAC1B,IAAME,IAAeX,EAAgBS,EAAgB,EAC/CG,IAAcN,EAAeG,EAAgB;CAOnD,OAAOI;EAJL,GAAGF;GACFC,EAAYE,QAAQC,aAAa,GAAGH;EAGhCC;GAIIG,UAA8B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACzCC,IAAwBlB,GAA6B,EAACmB;CAKa,OALbH,EAAA,OAAAE,IAKaC,IAAAH,EAAA,MAA5DG,IAAAtB,EAFLS,EAAqBe,OAAQH,EAEJE,EAA2BE,EAAa,EAAAN,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAA5DA;;AAGT,SAAgBG,EACdC,GACe;CACf,OAAO,GAAGA,EAAMV,QAAQC,aAAa,CAAsB,GAAIS,EAAMG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeInfo","useTokensByAddress","emptyArray","BridgeInfoMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeInfo","error","acrossTokenAddresses","tokensMap","t2","t3","tokenAddress","toLowerCase","map","filter","tokensFromAcross","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeInfo } from \"../useBridgeInfo\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeInfo, error } = useGetBridgeInfo({ mode });\n\n const acrossTokenAddresses =\n bridgeInfo?.[fromChainId]?.[toChainId] ?? emptyArray;\n\n const tokensMap = useTokensByAddress(toChainId);\n\n const tokensFromAcross = acrossTokenAddresses\n .map((tokenAddress) => tokensMap[tokenAddress.toLowerCase()])\n .filter(isTruthy);\n\n return { crossTokens: tokensFromAcross, error };\n}\n"],"mappings":";;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAC,cAAAC,YAAAL,GAQnCM;
|
|
1
|
+
{"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeInfo","useTokensByAddress","emptyArray","BridgeInfoMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeInfo","error","acrossTokenAddresses","tokensMap","t2","t3","tokenAddress","toLowerCase","map","filter","tokensFromAcross","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeInfo } from \"../useBridgeInfo\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeInfo, error } = useGetBridgeInfo({ mode });\n\n const acrossTokenAddresses =\n bridgeInfo?.[fromChainId]?.[toChainId] ?? emptyArray;\n\n const tokensMap = useTokensByAddress(toChainId);\n\n const tokensFromAcross = acrossTokenAddresses\n .map((tokenAddress) => tokensMap[tokenAddress.toLowerCase()])\n .filter(isTruthy);\n\n return { crossTokens: tokensFromAcross, error };\n}\n"],"mappings":";;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAC,cAAAC,YAAAL,GAQnCM;CAAA,AAAAL,EAAA,OAAAI,IAC8DC,IAAAL,EAAA,MAARK,IAAA,EAAAD,SAAQ,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAA7D,IAAA,EAAAC,MAAAC,GAAAC,aAAoCd,EAAiBW,EAAS,EAE9DI,IACEF,IAAaL,KAAeC,MAA5BP,GAEFc,IAAkBf,EAAmBQ,EAAU,EAACQ;CAAA,IAAAX,EAAA,OAAAS,KAAAT,EAAA,OAAAU,GAAA;EAAA,IAAAE;EAI7BZ,AAJ6BA,EAAA,OAAAU,IAGcE,IAAAZ,EAAA,MAAvDY,KAAAC,MAAkBH,EAAUG,EAAYC,aAAc,GAACd,EAAA,KAAAU,GAAAV,EAAA,KAAAY,IADrCD,IAAAF,EAAoBM,IACtCH,EAAwD,CAAAI,OACrDzB,EAAS,EAAAS,EAAA,KAAAS,GAAAT,EAAA,KAAAU,GAAAV,EAAA,KAAAW;QAAAA,IAAAX,EAAA;CAFnB,IAAAiB,IAAyBN,GAELC;CAE2B,OAF3BZ,EAAA,OAAAQ,KAAAR,EAAA,OAAAiB,KAEbL,IAAA;EAAAM,aAAeD;EAAgBT;EAAS,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAiB,GAAAjB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAAxCY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApprove.js","names":["useWriteContract","erc20Abi","isAddress","Hash","useAccount","assert","AllowanceData","Token","useConstructGasParams","UseApproveInput","token","Pick","spender","allowanceData","onSuccess","hash","onError","error","Error","ApprovalInput","UseApproveResult","approve","params","approveAsync","Promise","isPending","isSuccess","isError","txHash","reset","useApprove","t0","$","_c","t1","undefined","isConnected","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","tokenAddress","address","allowanceToSet","t3","_address","_spender","_allowanceToSet","gasParams","abi","functionName","args","t4","params_0","_address_0","_spender_0","_allowanceToSet_0","gasParams_0","t5"],"sources":["../../../../src/hooks/txs/mutations/useApprove.ts"],"sourcesContent":["import { useWriteContract } from \"wagmi\";\nimport { erc20Abi, isAddress, type Hash } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { AllowanceData } from \"@/hooks/tokens/allowance/types\";\nimport type { Token } from \"@velora-dex/sdk\";\nimport { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\n\nexport type UseApproveInput = {\n token?: Pick<Token, \"address\">;\n spender?: string;\n allowanceData?: Pick<AllowanceData, \"allowanceToSet\">;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type ApprovalInput = Pick<\n UseApproveInput,\n \"token\" | \"spender\" | \"allowanceData\"\n>;\n\nexport type UseApproveResult = {\n approve: (params?: ApprovalInput) => void;\n approveAsync: (params?: ApprovalInput) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n // @TODO reset may be useful for retrying after Tx Confirmation error/user rejection,\n // if the hook remains in sope (Comp not remounted)\n};\n\nexport const useApprove = ({\n token,\n spender,\n allowanceData,\n onSuccess,\n onError,\n}: UseApproveInput = {}): UseApproveResult => {\n const { isConnected } = useAccount();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const tokenAddress = token?.address;\n\n const allowanceToSet = allowanceData?.allowanceToSet;\n\n const approve = (params?: ApprovalInput) => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval\n writeContract({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n const approveAsync = async (params?: ApprovalInput): Promise<Hash> => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval and return the hash\n return writeContractAsync({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n return {\n approve,\n approveAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":";;;;;;AAkCA,IAAa8B,KAAaC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;
|
|
1
|
+
{"version":3,"file":"useApprove.js","names":["useWriteContract","erc20Abi","isAddress","Hash","useAccount","assert","AllowanceData","Token","useConstructGasParams","UseApproveInput","token","Pick","spender","allowanceData","onSuccess","hash","onError","error","Error","ApprovalInput","UseApproveResult","approve","params","approveAsync","Promise","isPending","isSuccess","isError","txHash","reset","useApprove","t0","$","_c","t1","undefined","isConnected","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","tokenAddress","address","allowanceToSet","t3","_address","_spender","_allowanceToSet","gasParams","abi","functionName","args","t4","params_0","_address_0","_spender_0","_allowanceToSet_0","gasParams_0","t5"],"sources":["../../../../src/hooks/txs/mutations/useApprove.ts"],"sourcesContent":["import { useWriteContract } from \"wagmi\";\nimport { erc20Abi, isAddress, type Hash } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { AllowanceData } from \"@/hooks/tokens/allowance/types\";\nimport type { Token } from \"@velora-dex/sdk\";\nimport { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\n\nexport type UseApproveInput = {\n token?: Pick<Token, \"address\">;\n spender?: string;\n allowanceData?: Pick<AllowanceData, \"allowanceToSet\">;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type ApprovalInput = Pick<\n UseApproveInput,\n \"token\" | \"spender\" | \"allowanceData\"\n>;\n\nexport type UseApproveResult = {\n approve: (params?: ApprovalInput) => void;\n approveAsync: (params?: ApprovalInput) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n // @TODO reset may be useful for retrying after Tx Confirmation error/user rejection,\n // if the hook remains in sope (Comp not remounted)\n};\n\nexport const useApprove = ({\n token,\n spender,\n allowanceData,\n onSuccess,\n onError,\n}: UseApproveInput = {}): UseApproveResult => {\n const { isConnected } = useAccount();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const tokenAddress = token?.address;\n\n const allowanceToSet = allowanceData?.allowanceToSet;\n\n const approve = (params?: ApprovalInput) => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval\n writeContract({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n const approveAsync = async (params?: ApprovalInput): Promise<Hash> => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval and return the hash\n return writeContractAsync({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n return {\n approve,\n approveAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDepositWeth.js","names":["useConstructGasParams","wrappedNativeCurrency","assert","Hash","useChainId","useWriteContract","UseDepositWethInput","amount","onSuccess","hash","onError","error","Error","UseDepositReturn","deposit","depositAsync","Promise","isPending","isSuccess","isError","txHash","reset","minWethAbi","constant","inputs","name","outputs","payable","stateMutability","type","const","useDepositWeth","t0","$","_c","t1","undefined","chainId","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","wrappedNativeToken","t3","BigInt","value","t4","gasParams","address","abi","functionName","t5","gasParams_0","t6"],"sources":["../../../../src/hooks/txs/mutations/useDepositWeth.ts"],"sourcesContent":["import { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { assert } from \"ts-essentials\";\nimport type { Hash } from \"viem\";\nimport { useChainId, useWriteContract } from \"wagmi\";\n\nexport type UseDepositWethInput = {\n amount?: string;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseDepositReturn = {\n deposit: () => void;\n depositAsync: () => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nconst minWethAbi = [\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nexport function useDepositWeth({\n amount,\n onError,\n onSuccess,\n}: UseDepositWethInput = {}): UseDepositReturn {\n const chainId = useChainId();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const wrappedNativeToken = wrappedNativeCurrency[chainId];\n const value = amount ? BigInt(amount) : undefined;\n\n const deposit = (): void => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n writeContract({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n const depositAsync = (): Promise<Hash> => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n return writeContractAsync({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n return {\n deposit,\n depositAsync,\n txHash,\n isPending,\n isSuccess,\n isError,\n error,\n reset,\n };\n}\n"],"mappings":";;;;;;AAuBA,IAAMsB,IAAa,CACjB;CACEC,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNC,SAAS,EAAE;CACXC,SAAS;CACTC,iBAAiB;CACjBC,MAAM;CACP,CACF;AAED,SAAOE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;
|
|
1
|
+
{"version":3,"file":"useDepositWeth.js","names":["useConstructGasParams","wrappedNativeCurrency","assert","Hash","useChainId","useWriteContract","UseDepositWethInput","amount","onSuccess","hash","onError","error","Error","UseDepositReturn","deposit","depositAsync","Promise","isPending","isSuccess","isError","txHash","reset","minWethAbi","constant","inputs","name","outputs","payable","stateMutability","type","const","useDepositWeth","t0","$","_c","t1","undefined","chainId","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","wrappedNativeToken","t3","BigInt","value","t4","gasParams","address","abi","functionName","t5","gasParams_0","t6"],"sources":["../../../../src/hooks/txs/mutations/useDepositWeth.ts"],"sourcesContent":["import { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { assert } from \"ts-essentials\";\nimport type { Hash } from \"viem\";\nimport { useChainId, useWriteContract } from \"wagmi\";\n\nexport type UseDepositWethInput = {\n amount?: string;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseDepositReturn = {\n deposit: () => void;\n depositAsync: () => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nconst minWethAbi = [\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nexport function useDepositWeth({\n amount,\n onError,\n onSuccess,\n}: UseDepositWethInput = {}): UseDepositReturn {\n const chainId = useChainId();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const wrappedNativeToken = wrappedNativeCurrency[chainId];\n const value = amount ? BigInt(amount) : undefined;\n\n const deposit = (): void => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n writeContract({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n const depositAsync = (): Promise<Hash> => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n return writeContractAsync({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n return {\n deposit,\n depositAsync,\n txHash,\n isPending,\n isSuccess,\n isError,\n error,\n reset,\n };\n}\n"],"mappings":";;;;;;AAuBA,IAAMsB,IAAa,CACjB;CACEC,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNC,SAAS,EAAE;CACXC,SAAS;CACTC,iBAAiB;CACjBC,MAAM;CACP,CACF;AAED,SAAOE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAIoBG,IAAAF,EAAA,MAJIE,IAAAH,MAAAI,KAAAA,IAAA,EAIJ,GAJIJ,GAIJC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAJI,IAAA,EAAA5B,WAAAG,YAAAF,iBAAA2B,GAK7BE,IAAgBjC,GAAY,EAACkC;CAAA,AAAAL,EAAA,OAAAvB,KAAAuB,EAAA,OAAAzB,KAWR8B,IAAA,EAAAC,UACT;EAAA/B;EAAAE;EAGV,EACD,EAAAuB,EAAA,KAAAvB,GAAAuB,EAAA,KAAAzB,GAAAyB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAdD,IAAA,EAAAO,kBAAAC,uBAAAxB,cAAAC,cAAAC,YAAAR,UAAA+B,MAAAtB,GAAAC,aASIhB,EAAiBiC,EAKnB,EAEF,EAAAK,8BAAmC3C,GAAuB,EAE1D4C,IAA2B3C,EAAsBoC,IAASQ;CAAA,AAAAZ,EAAA,OAAA1B,IACTsC,IAAAZ,EAAA,MAAnCY,IAAAtC,IAASuC,OAAOvC,EAAmB,GAAnC6B,KAAAA,GAAmCH,EAAA,KAAA1B,GAAA0B,EAAA,KAAAY;CAAjD,IAAAE,IAAcF,GAAoCG;CAAA,AAAAf,EAAA,OAAAU,KAAAV,EAAA,OAAAc,KAAAd,EAAA,OAAAW,KAAAX,EAAA,QAAAO,KAElCQ,UAAA;EAKdR,AAJAtC,EAAO0C,GAAoB,iCAAiC,EAI5DJ,EAAc;GAAAU,SACHN;GAAkBO,KACtB7B;GAAU8B,cACD;GAASL;GAAA,GALPJ,GAObM;GACJ,CAAC;IACHhB,EAAA,KAAAU,GAAAV,EAAA,KAAAc,GAAAd,EAAA,KAAAW,GAAAX,EAAA,MAAAO,GAAAP,EAAA,MAAAe,KAAAA,IAAAf,EAAA;CAZD,IAAAnB,IAAgBkC,GAYdK;CAAA,AAAApB,EAAA,QAAAU,KAAAV,EAAA,QAAAc,KAAAd,EAAA,QAAAW,KAAAX,EAAA,QAAAQ,KAEmBY,WACnBnD,EAAO0C,GAAoB,iCAAiC,EAIrDH,EAAmB;EAAAS,SACfN;EAAkBO,KACtB7B;EAAU8B,cACD;EAASL;EAAA,GALPJ,GAObM;EACJ,CAAC,GACHhB,EAAA,MAAAU,GAAAV,EAAA,MAAAc,GAAAd,EAAA,MAAAW,GAAAX,EAAA,MAAAQ,GAAAR,EAAA,MAAAoB,KAAAA,IAAApB,EAAA;CAZD,IAAAlB,IAAqBsC,GAYnBE;CAWD,OAXCtB,EAAA,QAAAnB,KAAAmB,EAAA,QAAAlB,KAAAkB,EAAA,QAAAtB,KAAAsB,EAAA,QAAAd,KAAAc,EAAA,QAAAhB,KAAAgB,EAAA,QAAAf,KAAAe,EAAA,QAAAZ,KAAAY,EAAA,QAAAb,KAEKmC,IAAA;EAAAzC;EAAAC;EAAAK;EAAAH;EAAAC;EAAAC;EAAAR;EAAAU;EASN,EAAAY,EAAA,MAAAnB,GAAAmB,EAAA,MAAAlB,GAAAkB,EAAA,MAAAtB,GAAAsB,EAAA,MAAAd,GAAAc,EAAA,MAAAhB,GAAAgB,EAAA,MAAAf,GAAAe,EAAA,MAAAZ,GAAAY,EAAA,MAAAb,GAAAa,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA,KATMsB"}
|