@velora-dex/widget 0.8.1 → 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.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.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.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.js.map +1 -1
- 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/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.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.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/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.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.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.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.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.d.ts +8 -11
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.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.d.ts +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.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.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.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/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":"metabase.js","names":["isNonNullableEntry","VarType2ValType","category","T","ValType2MetaVarType","MetaVarType","MetaParam","type","VarType","value","target","ParamEntry","varType","MetaParams","K","ParamValue","Params","Record","TValue","ParamsToMetaParamsObject","P","ArrayOfMetaParams","MetabaseResponse","data","rows","Rows","database_id","started_at","Date","json_query","average_execution_time","status","context","row_count","running_time","constructMetaParams","params","Res","truthy","NonNullable","Object","fromEntries","entries","filter","metaParams","reduce","acc","key","metaParam","toLowerCase","push","toString"],"sources":["../../../src/lib/utils/metabase.ts"],"sourcesContent":["import { isNonNullableEntry } from \"@/lib/utils\";\n\ninterface VarType2ValType<T> {\n category: T;\n \"number/=\": [T];\n}\n\ntype ValType2MetaVarType<T> = T extends string\n ? \"category\"\n : T extends number\n ? \"number/=\"\n : never;\n\ntype MetaVarType = \"category\" | \"number/=\";\n\ninterface MetaParam<T extends string, VarType extends MetaVarType> {\n type: VarType;\n value: VarType2ValType<string>[VarType];\n target: [\"variable\", [\"template-tag\", T]];\n}\n\ninterface ParamEntry {\n value: string;\n varType: MetaVarType;\n}\ntype MetaParams<\n T extends {\n value: string;\n varType: MetaVarType;\n }[],\n> = {\n [K in keyof T]: T[K] extends ParamEntry\n ? MetaParam<T[K][\"value\"], T[K][\"varType\"]>\n : never;\n};\ntype ParamValue = string | number | undefined;\n\ntype Params<TValue = ParamValue> = Record<string, TValue>;\n\ntype ParamsToMetaParamsObject<P extends Params> = {\n [K in keyof P]: K extends string\n ? MetaParam<K, ValType2MetaVarType<P[K]>>\n : never;\n};\n\ntype ArrayOfMetaParams<P extends ParamsToMetaParamsObject<Params>> =\n P[keyof P][];\n\nexport interface MetabaseResponse<Rows> {\n data: {\n rows: Rows[];\n };\n database_id: number;\n started_at: Date;\n json_query: unknown;\n average_execution_time: null;\n status: string;\n context: string;\n row_count: number;\n running_time: number;\n}\n\n/* const SwapTxParams = [\n {\n type: \"category\",\n value: \"0x7805cad44a0e58270c666e8b932c315457b0042b\",\n target: [\"variable\", [\"template-tag\", \"account\"]],\n },\n]; */\nexport function constructMetaParams<P extends Params>(\n params: P\n): ArrayOfMetaParams<ParamsToMetaParamsObject<P>> {\n type Res = ArrayOfMetaParams<ParamsToMetaParamsObject<P>>;\n\n // Filter out falsy parameters\n const truthy: Params<NonNullable<ParamValue>> = Object.fromEntries(\n Object.entries(params).filter(isNonNullableEntry)\n );\n\n const metaParams = Object.entries(truthy).reduce<\n MetaParams<{ value: string; varType: MetaVarType }[]>\n >((acc, [key, value]) => {\n if (typeof value === \"string\") {\n const metaParam: MetaParam<string, \"category\"> = {\n type: \"category\",\n value: value.toLowerCase(),\n target: [\"variable\", [\"template-tag\", key]],\n };\n\n acc.push(metaParam);\n } else {\n const metaParam: MetaParam<string, \"number/=\"> = {\n type: \"number/=\",\n value: [value.toString()],\n target: [\"variable\", [\"template-tag\", key]],\n };\n\n acc.push(metaParam);\n }\n\n return acc;\n }, []);\n\n return metaParams as Res;\n}\n"],"mappings":";;AAqEA,SAAgBmC,EACdC,GACgD;CAIhD,IAAME,IAA0CE,OAAOC,YACrDD,OAAOE,QAAQN,EAAO,CAACO,OAAO3C,EAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"metabase.js","names":["isNonNullableEntry","VarType2ValType","category","T","ValType2MetaVarType","MetaVarType","MetaParam","type","VarType","value","target","ParamEntry","varType","MetaParams","K","ParamValue","Params","Record","TValue","ParamsToMetaParamsObject","P","ArrayOfMetaParams","MetabaseResponse","data","rows","Rows","database_id","started_at","Date","json_query","average_execution_time","status","context","row_count","running_time","constructMetaParams","params","Res","truthy","NonNullable","Object","fromEntries","entries","filter","metaParams","reduce","acc","key","metaParam","toLowerCase","push","toString"],"sources":["../../../src/lib/utils/metabase.ts"],"sourcesContent":["import { isNonNullableEntry } from \"@/lib/utils\";\n\ninterface VarType2ValType<T> {\n category: T;\n \"number/=\": [T];\n}\n\ntype ValType2MetaVarType<T> = T extends string\n ? \"category\"\n : T extends number\n ? \"number/=\"\n : never;\n\ntype MetaVarType = \"category\" | \"number/=\";\n\ninterface MetaParam<T extends string, VarType extends MetaVarType> {\n type: VarType;\n value: VarType2ValType<string>[VarType];\n target: [\"variable\", [\"template-tag\", T]];\n}\n\ninterface ParamEntry {\n value: string;\n varType: MetaVarType;\n}\ntype MetaParams<\n T extends {\n value: string;\n varType: MetaVarType;\n }[],\n> = {\n [K in keyof T]: T[K] extends ParamEntry\n ? MetaParam<T[K][\"value\"], T[K][\"varType\"]>\n : never;\n};\ntype ParamValue = string | number | undefined;\n\ntype Params<TValue = ParamValue> = Record<string, TValue>;\n\ntype ParamsToMetaParamsObject<P extends Params> = {\n [K in keyof P]: K extends string\n ? MetaParam<K, ValType2MetaVarType<P[K]>>\n : never;\n};\n\ntype ArrayOfMetaParams<P extends ParamsToMetaParamsObject<Params>> =\n P[keyof P][];\n\nexport interface MetabaseResponse<Rows> {\n data: {\n rows: Rows[];\n };\n database_id: number;\n started_at: Date;\n json_query: unknown;\n average_execution_time: null;\n status: string;\n context: string;\n row_count: number;\n running_time: number;\n}\n\n/* const SwapTxParams = [\n {\n type: \"category\",\n value: \"0x7805cad44a0e58270c666e8b932c315457b0042b\",\n target: [\"variable\", [\"template-tag\", \"account\"]],\n },\n]; */\nexport function constructMetaParams<P extends Params>(\n params: P\n): ArrayOfMetaParams<ParamsToMetaParamsObject<P>> {\n type Res = ArrayOfMetaParams<ParamsToMetaParamsObject<P>>;\n\n // Filter out falsy parameters\n const truthy: Params<NonNullable<ParamValue>> = Object.fromEntries(\n Object.entries(params).filter(isNonNullableEntry)\n );\n\n const metaParams = Object.entries(truthy).reduce<\n MetaParams<{ value: string; varType: MetaVarType }[]>\n >((acc, [key, value]) => {\n if (typeof value === \"string\") {\n const metaParam: MetaParam<string, \"category\"> = {\n type: \"category\",\n value: value.toLowerCase(),\n target: [\"variable\", [\"template-tag\", key]],\n };\n\n acc.push(metaParam);\n } else {\n const metaParam: MetaParam<string, \"number/=\"> = {\n type: \"number/=\",\n value: [value.toString()],\n target: [\"variable\", [\"template-tag\", key]],\n };\n\n acc.push(metaParam);\n }\n\n return acc;\n }, []);\n\n return metaParams as Res;\n}\n"],"mappings":";;AAqEA,SAAgBmC,EACdC,GACgD;CAIhD,IAAME,IAA0CE,OAAOC,YACrDD,OAAOE,QAAQN,EAAO,CAACO,OAAO3C,EAChC,CAAC;CA0BD,OAxBmBwC,OAAOE,QAAQJ,EAAO,CAACO,QAEvCC,GAAK,CAACC,GAAKtC,OAAW;EACvB,IAAI,OAAOA,KAAU,UAAU;GAC7B,IAAMuC,IAA2C;IAC/CzC,MAAM;IACNE,OAAOA,EAAMwC,aAAa;IAC1BvC,QAAQ,CAAC,YAAY,CAAC,gBAAgBqC,EAAI,CAAA;IAC3C;GAEDD,EAAII,KAAKF,EAAU;SACd;GACL,IAAMA,IAA2C;IAC/CzC,MAAM;IACNE,OAAO,CAACA,EAAM0C,UAAU,CAAC;IACzBzC,QAAQ,CAAC,YAAY,CAAC,gBAAgBqC,EAAI,CAAA;IAC3C;GAEDD,EAAII,KAAKF,EAAU;;EAGrB,OAAOF;IACN,EAAE,CAEEF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobile.js","names":["mobile","isMobileDevice","tablet"],"sources":["../../../src/lib/utils/mobile.ts"],"sourcesContent":["import mobile from \"is-mobile\";\n\n/**\n * Check if the device is mobile or tablet. The detection is based on the navigator.userAgent property.\n * @returns True if the device is mobile or tablet, false otherwise.\n */\nexport function isMobileDevice() {\n return mobile({ tablet: true });\n}\n"],"mappings":";;AAMA,SAAgBC,IAAiB;
|
|
1
|
+
{"version":3,"file":"mobile.js","names":["mobile","isMobileDevice","tablet"],"sources":["../../../src/lib/utils/mobile.ts"],"sourcesContent":["import mobile from \"is-mobile\";\n\n/**\n * Check if the device is mobile or tablet. The detection is based on the navigator.userAgent property.\n * @returns True if the device is mobile or tablet, false otherwise.\n */\nexport function isMobileDevice() {\n return mobile({ tablet: true });\n}\n"],"mappings":";;AAMA,SAAgBC,IAAiB;CAC/B,OAAOD,EAAO,EAAEE,QAAQ,IAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price.js","names":["DeltaOrMarketPrice","amountAfterSlippage","subtractSlippage","subtractFee","Big","isDeltaPrice","applySlippage","srcAmount","destAmount","Pick","slippage","side","srcAmountAfterSlippage","toFixed","destAmountAfterSlippage","getDestAmountAfterFee","price","receivedDestAmount","partnerFee","getDestAmountAfterFeeAndSlippage","slippagePercent","destAmountAfterFee","getPercentDifference","a","b","minus","div","mul","toNumber"],"sources":["../../../src/lib/utils/price.ts"],"sourcesContent":["import type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { amountAfterSlippage, subtractSlippage } from \"./slippage\";\nimport { subtractFee } from \"./fee\";\nimport Big from \"big.js\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n/**\n * Applies slippage to the srcAmount and destAmount of a DeltaOrMarketPrice.\n *\n * @param srcAmount - The source amount of the trade.\n * @param destAmount - The destination amount of the trade.\n * @param slippage - The slippage percentage to apply (e.g., 0.5 for 0.5%).\n * @param side - The side of the trade, either \"BUY\" or \"SELL\".\n * @returns An object containing the adjusted srcAmount and destAmount after applying slippage.\n */\nexport function applySlippage(\n {\n srcAmount,\n destAmount,\n }: Pick<DeltaOrMarketPrice, \"srcAmount\" | \"destAmount\">,\n slippage: number,\n side: \"BUY\" | \"SELL\"\n) {\n if (side === \"BUY\") {\n const srcAmountAfterSlippage = amountAfterSlippage(\n srcAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount: srcAmountAfterSlippage,\n destAmount,\n };\n }\n\n const destAmountAfterSlippage = amountAfterSlippage(\n destAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount,\n destAmount: destAmountAfterSlippage,\n };\n}\n\n/**\n * Calculates the destination amount after applying partner fee.\n *\n * @param price - The DeltaOrMarketPrice object containing destAmounts and partnerFee.\n * @returns The destination amount after applying partner fee.\n */\nexport function getDestAmountAfterFee(price: DeltaOrMarketPrice) {\n // destAmount has swapFees (and bridgeFees for Crosschain Delta) applied,\n // but not partnerFee\n const destAmount = isDeltaPrice(price)\n ? price.receivedDestAmount\n : price.destAmount;\n\n return subtractFee(destAmount, price.partnerFee);\n}\n\n/**\n * Calculates the destination amount after applying partner fee and slippage.\n *\n * @param price - The DeltaOrMarketPrice object containing destAmounts and partnerFee.\n * @param slippagePercent - The slippage percentage to apply.\n * @param priceMode - The mode of the price, either \"delta\" or \"market\".\n * @returns The destination amount after applying partner fee and slippage.\n */\nexport function getDestAmountAfterFeeAndSlippage({\n price,\n slippagePercent,\n}: {\n price: DeltaOrMarketPrice;\n slippagePercent: number;\n}) {\n const destAmountAfterFee = getDestAmountAfterFee(price);\n return subtractSlippage(destAmountAfterFee, slippagePercent);\n}\n\nexport function getPercentDifference(a: number, b: number) {\n if (b === 0 || a === b) return 0;\n return Big(a).minus(b).div(b).mul(100).toNumber();\n}\n"],"mappings":";;;;;AAeA,SAAgBM,EACd,EACEC,cACAC,iBAEFE,GACAC,GACA;
|
|
1
|
+
{"version":3,"file":"price.js","names":["DeltaOrMarketPrice","amountAfterSlippage","subtractSlippage","subtractFee","Big","isDeltaPrice","applySlippage","srcAmount","destAmount","Pick","slippage","side","srcAmountAfterSlippage","toFixed","destAmountAfterSlippage","getDestAmountAfterFee","price","receivedDestAmount","partnerFee","getDestAmountAfterFeeAndSlippage","slippagePercent","destAmountAfterFee","getPercentDifference","a","b","minus","div","mul","toNumber"],"sources":["../../../src/lib/utils/price.ts"],"sourcesContent":["import type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { amountAfterSlippage, subtractSlippage } from \"./slippage\";\nimport { subtractFee } from \"./fee\";\nimport Big from \"big.js\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\n\n/**\n * Applies slippage to the srcAmount and destAmount of a DeltaOrMarketPrice.\n *\n * @param srcAmount - The source amount of the trade.\n * @param destAmount - The destination amount of the trade.\n * @param slippage - The slippage percentage to apply (e.g., 0.5 for 0.5%).\n * @param side - The side of the trade, either \"BUY\" or \"SELL\".\n * @returns An object containing the adjusted srcAmount and destAmount after applying slippage.\n */\nexport function applySlippage(\n {\n srcAmount,\n destAmount,\n }: Pick<DeltaOrMarketPrice, \"srcAmount\" | \"destAmount\">,\n slippage: number,\n side: \"BUY\" | \"SELL\"\n) {\n if (side === \"BUY\") {\n const srcAmountAfterSlippage = amountAfterSlippage(\n srcAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount: srcAmountAfterSlippage,\n destAmount,\n };\n }\n\n const destAmountAfterSlippage = amountAfterSlippage(\n destAmount,\n slippage,\n side\n ).toFixed(0);\n\n return {\n srcAmount,\n destAmount: destAmountAfterSlippage,\n };\n}\n\n/**\n * Calculates the destination amount after applying partner fee.\n *\n * @param price - The DeltaOrMarketPrice object containing destAmounts and partnerFee.\n * @returns The destination amount after applying partner fee.\n */\nexport function getDestAmountAfterFee(price: DeltaOrMarketPrice) {\n // destAmount has swapFees (and bridgeFees for Crosschain Delta) applied,\n // but not partnerFee\n const destAmount = isDeltaPrice(price)\n ? price.receivedDestAmount\n : price.destAmount;\n\n return subtractFee(destAmount, price.partnerFee);\n}\n\n/**\n * Calculates the destination amount after applying partner fee and slippage.\n *\n * @param price - The DeltaOrMarketPrice object containing destAmounts and partnerFee.\n * @param slippagePercent - The slippage percentage to apply.\n * @param priceMode - The mode of the price, either \"delta\" or \"market\".\n * @returns The destination amount after applying partner fee and slippage.\n */\nexport function getDestAmountAfterFeeAndSlippage({\n price,\n slippagePercent,\n}: {\n price: DeltaOrMarketPrice;\n slippagePercent: number;\n}) {\n const destAmountAfterFee = getDestAmountAfterFee(price);\n return subtractSlippage(destAmountAfterFee, slippagePercent);\n}\n\nexport function getPercentDifference(a: number, b: number) {\n if (b === 0 || a === b) return 0;\n return Big(a).minus(b).div(b).mul(100).toNumber();\n}\n"],"mappings":";;;;;AAeA,SAAgBM,EACd,EACEC,cACAC,iBAEFE,GACAC,GACA;CAoBA,OAnBIA,MAAS,QAOJ;EACLJ,WAP6BN,EAC7BM,GACAG,GACAC,EACD,CAACE,QAAQ,EAGGD;EACXJ;EACD,GASI;EACLD;EACAC,YAR8BP,EAC9BO,GACAE,GACAC,EACD,CAACE,QAAQ,EAIIC;EACb;;AASH,SAAgBC,EAAsBC,GAA2B;CAO/D,OAAOb,EAJYE,EAAaW,EAAM,GAClCA,EAAMC,qBACND,EAAMR,YAEqBQ,EAAME,WAAW;;AAWlD,SAAgBC,EAAiC,EAC/CH,UACAI,sBAIC;CAED,OAAOlB,EADoBa,EAAsBC,EACzBK,EAAoBD,EAAgB;;AAG9D,SAAgBE,EAAqBC,GAAWC,GAAW;CAEzD,OADIA,MAAM,KAAKD,MAAMC,IAAU,IACxBpB,EAAImB,EAAE,CAACE,MAAMD,EAAE,CAACE,IAAIF,EAAE,CAACG,IAAI,IAAI,CAACC,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priceImpact.js","names":["Big","calculatePriceImpactPercent","fromUSD","toUSD","toBN","gte","calculatedImpact","minus","div","times","Math","min","toNumber","PriceImpactResult","priceImpact","isHighImpact","isMediumImpact","isUnavailable","MEDIUM_IMPACT_THRESHOLD","HIGH_IMPACT_THRESHOLD","getPriceImpact","srcUSD","destUSD","impact","undefined","impactAbsoluteValue","abs","gt","formatPriceImpactPercent","toFixed"],"sources":["../../../src/lib/utils/priceImpact.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function calculatePriceImpactPercent(\n fromUSD: string,\n toUSD: string\n): Big {\n if (fromUSD === \"0\" || toUSD === \"0\") {\n return new Big(0);\n }\n\n const toBN = Big(toUSD);\n if (toBN.gte(fromUSD)) return Big(0);\n const calculatedImpact = Big(1).minus(toBN.div(fromUSD)).times(100);\n\n return Big(Math.min(calculatedImpact.toNumber(), 100));\n}\n\nexport type PriceImpactResult = {\n /** @description The price impact in percentage (e.g. 0.5 means 0.5%) */\n priceImpact?: number;\n /** @description The impact is above the high threshold (e.g. 5%) */\n isHighImpact: boolean;\n /** @description Medium impact means it's above the medium threshold but below the high threshold */\n isMediumImpact: boolean;\n /** @description Unavailable to calculate due to missing one of the USD prices */\n isUnavailable: boolean;\n};\n\nconst MEDIUM_IMPACT_THRESHOLD = 2; // 2%\nconst HIGH_IMPACT_THRESHOLD = 5; // 5%\n\nexport function getPriceImpact({\n srcUSD,\n destUSD,\n}: {\n srcUSD: string | null;\n destUSD: string | null;\n}): PriceImpactResult {\n const impact =\n // can't calc priceImpact without knowing USD prices of tokens\n srcUSD && destUSD ? calculatePriceImpactPercent(srcUSD, destUSD) : null;\n\n if (impact === null) {\n return {\n priceImpact: undefined,\n isMediumImpact: false,\n isHighImpact: false,\n isUnavailable: true,\n };\n }\n\n const impactAbsoluteValue = impact.abs();\n\n const isMediumImpact = impactAbsoluteValue.gt(MEDIUM_IMPACT_THRESHOLD);\n const isHighImpact = impactAbsoluteValue.gt(HIGH_IMPACT_THRESHOLD);\n\n return {\n priceImpact: impactAbsoluteValue.toNumber(),\n isMediumImpact: isMediumImpact && !isHighImpact,\n isHighImpact,\n isUnavailable: false,\n };\n}\n\nexport function formatPriceImpactPercent(priceImpact: number): `${string}%` {\n return `${priceImpact.toFixed(2)}%`;\n}\n"],"mappings":";;AAEA,SAAgBC,EACdC,GACAC,GACK;
|
|
1
|
+
{"version":3,"file":"priceImpact.js","names":["Big","calculatePriceImpactPercent","fromUSD","toUSD","toBN","gte","calculatedImpact","minus","div","times","Math","min","toNumber","PriceImpactResult","priceImpact","isHighImpact","isMediumImpact","isUnavailable","MEDIUM_IMPACT_THRESHOLD","HIGH_IMPACT_THRESHOLD","getPriceImpact","srcUSD","destUSD","impact","undefined","impactAbsoluteValue","abs","gt","formatPriceImpactPercent","toFixed"],"sources":["../../../src/lib/utils/priceImpact.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function calculatePriceImpactPercent(\n fromUSD: string,\n toUSD: string\n): Big {\n if (fromUSD === \"0\" || toUSD === \"0\") {\n return new Big(0);\n }\n\n const toBN = Big(toUSD);\n if (toBN.gte(fromUSD)) return Big(0);\n const calculatedImpact = Big(1).minus(toBN.div(fromUSD)).times(100);\n\n return Big(Math.min(calculatedImpact.toNumber(), 100));\n}\n\nexport type PriceImpactResult = {\n /** @description The price impact in percentage (e.g. 0.5 means 0.5%) */\n priceImpact?: number;\n /** @description The impact is above the high threshold (e.g. 5%) */\n isHighImpact: boolean;\n /** @description Medium impact means it's above the medium threshold but below the high threshold */\n isMediumImpact: boolean;\n /** @description Unavailable to calculate due to missing one of the USD prices */\n isUnavailable: boolean;\n};\n\nconst MEDIUM_IMPACT_THRESHOLD = 2; // 2%\nconst HIGH_IMPACT_THRESHOLD = 5; // 5%\n\nexport function getPriceImpact({\n srcUSD,\n destUSD,\n}: {\n srcUSD: string | null;\n destUSD: string | null;\n}): PriceImpactResult {\n const impact =\n // can't calc priceImpact without knowing USD prices of tokens\n srcUSD && destUSD ? calculatePriceImpactPercent(srcUSD, destUSD) : null;\n\n if (impact === null) {\n return {\n priceImpact: undefined,\n isMediumImpact: false,\n isHighImpact: false,\n isUnavailable: true,\n };\n }\n\n const impactAbsoluteValue = impact.abs();\n\n const isMediumImpact = impactAbsoluteValue.gt(MEDIUM_IMPACT_THRESHOLD);\n const isHighImpact = impactAbsoluteValue.gt(HIGH_IMPACT_THRESHOLD);\n\n return {\n priceImpact: impactAbsoluteValue.toNumber(),\n isMediumImpact: isMediumImpact && !isHighImpact,\n isHighImpact,\n isUnavailable: false,\n };\n}\n\nexport function formatPriceImpactPercent(priceImpact: number): `${string}%` {\n return `${priceImpact.toFixed(2)}%`;\n}\n"],"mappings":";;AAEA,SAAgBC,EACdC,GACAC,GACK;CACL,IAAID,MAAY,OAAOC,MAAU,KAC/B,OAAO,IAAIH,EAAI,EAAE;CAGnB,IAAMI,IAAOJ,EAAIG,EAAM;CACvB,IAAIC,EAAKC,IAAIH,EAAQ,EAAE,OAAOF,EAAI,EAAE;CACpC,IAAMM,IAAmBN,EAAI,EAAE,CAACO,MAAMH,EAAKI,IAAIN,EAAQ,CAAC,CAACO,MAAM,IAAI;CAEnE,OAAOT,EAAIU,KAAKC,IAAIL,EAAiBM,UAAU,EAAE,IAAI,CAAC;;AAcxD,IAAMM,IAA0B,GAC1BC,IAAwB;AAE9B,SAAgBC,EAAe,EAC7BC,WACAC,cAIoB;CACpB,IAAMC,IAEJF,KAAUC,IAAUrB,EAA4BoB,GAAQC,EAAQ,GAAG;CAErE,IAAIC,MAAW,MACb,OAAO;EACLT,aAAaU,KAAAA;EACbR,gBAAgB;EAChBD,cAAc;EACdE,eAAe;EAChB;CAGH,IAAMQ,IAAsBF,EAAOG,KAAK,EAElCV,IAAiBS,EAAoBE,GAAGT,EAAwB,EAChEH,IAAeU,EAAoBE,GAAGR,EAAsB;CAElE,OAAO;EACLL,aAAaW,EAAoBb,UAAU;EAC3CI,gBAAgBA,KAAkB,CAACD;EACnCA;EACAE,eAAe;EAChB;;AAGH,SAAgBW,EAAyBd,GAAmC;CAC1E,OAAO,GAAGA,EAAYe,QAAQ,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerErrors.js","names":["getProviderErrorMessage","error","message","toString","getErrorCode","code","PROVIDER_REJECT_REQUEST_CODES","PROVIDER_REJECT_REQUEST_ERROR_MESSAGES","isRejectRequestProviderError","errorCode","includes","some","rejectMessage","toLowerCase"],"sources":["../../../src/lib/utils/providerErrors.ts"],"sourcesContent":["/**\n * Convenient method to get the error message from the error raised by a provider.\n */\nexport function getProviderErrorMessage(error: unknown): string | undefined {\n if (typeof error === \"string\") return error;\n if (error && typeof error === \"object\" && \"message\" in error)\n return error.message as string;\n return error?.toString();\n}\n\nexport function getErrorCode(error: unknown): number | undefined {\n if (error && typeof error === \"object\" && \"code\" in error) {\n const code = error.code;\n if (typeof code === \"number\") return code;\n }\n}\n\nconst PROVIDER_REJECT_REQUEST_CODES = [4001, -32000]; // See https://eips.ethereum.org/EIPS/eip-1193\n\nconst PROVIDER_REJECT_REQUEST_ERROR_MESSAGES = [\n \"User denied message signature\",\n \"User rejected\",\n \"User denied\",\n \"rejected transaction\",\n \"Transaction was rejected\",\n];\n\n/**\n *\n * @param error Optional error object return by a provider.\n * @returns true if the user rejected the request in their wallet\n */\n\nexport function isRejectRequestProviderError(error: unknown) {\n if (error) {\n // check the error code is the user rejection as described in eip-1193\n const errorCode = getErrorCode(error);\n if (errorCode && PROVIDER_REJECT_REQUEST_CODES.includes(errorCode)) {\n return true;\n }\n\n // check for some specific messages returned by some wallets when rejecting requests\n const message = getProviderErrorMessage(error);\n if (\n PROVIDER_REJECT_REQUEST_ERROR_MESSAGES.some(\n (rejectMessage) =>\n message &&\n rejectMessage &&\n message.toLowerCase().includes(rejectMessage.toLowerCase())\n )\n ) {\n return true;\n }\n }\n\n return false;\n}\n"],"mappings":";AAGA,SAAgBA,EAAwBC,GAAoC;
|
|
1
|
+
{"version":3,"file":"providerErrors.js","names":["getProviderErrorMessage","error","message","toString","getErrorCode","code","PROVIDER_REJECT_REQUEST_CODES","PROVIDER_REJECT_REQUEST_ERROR_MESSAGES","isRejectRequestProviderError","errorCode","includes","some","rejectMessage","toLowerCase"],"sources":["../../../src/lib/utils/providerErrors.ts"],"sourcesContent":["/**\n * Convenient method to get the error message from the error raised by a provider.\n */\nexport function getProviderErrorMessage(error: unknown): string | undefined {\n if (typeof error === \"string\") return error;\n if (error && typeof error === \"object\" && \"message\" in error)\n return error.message as string;\n return error?.toString();\n}\n\nexport function getErrorCode(error: unknown): number | undefined {\n if (error && typeof error === \"object\" && \"code\" in error) {\n const code = error.code;\n if (typeof code === \"number\") return code;\n }\n}\n\nconst PROVIDER_REJECT_REQUEST_CODES = [4001, -32000]; // See https://eips.ethereum.org/EIPS/eip-1193\n\nconst PROVIDER_REJECT_REQUEST_ERROR_MESSAGES = [\n \"User denied message signature\",\n \"User rejected\",\n \"User denied\",\n \"rejected transaction\",\n \"Transaction was rejected\",\n];\n\n/**\n *\n * @param error Optional error object return by a provider.\n * @returns true if the user rejected the request in their wallet\n */\n\nexport function isRejectRequestProviderError(error: unknown) {\n if (error) {\n // check the error code is the user rejection as described in eip-1193\n const errorCode = getErrorCode(error);\n if (errorCode && PROVIDER_REJECT_REQUEST_CODES.includes(errorCode)) {\n return true;\n }\n\n // check for some specific messages returned by some wallets when rejecting requests\n const message = getProviderErrorMessage(error);\n if (\n PROVIDER_REJECT_REQUEST_ERROR_MESSAGES.some(\n (rejectMessage) =>\n message &&\n rejectMessage &&\n message.toLowerCase().includes(rejectMessage.toLowerCase())\n )\n ) {\n return true;\n }\n }\n\n return false;\n}\n"],"mappings":";AAGA,SAAgBA,EAAwBC,GAAoC;CAI1E,OAHI,OAAOA,KAAU,WAAiBA,IAClCA,KAAS,OAAOA,KAAU,YAAY,aAAaA,IAC9CA,EAAMC,UACRD,GAAOE,UAAU;;AAG1B,SAAgBC,EAAaH,GAAoC;CAC/D,IAAIA,KAAS,OAAOA,KAAU,YAAY,UAAUA,GAAO;EACzD,IAAMI,IAAOJ,EAAMI;EACnB,IAAI,OAAOA,KAAS,UAAU,OAAOA;;;AAIzC,IAAMC,IAAgC,CAAC,MAAM,MAAO,EAE9CC,IAAyC;CAC7C;CACA;CACA;CACA;CACA;CACD;AAQD,SAAgBC,EAA6BP,GAAgB;CAC3D,IAAIA,GAAO;EAET,IAAMQ,IAAYL,EAAaH,EAAM;EACrC,IAAIQ,KAAaH,EAA8BI,SAASD,EAAU,EAChE,OAAO;EAIT,IAAMP,IAAUF,EAAwBC,EAAM;EAC9C,IACEM,EAAuCI,MACpCC,MACCV,KACAU,KACAV,EAAQW,aAAa,CAACH,SAASE,EAAcC,aAAa,CAC9D,CAAC,EAED,OAAO;;CAIX,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate.js","names":["Big","removeTrailingZeros","calcRate","fromAmount","toAmount","rate","rateFormatted","fromUnits","toUnits","eq","div","decimalPrecision","gt","toFixed","roundDown"],"sources":["../../../src/lib/utils/rate.ts"],"sourcesContent":["import Big from \"big.js\";\nimport { removeTrailingZeros } from \"./removeZeroDecimals\";\n\nexport function calcRate(\n fromAmount: string | number | Big,\n toAmount: string | number | Big\n): {\n rate: Big;\n rateFormatted: string;\n} | null {\n const fromUnits = Big(fromAmount);\n const toUnits = Big(toAmount);\n if (fromUnits.eq(0) || toUnits.eq(0)) return null;\n\n const rate = toUnits.div(fromUnits);\n\n const decimalPrecision = rate.gt(1e6)\n ? 0 // no need fraction digits for big numbers\n : rate.gt(1e-1)\n ? 4 // 4 digits for smaller numbers (between 1 mil and 0.1)\n : 10; // at the time of writing 1 PSP = 0.0000001827 WBTC\n\n const rateFormatted = removeTrailingZeros(\n rate.toFixed(decimalPrecision, Big.roundDown)\n );\n\n return {\n rate,\n rateFormatted,\n };\n}\n"],"mappings":";;;AAGA,SAAgBE,EACdC,GACAC,GAIO;CACP,IAAMG,IAAYP,EAAIG,EAAW,EAC3BK,IAAUR,EAAII,EAAS;
|
|
1
|
+
{"version":3,"file":"rate.js","names":["Big","removeTrailingZeros","calcRate","fromAmount","toAmount","rate","rateFormatted","fromUnits","toUnits","eq","div","decimalPrecision","gt","toFixed","roundDown"],"sources":["../../../src/lib/utils/rate.ts"],"sourcesContent":["import Big from \"big.js\";\nimport { removeTrailingZeros } from \"./removeZeroDecimals\";\n\nexport function calcRate(\n fromAmount: string | number | Big,\n toAmount: string | number | Big\n): {\n rate: Big;\n rateFormatted: string;\n} | null {\n const fromUnits = Big(fromAmount);\n const toUnits = Big(toAmount);\n if (fromUnits.eq(0) || toUnits.eq(0)) return null;\n\n const rate = toUnits.div(fromUnits);\n\n const decimalPrecision = rate.gt(1e6)\n ? 0 // no need fraction digits for big numbers\n : rate.gt(1e-1)\n ? 4 // 4 digits for smaller numbers (between 1 mil and 0.1)\n : 10; // at the time of writing 1 PSP = 0.0000001827 WBTC\n\n const rateFormatted = removeTrailingZeros(\n rate.toFixed(decimalPrecision, Big.roundDown)\n );\n\n return {\n rate,\n rateFormatted,\n };\n}\n"],"mappings":";;;AAGA,SAAgBE,EACdC,GACAC,GAIO;CACP,IAAMG,IAAYP,EAAIG,EAAW,EAC3BK,IAAUR,EAAII,EAAS;CAC7B,IAAIG,EAAUE,GAAG,EAAE,IAAID,EAAQC,GAAG,EAAE,EAAE,OAAO;CAE7C,IAAMJ,IAAOG,EAAQE,IAAIH,EAAU,EAE7BI,IAAmBN,EAAKO,GAAG,IAAI,GACjC,IACAP,EAAKO,GAAG,GAAK,GACX,IACA;CAMN,OAAO;EACLP;EACAC,eANoBL,EACpBI,EAAKQ,QAAQF,GAAkBX,EAAIc,UACrC,CAIER;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeZeroDecimals.js","names":["getFirstTrailingZeroIndex","value","i","length","removeTrailingZeros","separator","includes","trimmed","slice"],"sources":["../../../src/lib/utils/removeZeroDecimals.ts"],"sourcesContent":["/**\n * Returns the index of the first non-zero character from the end of the string.\n * If all characters are zero, it returns the length of the string.\n * * Examples:\n * - 0.1000 -> 5\n * - 0.0000 -> 6\n * - 1.0000 -> 2\n * - 1000 -> 4\n * - 0 -> 1\n */\nfunction getFirstTrailingZeroIndex(value: string): number {\n for (let i = value.length - 1; i > 0; i--) {\n if (value[i] !== \"0\") return i + 1;\n }\n\n return value.length;\n}\n\n/**\n * Returns the trimmed value by removing trailing zeros.\n * * Examples:\n * - 0.10 -> 0.1\n * - 0.00 -> 0\n * - 1.00 -> 1\n */\nexport function removeTrailingZeros(value: string, separator = \".\"): string {\n if (!value.includes(separator)) return value;\n\n const trimmed = value.slice(0, getFirstTrailingZeroIndex(value));\n\n // Remove trailing zeros after the decimal point\n if (trimmed[trimmed.length - 1] === separator) return trimmed.slice(0, -1);\n\n return trimmed;\n}\n"],"mappings":";AAUA,SAASA,EAA0BC,GAAuB;
|
|
1
|
+
{"version":3,"file":"removeZeroDecimals.js","names":["getFirstTrailingZeroIndex","value","i","length","removeTrailingZeros","separator","includes","trimmed","slice"],"sources":["../../../src/lib/utils/removeZeroDecimals.ts"],"sourcesContent":["/**\n * Returns the index of the first non-zero character from the end of the string.\n * If all characters are zero, it returns the length of the string.\n * * Examples:\n * - 0.1000 -> 5\n * - 0.0000 -> 6\n * - 1.0000 -> 2\n * - 1000 -> 4\n * - 0 -> 1\n */\nfunction getFirstTrailingZeroIndex(value: string): number {\n for (let i = value.length - 1; i > 0; i--) {\n if (value[i] !== \"0\") return i + 1;\n }\n\n return value.length;\n}\n\n/**\n * Returns the trimmed value by removing trailing zeros.\n * * Examples:\n * - 0.10 -> 0.1\n * - 0.00 -> 0\n * - 1.00 -> 1\n */\nexport function removeTrailingZeros(value: string, separator = \".\"): string {\n if (!value.includes(separator)) return value;\n\n const trimmed = value.slice(0, getFirstTrailingZeroIndex(value));\n\n // Remove trailing zeros after the decimal point\n if (trimmed[trimmed.length - 1] === separator) return trimmed.slice(0, -1);\n\n return trimmed;\n}\n"],"mappings":";AAUA,SAASA,EAA0BC,GAAuB;CACxD,KAAK,IAAIC,IAAID,EAAME,SAAS,GAAGD,IAAI,GAAGA,KACpC,IAAID,EAAMC,OAAO,KAAK,OAAOA,IAAI;CAGnC,OAAOD,EAAME;;AAUf,SAAgBC,EAAoBH,GAAeI,IAAY,KAAa;CAC1E,IAAI,CAACJ,EAAMK,SAASD,EAAU,EAAE,OAAOJ;CAEvC,IAAMM,IAAUN,EAAMO,MAAM,GAAGR,EAA0BC,EAAM,CAAC;CAKhE,OAFIM,EAAQA,EAAQJ,SAAS,OAAOE,IAAkBE,EAAQC,MAAM,GAAG,GAAG,GAEnED"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"savedAmountUSD.js","names":["subtractFee","OptimalRate","Big","isFilledArray","DEST_AMOUNT_THRESHOLD","getSavedAmountUSD","priceRoute","Pick","others","destAmount","destUSD","gasCostUSD","partnerFee","veloraDestAmount","eq","dollarsPerUnit","div","totalUSD","bestOthersDexTotalUsd","bestOthersDexDestAmount","reduce","Record","maxTotal","exchange","data","gasUSD","destAmountBN","mul","minus","gt","lte","veloraTotalUsd","youSaveUsd","toNumber"],"sources":["../../../src/lib/utils/savedAmountUSD.ts"],"sourcesContent":["import { subtractFee } from \"@/lib/utils/fee\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport Big from \"big.js\";\nimport { isFilledArray } from \"./tuple\";\n\n// if other DEXs have less than destAmount\n// don't count in `You save`\nconst DEST_AMOUNT_THRESHOLD = 0.5; // 50%\n\nexport const getSavedAmountUSD = (\n priceRoute: Pick<\n OptimalRate,\n \"others\" | \"destUSD\" | \"gasCostUSD\" | \"destAmount\" | \"partnerFee\"\n >\n): number | undefined => {\n const { others, destAmount, destUSD, gasCostUSD, partnerFee } = priceRoute;\n\n // missing arguments required for calc - early return\n if (\n !destUSD ||\n !others ||\n !isFilledArray(others) // others must have at least one dex to compare to\n )\n return;\n\n const veloraDestAmount = new Big(destAmount);\n\n if (veloraDestAmount.eq(0)) return;\n\n const dollarsPerUnit = new Big(destUSD).div(veloraDestAmount);\n\n const {\n totalUSD: bestOthersDexTotalUsd,\n destAmount: bestOthersDexDestAmount,\n } = others.reduce<Record<\"totalUSD\" | \"destAmount\", Big>>(\n (maxTotal, exchange) => {\n // don't have data for this exchange -> skip it from calculation of the best of others\n if (!exchange?.data?.gasUSD) return maxTotal;\n\n const destAmount = subtractFee(exchange.destAmount, partnerFee);\n const {\n data: { gasUSD },\n } = exchange;\n\n const destAmountBN = new Big(destAmount);\n const destUSD = destAmountBN.mul(dollarsPerUnit);\n const totalUSD = destUSD.minus(gasUSD);\n\n if (totalUSD.gt(maxTotal.totalUSD)) {\n return {\n totalUSD,\n destAmount: destAmountBN,\n };\n }\n\n return maxTotal;\n },\n { totalUSD: new Big(0), destAmount: new Big(0) }\n );\n\n // no exchange from priceRoute.others had `gasUSD`\n if (bestOthersDexTotalUsd.eq(0)) return;\n\n if (\n // destAmount of the best Other DEX is < DEST_AMOUNT_THRESHOLD of Velora destAmount\n // means that that DEX alone can't cover the whole srcAmount\n // so You Save would be a large number not representative of reality\n bestOthersDexDestAmount.div(veloraDestAmount).lte(DEST_AMOUNT_THRESHOLD)\n )\n return;\n\n const veloraTotalUsd = new Big(subtractFee(destUSD, partnerFee)).minus(\n gasCostUSD\n );\n\n const youSaveUsd = veloraTotalUsd.minus(bestOthersDexTotalUsd);\n // very small amount or negative\n if (youSaveUsd.lte(0.01)) return;\n\n return youSaveUsd.toNumber();\n};\n"],"mappings":";;;;AAOA,IAAMI,IAAwB,IAEjBC,KACXC,MAIuB;CACvB,IAAM,EAAEE,WAAQC,eAAYC,YAASC,eAAYC,kBAAeN;
|
|
1
|
+
{"version":3,"file":"savedAmountUSD.js","names":["subtractFee","OptimalRate","Big","isFilledArray","DEST_AMOUNT_THRESHOLD","getSavedAmountUSD","priceRoute","Pick","others","destAmount","destUSD","gasCostUSD","partnerFee","veloraDestAmount","eq","dollarsPerUnit","div","totalUSD","bestOthersDexTotalUsd","bestOthersDexDestAmount","reduce","Record","maxTotal","exchange","data","gasUSD","destAmountBN","mul","minus","gt","lte","veloraTotalUsd","youSaveUsd","toNumber"],"sources":["../../../src/lib/utils/savedAmountUSD.ts"],"sourcesContent":["import { subtractFee } from \"@/lib/utils/fee\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport Big from \"big.js\";\nimport { isFilledArray } from \"./tuple\";\n\n// if other DEXs have less than destAmount\n// don't count in `You save`\nconst DEST_AMOUNT_THRESHOLD = 0.5; // 50%\n\nexport const getSavedAmountUSD = (\n priceRoute: Pick<\n OptimalRate,\n \"others\" | \"destUSD\" | \"gasCostUSD\" | \"destAmount\" | \"partnerFee\"\n >\n): number | undefined => {\n const { others, destAmount, destUSD, gasCostUSD, partnerFee } = priceRoute;\n\n // missing arguments required for calc - early return\n if (\n !destUSD ||\n !others ||\n !isFilledArray(others) // others must have at least one dex to compare to\n )\n return;\n\n const veloraDestAmount = new Big(destAmount);\n\n if (veloraDestAmount.eq(0)) return;\n\n const dollarsPerUnit = new Big(destUSD).div(veloraDestAmount);\n\n const {\n totalUSD: bestOthersDexTotalUsd,\n destAmount: bestOthersDexDestAmount,\n } = others.reduce<Record<\"totalUSD\" | \"destAmount\", Big>>(\n (maxTotal, exchange) => {\n // don't have data for this exchange -> skip it from calculation of the best of others\n if (!exchange?.data?.gasUSD) return maxTotal;\n\n const destAmount = subtractFee(exchange.destAmount, partnerFee);\n const {\n data: { gasUSD },\n } = exchange;\n\n const destAmountBN = new Big(destAmount);\n const destUSD = destAmountBN.mul(dollarsPerUnit);\n const totalUSD = destUSD.minus(gasUSD);\n\n if (totalUSD.gt(maxTotal.totalUSD)) {\n return {\n totalUSD,\n destAmount: destAmountBN,\n };\n }\n\n return maxTotal;\n },\n { totalUSD: new Big(0), destAmount: new Big(0) }\n );\n\n // no exchange from priceRoute.others had `gasUSD`\n if (bestOthersDexTotalUsd.eq(0)) return;\n\n if (\n // destAmount of the best Other DEX is < DEST_AMOUNT_THRESHOLD of Velora destAmount\n // means that that DEX alone can't cover the whole srcAmount\n // so You Save would be a large number not representative of reality\n bestOthersDexDestAmount.div(veloraDestAmount).lte(DEST_AMOUNT_THRESHOLD)\n )\n return;\n\n const veloraTotalUsd = new Big(subtractFee(destUSD, partnerFee)).minus(\n gasCostUSD\n );\n\n const youSaveUsd = veloraTotalUsd.minus(bestOthersDexTotalUsd);\n // very small amount or negative\n if (youSaveUsd.lte(0.01)) return;\n\n return youSaveUsd.toNumber();\n};\n"],"mappings":";;;;AAOA,IAAMI,IAAwB,IAEjBC,KACXC,MAIuB;CACvB,IAAM,EAAEE,WAAQC,eAAYC,YAASC,eAAYC,kBAAeN;CAGhE,IACE,CAACI,KACD,CAACF,KACD,CAACL,EAAcK,EAAO,EAEtB;CAEF,IAAMK,IAAmB,IAAIX,EAAIO,EAAW;CAE5C,IAAII,EAAiBC,GAAG,EAAE,EAAE;CAE5B,IAAMC,IAAiB,IAAIb,EAAIQ,EAAQ,CAACM,IAAIH,EAAiB,EAEvD,EACJI,UAAUC,GACVT,YAAYU,MACVX,EAAOY,QACRE,GAAUC,MAAa;EAEtB,IAAI,CAACA,GAAUC,MAAMC,QAAQ,OAAOH;EAEpC,IAAMb,IAAaT,EAAYuB,EAASd,YAAYG,EAAW,EACzD,EACJY,MAAM,EAAEC,gBACNF,GAEEG,IAAe,IAAIxB,EAAIO,EAAW,EAElCQ,IADUS,EAAaC,IAAIZ,EAChBL,CAAQkB,MAAMH,EAAO;EAStC,OAPIR,EAASY,GAAGP,EAASL,SAAS,GACzB;GACLA;GACAR,YAAYiB;GACb,GAGIJ;IAET;EAAEL,UAAU,IAAIf,EAAI,EAAE;EAAEO,YAAY,IAAIP,EAAI,EAAC;EAC/C,CAAC;CAKD,IAFIgB,EAAsBJ,GAAG,EAAE,IAM7BK,EAAwBH,IAAIH,EAAiB,CAACiB,IAAI1B,EAAsB,EAExE;CAMF,IAAM4B,IAJiB,IAAI9B,EAAIF,EAAYU,GAASE,EAAW,CAAC,CAACgB,MAC/DjB,EAGiBoB,CAAeH,MAAMV,EAAsB;CAE1Dc,OAAWF,IAAI,IAAK,EAExB,OAAOE,EAAWC,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaleFactor.js","names":["Big","scaleByFactor","amount","BigSource","scalingFactor","bigAmount","undefined","bigBase","div","pow","times"],"sources":["../../../src/lib/utils/scaleFactor.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function scaleByFactor(\n amount?: Big.BigSource,\n scalingFactor?: number\n): Big {\n if (!amount) return new Big(0);\n\n const bigAmount = new Big(amount);\n\n if (scalingFactor === undefined) return bigAmount;\n\n const bigBase = new Big(10);\n\n return scalingFactor < 0\n ? bigAmount.div(bigBase.pow(-scalingFactor))\n : bigAmount.times(bigBase.pow(scalingFactor));\n}\n"],"mappings":";;AAEA,SAAgBC,EACdC,GACAE,GACK;
|
|
1
|
+
{"version":3,"file":"scaleFactor.js","names":["Big","scaleByFactor","amount","BigSource","scalingFactor","bigAmount","undefined","bigBase","div","pow","times"],"sources":["../../../src/lib/utils/scaleFactor.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function scaleByFactor(\n amount?: Big.BigSource,\n scalingFactor?: number\n): Big {\n if (!amount) return new Big(0);\n\n const bigAmount = new Big(amount);\n\n if (scalingFactor === undefined) return bigAmount;\n\n const bigBase = new Big(10);\n\n return scalingFactor < 0\n ? bigAmount.div(bigBase.pow(-scalingFactor))\n : bigAmount.times(bigBase.pow(scalingFactor));\n}\n"],"mappings":";;AAEA,SAAgBC,EACdC,GACAE,GACK;CACL,IAAI,CAACF,GAAQ,OAAO,IAAIF,EAAI,EAAE;CAE9B,IAAMK,IAAY,IAAIL,EAAIE,EAAO;CAEjC,IAAIE,MAAkBE,KAAAA,GAAW,OAAOD;CAExC,IAAME,IAAU,IAAIP,EAAI,GAAG;CAE3B,OAAOI,IAAgB,IACnBC,EAAUG,IAAID,EAAQE,IAAI,CAACL,EAAc,CAAC,GAC1CC,EAAUK,MAAMH,EAAQE,IAAIL,EAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slippage.js","names":["Big","subtractSlippage","amount","slippagePercent","toFixed","multiplier","minus","mul","amountAfterSlippage","slippage","type"],"sources":["../../../src/lib/utils/slippage.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function subtractSlippage(\n amount: string | Big,\n slippagePercent: number // e.g. 0.5 for 0.5%\n): string {\n if (slippagePercent === 0)\n return typeof amount === \"string\" ? amount : amount.toFixed(); // avoid e-notation\n\n const multiplier = Big(1).minus(slippagePercent / 100);\n return Big(amount).mul(multiplier).toFixed(0);\n}\n\n/**\n * Calculates the amount after applying slippage. Decimals are possible after the operation.\n * take care that the resulting amount will be with a decimal number,\n * if afterwards it needs to be treated as an int (e.g.BigInt(amount)), apply .toFixed(0)\n */\nexport function amountAfterSlippage(\n amount: string,\n slippage: number, // e.g. 0.5 for 0.5%\n type: \"SELL\" | \"BUY\"\n): Big {\n const multiplier = type === \"BUY\" ? 1 + slippage / 100 : 1 - slippage / 100;\n return new Big(amount).mul(multiplier);\n}\n"],"mappings":";;AAEA,SAAgBC,EACdC,GACAC,GACQ;
|
|
1
|
+
{"version":3,"file":"slippage.js","names":["Big","subtractSlippage","amount","slippagePercent","toFixed","multiplier","minus","mul","amountAfterSlippage","slippage","type"],"sources":["../../../src/lib/utils/slippage.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function subtractSlippage(\n amount: string | Big,\n slippagePercent: number // e.g. 0.5 for 0.5%\n): string {\n if (slippagePercent === 0)\n return typeof amount === \"string\" ? amount : amount.toFixed(); // avoid e-notation\n\n const multiplier = Big(1).minus(slippagePercent / 100);\n return Big(amount).mul(multiplier).toFixed(0);\n}\n\n/**\n * Calculates the amount after applying slippage. Decimals are possible after the operation.\n * take care that the resulting amount will be with a decimal number,\n * if afterwards it needs to be treated as an int (e.g.BigInt(amount)), apply .toFixed(0)\n */\nexport function amountAfterSlippage(\n amount: string,\n slippage: number, // e.g. 0.5 for 0.5%\n type: \"SELL\" | \"BUY\"\n): Big {\n const multiplier = type === \"BUY\" ? 1 + slippage / 100 : 1 - slippage / 100;\n return new Big(amount).mul(multiplier);\n}\n"],"mappings":";;AAEA,SAAgBC,EACdC,GACAC,GACQ;CACR,IAAIA,MAAoB,GACtB,OAAO,OAAOD,KAAW,WAAWA,IAASA,EAAOE,SAAS;CAE/D,IAAMC,IAAaL,EAAI,EAAE,CAACM,MAAMH,IAAkB,IAAI;CACtD,OAAOH,EAAIE,EAAO,CAACK,IAAIF,EAAW,CAACD,QAAQ,EAAE;;AAQ/C,SAAgBI,EACdN,GACAO,GACAC,GACK;CACL,IAAML,IAAaK,MAAS,QAAQ,IAAID,IAAW,MAAM,IAAIA,IAAW;CACxE,OAAO,IAAIT,EAAIE,EAAO,CAACK,IAAIF,EAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","names":["dayjs","duration","relativeTime","extend","getDuration","deadline","minutesToMilliseconds","minutes","millisecondsToSeconds","milliseconds","Math","floor"],"sources":["../../../src/lib/utils/time.ts"],"sourcesContent":["import dayjs from \"dayjs\";\nimport duration from \"dayjs/plugin/duration\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\n\ndayjs.extend(duration);\ndayjs.extend(relativeTime);\n\nexport function getDuration(deadline: number) {\n return dayjs.duration(deadline);\n}\n\nexport function minutesToMilliseconds(minutes: number) {\n return minutes * 60 * 1000;\n}\n\nexport function millisecondsToSeconds(milliseconds: number) {\n return Math.floor(milliseconds / 1000);\n}\n"],"mappings":";;;AAIAA,EAAMG,OAAOF,EAAS,EACtBD,EAAMG,OAAOD,EAAa;AAE1B,SAAgBE,EAAYC,GAAkB;
|
|
1
|
+
{"version":3,"file":"time.js","names":["dayjs","duration","relativeTime","extend","getDuration","deadline","minutesToMilliseconds","minutes","millisecondsToSeconds","milliseconds","Math","floor"],"sources":["../../../src/lib/utils/time.ts"],"sourcesContent":["import dayjs from \"dayjs\";\nimport duration from \"dayjs/plugin/duration\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\n\ndayjs.extend(duration);\ndayjs.extend(relativeTime);\n\nexport function getDuration(deadline: number) {\n return dayjs.duration(deadline);\n}\n\nexport function minutesToMilliseconds(minutes: number) {\n return minutes * 60 * 1000;\n}\n\nexport function millisecondsToSeconds(milliseconds: number) {\n return Math.floor(milliseconds / 1000);\n}\n"],"mappings":";;;AAIAA,EAAMG,OAAOF,EAAS,EACtBD,EAAMG,OAAOD,EAAa;AAE1B,SAAgBE,EAAYC,GAAkB;CAC5C,OAAOL,EAAMC,SAASI,EAAS;;AAGjC,SAAgBC,EAAsBC,GAAiB;CACrD,OAAOA,IAAU,KAAK;;AAGxB,SAAgBC,EAAsBC,GAAsB;CAC1D,OAAOC,KAAKC,MAAMF,IAAe,IAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toDecimal.js","names":["Big","removeTrailingZeros","DECIMAL_PRECISION","TEN_POWER_DECIMAL_PRECISION","MAX_DECIMAL_PLACES","RM","roundDown","DP","toDecimal","number","Number","isNaN","isFinite","big","toFixed","toPrecision","toDecimalTrimmed","undefined","decimal"],"sources":["../../../src/lib/utils/toDecimal.ts"],"sourcesContent":["import Big from \"big.js\";\nimport { removeTrailingZeros } from \"./removeZeroDecimals\";\n\nconst DECIMAL_PRECISION = 6;\nconst TEN_POWER_DECIMAL_PRECISION = 10 ** DECIMAL_PRECISION;\n\nconst MAX_DECIMAL_PLACES = 30;\n\n/*\n Let's set the rounding mode to round down.\n\n The reason its because the div function in Big always applies rounding,\n so we want it to round below the user balance (otherwise swap could fail)\n\n Also, let's set decimal places to 30, the reason is that the default on Big is 20\n and there are tokens that have 18 decimals (i.e ETH) and if a user wants to trade\n 0.0001 ETH, we wont have the entire value when converting it to decimals (WEI).\n*/\nBig.RM = Big.roundDown; // ex: 1.23456789 -> 1.234567\nBig.DP = MAX_DECIMAL_PLACES;\n\n/*\n Let's be careful about which rounding mode we use with `Big.toFixed()`:\n\n If the value of this Big number in normal notation has more digits to the right of the decimal point than is specified by dp, \n the return value will be rounded to dp decimal places using rounding mode rm.\n\n If the value of this Big number in normal notation has fewer fraction digits then is specified by dp,\n the return value will be appended with zeros accordingly.\n*/\n\nexport const toDecimal = (number: number): string => {\n if (Number.isNaN(number) || !Number.isFinite(number)) return \"\";\n const big = Big(number);\n\n if (number > TEN_POWER_DECIMAL_PRECISION) return big.toFixed(0); // avoid e-notation for large numbers\n\n if (number > 0 && number < 1 / TEN_POWER_DECIMAL_PRECISION)\n return big.toFixed(); // avoid e-notation for small numbers\n\n return big.toPrecision(DECIMAL_PRECISION);\n};\n\n/*\n Same as toDecimal, but removes trailing zeros.\n*/\nexport const toDecimalTrimmed = (number?: number | bigint | string): string => {\n if (number === undefined) return \"\";\n\n const decimal = toDecimal(Number(number));\n return removeTrailingZeros(decimal);\n};\n"],"mappings":";;;AAGA,IAAME,IAAoB,GACpBC,IAA8B,MAAMD;AAc1CF,EAAIK,KAAKL,EAAIM,WACbN,EAAIO,
|
|
1
|
+
{"version":3,"file":"toDecimal.js","names":["Big","removeTrailingZeros","DECIMAL_PRECISION","TEN_POWER_DECIMAL_PRECISION","MAX_DECIMAL_PLACES","RM","roundDown","DP","toDecimal","number","Number","isNaN","isFinite","big","toFixed","toPrecision","toDecimalTrimmed","undefined","decimal"],"sources":["../../../src/lib/utils/toDecimal.ts"],"sourcesContent":["import Big from \"big.js\";\nimport { removeTrailingZeros } from \"./removeZeroDecimals\";\n\nconst DECIMAL_PRECISION = 6;\nconst TEN_POWER_DECIMAL_PRECISION = 10 ** DECIMAL_PRECISION;\n\nconst MAX_DECIMAL_PLACES = 30;\n\n/*\n Let's set the rounding mode to round down.\n\n The reason its because the div function in Big always applies rounding,\n so we want it to round below the user balance (otherwise swap could fail)\n\n Also, let's set decimal places to 30, the reason is that the default on Big is 20\n and there are tokens that have 18 decimals (i.e ETH) and if a user wants to trade\n 0.0001 ETH, we wont have the entire value when converting it to decimals (WEI).\n*/\nBig.RM = Big.roundDown; // ex: 1.23456789 -> 1.234567\nBig.DP = MAX_DECIMAL_PLACES;\n\n/*\n Let's be careful about which rounding mode we use with `Big.toFixed()`:\n\n If the value of this Big number in normal notation has more digits to the right of the decimal point than is specified by dp, \n the return value will be rounded to dp decimal places using rounding mode rm.\n\n If the value of this Big number in normal notation has fewer fraction digits then is specified by dp,\n the return value will be appended with zeros accordingly.\n*/\n\nexport const toDecimal = (number: number): string => {\n if (Number.isNaN(number) || !Number.isFinite(number)) return \"\";\n const big = Big(number);\n\n if (number > TEN_POWER_DECIMAL_PRECISION) return big.toFixed(0); // avoid e-notation for large numbers\n\n if (number > 0 && number < 1 / TEN_POWER_DECIMAL_PRECISION)\n return big.toFixed(); // avoid e-notation for small numbers\n\n return big.toPrecision(DECIMAL_PRECISION);\n};\n\n/*\n Same as toDecimal, but removes trailing zeros.\n*/\nexport const toDecimalTrimmed = (number?: number | bigint | string): string => {\n if (number === undefined) return \"\";\n\n const decimal = toDecimal(Number(number));\n return removeTrailingZeros(decimal);\n};\n"],"mappings":";;;AAGA,IAAME,IAAoB,GACpBC,IAA8B,MAAMD;AAc1CF,EAAIK,KAAKL,EAAIM,WACbN,EAAIO,KAAKH;AAYT,IAAaI,KAAaC,MAA2B;CACnD,IAAIC,OAAOC,MAAMF,EAAO,IAAI,CAACC,OAAOE,SAASH,EAAO,EAAE,OAAO;CAC7D,IAAMI,IAAMb,EAAIS,EAAO;CAOvB,OALIA,IAASN,IAAoCU,EAAIC,QAAQ,EAAE,GAE3DL,IAAS,KAAKA,IAAS,IAAIN,IACtBU,EAAIC,SAAS,GAEfD,EAAIE,YAAYb,EAAkB;GAM9Bc,KAAoBP,MAC3BA,MAAWQ,KAAAA,IAAkB,KAG1BhB,EADSO,EAAUE,OAAOD,EAAO,CACbS,CAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toasts.js","names":["CustomToast","toast","Hash","TransactionReceipt","constructExplorerOrderDetailsLink","constructTxLinkForChain","CallsReceipt","SupportedChainId","getStandaloneTxHash","DeltaAuction","ToastPromiseData","NonNullable","Parameters","promise","T","OrderSentObject","order","lastOrderState","Promise","addTxToast","transactionHash","_transactionHash","receiptPromise","chainId","toastId","crypto","randomUUID","_detailsLink","txHash","undefined","toastOptions","id","loading","success","receipt","detailsLink","error","addDeltaOrderToast","orderSent","customToastProps"],"sources":["../../../src/lib/utils/toasts.tsx"],"sourcesContent":["import { CustomToast } from \"@/components/widget/Toasts/CustomToast\";\nimport { toast } from \"sonner\";\nimport { type Hash, type TransactionReceipt } from \"viem\";\nimport {\n constructExplorerOrderDetailsLink,\n constructTxLinkForChain,\n} from \"./explorer\";\nimport type { CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport type { SupportedChainId } from \"../web3/wagmi/types\";\nimport { getStandaloneTxHash } from \"@/transactions/hash\";\nimport type { DeltaAuction } from \"@velora-dex/sdk\";\n\ntype ToastPromiseData<T> = NonNullable<Parameters<typeof toast.promise<T>>[1]>;\n\nexport type OrderSentObject = {\n order: DeltaAuction;\n lastOrderState: Promise<DeltaAuction>;\n};\n\nexport function addTxToast({\n transactionHash: _transactionHash,\n receiptPromise,\n chainId,\n}: {\n chainId: SupportedChainId;\n receiptPromise: Promise<TransactionReceipt | CallsReceipt | undefined>;\n transactionHash?: Hash;\n}) {\n const toastId = crypto.randomUUID();\n\n const transactionHash = getStandaloneTxHash({\n transactionHash: _transactionHash,\n });\n const _detailsLink = transactionHash\n ? constructTxLinkForChain({ chainId, txHash: transactionHash })\n : undefined;\n\n const toastOptions: ToastPromiseData<\n TransactionReceipt | CallsReceipt | undefined\n > = {\n id: toastId,\n loading: (\n <CustomToast\n variant=\"loading\"\n label=\"Pending Transaction\"\n toastId={toastId}\n detailsLink={_detailsLink}\n />\n ),\n success: (receipt) => {\n let detailsLink = _detailsLink;\n if (!detailsLink && receipt) {\n detailsLink = constructTxLinkForChain({\n chainId,\n txHash: receipt.transactionHash,\n });\n }\n\n return (\n <CustomToast\n variant=\"success\"\n label=\"Transaction Confirmed\"\n toastId={toastId}\n detailsLink={detailsLink}\n />\n );\n },\n error: (\n <CustomToast\n variant=\"error\"\n label=\"Transaction Failed\"\n toastId={toastId}\n detailsLink={_detailsLink}\n />\n ),\n };\n\n toast.promise(receiptPromise, toastOptions);\n}\n\nexport function addDeltaOrderToast(orderSent: OrderSentObject) {\n const customToastProps = {\n toastId: crypto.randomUUID(),\n detailsLink: constructExplorerOrderDetailsLink(orderSent.order.id),\n };\n\n const toastOptions = {\n id: customToastProps.toastId,\n loading: (\n <CustomToast\n variant=\"loading\"\n label=\"Pending Order\"\n {...customToastProps}\n />\n ),\n success: (\n <CustomToast\n variant=\"success\"\n label=\"Order Confirmed\"\n {...customToastProps}\n />\n ),\n error: (\n <CustomToast variant=\"error\" label=\"Order Failed\" {...customToastProps} />\n ),\n };\n\n toast.promise(orderSent.lastOrderState, toastOptions);\n}\n"],"mappings":";;;;;;;AAmBA,SAAgBmB,EAAW,EACzBC,iBAAiBC,GACjBC,mBACAC,cAKC;CACD,IAAMC,IAAUC,OAAOC,YAAY,EAE7BN,IAAkBZ,EAAoB,EAC1CY,iBAAiBC,GAClB,CAAC,EACIM,IAAeP,IACjBf,EAAwB;EAAEkB;EAASK,QAAQR;EAAiB,CAAC,GAC7DS,KAAAA,GAEEC,IAEF;EACFC,IAAIP;EACJQ,SACE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACGR;GACT,aAAaG;GAEhB,CAAA;EACDM,UAAUC,MAAY;GACpB,IAAIC,IAAcR;
|
|
1
|
+
{"version":3,"file":"toasts.js","names":["CustomToast","toast","Hash","TransactionReceipt","constructExplorerOrderDetailsLink","constructTxLinkForChain","CallsReceipt","SupportedChainId","getStandaloneTxHash","DeltaAuction","ToastPromiseData","NonNullable","Parameters","promise","T","OrderSentObject","order","lastOrderState","Promise","addTxToast","transactionHash","_transactionHash","receiptPromise","chainId","toastId","crypto","randomUUID","_detailsLink","txHash","undefined","toastOptions","id","loading","success","receipt","detailsLink","error","addDeltaOrderToast","orderSent","customToastProps"],"sources":["../../../src/lib/utils/toasts.tsx"],"sourcesContent":["import { CustomToast } from \"@/components/widget/Toasts/CustomToast\";\nimport { toast } from \"sonner\";\nimport { type Hash, type TransactionReceipt } from \"viem\";\nimport {\n constructExplorerOrderDetailsLink,\n constructTxLinkForChain,\n} from \"./explorer\";\nimport type { CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport type { SupportedChainId } from \"../web3/wagmi/types\";\nimport { getStandaloneTxHash } from \"@/transactions/hash\";\nimport type { DeltaAuction } from \"@velora-dex/sdk\";\n\ntype ToastPromiseData<T> = NonNullable<Parameters<typeof toast.promise<T>>[1]>;\n\nexport type OrderSentObject = {\n order: DeltaAuction;\n lastOrderState: Promise<DeltaAuction>;\n};\n\nexport function addTxToast({\n transactionHash: _transactionHash,\n receiptPromise,\n chainId,\n}: {\n chainId: SupportedChainId;\n receiptPromise: Promise<TransactionReceipt | CallsReceipt | undefined>;\n transactionHash?: Hash;\n}) {\n const toastId = crypto.randomUUID();\n\n const transactionHash = getStandaloneTxHash({\n transactionHash: _transactionHash,\n });\n const _detailsLink = transactionHash\n ? constructTxLinkForChain({ chainId, txHash: transactionHash })\n : undefined;\n\n const toastOptions: ToastPromiseData<\n TransactionReceipt | CallsReceipt | undefined\n > = {\n id: toastId,\n loading: (\n <CustomToast\n variant=\"loading\"\n label=\"Pending Transaction\"\n toastId={toastId}\n detailsLink={_detailsLink}\n />\n ),\n success: (receipt) => {\n let detailsLink = _detailsLink;\n if (!detailsLink && receipt) {\n detailsLink = constructTxLinkForChain({\n chainId,\n txHash: receipt.transactionHash,\n });\n }\n\n return (\n <CustomToast\n variant=\"success\"\n label=\"Transaction Confirmed\"\n toastId={toastId}\n detailsLink={detailsLink}\n />\n );\n },\n error: (\n <CustomToast\n variant=\"error\"\n label=\"Transaction Failed\"\n toastId={toastId}\n detailsLink={_detailsLink}\n />\n ),\n };\n\n toast.promise(receiptPromise, toastOptions);\n}\n\nexport function addDeltaOrderToast(orderSent: OrderSentObject) {\n const customToastProps = {\n toastId: crypto.randomUUID(),\n detailsLink: constructExplorerOrderDetailsLink(orderSent.order.id),\n };\n\n const toastOptions = {\n id: customToastProps.toastId,\n loading: (\n <CustomToast\n variant=\"loading\"\n label=\"Pending Order\"\n {...customToastProps}\n />\n ),\n success: (\n <CustomToast\n variant=\"success\"\n label=\"Order Confirmed\"\n {...customToastProps}\n />\n ),\n error: (\n <CustomToast variant=\"error\" label=\"Order Failed\" {...customToastProps} />\n ),\n };\n\n toast.promise(orderSent.lastOrderState, toastOptions);\n}\n"],"mappings":";;;;;;;AAmBA,SAAgBmB,EAAW,EACzBC,iBAAiBC,GACjBC,mBACAC,cAKC;CACD,IAAMC,IAAUC,OAAOC,YAAY,EAE7BN,IAAkBZ,EAAoB,EAC1CY,iBAAiBC,GAClB,CAAC,EACIM,IAAeP,IACjBf,EAAwB;EAAEkB;EAASK,QAAQR;EAAiB,CAAC,GAC7DS,KAAAA,GAEEC,IAEF;EACFC,IAAIP;EACJQ,SACE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACGR;GACT,aAAaG;GAEhB,CAAA;EACDM,UAAUC,MAAY;GACpB,IAAIC,IAAcR;GAQlB,OAPI,CAACQ,KAAeD,MAClBC,IAAc9B,EAAwB;IACpCkB;IACAK,QAAQM,EAAQd;IACjB,CAAC,GAIF,kBAAC,GAAD;IACE,SAAQ;IACR,OAAM;IACGI;IACIW;IACb,CAAA;;EAGNC,OACE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACGZ;GACT,aAAaG;GAAa,CAAA;EAG/B;CAED1B,EAAMY,QAAQS,GAAgBQ,EAAa;;AAG7C,SAAgBO,EAAmBC,GAA4B;CAC7D,IAAMC,IAAmB;EACvBf,SAASC,OAAOC,YAAY;EAC5BS,aAAa/B,EAAkCkC,EAAUtB,MAAMe,GAAE;EAClE,EAEKD,IAAe;EACnBC,IAAIQ,EAAiBf;EACrBQ,SACE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACN,GAAIO;GAEP,CAAA;EACDN,SACE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACN,GAAIM;GAEP,CAAA;EACDH,OACE,kBAAC,GAAD;GAAa,SAAQ;GAAQ,OAAM;GAAe,GAAIG;GAAiB,CAAA;EAE1E;CAEDtC,EAAMY,QAAQyB,EAAUrB,gBAAgBa,EAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tradeFlow.js","names":["MinTradeFlowToken","sanitizeTradeFlowToken","token","address","decimals","symbol","img","network"],"sources":["../../../src/lib/utils/tradeFlow.ts"],"sourcesContent":["import type { MinTradeFlowToken } from \"@/components/widget/TradeOverview\";\n\nexport function sanitizeTradeFlowToken(\n token: MinTradeFlowToken\n): MinTradeFlowToken {\n return {\n address: token.address,\n decimals: token.decimals,\n symbol: token.symbol,\n img: token.img,\n network: token.network,\n };\n}\n"],"mappings":";AAEA,SAAgBC,EACdC,GACmB;
|
|
1
|
+
{"version":3,"file":"tradeFlow.js","names":["MinTradeFlowToken","sanitizeTradeFlowToken","token","address","decimals","symbol","img","network"],"sources":["../../../src/lib/utils/tradeFlow.ts"],"sourcesContent":["import type { MinTradeFlowToken } from \"@/components/widget/TradeOverview\";\n\nexport function sanitizeTradeFlowToken(\n token: MinTradeFlowToken\n): MinTradeFlowToken {\n return {\n address: token.address,\n decimals: token.decimals,\n symbol: token.symbol,\n img: token.img,\n network: token.network,\n };\n}\n"],"mappings":";AAEA,SAAgBC,EACdC,GACmB;CACnB,OAAO;EACLC,SAASD,EAAMC;EACfC,UAAUF,EAAME;EAChBC,QAAQH,EAAMG;EACdC,KAAKJ,EAAMI;EACXC,SAASL,EAAMK;EAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionHandlers.js","names":["TransactionReceipt","CallsReceipt","BatchTransactionItem","TransactionWithoutMeta","StandaloneTransactionItem","addTx","addTxToast","TxSentObject","receiptPromise","Promise","CallsSentObject","handleTxSent","txData"],"sources":["../../../src/lib/utils/transactionHandlers.tsx"],"sourcesContent":["import { type TransactionReceipt } from \"viem\";\n\nimport type { CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport type {\n BatchTransactionItem,\n TransactionWithoutMeta,\n StandaloneTransactionItem,\n} from \"@/transactions/types\";\nimport { addTx } from \"@/transactions/state/transactionsActionAtom\";\nimport { addTxToast } from \"./toasts\";\n\nexport type TxSentObject = {\n receiptPromise: Promise<TransactionReceipt>;\n} & TransactionWithoutMeta<StandaloneTransactionItem>;\n\nexport type CallsSentObject = {\n receiptPromise: Promise<CallsReceipt | undefined>;\n} & TransactionWithoutMeta<BatchTransactionItem>;\n\nexport function handleTxSent({\n receiptPromise,\n ...txData\n}: TxSentObject | CallsSentObject): void {\n addTx(txData);\n addTxToast({\n ...txData,\n receiptPromise,\n });\n}\n"],"mappings":";;;;AAmBA,SAAgBW,EAAa,EAC3BH,mBACA,GAAGI,KACoC;
|
|
1
|
+
{"version":3,"file":"transactionHandlers.js","names":["TransactionReceipt","CallsReceipt","BatchTransactionItem","TransactionWithoutMeta","StandaloneTransactionItem","addTx","addTxToast","TxSentObject","receiptPromise","Promise","CallsSentObject","handleTxSent","txData"],"sources":["../../../src/lib/utils/transactionHandlers.tsx"],"sourcesContent":["import { type TransactionReceipt } from \"viem\";\n\nimport type { CallsReceipt } from \"@/hooks/batch/useAwaitCalls\";\nimport type {\n BatchTransactionItem,\n TransactionWithoutMeta,\n StandaloneTransactionItem,\n} from \"@/transactions/types\";\nimport { addTx } from \"@/transactions/state/transactionsActionAtom\";\nimport { addTxToast } from \"./toasts\";\n\nexport type TxSentObject = {\n receiptPromise: Promise<TransactionReceipt>;\n} & TransactionWithoutMeta<StandaloneTransactionItem>;\n\nexport type CallsSentObject = {\n receiptPromise: Promise<CallsReceipt | undefined>;\n} & TransactionWithoutMeta<BatchTransactionItem>;\n\nexport function handleTxSent({\n receiptPromise,\n ...txData\n}: TxSentObject | CallsSentObject): void {\n addTx(txData);\n addTxToast({\n ...txData,\n receiptPromise,\n });\n}\n"],"mappings":";;;;AAmBA,SAAgBW,EAAa,EAC3BH,mBACA,GAAGI,KACoC;CAEvCN,AADAD,EAAMO,EAAO,EACbN,EAAW;EACT,GAAGM;EACHJ;EACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuple.js","names":["assert","NonEmptyArray","isFilledArray","array","T","length","assertFilledArray","nonEmptyArrayOrUndefined","arr","undefined","isTupleOfLength","len","N","TupleOfLength","isTupleAtLeastLength","TupleOfLengthAtLeast","_TupleOf","R","_TupleOfAtLeast"],"sources":["../../../src/lib/utils/tuple.ts"],"sourcesContent":["import { assert, type NonEmptyArray } from \"ts-essentials\";\n\n// checks that array has at least one element\nexport const isFilledArray = <T>(array: T[]): array is NonEmptyArray<T> => {\n return array.length > 0;\n};\n\nexport function assertFilledArray<T>(\n array: T[]\n): asserts array is NonEmptyArray<T> {\n assert(isFilledArray(array), \"array must not be empty\");\n}\n\nexport function nonEmptyArrayOrUndefined<T>(\n arr?: T[]\n): NonEmptyArray<T> | undefined {\n if (!arr) return;\n return isFilledArray(arr) ? arr : undefined;\n}\n\nexport function isTupleOfLength<T, N extends number>(\n array: T[],\n len: N\n): array is TupleOfLength<T, N> {\n return array.length === len;\n}\n\nexport function isTupleAtLeastLength<T, N extends number>(\n array: T[],\n len: N\n): array is TupleOfLengthAtLeast<T, N> {\n return array.length >= len;\n}\n\n// based on https://stackoverflow.com/a/52490977/7316062\nexport type TupleOfLength<T, N extends number> = number extends N\n ? never\n : _TupleOf<T, N, []>;\ntype _TupleOf<T, N extends number, R extends unknown[]> = R[\"length\"] extends N\n ? R\n : _TupleOf<T, N, [T, ...R]>;\n\nexport type TupleOfLengthAtLeast<T, N extends number> = number extends N\n ? never\n : _TupleOfAtLeast<T, N, []>;\ntype _TupleOfAtLeast<\n T,\n N extends number,\n R extends unknown[],\n> = R[\"length\"] extends N ? [...R, ...T[]] : _TupleOfAtLeast<T, N, [T, ...R]>;\n"],"mappings":";;AAGA,IAAaE,KAAoBC,MACxBA,EAAME,SAAS;AASxB,SAAgBE,EACdC,GAC8B;
|
|
1
|
+
{"version":3,"file":"tuple.js","names":["assert","NonEmptyArray","isFilledArray","array","T","length","assertFilledArray","nonEmptyArrayOrUndefined","arr","undefined","isTupleOfLength","len","N","TupleOfLength","isTupleAtLeastLength","TupleOfLengthAtLeast","_TupleOf","R","_TupleOfAtLeast"],"sources":["../../../src/lib/utils/tuple.ts"],"sourcesContent":["import { assert, type NonEmptyArray } from \"ts-essentials\";\n\n// checks that array has at least one element\nexport const isFilledArray = <T>(array: T[]): array is NonEmptyArray<T> => {\n return array.length > 0;\n};\n\nexport function assertFilledArray<T>(\n array: T[]\n): asserts array is NonEmptyArray<T> {\n assert(isFilledArray(array), \"array must not be empty\");\n}\n\nexport function nonEmptyArrayOrUndefined<T>(\n arr?: T[]\n): NonEmptyArray<T> | undefined {\n if (!arr) return;\n return isFilledArray(arr) ? arr : undefined;\n}\n\nexport function isTupleOfLength<T, N extends number>(\n array: T[],\n len: N\n): array is TupleOfLength<T, N> {\n return array.length === len;\n}\n\nexport function isTupleAtLeastLength<T, N extends number>(\n array: T[],\n len: N\n): array is TupleOfLengthAtLeast<T, N> {\n return array.length >= len;\n}\n\n// based on https://stackoverflow.com/a/52490977/7316062\nexport type TupleOfLength<T, N extends number> = number extends N\n ? never\n : _TupleOf<T, N, []>;\ntype _TupleOf<T, N extends number, R extends unknown[]> = R[\"length\"] extends N\n ? R\n : _TupleOf<T, N, [T, ...R]>;\n\nexport type TupleOfLengthAtLeast<T, N extends number> = number extends N\n ? never\n : _TupleOfAtLeast<T, N, []>;\ntype _TupleOfAtLeast<\n T,\n N extends number,\n R extends unknown[],\n> = R[\"length\"] extends N ? [...R, ...T[]] : _TupleOfAtLeast<T, N, [T, ...R]>;\n"],"mappings":";;AAGA,IAAaE,KAAoBC,MACxBA,EAAME,SAAS;AASxB,SAAgBE,EACdC,GAC8B;CACzBA,OACL,OAAON,EAAcM,EAAI,GAAGA,IAAMC,KAAAA;;AAUpC,SAAgBK,EACdX,GACAQ,GACqC;CACrC,OAAOR,EAAME,UAAUM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twap.js","names":["DeltaOrBridgePrice","Big","millisecondsToSeconds","minutesToMilliseconds","TEN_MINUTES_MS","produceDeltaOrderDeadline","DeltaAuctionWithTwapOrder","getTwapChunkAmount","totalWei","numSlices","div","toFixed","getTotalTwapAmount","chunkWei","mul","getTwapAmountsFromPrice","price","srcAmount","destAmount","receivedDestAmount","produceTwapDeadlines","durationMin","orderDurationMs","orderDeadline","orderInterval","Math","floor","Number","getTwapAuctionDeadlines","order","createdAt","Pick","durationMs","interval","endsInMs","Date","getTime"],"sources":["../../../src/lib/utils/twap.ts"],"sourcesContent":["import type { DeltaOrBridgePrice } from \"@/hooks/swap/prices/types\";\nimport Big from \"big.js\";\nimport { millisecondsToSeconds, minutesToMilliseconds } from \"./time\";\nimport { TEN_MINUTES_MS } from \"../constants/time\";\nimport { produceDeltaOrderDeadline } from \"./delta\";\nimport type { DeltaAuctionWithTwapOrder } from \"@/hooks/swap/prices/delta/orders/types\";\n\nexport function getTwapChunkAmount({\n totalWei,\n numSlices,\n}: {\n totalWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || totalWei === \"0\") return totalWei;\n return Big(totalWei).div(numSlices).toFixed(0, 0); // roundDown to avoid overestimating\n}\n\nexport function getTotalTwapAmount({\n chunkWei,\n numSlices,\n}: {\n chunkWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || chunkWei === \"0\") return chunkWei;\n return Big(chunkWei).mul(numSlices).toFixed();\n}\n\nexport function getTwapAmountsFromPrice({\n price,\n numSlices,\n}: {\n price: DeltaOrBridgePrice;\n numSlices: number;\n}) {\n return {\n srcAmount: getTotalTwapAmount({ chunkWei: price.srcAmount, numSlices }),\n destAmount: getTotalTwapAmount({\n chunkWei: price.receivedDestAmount,\n numSlices,\n }),\n };\n}\nexport function produceTwapDeadlines({\n durationMin,\n numSlices,\n}: {\n durationMin: number;\n numSlices: number;\n}) {\n const orderDurationMs = minutesToMilliseconds(durationMin);\n const orderDeadline = produceDeltaOrderDeadline(\n // 10 min buffer for possible delays in order creation or slice executions\n orderDurationMs + TEN_MINUTES_MS\n );\n const orderInterval = Math.floor(\n millisecondsToSeconds(orderDurationMs) / numSlices\n );\n\n return {\n orderDeadline: Number(orderDeadline),\n orderInterval,\n };\n}\n\nexport function getTwapAuctionDeadlines({\n order,\n createdAt,\n}: Pick<DeltaAuctionWithTwapOrder, \"order\" | \"createdAt\">) {\n const durationMs = order.numSlices * order.interval * 1000;\n const endsInMs = new Date(createdAt).getTime() + durationMs;\n return { endsInMs, durationMs };\n}\n"],"mappings":";;;;;AAOA,SAAgBO,EAAmB,EACjCC,aACAC,gBAIS;
|
|
1
|
+
{"version":3,"file":"twap.js","names":["DeltaOrBridgePrice","Big","millisecondsToSeconds","minutesToMilliseconds","TEN_MINUTES_MS","produceDeltaOrderDeadline","DeltaAuctionWithTwapOrder","getTwapChunkAmount","totalWei","numSlices","div","toFixed","getTotalTwapAmount","chunkWei","mul","getTwapAmountsFromPrice","price","srcAmount","destAmount","receivedDestAmount","produceTwapDeadlines","durationMin","orderDurationMs","orderDeadline","orderInterval","Math","floor","Number","getTwapAuctionDeadlines","order","createdAt","Pick","durationMs","interval","endsInMs","Date","getTime"],"sources":["../../../src/lib/utils/twap.ts"],"sourcesContent":["import type { DeltaOrBridgePrice } from \"@/hooks/swap/prices/types\";\nimport Big from \"big.js\";\nimport { millisecondsToSeconds, minutesToMilliseconds } from \"./time\";\nimport { TEN_MINUTES_MS } from \"../constants/time\";\nimport { produceDeltaOrderDeadline } from \"./delta\";\nimport type { DeltaAuctionWithTwapOrder } from \"@/hooks/swap/prices/delta/orders/types\";\n\nexport function getTwapChunkAmount({\n totalWei,\n numSlices,\n}: {\n totalWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || totalWei === \"0\") return totalWei;\n return Big(totalWei).div(numSlices).toFixed(0, 0); // roundDown to avoid overestimating\n}\n\nexport function getTotalTwapAmount({\n chunkWei,\n numSlices,\n}: {\n chunkWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || chunkWei === \"0\") return chunkWei;\n return Big(chunkWei).mul(numSlices).toFixed();\n}\n\nexport function getTwapAmountsFromPrice({\n price,\n numSlices,\n}: {\n price: DeltaOrBridgePrice;\n numSlices: number;\n}) {\n return {\n srcAmount: getTotalTwapAmount({ chunkWei: price.srcAmount, numSlices }),\n destAmount: getTotalTwapAmount({\n chunkWei: price.receivedDestAmount,\n numSlices,\n }),\n };\n}\nexport function produceTwapDeadlines({\n durationMin,\n numSlices,\n}: {\n durationMin: number;\n numSlices: number;\n}) {\n const orderDurationMs = minutesToMilliseconds(durationMin);\n const orderDeadline = produceDeltaOrderDeadline(\n // 10 min buffer for possible delays in order creation or slice executions\n orderDurationMs + TEN_MINUTES_MS\n );\n const orderInterval = Math.floor(\n millisecondsToSeconds(orderDurationMs) / numSlices\n );\n\n return {\n orderDeadline: Number(orderDeadline),\n orderInterval,\n };\n}\n\nexport function getTwapAuctionDeadlines({\n order,\n createdAt,\n}: Pick<DeltaAuctionWithTwapOrder, \"order\" | \"createdAt\">) {\n const durationMs = order.numSlices * order.interval * 1000;\n const endsInMs = new Date(createdAt).getTime() + durationMs;\n return { endsInMs, durationMs };\n}\n"],"mappings":";;;;;AAOA,SAAgBO,EAAmB,EACjCC,aACAC,gBAIS;CAET,OADIA,KAAa,KAAKD,MAAa,MAAYA,IACxCP,EAAIO,EAAS,CAACE,IAAID,EAAU,CAACE,QAAQ,GAAG,EAAE;;AAGnD,SAAgBC,EAAmB,EACjCC,aACAJ,gBAIS;CAET,OADIA,KAAa,KAAKI,MAAa,MAAYA,IACxCZ,EAAIY,EAAS,CAACC,IAAIL,EAAU,CAACE,SAAS;;AAG/C,SAAgBI,EAAwB,EACtCC,UACAP,gBAIC;CACD,OAAO;EACLQ,WAAWL,EAAmB;GAAEC,UAAUG,EAAMC;GAAWR;GAAW,CAAC;EACvES,YAAYN,EAAmB;GAC7BC,UAAUG,EAAMG;GAChBV;GACD,CAAA;EACF;;AAEH,SAAgBW,EAAqB,EACnCC,gBACAZ,gBAIC;CACD,IAAMa,IAAkBnB,EAAsBkB,EAAY,EACpDE,IAAgBlB,EAEpBiB,IAAkBlB,EACnB,EACKoB,IAAgBC,KAAKC,MACzBxB,EAAsBoB,EAAgB,GAAGb,EAC1C;CAED,OAAO;EACLc,eAAeI,OAAOJ,EAAc;EACpCC;EACD;;AAGH,SAAgBI,EAAwB,EACtCC,UACAC,gBACyD;CACzD,IAAME,IAAaH,EAAMpB,YAAYoB,EAAMI,WAAW;CAEtD,OAAO;EAAEC,UADQ,IAAIC,KAAKL,EAAU,CAACM,SAAS,GAAGJ;EAC9BA;EAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDateNow.js","names":["useDateNow","Date","now"],"sources":["../../../src/lib/utils/useDateNow.ts"],"sourcesContent":["// workaround for react-compiler trying to memoize Date.now() result based on an unrelated cached value\nexport function useDateNow(): number {\n \"use no memo\";\n return Date.now();\n}\n"],"mappings":";AACA,SAAgBA,IAAqB;AACnC;
|
|
1
|
+
{"version":3,"file":"useDateNow.js","names":["useDateNow","Date","now"],"sources":["../../../src/lib/utils/useDateNow.ts"],"sourcesContent":["// workaround for react-compiler trying to memoize Date.now() result based on an unrelated cached value\nexport function useDateNow(): number {\n \"use no memo\";\n return Date.now();\n}\n"],"mappings":";AACA,SAAgBA,IAAqB;AACnC;CACA,OAAOC,KAAKC,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","names":["createConfig","createStorage","CreateConnectorFn","injected","safe","walletConnect","coinbaseWallet","chains","transports","isInIframe","LOCAL_STORAGE_PREFIX","connectors","delayConnector","projectId","import","meta","env","VITE_WALLET_CONNECT_ID","unshift","wagmiConfig","storage","window","localStorage","undefined","key","syncConnectedChain","batch","multicall","wait","Register","config","connectorFn","C","modifiedFn","connector","modified","connectCalled","connect","args","setup","getProvider","Error"],"sources":["../../../../src/lib/web3/wagmi/config.ts"],"sourcesContent":["import { createConfig, createStorage, type CreateConnectorFn } from \"wagmi\";\nimport {\n injected,\n // metaMask,\n safe,\n walletConnect,\n coinbaseWallet,\n} from \"wagmi/connectors\";\nimport { chains } from \"./constants\";\nimport { transports } from \"./transports\";\nimport { isInIframe } from \"./isInIframe\";\nimport { LOCAL_STORAGE_PREFIX } from \"@/lib/constants/storage\";\n\n// can add more connectors to cover wallets Privy doesn't support, but need to change UI to allow connection\nconst connectors = [\n delayConnector(\n walletConnect({\n projectId: import.meta.env.VITE_WALLET_CONNECT_ID,\n }) as CreateConnectorFn\n ),\n injected() as CreateConnectorFn,\n // metaMask() as CreateConnectorFn, // injected() detects metamask already\n coinbaseWallet() as CreateConnectorFn,\n // raw returned types result in\n // The inferred type of 'config' cannot be named without a reference to '.pnpm/@safe-global+safe-apps-provider@0.18.6_typescript@5.8.3/node_modules/@safe-global/safe-apps-provider'. This is likely not portable. A type annotation is necessary.\n\n // getPrivyWalletConnector(), // only CorssApp Privy connector is available, not our use case\n];\n// @TODO see how we can implement Ledger connector, borrow it from rainbowkit?\n\nif (isInIframe) {\n // when widget is in an App inside iframe, chances are we are in Safe web app,\n // allow Safe connector to be used.\n // we can't know if we are inside specifically Safe iframe until we try to connect, though.\n // A check for that is in isInsideSafeIframe.ts\n connectors.unshift(safe());\n}\n\nexport const wagmiConfig = createConfig({\n storage: createStorage({\n storage: typeof window !== \"undefined\" ? window.localStorage : undefined,\n key: `${LOCAL_STORAGE_PREFIX}_wagmi`,\n }),\n chains,\n connectors,\n transports,\n syncConnectedChain: false,\n batch: {\n multicall: {\n wait: 20,\n },\n },\n});\n\ndeclare module \"wagmi\" {\n interface Register {\n config: typeof wagmiConfig;\n }\n}\n\n/**\n * Normal flow:\n * 1. connector.setup() (optional func) is called on connector creation inside wagmi config\n * 1.1. connector.getProvider() is called inside connector.setup() (usually)\n * 2. connector.getProvider() is called inside reconnect in wagmi config\n * 3. connector.connect() is called on wallet connection\n * 3.1. connector.getProvider() is called inside connector.connect()\n *\n * if getProvider contains some singleton init logic, it may break if called again in a different context:\n * e.g. WalletConnect connection in Widget + in integrating app.\n * WConnectProvider.init() called inside Widget and in the integrating App can interfere with each other,\n * especially if inside Widget is called first.\n *\n * Delayed flow:\n * 1. connector.setup removed\n * 2. connector.getProvider() throws until connector.connect() is called (drawback:this disables reconnection on page load)\n * 3. connector.getProvider() is called on wallet connection inside connector.connect()\n */\nfunction delayConnector<C extends CreateConnectorFn>(connectorFn: C): C {\n const modifiedFn = ((config) => {\n const connector = connectorFn(config);\n const modified = {\n ...connector,\n };\n\n let connectCalled = false;\n\n modified.connect = async (...args) => {\n if (!connectCalled) {\n // first call to connect() will call setup() that was skipped in delayed flow\n connectCalled = true;\n await connector.setup?.(); // getProvvider is called inside setup(), at least in WalletConnect connector\n }\n return connector.connect(...args);\n };\n\n modified.getProvider = async (...args) => {\n // disallow provider specific logic until connect() is called explicitly\n if (!connectCalled) {\n throw new Error(\n \"Provider not available until connector.connect() is called\"\n );\n }\n return connector.getProvider(...args);\n };\n\n delete modified.setup;\n return modified;\n }) as C;\n\n return modifiedFn;\n}\n"],"mappings":";;;;;;;AAcA,IAAMW,IAAa;CACjBC,EACEP,EAAc,EACZQ,WAAAA,oCACD,CAAC,CACH;CACDV,GAAU;CAEVG,GAAgB;CAKjB;AAGGG,KAKFE,EAAWO,QAAQd,GAAM,CAAC;AAG5B,IAAae,IAAcnB,EAAa;CACtCoB,SAASnB,EAAc;EACrBmB,SAAS,OAAOC,SAAW,MAAcA,OAAOC,eAAeC,KAAAA;EAC/DC,KAAK,GAAGd,EAAoB;EAC7B,CAAC;CACFH;CACAI;CACAH;CACAiB,oBAAoB;CACpBC,OAAO,EACLC,WAAW,EACTC,MAAM,IACR,EACF;CACD,CAAC;AA0BF,SAAShB,EAA4CmB,GAAmB;
|
|
1
|
+
{"version":3,"file":"config.js","names":["createConfig","createStorage","CreateConnectorFn","injected","safe","walletConnect","coinbaseWallet","chains","transports","isInIframe","LOCAL_STORAGE_PREFIX","connectors","delayConnector","projectId","import","meta","env","VITE_WALLET_CONNECT_ID","unshift","wagmiConfig","storage","window","localStorage","undefined","key","syncConnectedChain","batch","multicall","wait","Register","config","connectorFn","C","modifiedFn","connector","modified","connectCalled","connect","args","setup","getProvider","Error"],"sources":["../../../../src/lib/web3/wagmi/config.ts"],"sourcesContent":["import { createConfig, createStorage, type CreateConnectorFn } from \"wagmi\";\nimport {\n injected,\n // metaMask,\n safe,\n walletConnect,\n coinbaseWallet,\n} from \"wagmi/connectors\";\nimport { chains } from \"./constants\";\nimport { transports } from \"./transports\";\nimport { isInIframe } from \"./isInIframe\";\nimport { LOCAL_STORAGE_PREFIX } from \"@/lib/constants/storage\";\n\n// can add more connectors to cover wallets Privy doesn't support, but need to change UI to allow connection\nconst connectors = [\n delayConnector(\n walletConnect({\n projectId: import.meta.env.VITE_WALLET_CONNECT_ID,\n }) as CreateConnectorFn\n ),\n injected() as CreateConnectorFn,\n // metaMask() as CreateConnectorFn, // injected() detects metamask already\n coinbaseWallet() as CreateConnectorFn,\n // raw returned types result in\n // The inferred type of 'config' cannot be named without a reference to '.pnpm/@safe-global+safe-apps-provider@0.18.6_typescript@5.8.3/node_modules/@safe-global/safe-apps-provider'. This is likely not portable. A type annotation is necessary.\n\n // getPrivyWalletConnector(), // only CorssApp Privy connector is available, not our use case\n];\n// @TODO see how we can implement Ledger connector, borrow it from rainbowkit?\n\nif (isInIframe) {\n // when widget is in an App inside iframe, chances are we are in Safe web app,\n // allow Safe connector to be used.\n // we can't know if we are inside specifically Safe iframe until we try to connect, though.\n // A check for that is in isInsideSafeIframe.ts\n connectors.unshift(safe());\n}\n\nexport const wagmiConfig = createConfig({\n storage: createStorage({\n storage: typeof window !== \"undefined\" ? window.localStorage : undefined,\n key: `${LOCAL_STORAGE_PREFIX}_wagmi`,\n }),\n chains,\n connectors,\n transports,\n syncConnectedChain: false,\n batch: {\n multicall: {\n wait: 20,\n },\n },\n});\n\ndeclare module \"wagmi\" {\n interface Register {\n config: typeof wagmiConfig;\n }\n}\n\n/**\n * Normal flow:\n * 1. connector.setup() (optional func) is called on connector creation inside wagmi config\n * 1.1. connector.getProvider() is called inside connector.setup() (usually)\n * 2. connector.getProvider() is called inside reconnect in wagmi config\n * 3. connector.connect() is called on wallet connection\n * 3.1. connector.getProvider() is called inside connector.connect()\n *\n * if getProvider contains some singleton init logic, it may break if called again in a different context:\n * e.g. WalletConnect connection in Widget + in integrating app.\n * WConnectProvider.init() called inside Widget and in the integrating App can interfere with each other,\n * especially if inside Widget is called first.\n *\n * Delayed flow:\n * 1. connector.setup removed\n * 2. connector.getProvider() throws until connector.connect() is called (drawback:this disables reconnection on page load)\n * 3. connector.getProvider() is called on wallet connection inside connector.connect()\n */\nfunction delayConnector<C extends CreateConnectorFn>(connectorFn: C): C {\n const modifiedFn = ((config) => {\n const connector = connectorFn(config);\n const modified = {\n ...connector,\n };\n\n let connectCalled = false;\n\n modified.connect = async (...args) => {\n if (!connectCalled) {\n // first call to connect() will call setup() that was skipped in delayed flow\n connectCalled = true;\n await connector.setup?.(); // getProvvider is called inside setup(), at least in WalletConnect connector\n }\n return connector.connect(...args);\n };\n\n modified.getProvider = async (...args) => {\n // disallow provider specific logic until connect() is called explicitly\n if (!connectCalled) {\n throw new Error(\n \"Provider not available until connector.connect() is called\"\n );\n }\n return connector.getProvider(...args);\n };\n\n delete modified.setup;\n return modified;\n }) as C;\n\n return modifiedFn;\n}\n"],"mappings":";;;;;;;AAcA,IAAMW,IAAa;CACjBC,EACEP,EAAc,EACZQ,WAAAA,oCACD,CAAC,CACH;CACDV,GAAU;CAEVG,GAAgB;CAKjB;AAGGG,KAKFE,EAAWO,QAAQd,GAAM,CAAC;AAG5B,IAAae,IAAcnB,EAAa;CACtCoB,SAASnB,EAAc;EACrBmB,SAAS,OAAOC,SAAW,MAAcA,OAAOC,eAAeC,KAAAA;EAC/DC,KAAK,GAAGd,EAAoB;EAC7B,CAAC;CACFH;CACAI;CACAH;CACAiB,oBAAoB;CACpBC,OAAO,EACLC,WAAW,EACTC,MAAM,IACR,EACF;CACD,CAAC;AA0BF,SAAShB,EAA4CmB,GAAmB;CAgCtE,SA/BqBD,MAAW;EAC9B,IAAMI,IAAYH,EAAYD,EAAO,EAC/BK,IAAW,EACf,GAAGD,GACJ,EAEGE,IAAgB;EAsBpB,OApBAD,EAASE,UAAU,OAAO,GAAGC,OACtBF,MAEHA,IAAgB,IAChB,MAAMF,EAAUK,SAAS,GAEpBL,EAAUG,QAAQ,GAAGC,EAAK,GAGnCH,EAASK,cAAc,OAAO,GAAGF,MAAS;GAExC,IAAI,CAACF,GACH,MAAUK,MACR,6DACD;GAEH,OAAOP,EAAUM,YAAY,GAAGF,EAAK;KAGvC,OAAOH,EAASI,OACTJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.js","names":["getAccount","wagmiConfig","atom","atomWithCompare","constructPropertiesEqual","isConnectorWithSafeProvider","isWalletConnectConnectorWithSafe","loadable","getMinAccount","address","chainId","connector","accountAtom","addressAtom","get","isConnectorWithSafeAsyncAtom","isConnectorWithSafeAsyncAtomLoadableAtom"],"sources":["../../../../src/lib/web3/wagmi/external.ts"],"sourcesContent":["import { getAccount } from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport { atom } from \"jotai\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual } from \"@/lib/utils\";\nimport { isConnectorWithSafeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\nimport { isWalletConnectConnectorWithSafe } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { loadable } from \"jotai/utils\";\n\nfunction getMinAccount() {\n const { address, chainId, connector } = getAccount(wagmiConfig);\n return { address, chainId, connector };\n}\n\nexport const accountAtom = atomWithCompare(\n getMinAccount(),\n constructPropertiesEqual([\"address\", \"chainId\", \"connector\"])\n);\n\nexport const addressAtom = atom((get) => get(accountAtom).address);\n\nconst isConnectorWithSafeAsyncAtom = atom(async (get) => {\n const { connector } = get(accountAtom);\n if (!connector) return false;\n return (\n isConnectorWithSafeProvider(connector) ||\n isWalletConnectConnectorWithSafe(connector)\n );\n});\n\nexport const isConnectorWithSafeAsyncAtomLoadableAtom = loadable(\n isConnectorWithSafeAsyncAtom\n);\n"],"mappings":";;;;;;;;;AASA,SAASQ,IAAgB;CACvB,IAAM,EAAEC,YAASC,YAASC,iBAAcX,EAAWC,EAAY;
|
|
1
|
+
{"version":3,"file":"external.js","names":["getAccount","wagmiConfig","atom","atomWithCompare","constructPropertiesEqual","isConnectorWithSafeProvider","isWalletConnectConnectorWithSafe","loadable","getMinAccount","address","chainId","connector","accountAtom","addressAtom","get","isConnectorWithSafeAsyncAtom","isConnectorWithSafeAsyncAtomLoadableAtom"],"sources":["../../../../src/lib/web3/wagmi/external.ts"],"sourcesContent":["import { getAccount } from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport { atom } from \"jotai\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual } from \"@/lib/utils\";\nimport { isConnectorWithSafeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\nimport { isWalletConnectConnectorWithSafe } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { loadable } from \"jotai/utils\";\n\nfunction getMinAccount() {\n const { address, chainId, connector } = getAccount(wagmiConfig);\n return { address, chainId, connector };\n}\n\nexport const accountAtom = atomWithCompare(\n getMinAccount(),\n constructPropertiesEqual([\"address\", \"chainId\", \"connector\"])\n);\n\nexport const addressAtom = atom((get) => get(accountAtom).address);\n\nconst isConnectorWithSafeAsyncAtom = atom(async (get) => {\n const { connector } = get(accountAtom);\n if (!connector) return false;\n return (\n isConnectorWithSafeProvider(connector) ||\n isWalletConnectConnectorWithSafe(connector)\n );\n});\n\nexport const isConnectorWithSafeAsyncAtomLoadableAtom = loadable(\n isConnectorWithSafeAsyncAtom\n);\n"],"mappings":";;;;;;;;;AASA,SAASQ,IAAgB;CACvB,IAAM,EAAEC,YAASC,YAASC,iBAAcX,EAAWC,EAAY;CAC/D,OAAO;EAAEQ;EAASC;EAASC;EAAW;;AAGxC,IAAaC,IAAcT,EACzBK,GAAe,EACfJ,EAAyB;CAAC;CAAW;CAAW;CAAY,CAC9D,CAAC,EAEYS,IAAcX,GAAMY,MAAQA,EAAIF,EAAY,CAACH,QAAQ,EAWrDO,IAA2CT,EATnBL,EAAK,OAAOY,MAAQ;CACvD,IAAM,EAAEH,iBAAcG,EAAIF,EAAY;CAEtC,OADKD,IAEHN,EAA4BM,EAAU,IACtCL,EAAiCK,EAAU,GAHtB;EAQvBI,CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInsideSafeIframe.js","names":["getLogger","useQuery","withTimeout","isInIframe","SafeInfo","safeAddress","chainId","threshold","owners","isReadOnly","SafeInfoExtended","nonce","implementation","modules","fallbackHandler","guard","version","SafeMessageEvent","id","data","T","success","error","SafeRequest","method","params","env","sdkVersion","logger","useSafeInfo","$","_c","t0","Symbol","for","t1","queryKey","queryFn","_temp","staleTime","Infinity","gcTime","initialData","undefined","isLoading","isSuccess","isError","error_0","t2","errorInstance","Error","safeInfo","requestSafeInfo","timeout","signal","info","AbortSignal","Promise","request","Date","getTime","toString","resolve","reject","listener","event","MessageEvent","window","removeEventListener","addEventListener","reason","parent","postMessage"],"sources":["../../../../src/lib/web3/wagmi/isInsideSafeIframe.ts"],"sourcesContent":["import { getLogger } from \"@/core/logger\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { withTimeout } from \"viem\";\nimport { isInIframe } from \"./isInIframe\";\n\ntype SafeInfo = {\n safeAddress: string;\n chainId: number;\n threshold: number;\n owners: string[];\n isReadOnly: boolean;\n};\n\ntype SafeInfoExtended = SafeInfo & {\n nonce: number;\n implementation: string;\n modules: string[] | null;\n fallbackHandler: string | null;\n guard: string | null;\n version: string | null;\n};\n\ntype SafeMessageEvent<T = unknown> = {\n id: string;\n data: T;\n version?: string;\n success: boolean;\n error?: string;\n};\n\ntype SafeRequest = {\n id: string;\n method: string;\n params: undefined;\n env: {\n sdkVersion: string;\n };\n};\n\nconst logger = getLogger(\"SafeWallet\");\n\nexport function useSafeInfo(): {\n data?: SafeInfoExtended | null;\n isLoading: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n} {\n const { data, isLoading, isSuccess, isError, error } = useQuery({\n queryKey: [\"safeInfo\"],\n queryFn: async () => {\n if (isInIframe) {\n const errorInstance = new Error(\"Safe info request timed out\");\n try {\n const safeInfo = await withTimeout(requestSafeInfo, {\n timeout: 200,\n signal: true,\n // non-safe iframe will never answer the request, so we need to timeout\n errorInstance,\n });\n\n logger.info(\"Safe info request successful\", safeInfo);\n\n return safeInfo;\n } catch (error) {\n if (error === errorInstance) {\n logger.info(\"Safe Wallet not detected\");\n return null;\n }\n\n logger.error(\"Safe info request failed\", error);\n throw error;\n }\n }\n\n return null;\n },\n staleTime: Infinity,\n gcTime: Infinity,\n // shortcut when we are not in iframe\n initialData: isInIframe ? undefined : null,\n });\n\n return { data, isLoading, isSuccess, isError, error };\n}\n\nfunction requestSafeInfo({\n signal,\n}: {\n signal: AbortSignal | null;\n}): Promise<SafeInfoExtended> {\n const request: SafeRequest = {\n id: new Date().getTime().toString(36),\n method: \"getSafeInfo\",\n params: undefined,\n env: {\n sdkVersion: \"9.1.0\", // latest version of Safe SDK\n },\n };\n\n return new Promise((resolve, reject) => {\n const listener = (\n event: MessageEvent<SafeMessageEvent<SafeInfoExtended>>\n ) => {\n if (event.data?.id === request.id) {\n window.removeEventListener(\"message\", listener);\n if (event.data.success) {\n resolve(event.data.data);\n } else {\n reject(new Error(event.data.error));\n }\n }\n };\n\n signal?.addEventListener(\"abort\", () => {\n window.removeEventListener(\"message\", listener);\n reject(signal.reason);\n });\n\n window.addEventListener(\"message\", listener);\n\n // If inside Safe iframe, Safe web app will respond to the request\n window.parent.postMessage(request, \"*\");\n });\n}\n"],"mappings":";;;;;;AAuCA,IAAM4B,IAAS5B,EAAU,aAAa;AAEtC,SAAO6B,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;
|
|
1
|
+
{"version":3,"file":"isInsideSafeIframe.js","names":["getLogger","useQuery","withTimeout","isInIframe","SafeInfo","safeAddress","chainId","threshold","owners","isReadOnly","SafeInfoExtended","nonce","implementation","modules","fallbackHandler","guard","version","SafeMessageEvent","id","data","T","success","error","SafeRequest","method","params","env","sdkVersion","logger","useSafeInfo","$","_c","t0","Symbol","for","t1","queryKey","queryFn","_temp","staleTime","Infinity","gcTime","initialData","undefined","isLoading","isSuccess","isError","error_0","t2","errorInstance","Error","safeInfo","requestSafeInfo","timeout","signal","info","AbortSignal","Promise","request","Date","getTime","toString","resolve","reject","listener","event","MessageEvent","window","removeEventListener","addEventListener","reason","parent","postMessage"],"sources":["../../../../src/lib/web3/wagmi/isInsideSafeIframe.ts"],"sourcesContent":["import { getLogger } from \"@/core/logger\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { withTimeout } from \"viem\";\nimport { isInIframe } from \"./isInIframe\";\n\ntype SafeInfo = {\n safeAddress: string;\n chainId: number;\n threshold: number;\n owners: string[];\n isReadOnly: boolean;\n};\n\ntype SafeInfoExtended = SafeInfo & {\n nonce: number;\n implementation: string;\n modules: string[] | null;\n fallbackHandler: string | null;\n guard: string | null;\n version: string | null;\n};\n\ntype SafeMessageEvent<T = unknown> = {\n id: string;\n data: T;\n version?: string;\n success: boolean;\n error?: string;\n};\n\ntype SafeRequest = {\n id: string;\n method: string;\n params: undefined;\n env: {\n sdkVersion: string;\n };\n};\n\nconst logger = getLogger(\"SafeWallet\");\n\nexport function useSafeInfo(): {\n data?: SafeInfoExtended | null;\n isLoading: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n} {\n const { data, isLoading, isSuccess, isError, error } = useQuery({\n queryKey: [\"safeInfo\"],\n queryFn: async () => {\n if (isInIframe) {\n const errorInstance = new Error(\"Safe info request timed out\");\n try {\n const safeInfo = await withTimeout(requestSafeInfo, {\n timeout: 200,\n signal: true,\n // non-safe iframe will never answer the request, so we need to timeout\n errorInstance,\n });\n\n logger.info(\"Safe info request successful\", safeInfo);\n\n return safeInfo;\n } catch (error) {\n if (error === errorInstance) {\n logger.info(\"Safe Wallet not detected\");\n return null;\n }\n\n logger.error(\"Safe info request failed\", error);\n throw error;\n }\n }\n\n return null;\n },\n staleTime: Infinity,\n gcTime: Infinity,\n // shortcut when we are not in iframe\n initialData: isInIframe ? undefined : null,\n });\n\n return { data, isLoading, isSuccess, isError, error };\n}\n\nfunction requestSafeInfo({\n signal,\n}: {\n signal: AbortSignal | null;\n}): Promise<SafeInfoExtended> {\n const request: SafeRequest = {\n id: new Date().getTime().toString(36),\n method: \"getSafeInfo\",\n params: undefined,\n env: {\n sdkVersion: \"9.1.0\", // latest version of Safe SDK\n },\n };\n\n return new Promise((resolve, reject) => {\n const listener = (\n event: MessageEvent<SafeMessageEvent<SafeInfoExtended>>\n ) => {\n if (event.data?.id === request.id) {\n window.removeEventListener(\"message\", listener);\n if (event.data.success) {\n resolve(event.data.data);\n } else {\n reject(new Error(event.data.error));\n }\n }\n };\n\n signal?.addEventListener(\"abort\", () => {\n window.removeEventListener(\"message\", listener);\n reject(signal.reason);\n });\n\n window.addEventListener(\"message\", listener);\n\n // If inside Safe iframe, Safe web app will respond to the request\n window.parent.postMessage(request, \"*\");\n });\n}\n"],"mappings":";;;;;;AAuCA,IAAM4B,IAAS5B,EAAU,aAAa;AAEtC,SAAO6B,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,4BAAA,IAQOF,IAAA,CAAC,WAAW,EAAAF,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAK;CAAA,AAAAL,EAAA,OAAAG,OAAAC,IAAA,4BAAA,IADwCC,IAAA;EAAAC,UACpDJ;EAAYK,SACbC;EA0BRC,WACUC;EAAQC,QACXD;EAAQE,aAEHvC,IAAAwC,KAAAA,IAAA;EACd,EAAAb,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAjCD,IAAA,EAAAX,SAAAyB,cAAAC,cAAAC,YAAAxB,OAAAyB,MAAuD9C,EAASkC,EAiC9D,EAACa;CAEkD,OAFlDlB,EAAA,OAAAX,KAAAW,EAAA,OAAAiB,KAAAjB,EAAA,OAAAgB,KAAAhB,EAAA,OAAAc,KAAAd,EAAA,OAAAe,KAEIG,IAAA;EAAA7B;EAAAyB;EAAAC;EAAAC;EAAAxB,OAAuCA;EAAO,EAAAQ,EAAA,KAAAX,GAAAW,EAAA,KAAAiB,GAAAjB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAc,GAAAd,EAAA,KAAAe,GAAAf,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAA9CkB;;AA1CF,eAAAV,IAAA;CAUD,IAAInC,GAAU;EACZ,IAAA8C,IAAsB,gBAAIC,MAAM,8BAA8B;EAC9D,IAAA;GACE,IAAAC,IAAiB,MAAMjD,EAAYkD,GAAiB;IAAAC,SACzC;IAAGC,QACJ;IAAIL;IAGb,CAAC;GAEmD,OAArDrB,EAAM2B,KAAM,gCAAgCJ,EAAS,EAE9CA;WAAQnB,GAAA;GACRV,IAAAA,IAAAA;GACP,IAAIA,MAAU2B,GAC2B,OAAvCrB,EAAM2B,KAAM,2BAA2B,EAChC;GAIT,MADA3B,EAAMN,MAAO,4BAA4BA,EAAM,EACzCA;;;CAET,OAEM;;AAWb,SAAS8B,EAAgB,EACvBE,aAG4B;CAC5B,IAAMI,IAAuB;EAC3BxC,qBAAI,IAAIyC,MAAM,EAACC,SAAS,CAACC,SAAS,GAAG;EACrCrC,QAAQ;EACRC,QAAQkB,KAAAA;EACRjB,KAAK,EACHC,YAAY,SACd;EACD;CAED,OAAO,IAAI8B,SAASK,GAASC,MAAW;EACtC,IAAMC,KACJC,MACG;GACH,AAAIA,EAAM9C,MAAMD,OAAOwC,EAAQxC,OAC7BiD,OAAOC,oBAAoB,WAAWJ,EAAS,EAC3CC,EAAM9C,KAAKE,UACbyC,EAAQG,EAAM9C,KAAKA,KAAK,GAExB4C,EAAWb,MAAMe,EAAM9C,KAAKG,MAAM,CAAC;;EAazC6C,AARAb,GAAQe,iBAAiB,eAAe;GAEtCN,AADAI,OAAOC,oBAAoB,WAAWJ,EAAS,EAC/CD,EAAOT,EAAOgB,OAAO;IACrB,EAEFH,OAAOE,iBAAiB,WAAWL,EAAS,EAG5CG,OAAOI,OAAOC,YAAYd,GAAS,IAAI;GACvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchChain.js","names":["wagmi","wagmiConfig","SupportedChainId","isConnectorWithSafeIframeProvider","switchChain","chainId","connector","isConnected","getAccount","isSafeIframeProvider","setState","prev"],"sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"sourcesContent":["import * as wagmi from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport type { SupportedChainId } from \"./types\";\nimport { isConnectorWithSafeIframeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\n\nexport async function switchChain({ chainId }: { chainId: SupportedChainId }) {\n const { connector, isConnected } = wagmi.getAccount(wagmiConfig);\n\n // check if connected to Safe iframe provider (whether through safe connector or as external provider)\n const isSafeIframeProvider =\n connector && isConnectorWithSafeIframeProvider(connector);\n\n // wagmi doesn't autoswitch state chainId with syncConnectedChain=false if connected\n if (isConnected) wagmiConfig.setState((prev) => ({ ...prev, chainId }));\n\n // safe doesn't support programmatic chain switching\n if (!isSafeIframeProvider) return wagmi.switchChain(wagmiConfig, { chainId });\n}\n"],"mappings":";;;;AAKA,eAAsBI,EAAY,EAAEC,cAA0C;CAC5E,IAAM,EAAEC,cAAWC,mBAAgBP,EAAMQ,WAAWP,EAAY,EAG1DQ,IACJH,KAAaH,EAAkCG,EAAU;
|
|
1
|
+
{"version":3,"file":"switchChain.js","names":["wagmi","wagmiConfig","SupportedChainId","isConnectorWithSafeIframeProvider","switchChain","chainId","connector","isConnected","getAccount","isSafeIframeProvider","setState","prev"],"sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"sourcesContent":["import * as wagmi from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport type { SupportedChainId } from \"./types\";\nimport { isConnectorWithSafeIframeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\n\nexport async function switchChain({ chainId }: { chainId: SupportedChainId }) {\n const { connector, isConnected } = wagmi.getAccount(wagmiConfig);\n\n // check if connected to Safe iframe provider (whether through safe connector or as external provider)\n const isSafeIframeProvider =\n connector && isConnectorWithSafeIframeProvider(connector);\n\n // wagmi doesn't autoswitch state chainId with syncConnectedChain=false if connected\n if (isConnected) wagmiConfig.setState((prev) => ({ ...prev, chainId }));\n\n // safe doesn't support programmatic chain switching\n if (!isSafeIframeProvider) return wagmi.switchChain(wagmiConfig, { chainId });\n}\n"],"mappings":";;;;AAKA,eAAsBI,EAAY,EAAEC,cAA0C;CAC5E,IAAM,EAAEC,cAAWC,mBAAgBP,EAAMQ,WAAWP,EAAY,EAG1DQ,IACJH,KAAaH,EAAkCG,EAAU;CAM3D,IAHIC,KAAaN,EAAYS,UAAUC,OAAU;EAAE,GAAGA;EAAMN;EAAS,EAAE,EAGnE,CAACI,GAAsB,OAAOT,EAAMI,YAAYH,GAAa,EAAEI,YAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["assert","supportedChainIds","SupportedChainId","isSupportedChainId","chainId","includes","assertSupportedChainId"],"sources":["../../../../src/lib/web3/wagmi/utils.ts"],"sourcesContent":["import { assert } from \"ts-essentials\";\nimport { supportedChainIds } from \"./constants\";\nimport type { SupportedChainId } from \"./types\";\n\nexport function isSupportedChainId(\n chainId: number\n): chainId is SupportedChainId {\n return supportedChainIds.includes(chainId as SupportedChainId);\n}\n\nexport function assertSupportedChainId(\n chainId?: number\n): asserts chainId is SupportedChainId {\n assert(\n chainId && isSupportedChainId(chainId),\n `Chain ID ${chainId} is not a supported chain ID.`\n );\n}\n"],"mappings":";;;AAIA,SAAgBG,EACdC,GAC6B;
|
|
1
|
+
{"version":3,"file":"utils.js","names":["assert","supportedChainIds","SupportedChainId","isSupportedChainId","chainId","includes","assertSupportedChainId"],"sources":["../../../../src/lib/web3/wagmi/utils.ts"],"sourcesContent":["import { assert } from \"ts-essentials\";\nimport { supportedChainIds } from \"./constants\";\nimport type { SupportedChainId } from \"./types\";\n\nexport function isSupportedChainId(\n chainId: number\n): chainId is SupportedChainId {\n return supportedChainIds.includes(chainId as SupportedChainId);\n}\n\nexport function assertSupportedChainId(\n chainId?: number\n): asserts chainId is SupportedChainId {\n assert(\n chainId && isSupportedChainId(chainId),\n `Chain ID ${chainId} is not a supported chain ID.`\n );\n}\n"],"mappings":";;;AAIA,SAAgBG,EACdC,GAC6B;CAC7B,OAAOH,EAAkBI,SAASD,EAA4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blacklist.js","names":["zeroAddress","BLACKLISTED_TOKENS","Set","isBlacklistedToken","token","address","name","has","toLowerCase","match"],"sources":["../../src/tokens/blacklist.ts"],"sourcesContent":["import { zeroAddress } from \"viem\";\n\nconst BLACKLISTED_TOKENS = new Set([\n \"0xdfe66b14d37c77f4e9b180ceb433d1b164f0281d\", // STETH == stakedETH by https://stakehound.com/\n \"0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000\", // ETH on optimism but redundant with actual eth\n \"0x240248628b7b6850352764c5dfa50d1592a033a8\", // POPS on Avalanche, from Swapsicle\n \"0x0000000000000000000000000000000000001010\", // MATIC (not a real Token, not Native MATIC, and not WMATIC) on Polygon\n \"0x0000000000000000000000000000000000000010\", // just in case\n zeroAddress, // just in case\n \"0xd2ac55ca3bbd2dd1e9936ec640dcb4b745fde759\", // BTC2x, leveraged token\n \"0x65c4c0517025ec0843c9146af266a2c5a2d148a2\", // ETH2x, leveraged token\n]);\n\nexport function isBlacklistedToken(token: {\n address: string;\n name?: string;\n}): boolean {\n return (\n BLACKLISTED_TOKENS.has(token.address.toLowerCase()) ||\n !!token?.name?.match(/leverage/i)\n );\n}\n"],"mappings":";;AAEA,IAAMC,IAAqB,IAAIC,IAAI;CACjC;CACA;CACA;CACA;CACA;CACAF;CACA;CACA;CACD,CAAC;AAEF,SAAgBG,EAAmBC,GAGvB;
|
|
1
|
+
{"version":3,"file":"blacklist.js","names":["zeroAddress","BLACKLISTED_TOKENS","Set","isBlacklistedToken","token","address","name","has","toLowerCase","match"],"sources":["../../src/tokens/blacklist.ts"],"sourcesContent":["import { zeroAddress } from \"viem\";\n\nconst BLACKLISTED_TOKENS = new Set([\n \"0xdfe66b14d37c77f4e9b180ceb433d1b164f0281d\", // STETH == stakedETH by https://stakehound.com/\n \"0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000\", // ETH on optimism but redundant with actual eth\n \"0x240248628b7b6850352764c5dfa50d1592a033a8\", // POPS on Avalanche, from Swapsicle\n \"0x0000000000000000000000000000000000001010\", // MATIC (not a real Token, not Native MATIC, and not WMATIC) on Polygon\n \"0x0000000000000000000000000000000000000010\", // just in case\n zeroAddress, // just in case\n \"0xd2ac55ca3bbd2dd1e9936ec640dcb4b745fde759\", // BTC2x, leveraged token\n \"0x65c4c0517025ec0843c9146af266a2c5a2d148a2\", // ETH2x, leveraged token\n]);\n\nexport function isBlacklistedToken(token: {\n address: string;\n name?: string;\n}): boolean {\n return (\n BLACKLISTED_TOKENS.has(token.address.toLowerCase()) ||\n !!token?.name?.match(/leverage/i)\n );\n}\n"],"mappings":";;AAEA,IAAMC,IAAqB,IAAIC,IAAI;CACjC;CACA;CACA;CACA;CACA;CACAF;CACA;CACA;CACD,CAAC;AAEF,SAAgBG,EAAmBC,GAGvB;CACV,OACEH,EAAmBM,IAAIH,EAAMC,QAAQG,aAAa,CAAC,IACnD,CAAC,CAACJ,GAAOE,MAAMG,MAAM,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constructor.js","names":["uriToHttpURL","constructToken","MinErc20Token","Token","TokenFromList","TokenInfoWithSupportedChainId","TokenListCompiled","wrappedNativeCurrency","wrappedNativeCurrencyLogo","SupportedChainId","Chain","ETH_ADDRESS","NATIVE_CURRENCY_ICON","chains","gatherObjectsByProp","constructTokenFromTokenInfoFactory","Pick","listInfo","N","address","decimals","symbol","chainId","logoURI","name","I","fromList","fromListURL","network","token","img","url","constructTokenFromFetchedTokenInfo","minTokenInfo","constructNativeToken","chainConfig","id","sdkToken","nativeCurrency","constructWrappedNativeToken","string","nativeTokensAllChains","map","nativeTokensByChainId","String","Record","wrappedNativeTokensAllChains","wrappedNativeTokensByChainId"],"sources":["../../src/tokens/constructor.ts"],"sourcesContent":["import { uriToHttpURL } from \"@/lib/ipfs\";\nimport { constructToken } from \"@velora-dex/sdk\";\n\nimport type { MinErc20Token, Token, TokenFromList } from \"./state/types\";\nimport {\n type TokenInfoWithSupportedChainId,\n type TokenListCompiled,\n} from \"./types\";\nimport {\n wrappedNativeCurrency,\n wrappedNativeCurrencyLogo,\n} from \"@/lib/constants/weth\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { ETH_ADDRESS, NATIVE_CURRENCY_ICON } from \"./constants\";\nimport { chains } from \"@/lib/web3/wagmi/constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\nexport const constructTokenFromTokenInfoFactory =\n <\n N extends Pick<TokenListCompiled, \"name\" | \"url\"> = Pick<\n TokenListCompiled,\n \"name\" | \"url\"\n >,\n >(\n listInfo: N\n ) =>\n <I extends TokenInfoWithSupportedChainId = TokenInfoWithSupportedChainId>({\n address,\n decimals,\n symbol,\n chainId,\n logoURI,\n name,\n }: I): TokenFromList & {\n fromList: N[\"name\"];\n fromListURL: N[\"url\"];\n address: I[\"address\"];\n decimals: I[\"decimals\"];\n symbol: I[\"symbol\"];\n name: I[\"name\"];\n network: I[\"chainId\"];\n } => {\n const token = constructToken({\n address,\n decimals,\n symbol,\n network: chainId,\n img: logoURI && uriToHttpURL(logoURI),\n });\n\n return {\n ...token,\n name,\n symbol,\n network: chainId,\n fromList: listInfo.name,\n fromListURL: listInfo.url,\n };\n };\n\nexport const constructTokenFromFetchedTokenInfo = (\n minTokenInfo: MinErc20Token\n): Token => {\n const token = constructToken(minTokenInfo);\n return { ...token, network: minTokenInfo.network };\n};\n\nexport function constructNativeToken(\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token {\n const sdkToken = constructToken({\n address: ETH_ADDRESS,\n symbol: chainConfig.nativeCurrency.symbol,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: NATIVE_CURRENCY_ICON[chainConfig.id],\n });\n\n return {\n ...sdkToken,\n name: chainConfig.nativeCurrency.name,\n network: chainConfig.id,\n };\n}\n\nexport const constructWrappedNativeToken = (\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token => {\n const sdkToken = constructToken({\n address: wrappedNativeCurrency[chainConfig.id],\n symbol: `W${chainConfig.nativeCurrency.symbol}`,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: wrappedNativeCurrencyLogo[chainConfig.id].string,\n });\n\n return {\n ...sdkToken,\n name: `Wrapped ${chainConfig.nativeCurrency.name}`,\n network: chainConfig.id,\n };\n};\n\nexport const nativeTokensAllChains = chains.map((chainConfig) => {\n return constructNativeToken(chainConfig);\n});\n\nexport const nativeTokensByChainId = gatherObjectsByProp(\n nativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n\nexport const wrappedNativeTokensAllChains = chains.map((chainConfig) => {\n return constructWrappedNativeToken(chainConfig);\n});\n\nexport const wrappedNativeTokensByChainId = gatherObjectsByProp(\n wrappedNativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n"],"mappings":";;;;;;;AAkBA,IAAae,KAOTE,OAEwE,EACxEE,YACAC,aACAC,WACAC,YACAC,YACAC,eAkBO;CACL,GATYvB,EAAe;EAC3BkB;EACAC;EACAC;EACAO,SAASN;EACTQ,KAAKP,KAAWvB,EAAauB,EAAO;EACrC,
|
|
1
|
+
{"version":3,"file":"constructor.js","names":["uriToHttpURL","constructToken","MinErc20Token","Token","TokenFromList","TokenInfoWithSupportedChainId","TokenListCompiled","wrappedNativeCurrency","wrappedNativeCurrencyLogo","SupportedChainId","Chain","ETH_ADDRESS","NATIVE_CURRENCY_ICON","chains","gatherObjectsByProp","constructTokenFromTokenInfoFactory","Pick","listInfo","N","address","decimals","symbol","chainId","logoURI","name","I","fromList","fromListURL","network","token","img","url","constructTokenFromFetchedTokenInfo","minTokenInfo","constructNativeToken","chainConfig","id","sdkToken","nativeCurrency","constructWrappedNativeToken","string","nativeTokensAllChains","map","nativeTokensByChainId","String","Record","wrappedNativeTokensAllChains","wrappedNativeTokensByChainId"],"sources":["../../src/tokens/constructor.ts"],"sourcesContent":["import { uriToHttpURL } from \"@/lib/ipfs\";\nimport { constructToken } from \"@velora-dex/sdk\";\n\nimport type { MinErc20Token, Token, TokenFromList } from \"./state/types\";\nimport {\n type TokenInfoWithSupportedChainId,\n type TokenListCompiled,\n} from \"./types\";\nimport {\n wrappedNativeCurrency,\n wrappedNativeCurrencyLogo,\n} from \"@/lib/constants/weth\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { ETH_ADDRESS, NATIVE_CURRENCY_ICON } from \"./constants\";\nimport { chains } from \"@/lib/web3/wagmi/constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\nexport const constructTokenFromTokenInfoFactory =\n <\n N extends Pick<TokenListCompiled, \"name\" | \"url\"> = Pick<\n TokenListCompiled,\n \"name\" | \"url\"\n >,\n >(\n listInfo: N\n ) =>\n <I extends TokenInfoWithSupportedChainId = TokenInfoWithSupportedChainId>({\n address,\n decimals,\n symbol,\n chainId,\n logoURI,\n name,\n }: I): TokenFromList & {\n fromList: N[\"name\"];\n fromListURL: N[\"url\"];\n address: I[\"address\"];\n decimals: I[\"decimals\"];\n symbol: I[\"symbol\"];\n name: I[\"name\"];\n network: I[\"chainId\"];\n } => {\n const token = constructToken({\n address,\n decimals,\n symbol,\n network: chainId,\n img: logoURI && uriToHttpURL(logoURI),\n });\n\n return {\n ...token,\n name,\n symbol,\n network: chainId,\n fromList: listInfo.name,\n fromListURL: listInfo.url,\n };\n };\n\nexport const constructTokenFromFetchedTokenInfo = (\n minTokenInfo: MinErc20Token\n): Token => {\n const token = constructToken(minTokenInfo);\n return { ...token, network: minTokenInfo.network };\n};\n\nexport function constructNativeToken(\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token {\n const sdkToken = constructToken({\n address: ETH_ADDRESS,\n symbol: chainConfig.nativeCurrency.symbol,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: NATIVE_CURRENCY_ICON[chainConfig.id],\n });\n\n return {\n ...sdkToken,\n name: chainConfig.nativeCurrency.name,\n network: chainConfig.id,\n };\n}\n\nexport const constructWrappedNativeToken = (\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token => {\n const sdkToken = constructToken({\n address: wrappedNativeCurrency[chainConfig.id],\n symbol: `W${chainConfig.nativeCurrency.symbol}`,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: wrappedNativeCurrencyLogo[chainConfig.id].string,\n });\n\n return {\n ...sdkToken,\n name: `Wrapped ${chainConfig.nativeCurrency.name}`,\n network: chainConfig.id,\n };\n};\n\nexport const nativeTokensAllChains = chains.map((chainConfig) => {\n return constructNativeToken(chainConfig);\n});\n\nexport const nativeTokensByChainId = gatherObjectsByProp(\n nativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n\nexport const wrappedNativeTokensAllChains = chains.map((chainConfig) => {\n return constructWrappedNativeToken(chainConfig);\n});\n\nexport const wrappedNativeTokensByChainId = gatherObjectsByProp(\n wrappedNativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n"],"mappings":";;;;;;;AAkBA,IAAae,KAOTE,OAEwE,EACxEE,YACAC,aACAC,WACAC,YACAC,YACAC,eAkBO;CACL,GATYvB,EAAe;EAC3BkB;EACAC;EACAC;EACAO,SAASN;EACTQ,KAAKP,KAAWvB,EAAauB,EAAO;EACrC,CAGIM;CACHL;CACAH;CACAO,SAASN;CACTI,UAAUT,EAASO;CACnBG,aAAaV,EAASc;CACvB,GAGQC,KACXC,OAGO;CAAE,GADKhC,EAAegC,EACjBJ;CAAOD,SAASK,EAAaL;CAAS;AAGpD,SAAgBM,EACdC,GAGO;CASP,OAAO;EACL,GATelC,EAAe;GAC9BkB,SAASR;GACTU,QAAQc,EAAYG,eAAejB;GACnCD,UAAUe,EAAYG,eAAelB;GACrCQ,SAASO,EAAYC;GACrBN,KAAKlB,EAAqBuB,EAAYC;GACvC,CAGIC;EACHb,MAAMW,EAAYG,eAAed;EACjCI,SAASO,EAAYC;EACtB;;AAGH,IAAaG,KACXJ,OAYO;CACL,GATelC,EAAe;EAC9BkB,SAASZ,EAAsB4B,EAAYC;EAC3Cf,QAAQ,IAAIc,EAAYG,eAAejB;EACvCD,UAAUe,EAAYG,eAAelB;EACrCQ,SAASO,EAAYC;EACrBN,KAAKtB,EAA0B2B,EAAYC,IAAII;EAChD,CAGIH;CACHb,MAAM,WAAWW,EAAYG,eAAed;CAC5CI,SAASO,EAAYC;CACtB,GAGUK,IAAwB5B,EAAO6B,KAAKP,MACxCD,EAAqBC,EAAY,CACxC,EAEWQ,IAAwB7B,EACnC2B,IACCZ,MAAUe,OAAOf,EAAMD,QAC1B,CAAC,EAMYmB,IAA+BjC,EAJAD,EAAO6B,KAAKP,MAC/CI,EAA4BJ,EAAY,CAI/CW,GACCjB,MAAUe,OAAOf,EAAMD,QAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultTokens.js","names":["SupportedChainId","Token","arbitrum","avalanche","base","bsc","gnosis","mainnet","optimism","polygon","unichain","wrappedNativeTokensByChainId","TradeMode","isETH","tokenFrom","Record","id","symbol","address","decimals","network","tokenType","mainConnector","connectors","img","name","tokenTo","pickDefaultTokenPair","chainId","tradeMode","from","to"],"sources":["../../src/tokens/defaultTokens.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport { wrappedNativeTokensByChainId } from \"./constructor\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { isETH } from \"./utils/eth\";\n\nconst tokenFrom: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n symbol: \"USDC\",\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n decimals: 6,\n network: mainnet.id,\n tokenType: \"ERC20\",\n mainConnector: \"ETH\",\n connectors: [\"ETH\"],\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [polygon.id]: {\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [bsc.id]: {\n address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\",\n decimals: 18,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"Binance Pegged USD Coin\",\n },\n [avalanche.id]: {\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [arbitrum.id]: {\n address: \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [optimism.id]: {\n address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [base.id]: {\n address: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [gnosis.id]: {\n address: \"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"XDAI\", \"USDT\"],\n network: gnosis.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [unichain.id]: {\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n};\n\nconst tokenTo: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: mainnet.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [polygon.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"POL\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/MATIC.svg\",\n },\n [bsc.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"BNB\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/BNB.svg\",\n },\n [avalanche.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"AVAX\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/AVAX.svg\",\n },\n [arbitrum.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [optimism.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [base.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [gnosis.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"XDAI\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"USDC\"],\n network: gnosis.id,\n img: \"https://assets.coingecko.com/coins/images/11062/thumb/Identity-Primary-DarkBG.png\",\n name: \"XDAI\",\n },\n [unichain.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/ETH.png\",\n name: \"Unichain ETH\",\n },\n};\n\nexport function pickDefaultTokenPair(\n chainId: SupportedChainId,\n tradeMode: TradeMode\n): [Token, Token] {\n const from = tokenFrom[chainId];\n let to = tokenTo[chainId];\n\n // otc doesn't support destToken=ETH\n if (tradeMode === \"otc\" && isETH(to)) {\n to = wrappedNativeTokensByChainId[chainId];\n }\n\n return [from, to];\n}\n"],"mappings":";;;;AAkBA,IAAMc,IAA6C;EAChDP,EAAQS,KAAK;EACZC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAASb,EAAQS;EACjBK,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBC,KAAK;EACLC,MAAM;EACP;EACAhB,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACLC,MAAM;EACP;EACApB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACLC,MAAM;EACP;EACAtB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACLC,MAAM;EACP;EACAvB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASlB,EAASc;EAClBQ,KAAK;EACLC,MAAM;EACP;EACAjB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASZ,EAASQ;EAClBQ,KAAK;EACLC,MAAM;EACP;EACArB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAAShB,EAAKY;EACdQ,KAAK;EACLC,MAAM;EACP;EACAnB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,QAAQ,OAAO;EAC5BH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD,EAEKC,IAA2C;EAC9CnB,EAAQS,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASb,EAAQS;EACjBQ,KAAK;EACN;EACAf,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACN;EACAnB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACN;EACArB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACN;EACAtB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASlB,EAASc;EAClBQ,KAAK;EACN;EACAhB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASZ,EAASQ;EAClBQ,KAAK;EACN;EACApB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAAShB,EAAKY;EACdQ,KAAK;EACN;EACAlB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO;EACpBH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD;AAED,SAAgBE,EACdC,GACAC,GACgB;CAChB,IAAMC,IAAOhB,EAAUc,IACnBG,IAAKL,EAAQE;
|
|
1
|
+
{"version":3,"file":"defaultTokens.js","names":["SupportedChainId","Token","arbitrum","avalanche","base","bsc","gnosis","mainnet","optimism","polygon","unichain","wrappedNativeTokensByChainId","TradeMode","isETH","tokenFrom","Record","id","symbol","address","decimals","network","tokenType","mainConnector","connectors","img","name","tokenTo","pickDefaultTokenPair","chainId","tradeMode","from","to"],"sources":["../../src/tokens/defaultTokens.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport { wrappedNativeTokensByChainId } from \"./constructor\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { isETH } from \"./utils/eth\";\n\nconst tokenFrom: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n symbol: \"USDC\",\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n decimals: 6,\n network: mainnet.id,\n tokenType: \"ERC20\",\n mainConnector: \"ETH\",\n connectors: [\"ETH\"],\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [polygon.id]: {\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [bsc.id]: {\n address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\",\n decimals: 18,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"Binance Pegged USD Coin\",\n },\n [avalanche.id]: {\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [arbitrum.id]: {\n address: \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [optimism.id]: {\n address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [base.id]: {\n address: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [gnosis.id]: {\n address: \"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"XDAI\", \"USDT\"],\n network: gnosis.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [unichain.id]: {\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n};\n\nconst tokenTo: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: mainnet.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [polygon.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"POL\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/MATIC.svg\",\n },\n [bsc.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"BNB\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/BNB.svg\",\n },\n [avalanche.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"AVAX\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/AVAX.svg\",\n },\n [arbitrum.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [optimism.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [base.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [gnosis.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"XDAI\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"USDC\"],\n network: gnosis.id,\n img: \"https://assets.coingecko.com/coins/images/11062/thumb/Identity-Primary-DarkBG.png\",\n name: \"XDAI\",\n },\n [unichain.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/ETH.png\",\n name: \"Unichain ETH\",\n },\n};\n\nexport function pickDefaultTokenPair(\n chainId: SupportedChainId,\n tradeMode: TradeMode\n): [Token, Token] {\n const from = tokenFrom[chainId];\n let to = tokenTo[chainId];\n\n // otc doesn't support destToken=ETH\n if (tradeMode === \"otc\" && isETH(to)) {\n to = wrappedNativeTokensByChainId[chainId];\n }\n\n return [from, to];\n}\n"],"mappings":";;;;AAkBA,IAAMc,IAA6C;EAChDP,EAAQS,KAAK;EACZC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAASb,EAAQS;EACjBK,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBC,KAAK;EACLC,MAAM;EACP;EACAhB,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACLC,MAAM;EACP;EACApB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACLC,MAAM;EACP;EACAtB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACLC,MAAM;EACP;EACAvB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASlB,EAASc;EAClBQ,KAAK;EACLC,MAAM;EACP;EACAjB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASZ,EAASQ;EAClBQ,KAAK;EACLC,MAAM;EACP;EACArB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAAShB,EAAKY;EACdQ,KAAK;EACLC,MAAM;EACP;EACAnB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,QAAQ,OAAO;EAC5BH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD,EAEKC,IAA2C;EAC9CnB,EAAQS,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASb,EAAQS;EACjBQ,KAAK;EACN;EACAf,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACN;EACAnB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACN;EACArB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACN;EACAtB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASlB,EAASc;EAClBQ,KAAK;EACN;EACAhB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASZ,EAASQ;EAClBQ,KAAK;EACN;EACApB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAAShB,EAAKY;EACdQ,KAAK;EACN;EACAlB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO;EACpBH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD;AAED,SAAgBE,EACdC,GACAC,GACgB;CAChB,IAAMC,IAAOhB,EAAUc,IACnBG,IAAKL,EAAQE;CAOjB,OAJIC,MAAc,SAAShB,EAAMkB,EAAG,KAClCA,IAAKpB,EAA6BiB,KAG7B,CAACE,GAAMC,EAAG"}
|
package/dist/tokens/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","names":["useAtomValue","TokenFromExtendedList","TokenFromList","useChainId","SupportedChainId","emptyArray","emptyObject","allTokensByChainAtom","MarkOptional","Address","useAllTokens","forcedChainId","chainId","_chainId","fromLists","listByChainId","tokens","useAllTokensMap","addressMap","useTokensFromListsAllChains","tokensFromAllChains","useTokensFromDisabledLists","disabledListByChainId"],"sources":["../../src/tokens/hooks.ts"],"sourcesContent":["import { useAtomValue } from \"@/core/store\";\nimport type { TokenFromExtendedList, TokenFromList } from \"./state/types\";\nimport { useChainId } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { allTokensByChainAtom } from \"./state/allTokensByChainAtom\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\nexport function useAllTokens(\n forcedChainId?: SupportedChainId\n): TokenFromExtendedList[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.tokens || emptyArray;\n}\n\nexport function useAllTokensMap(\n forcedChainId?: SupportedChainId\n): Record<Address, TokenFromExtendedList> {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.addressMap || emptyObject;\n}\n\nexport function useTokensFromListsAllChains(): MarkOptional<\n TokenFromList,\n \"fromListURL\"\n>[] {\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.tokensFromAllChains;\n}\n\nexport function useTokensFromDisabledLists(\n forcedChainId?: SupportedChainId\n): MarkOptional<TokenFromList, \"fromListURL\">[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.disabledListByChainId[_chainId]?.tokens || emptyArray;\n}\n"],"mappings":";;;;;AASA,SAAOU,EAAAC,GAAA;CAGL,IAAAC,IAAgBT,GAAY,EAC5BU,IAAiBF,KAAAC;
|
|
1
|
+
{"version":3,"file":"hooks.js","names":["useAtomValue","TokenFromExtendedList","TokenFromList","useChainId","SupportedChainId","emptyArray","emptyObject","allTokensByChainAtom","MarkOptional","Address","useAllTokens","forcedChainId","chainId","_chainId","fromLists","listByChainId","tokens","useAllTokensMap","addressMap","useTokensFromListsAllChains","tokensFromAllChains","useTokensFromDisabledLists","disabledListByChainId"],"sources":["../../src/tokens/hooks.ts"],"sourcesContent":["import { useAtomValue } from \"@/core/store\";\nimport type { TokenFromExtendedList, TokenFromList } from \"./state/types\";\nimport { useChainId } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { allTokensByChainAtom } from \"./state/allTokensByChainAtom\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\nexport function useAllTokens(\n forcedChainId?: SupportedChainId\n): TokenFromExtendedList[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.tokens || emptyArray;\n}\n\nexport function useAllTokensMap(\n forcedChainId?: SupportedChainId\n): Record<Address, TokenFromExtendedList> {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.addressMap || emptyObject;\n}\n\nexport function useTokensFromListsAllChains(): MarkOptional<\n TokenFromList,\n \"fromListURL\"\n>[] {\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.tokensFromAllChains;\n}\n\nexport function useTokensFromDisabledLists(\n forcedChainId?: SupportedChainId\n): MarkOptional<TokenFromList, \"fromListURL\">[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.disabledListByChainId[_chainId]?.tokens || emptyArray;\n}\n"],"mappings":";;;;;AASA,SAAOU,EAAAC,GAAA;CAGL,IAAAC,IAAgBT,GAAY,EAC5BU,IAAiBF,KAAAC;CAEoC,OAAnCZ,EAAaO,EAExBO,CAASC,cAAeF,IAAiBG,UAAzCX;;AAGT,SAAOY,EAAAN,GAAA;CAGL,IAAAC,IAAgBT,GAAY,EAC5BU,IAAiBF,KAAAC;CAEoC,OAAnCZ,EAAaO,EAExBO,CAASC,cAAeF,IAAqBK,cAA7CZ;;AAGT,SAAOa,IAAA;CAIgD,OAAnCnB,EAAaO,EAExBO,CAASM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["filterUnique","gatherObjectsByProp","isValidUrl","TokenListDownloadData","TokenLists","UniqueTokenLists","list","url","chainId","filename","defaultTokenLists","Array","from","Set","map","filter","url2TokenList","urlChain2TokenList","chainId2TokenListURLs","all","enabled","String","accumElem","acc","push","onByDefault","FALLBACK_CDN_URL"],"sources":["../../../src/tokens/lists/constants.ts"],"sourcesContent":["import { filterUnique, gatherObjectsByProp, isValidUrl } from \"@/lib/utils\";\nimport type { TokenListDownloadData } from \"./types\";\n\nimport TokenLists from \"./lists.json\";\n\n// filter out lists with duplicate `url` or `filename` so we don't load or fallback to potentially wrong list\n// which shouldn't happen as long as we keep `lists.json` lists unique.\n\n// In UI it makes sense to skip such malformed duplicate lists, rather than hard break\nconst UniqueTokenLists: TokenListDownloadData[] = filterUnique(\n // have to cast chainId: string to \"multi\"\n TokenLists as TokenListDownloadData[],\n // account for one list being used on multiple chains\n (list) => [list.url + list.chainId, list.filename + list.chainId]\n);\n\nexport const defaultTokenLists = Array.from(\n new Set(UniqueTokenLists.map((list) => list.url)) // URLs only\n).filter(isValidUrl); // validate just in case\nexport const url2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => list.url\n);\n\nexport const urlChain2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => `${list.url}@${list.chainId}`\n);\n\nexport const chainId2TokenListURLs = gatherObjectsByProp<\n TokenListDownloadData,\n { all: string[]; enabled: string[] }\n>(\n UniqueTokenLists,\n (list) => String(list.chainId),\n (list, accumElem) => {\n const acc = accumElem || { all: [], enabled: [] };\n // so far only auxiliary stablecoins list is multichain\n if (list.chainId === \"multi\") return acc;\n\n acc.all.push(list.url);\n\n if (list.onByDefault) {\n acc.enabled.push(list.url);\n }\n\n return acc;\n }\n);\n\nexport const FALLBACK_CDN_URL = \"https://cdn.velora.xyz/web/token-lists\";\n"],"mappings":";;;AASA,IAAMK,IAA4CL,EAEhDI,IAECE,MAAS,CAACA,EAAKC,MAAMD,EAAKE,SAASF,EAAKG,WAAWH,EAAKE,QAC3D,CAAC,EAEYE,IAAoBC,MAAMC,KACrC,IAAIC,IAAIR,EAAiBS,KAAKR,MAASA,EAAKC,IAAI,CAAC,CAClD,CAACQ,OAAOb,EAAW,EACPc,IAAgBf,EAC3BI,IACCC,MAASA,EAAKC,IAChB,EAEYU,IAAqBhB,EAChCI,IACCC,MAAS,GAAGA,EAAKC,IAAG,GAAID,EAAKE,UAC/B,EAEYU,IAAwBjB,EAInCI,IACCC,MAASe,OAAOf,EAAKE,QAAQ,GAC7BF,GAAMgB,MAAc;CACnB,IAAMC,IAAMD,KAAa;EAAEH,KAAK,EAAE;EAAEC,SAAS,EAAA;EAAI;
|
|
1
|
+
{"version":3,"file":"constants.js","names":["filterUnique","gatherObjectsByProp","isValidUrl","TokenListDownloadData","TokenLists","UniqueTokenLists","list","url","chainId","filename","defaultTokenLists","Array","from","Set","map","filter","url2TokenList","urlChain2TokenList","chainId2TokenListURLs","all","enabled","String","accumElem","acc","push","onByDefault","FALLBACK_CDN_URL"],"sources":["../../../src/tokens/lists/constants.ts"],"sourcesContent":["import { filterUnique, gatherObjectsByProp, isValidUrl } from \"@/lib/utils\";\nimport type { TokenListDownloadData } from \"./types\";\n\nimport TokenLists from \"./lists.json\";\n\n// filter out lists with duplicate `url` or `filename` so we don't load or fallback to potentially wrong list\n// which shouldn't happen as long as we keep `lists.json` lists unique.\n\n// In UI it makes sense to skip such malformed duplicate lists, rather than hard break\nconst UniqueTokenLists: TokenListDownloadData[] = filterUnique(\n // have to cast chainId: string to \"multi\"\n TokenLists as TokenListDownloadData[],\n // account for one list being used on multiple chains\n (list) => [list.url + list.chainId, list.filename + list.chainId]\n);\n\nexport const defaultTokenLists = Array.from(\n new Set(UniqueTokenLists.map((list) => list.url)) // URLs only\n).filter(isValidUrl); // validate just in case\nexport const url2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => list.url\n);\n\nexport const urlChain2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => `${list.url}@${list.chainId}`\n);\n\nexport const chainId2TokenListURLs = gatherObjectsByProp<\n TokenListDownloadData,\n { all: string[]; enabled: string[] }\n>(\n UniqueTokenLists,\n (list) => String(list.chainId),\n (list, accumElem) => {\n const acc = accumElem || { all: [], enabled: [] };\n // so far only auxiliary stablecoins list is multichain\n if (list.chainId === \"multi\") return acc;\n\n acc.all.push(list.url);\n\n if (list.onByDefault) {\n acc.enabled.push(list.url);\n }\n\n return acc;\n }\n);\n\nexport const FALLBACK_CDN_URL = \"https://cdn.velora.xyz/web/token-lists\";\n"],"mappings":";;;AASA,IAAMK,IAA4CL,EAEhDI,IAECE,MAAS,CAACA,EAAKC,MAAMD,EAAKE,SAASF,EAAKG,WAAWH,EAAKE,QAC3D,CAAC,EAEYE,IAAoBC,MAAMC,KACrC,IAAIC,IAAIR,EAAiBS,KAAKR,MAASA,EAAKC,IAAI,CAAC,CAClD,CAACQ,OAAOb,EAAW,EACPc,IAAgBf,EAC3BI,IACCC,MAASA,EAAKC,IAChB,EAEYU,IAAqBhB,EAChCI,IACCC,MAAS,GAAGA,EAAKC,IAAG,GAAID,EAAKE,UAC/B,EAEYU,IAAwBjB,EAInCI,IACCC,MAASe,OAAOf,EAAKE,QAAQ,GAC7BF,GAAMgB,MAAc;CACnB,IAAMC,IAAMD,KAAa;EAAEH,KAAK,EAAE;EAAEC,SAAS,EAAA;EAAI;CAUjD,OARId,EAAKE,YAAY,UAAgBe,KAErCA,EAAIJ,IAAIK,KAAKlB,EAAKC,IAAI,EAElBD,EAAKmB,eACPF,EAAIH,QAAQI,KAAKlB,EAAKC,IAAI,EAGrBgB;EAEV,EAEYG,IAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","names":["axios","TokenList","url2TokenList","FALLBACK_CDN_URL","downloadTokenListDataWithFallback","listURL","signal","AbortSignal","Promise","data","get","version","major","minor","patch","error","filename","url"],"sources":["../../../src/tokens/lists/download.ts"],"sourcesContent":["import axios from \"axios\";\nimport type { TokenList } from \"@uniswap/token-lists\";\n\nimport { url2TokenList, FALLBACK_CDN_URL } from \"./constants\";\n\nexport const downloadTokenListDataWithFallback = async (\n listURL: string,\n signal?: AbortSignal\n): Promise<TokenList> => {\n try {\n // from the direct url\n const { data } = await axios.get<TokenList>(listURL, {\n signal,\n });\n // @ts-expect-error malformed tokenList.version\n if (data.version.major === null) data.version.major = 0; // https://tokens.coingecko.com/xdai/all.json has `null`\n // @ts-expect-error malformed tokenList.version\n if (data.version.minor === null) data.version.minor = 0;\n // @ts-expect-error malformed tokenList.version\n if (data.version.patch === null) data.version.patch = 0;\n return data;\n } catch (error) {\n const { filename } = url2TokenList[listURL] || {};\n\n if (!filename) throw error;\n\n const url = `${FALLBACK_CDN_URL}/${filename}.json`;\n\n // from fallback on CDN\n const { data } = await axios.get<TokenList>(url, {\n signal,\n });\n\n return data;\n }\n};\n"],"mappings":";;;AAKA,IAAaI,IAAoC,OAC/CC,GACAC,MACuB;
|
|
1
|
+
{"version":3,"file":"download.js","names":["axios","TokenList","url2TokenList","FALLBACK_CDN_URL","downloadTokenListDataWithFallback","listURL","signal","AbortSignal","Promise","data","get","version","major","minor","patch","error","filename","url"],"sources":["../../../src/tokens/lists/download.ts"],"sourcesContent":["import axios from \"axios\";\nimport type { TokenList } from \"@uniswap/token-lists\";\n\nimport { url2TokenList, FALLBACK_CDN_URL } from \"./constants\";\n\nexport const downloadTokenListDataWithFallback = async (\n listURL: string,\n signal?: AbortSignal\n): Promise<TokenList> => {\n try {\n // from the direct url\n const { data } = await axios.get<TokenList>(listURL, {\n signal,\n });\n // @ts-expect-error malformed tokenList.version\n if (data.version.major === null) data.version.major = 0; // https://tokens.coingecko.com/xdai/all.json has `null`\n // @ts-expect-error malformed tokenList.version\n if (data.version.minor === null) data.version.minor = 0;\n // @ts-expect-error malformed tokenList.version\n if (data.version.patch === null) data.version.patch = 0;\n return data;\n } catch (error) {\n const { filename } = url2TokenList[listURL] || {};\n\n if (!filename) throw error;\n\n const url = `${FALLBACK_CDN_URL}/${filename}.json`;\n\n // from fallback on CDN\n const { data } = await axios.get<TokenList>(url, {\n signal,\n });\n\n return data;\n }\n};\n"],"mappings":";;;AAKA,IAAaI,IAAoC,OAC/CC,GACAC,MACuB;CACvB,IAAI;EAEF,IAAM,EAAEG,YAAS,MAAMT,EAAMU,IAAeL,GAAS,EACnDC,WACD,CAAC;EAOF,OALIG,EAAKE,QAAQC,UAAU,SAAMH,EAAKE,QAAQC,QAAQ,IAElDH,EAAKE,QAAQE,UAAU,SAAMJ,EAAKE,QAAQE,QAAQ,IAElDJ,EAAKE,QAAQG,UAAU,SAAML,EAAKE,QAAQG,QAAQ,IAC/CL;UACAM,GAAO;EACd,IAAM,EAAEC,gBAAad,EAAcG,MAAY,EAAE;EAEjD,IAAI,CAACW,GAAU,MAAMD;EAErB,IAAME,IAAM,GAAGd,EAAgB,GAAIa,EAAQ,QAGrC,EAAEP,YAAS,MAAMT,EAAMU,IAAeO,GAAK,EAC/CX,WACD,CAAC;EAEF,OAAOG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","names":["jotaiStore","queryClient","produceSingleQueryOptionMin","atomEffect","addTokenListsAtom","constructedTokensByURLAtom","tokenListUrlsAtom","useAtomValue","atom","addedUrlsSet","Set","addTokenList","url","has","queryOptions","tokenList","ensureQueryData","add","available","set","addTokenListEffect","get","forEach","useActivateEffects","allTokensListsFetchedSuccesfully","tokenListUrls","length","constructedTokensByURL","every","undefined","useAllTokensListsFetched"],"sources":["../../../../src/tokens/lists/state/effects.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { produceSingleQueryOptionMin } from \"@/tokens/queries\";\nimport { atomEffect } from \"jotai-effect\";\nimport { addTokenListsAtom } from \"./tokenListsActionsAtom\";\nimport {\n constructedTokensByURLAtom,\n tokenListUrlsAtom,\n} from \"./tokenListsStateAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { atom } from \"jotai\";\n\nconst addedUrlsSet = new Set<string>();\n\nasync function addTokenList(url: string) {\n // list already in store\n if (addedUrlsSet.has(url)) return;\n\n // fetch token list or get from cache\n const queryOptions = produceSingleQueryOptionMin(url);\n const tokenList = await queryClient.ensureQueryData(queryOptions);\n\n // add url to set\n addedUrlsSet.add(url);\n\n // add to state once per fetched list\n if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);\n}\n\nconst addTokenListEffect = atomEffect((get) => {\n get(tokenListUrlsAtom).forEach(addTokenList);\n});\n\nexport function useActivateEffects() {\n useAtomValue(addTokenListEffect);\n}\n\nconst allTokensListsFetchedSuccesfully = atom<boolean>((get) => {\n const tokenListUrls = get(tokenListUrlsAtom);\n if (tokenListUrls.length === 0) return false;\n const constructedTokensByURL = get(constructedTokensByURLAtom);\n return tokenListUrls.every(\n (url) => constructedTokensByURL[url] !== undefined\n );\n});\n\nexport const useAllTokensListsFetched = () => {\n return useAtomValue(allTokensListsFetchedSuccesfully);\n};\n"],"mappings":";;;;;;;;AAYA,IAAMS,oBAAe,IAAIC,KAAa;AAEtC,eAAeC,EAAaC,GAAa;
|
|
1
|
+
{"version":3,"file":"effects.js","names":["jotaiStore","queryClient","produceSingleQueryOptionMin","atomEffect","addTokenListsAtom","constructedTokensByURLAtom","tokenListUrlsAtom","useAtomValue","atom","addedUrlsSet","Set","addTokenList","url","has","queryOptions","tokenList","ensureQueryData","add","available","set","addTokenListEffect","get","forEach","useActivateEffects","allTokensListsFetchedSuccesfully","tokenListUrls","length","constructedTokensByURL","every","undefined","useAllTokensListsFetched"],"sources":["../../../../src/tokens/lists/state/effects.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { produceSingleQueryOptionMin } from \"@/tokens/queries\";\nimport { atomEffect } from \"jotai-effect\";\nimport { addTokenListsAtom } from \"./tokenListsActionsAtom\";\nimport {\n constructedTokensByURLAtom,\n tokenListUrlsAtom,\n} from \"./tokenListsStateAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { atom } from \"jotai\";\n\nconst addedUrlsSet = new Set<string>();\n\nasync function addTokenList(url: string) {\n // list already in store\n if (addedUrlsSet.has(url)) return;\n\n // fetch token list or get from cache\n const queryOptions = produceSingleQueryOptionMin(url);\n const tokenList = await queryClient.ensureQueryData(queryOptions);\n\n // add url to set\n addedUrlsSet.add(url);\n\n // add to state once per fetched list\n if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);\n}\n\nconst addTokenListEffect = atomEffect((get) => {\n get(tokenListUrlsAtom).forEach(addTokenList);\n});\n\nexport function useActivateEffects() {\n useAtomValue(addTokenListEffect);\n}\n\nconst allTokensListsFetchedSuccesfully = atom<boolean>((get) => {\n const tokenListUrls = get(tokenListUrlsAtom);\n if (tokenListUrls.length === 0) return false;\n const constructedTokensByURL = get(constructedTokensByURLAtom);\n return tokenListUrls.every(\n (url) => constructedTokensByURL[url] !== undefined\n );\n});\n\nexport const useAllTokensListsFetched = () => {\n return useAtomValue(allTokensListsFetchedSuccesfully);\n};\n"],"mappings":";;;;;;;;AAYA,IAAMS,oBAAe,IAAIC,KAAa;AAEtC,eAAeC,EAAaC,GAAa;CAEvC,IAAIH,EAAaI,IAAID,EAAI,EAAE;CAG3B,IAAME,IAAeZ,EAA4BU,EAAI,EAC/CG,IAAY,MAAMd,EAAYe,gBAAgBF,EAAa;CAMjE,AAHAL,EAAaQ,IAAIL,EAAI,EAGjBG,GAAWG,aAAWlB,EAAWmB,IAAIf,GAAmB,CAACW,EAAU,CAAC;;AAG1E,IAAMK,IAAqBjB,GAAYkB,MAAQ;CAC7CA,EAAIf,EAAkB,CAACgB,QAAQX,EAAa;EAC5C;AAEF,SAAOY,IAAA;CACLhB,EAAaa,EAAmB;;AAGlC,IAAMI,IAAmChB,GAAea,MAAQ;CAC9D,IAAMI,IAAgBJ,EAAIf,EAAkB;CAC5C,IAAImB,EAAcC,WAAW,GAAG,OAAO;CACvC,IAAMC,IAAyBN,EAAIhB,EAA2B;CAC9D,OAAOoB,EAAcG,OAClBhB,MAAQe,EAAuBf,OAASiB,KAAAA,EAC1C;EACD,EAEWC,UACJvB,EAAaiB,EAAiC"}
|