@velora-dex/widget 0.8.1 → 0.8.3-dev.0
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.d.ts +2 -2
- package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
- package/dist/components/widget/BridgeList/hooks.js +79 -73
- 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.d.ts +2 -2
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.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.d.ts +2 -2
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +2 -2
- 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.d.ts +2 -2
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.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.d.ts +4 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +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.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.js +46 -52
- 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.d.ts +3 -4
- package/dist/core/TradeFlowScreenButton.d.ts.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.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +1 -4
- 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.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js +2 -2
- 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.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
- 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.d.ts.map +1 -1
- package/dist/core/inputs/hooks/utils.js +7 -5
- 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.d.ts +2 -3
- package/dist/core/limit/useLimitRate.d.ts.map +1 -1
- package/dist/core/limit/useLimitRate.js +54 -110
- 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.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js +1 -4
- 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.d.ts.map +1 -1
- package/dist/core/swapDetails/fees.js +16 -11
- package/dist/core/swapDetails/fees.js.map +1 -1
- package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
- package/dist/core/swapDetails/maxToPay.js +18 -17
- 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.d.ts +2 -2
- package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.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/events/types/priceChange.d.ts +2 -2
- package/dist/events/types/priceChange.d.ts.map +1 -1
- package/dist/events/types/swap.d.ts +2 -2
- package/dist/events/types/swap.d.ts.map +1 -1
- package/dist/events/types/twap.d.ts +2 -2
- package/dist/events/types/twap.d.ts.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.d.ts +3 -4
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +6 -3
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js +20 -17
- 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.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +5 -5
- 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.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +2 -2
- 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.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +27 -28
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +2 -2
- 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.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +5 -5
- 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.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +27 -28
- 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.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +2 -2
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +5 -6
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.js +6 -6
- package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts +2 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts.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 +11 -14
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +3 -3
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +6 -3
- 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 +17 -34
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +6 -6
- 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.d.ts.map +1 -1
- package/dist/hooks/swap/prices/factory.js +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.d.ts +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/types.d.ts +2 -3
- package/dist/hooks/swap/prices/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTwapPrices.d.ts +4 -5
- package/dist/hooks/swap/prices/useTwapPrices.d.ts.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.d.ts +10 -17
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
- 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.d.ts +5 -5
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +119 -124
- 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.d.ts +2 -2
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +159 -196
- 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.d.ts +5 -5
- package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js +217 -229
- 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.d.ts +19 -3
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js +65 -35
- 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 +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.d.ts +5 -2
- package/dist/lib/utils/price.d.ts.map +1 -1
- package/dist/lib/utils/price.js +8 -5
- 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.d.ts +2 -2
- package/dist/lib/utils/twap.d.ts.map +1 -1
- package/dist/lib/utils/twap.js +2 -2
- 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
- package/dist/hooks/swap/prices/delta/bridge/const.d.ts +0 -8
- package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/bridge/const.js +0 -13
- package/dist/hooks/swap/prices/delta/bridge/const.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explorer.js","names":["SupportedChainId","chainConfigMap","Address","getExplorerURL","constructAddressLink","explorer","address","constructTokenLink","constructTxLink","constructExplorerOrderDetailsLink","orderId","constructExplorerUserDetailsLink","userAddress","ConstructAddressLinkForChainInput","chainId","constructAddressLinkForChain","blockExplorers","default","url","constructTokenLinkForChain","ConstructTxLinkForChainInput","txHash","constructTxLinkForChain"],"sources":["../../../src/lib/utils/explorer.ts"],"sourcesContent":["import type { SupportedChainId } from \"../web3/wagmi/types\";\nimport { chainConfigMap } from \"../web3/wagmi/constants\";\nimport type { Address } from \"viem\";\nimport { getExplorerURL } from \"../constants/urls\";\n\nexport const constructAddressLink = (\n explorer: string,\n address: string\n): string => {\n return `${explorer}/address/${address}`;\n};\n\nexport const constructTokenLink = (\n explorer: string,\n address: string\n): string => {\n return `${explorer}/token/${address}`;\n};\n\nexport const constructTxLink = (explorer: string, address: string): string => {\n return `${explorer}/tx/${address}`;\n};\n\nexport function constructExplorerOrderDetailsLink(orderId: string): string {\n return `${getExplorerURL()}/order/${orderId}`;\n}\n\nexport function constructExplorerUserDetailsLink(userAddress: Address): string {\n return `${getExplorerURL()}/address/${userAddress}`;\n}\n\ntype ConstructAddressLinkForChainInput = {\n chainId: SupportedChainId;\n address: string;\n};\n\nexport const constructAddressLinkForChain = ({\n chainId,\n address,\n}: ConstructAddressLinkForChainInput): string | undefined => {\n const explorer = chainConfigMap[chainId].blockExplorers?.default.url;\n if (!explorer) return;\n\n return constructAddressLink(explorer, address);\n};\n\nexport const constructTokenLinkForChain = ({\n chainId,\n address,\n}: ConstructAddressLinkForChainInput): string | undefined => {\n const explorer = chainConfigMap[chainId].blockExplorers?.default.url;\n if (!explorer) return;\n\n return constructTokenLink(explorer, address);\n};\n\ntype ConstructTxLinkForChainInput = {\n chainId: SupportedChainId;\n txHash: string;\n};\n\nexport const constructTxLinkForChain = ({\n chainId,\n txHash,\n}: ConstructTxLinkForChainInput): string | undefined => {\n const explorer = chainConfigMap[chainId].blockExplorers?.default.url;\n if (!explorer) return;\n\n return constructTxLink(explorer, txHash);\n};\n"],"mappings":";;;AAKA,IAAaI,KACXC,GACAC,MAEO,GAAGD,EAAQ,WAAYC,KAGnBC,KACXF,GACAC,MAEO,GAAGD,EAAQ,SAAUC,KAGjBE,KAAmBH,GAAkBC,MACzC,GAAGD,EAAQ,MAAOC;AAG3B,SAAgBG,EAAkCC,GAAyB;
|
|
1
|
+
{"version":3,"file":"explorer.js","names":["SupportedChainId","chainConfigMap","Address","getExplorerURL","constructAddressLink","explorer","address","constructTokenLink","constructTxLink","constructExplorerOrderDetailsLink","orderId","constructExplorerUserDetailsLink","userAddress","ConstructAddressLinkForChainInput","chainId","constructAddressLinkForChain","blockExplorers","default","url","constructTokenLinkForChain","ConstructTxLinkForChainInput","txHash","constructTxLinkForChain"],"sources":["../../../src/lib/utils/explorer.ts"],"sourcesContent":["import type { SupportedChainId } from \"../web3/wagmi/types\";\nimport { chainConfigMap } from \"../web3/wagmi/constants\";\nimport type { Address } from \"viem\";\nimport { getExplorerURL } from \"../constants/urls\";\n\nexport const constructAddressLink = (\n explorer: string,\n address: string\n): string => {\n return `${explorer}/address/${address}`;\n};\n\nexport const constructTokenLink = (\n explorer: string,\n address: string\n): string => {\n return `${explorer}/token/${address}`;\n};\n\nexport const constructTxLink = (explorer: string, address: string): string => {\n return `${explorer}/tx/${address}`;\n};\n\nexport function constructExplorerOrderDetailsLink(orderId: string): string {\n return `${getExplorerURL()}/order/${orderId}`;\n}\n\nexport function constructExplorerUserDetailsLink(userAddress: Address): string {\n return `${getExplorerURL()}/address/${userAddress}`;\n}\n\ntype ConstructAddressLinkForChainInput = {\n chainId: SupportedChainId;\n address: string;\n};\n\nexport const constructAddressLinkForChain = ({\n chainId,\n address,\n}: ConstructAddressLinkForChainInput): string | undefined => {\n const explorer = chainConfigMap[chainId].blockExplorers?.default.url;\n if (!explorer) return;\n\n return constructAddressLink(explorer, address);\n};\n\nexport const constructTokenLinkForChain = ({\n chainId,\n address,\n}: ConstructAddressLinkForChainInput): string | undefined => {\n const explorer = chainConfigMap[chainId].blockExplorers?.default.url;\n if (!explorer) return;\n\n return constructTokenLink(explorer, address);\n};\n\ntype ConstructTxLinkForChainInput = {\n chainId: SupportedChainId;\n txHash: string;\n};\n\nexport const constructTxLinkForChain = ({\n chainId,\n txHash,\n}: ConstructTxLinkForChainInput): string | undefined => {\n const explorer = chainConfigMap[chainId].blockExplorers?.default.url;\n if (!explorer) return;\n\n return constructTxLink(explorer, txHash);\n};\n"],"mappings":";;;AAKA,IAAaI,KACXC,GACAC,MAEO,GAAGD,EAAQ,WAAYC,KAGnBC,KACXF,GACAC,MAEO,GAAGD,EAAQ,SAAUC,KAGjBE,KAAmBH,GAAkBC,MACzC,GAAGD,EAAQ,MAAOC;AAG3B,SAAgBG,EAAkCC,GAAyB;CACzE,OAAO,GAAGP,GAAgB,CAAA,SAAUO;;AAGtC,SAAgBC,EAAiCC,GAA8B;CAC7E,OAAO,GAAGT,GAAgB,CAAA,WAAYS;;AAQxC,IAAaG,KAAgC,EAC3CD,YACAR,iBAC2D;CAC3D,IAAMD,IAAWJ,EAAea,GAASE,gBAAgBC,QAAQC;CAC5Db,OAEL,OAAOD,EAAqBC,GAAUC,EAAQ;GAGnCa,KAA8B,EACzCL,YACAR,iBAC2D;CAC3D,IAAMD,IAAWJ,EAAea,GAASE,gBAAgBC,QAAQC;CAC5Db,OAEL,OAAOE,EAAmBF,GAAUC,EAAQ;GAQjCgB,KAA2B,EACtCR,YACAO,gBACsD;CACtD,IAAMhB,IAAWJ,EAAea,GAASE,gBAAgBC,QAAQC;CAC5Db,OAEL,OAAOG,EAAgBH,GAAUgB,EAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee.js","names":["Big","calculateFeeUSD","partnerFeePercent","destUSD","times","div","subtractFee","amount","fee","toFixed","feePercent","multiplier","minus","mul"],"sources":["../../../src/lib/utils/fee.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function calculateFeeUSD(partnerFeePercent: number, destUSD: string) {\n if (partnerFeePercent === 0 || destUSD === \"0\") return Big(0);\n\n return Big(destUSD).times(partnerFeePercent).div(100);\n}\n\nexport function subtractFee(\n amount: string | Big,\n fee: number // e.g. 1 for 1%\n): string {\n if (fee === 0) return typeof amount === \"string\" ? amount : amount.toFixed(); // avoid e-notation\n\n const feePercent = Big(fee).div(100);\n const multiplier = Big(1).minus(feePercent);\n return Big(amount).mul(multiplier).toFixed(0);\n}\n"],"mappings":";;AAEA,SAAgBC,EAAgBC,GAA2BC,GAAiB;
|
|
1
|
+
{"version":3,"file":"fee.js","names":["Big","calculateFeeUSD","partnerFeePercent","destUSD","times","div","subtractFee","amount","fee","toFixed","feePercent","multiplier","minus","mul"],"sources":["../../../src/lib/utils/fee.ts"],"sourcesContent":["import Big from \"big.js\";\n\nexport function calculateFeeUSD(partnerFeePercent: number, destUSD: string) {\n if (partnerFeePercent === 0 || destUSD === \"0\") return Big(0);\n\n return Big(destUSD).times(partnerFeePercent).div(100);\n}\n\nexport function subtractFee(\n amount: string | Big,\n fee: number // e.g. 1 for 1%\n): string {\n if (fee === 0) return typeof amount === \"string\" ? amount : amount.toFixed(); // avoid e-notation\n\n const feePercent = Big(fee).div(100);\n const multiplier = Big(1).minus(feePercent);\n return Big(amount).mul(multiplier).toFixed(0);\n}\n"],"mappings":";;AAEA,SAAgBC,EAAgBC,GAA2BC,GAAiB;CAG1E,OAFID,MAAsB,KAAKC,MAAY,MAAYH,EAAI,EAAE,GAEtDA,EAAIG,EAAQ,CAACC,MAAMF,EAAkB,CAACG,IAAI,IAAI;;AAGvD,SAAgBC,EACdC,GACAC,GACQ;CACR,IAAIA,MAAQ,GAAG,OAAO,OAAOD,KAAW,WAAWA,IAASA,EAAOE,SAAS;CAE5E,IAAMC,IAAaV,EAAIQ,EAAI,CAACH,IAAI,IAAI,EAC9BM,IAAaX,EAAI,EAAE,CAACY,MAAMF,EAAW;CAC3C,OAAOV,EAAIO,EAAO,CAACM,IAAIF,EAAW,CAACF,QAAQ,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatFiatPrice.js","names":["Nullish","T","formatFiatPrice","price","options","Intl","NumberFormatOptions","undefined","NumberFormat","style","currency","notation","format"],"sources":["../../../src/lib/utils/formatFiatPrice.ts"],"sourcesContent":["type Nullish<T> = T | null | undefined;\n\n/** Formats USD and non-USD prices */\nexport function formatFiatPrice(\n price: Nullish<number>,\n options?: Intl.NumberFormatOptions\n): string {\n if (price === null || price === undefined) return \"-\";\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n notation: price > 1_000_000_000 ? \"compact\" : undefined,\n ...options,\n }).format(price);\n}\n"],"mappings":";AAGA,SAAgBE,EACdC,GACAC,GACQ;
|
|
1
|
+
{"version":3,"file":"formatFiatPrice.js","names":["Nullish","T","formatFiatPrice","price","options","Intl","NumberFormatOptions","undefined","NumberFormat","style","currency","notation","format"],"sources":["../../../src/lib/utils/formatFiatPrice.ts"],"sourcesContent":["type Nullish<T> = T | null | undefined;\n\n/** Formats USD and non-USD prices */\nexport function formatFiatPrice(\n price: Nullish<number>,\n options?: Intl.NumberFormatOptions\n): string {\n if (price === null || price === undefined) return \"-\";\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n notation: price > 1_000_000_000 ? \"compact\" : undefined,\n ...options,\n }).format(price);\n}\n"],"mappings":";AAGA,SAAgBE,EACdC,GACAC,GACQ;CAER,OADID,KAAU,OAAoC,MAC3C,IAAIE,KAAKG,aAAa,SAAS;EACpCC,OAAO;EACPC,UAAU;EACVC,UAAUR,IAAQ,MAAgB,YAAYI,KAAAA;EAC9C,GAAGH;EACJ,CAAC,CAACQ,OAAOT,EAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatPercent.js","names":["Nullish","T","formatPercent","number","undefined","Intl","NumberFormat","notation","style","format"],"sources":["../../../src/lib/utils/formatPercent.ts"],"sourcesContent":["type Nullish<T> = T | null | undefined;\n\nexport function formatPercent(number: Nullish<number>): string {\n if (number === null || number === undefined) return \"-\";\n return new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n style: \"percent\",\n }).format(number);\n}\n"],"mappings":";AAEA,SAAgBE,EAAcC,GAAiC;
|
|
1
|
+
{"version":3,"file":"formatPercent.js","names":["Nullish","T","formatPercent","number","undefined","Intl","NumberFormat","notation","style","format"],"sources":["../../../src/lib/utils/formatPercent.ts"],"sourcesContent":["type Nullish<T> = T | null | undefined;\n\nexport function formatPercent(number: Nullish<number>): string {\n if (number === null || number === undefined) return \"-\";\n return new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n style: \"percent\",\n }).format(number);\n}\n"],"mappings":";AAEA,SAAgBE,EAAcC,GAAiC;CAE7D,OADIA,KAAW,OAAqC,MAC7C,IAAIE,KAAKC,aAAa,SAAS;EACpCC,UAAU;EACVC,OAAO;EACR,CAAC,CAACC,OAAON,EAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatTokenBalance.js","names":["formatUnits","removeTrailingZeros","formatTokenBalance","balance","decimals","precision","tokenUnits","BigInt","num","Number","maxPrecision","toFixed","formatTokenBalanceClean","formatted","formatTokenAmount","amount","maxDecimals","formatAmount"],"sources":["../../../src/lib/utils/formatTokenBalance.ts"],"sourcesContent":["import { formatUnits } from \"viem\";\nimport { removeTrailingZeros } from \"./removeZeroDecimals\";\n\n/**\n * Formats a token balance from wei to human-readable format with specified precision\n * @param balance - Balance in wei as string or bigint\n * @param decimals - Token decimals\n * @param precision - Number of decimal places to show (default: 6)\n * @returns Formatted balance string\n */\nexport function formatTokenBalance(\n balance: string | bigint,\n decimals: number,\n precision: number = 6\n): string {\n if (!balance || balance === \"0\") return \"0\";\n\n // Convert wei to token units using viem\n const tokenUnits = formatUnits(BigInt(balance), decimals);\n\n // Convert to number for precision handling\n const num = Number(tokenUnits);\n\n // Handle very large numbers (show as whole numbers)\n const maxPrecision = 10 ** precision;\n if (num >= maxPrecision) {\n return num.toFixed(0);\n }\n\n // Format with specified precision\n return num.toFixed(precision);\n}\n\n/**\n * Formats a token balance and removes trailing zeros\n * @param balance - Balance in wei as string or bigint\n * @param decimals - Token decimals\n * @param precision - Number of decimal places to show (default: 6)\n * @returns Formatted balance string with trailing zeros removed\n */\nexport function formatTokenBalanceClean(\n balance: string | bigint,\n decimals: number,\n precision: number = 6\n): string {\n const formatted = formatTokenBalance(balance, decimals, precision);\n return removeTrailingZeros(formatted);\n}\n\n/**\n * Formats a token amount (already in token units) with nice formatting for large numbers\n * @param amount - Amount in token units (e.g., 12.4335)\n * @param maxDecimals - Maximum decimal places to show (default: 6)\n * @returns Formatted amount string with K/M/B suffixes for large numbers\n */\nexport function formatTokenAmount(\n amount: number | string | bigint,\n maxDecimals: number = 6\n): string {\n // Convert to number\n const num = Number(amount);\n\n if (!num || num === 0) return \"0\";\n\n // Handle amounts less than 100 with maximum precision\n if (num < 100) {\n return removeTrailingZeros(num.toFixed(maxDecimals));\n }\n\n // Handle large numbers with K/M/B suffixes\n if (num >= 1e9) {\n return removeTrailingZeros((num / 1e9).toFixed(2)) + \"B\";\n } else if (num >= 1e6) {\n return removeTrailingZeros((num / 1e6).toFixed(2)) + \"M\";\n } else if (num >= 1e3) {\n return removeTrailingZeros((num / 1e3).toFixed(2)) + \"K\";\n } else {\n // For numbers between 100 and 1000, show up to 2 decimal places\n return removeTrailingZeros(num.toFixed(2));\n }\n}\n\n/**\n * Formats an amount with nice formatting for large numbers\n * @param amount - Amount in token units (e.g., 12.4335)\n * @param maxDecimals - Maximum decimal places to show (default: 6)\n * @returns Formatted amount string without trailing zeros\n */\nexport function formatAmount(\n amount: number | string | bigint,\n maxDecimals: number = 6\n): string {\n const num = Number(amount);\n\n if (!num || num === 0) return \"0\";\n\n return removeTrailingZeros(num.toFixed(maxDecimals));\n}\n"],"mappings":";;;AAUA,SAAgBE,EACdC,GACAC,GACAC,IAAoB,GACZ;
|
|
1
|
+
{"version":3,"file":"formatTokenBalance.js","names":["formatUnits","removeTrailingZeros","formatTokenBalance","balance","decimals","precision","tokenUnits","BigInt","num","Number","maxPrecision","toFixed","formatTokenBalanceClean","formatted","formatTokenAmount","amount","maxDecimals","formatAmount"],"sources":["../../../src/lib/utils/formatTokenBalance.ts"],"sourcesContent":["import { formatUnits } from \"viem\";\nimport { removeTrailingZeros } from \"./removeZeroDecimals\";\n\n/**\n * Formats a token balance from wei to human-readable format with specified precision\n * @param balance - Balance in wei as string or bigint\n * @param decimals - Token decimals\n * @param precision - Number of decimal places to show (default: 6)\n * @returns Formatted balance string\n */\nexport function formatTokenBalance(\n balance: string | bigint,\n decimals: number,\n precision: number = 6\n): string {\n if (!balance || balance === \"0\") return \"0\";\n\n // Convert wei to token units using viem\n const tokenUnits = formatUnits(BigInt(balance), decimals);\n\n // Convert to number for precision handling\n const num = Number(tokenUnits);\n\n // Handle very large numbers (show as whole numbers)\n const maxPrecision = 10 ** precision;\n if (num >= maxPrecision) {\n return num.toFixed(0);\n }\n\n // Format with specified precision\n return num.toFixed(precision);\n}\n\n/**\n * Formats a token balance and removes trailing zeros\n * @param balance - Balance in wei as string or bigint\n * @param decimals - Token decimals\n * @param precision - Number of decimal places to show (default: 6)\n * @returns Formatted balance string with trailing zeros removed\n */\nexport function formatTokenBalanceClean(\n balance: string | bigint,\n decimals: number,\n precision: number = 6\n): string {\n const formatted = formatTokenBalance(balance, decimals, precision);\n return removeTrailingZeros(formatted);\n}\n\n/**\n * Formats a token amount (already in token units) with nice formatting for large numbers\n * @param amount - Amount in token units (e.g., 12.4335)\n * @param maxDecimals - Maximum decimal places to show (default: 6)\n * @returns Formatted amount string with K/M/B suffixes for large numbers\n */\nexport function formatTokenAmount(\n amount: number | string | bigint,\n maxDecimals: number = 6\n): string {\n // Convert to number\n const num = Number(amount);\n\n if (!num || num === 0) return \"0\";\n\n // Handle amounts less than 100 with maximum precision\n if (num < 100) {\n return removeTrailingZeros(num.toFixed(maxDecimals));\n }\n\n // Handle large numbers with K/M/B suffixes\n if (num >= 1e9) {\n return removeTrailingZeros((num / 1e9).toFixed(2)) + \"B\";\n } else if (num >= 1e6) {\n return removeTrailingZeros((num / 1e6).toFixed(2)) + \"M\";\n } else if (num >= 1e3) {\n return removeTrailingZeros((num / 1e3).toFixed(2)) + \"K\";\n } else {\n // For numbers between 100 and 1000, show up to 2 decimal places\n return removeTrailingZeros(num.toFixed(2));\n }\n}\n\n/**\n * Formats an amount with nice formatting for large numbers\n * @param amount - Amount in token units (e.g., 12.4335)\n * @param maxDecimals - Maximum decimal places to show (default: 6)\n * @returns Formatted amount string without trailing zeros\n */\nexport function formatAmount(\n amount: number | string | bigint,\n maxDecimals: number = 6\n): string {\n const num = Number(amount);\n\n if (!num || num === 0) return \"0\";\n\n return removeTrailingZeros(num.toFixed(maxDecimals));\n}\n"],"mappings":";;;AAUA,SAAgBE,EACdC,GACAC,GACAC,IAAoB,GACZ;CACR,IAAI,CAACF,KAAWA,MAAY,KAAK,OAAO;CAGxC,IAAMG,IAAaN,EAAYO,OAAOJ,EAAQ,EAAEC,EAAS,EAGnDI,IAAMC,OAAOH,EAAW;CAS9B,OALIE,KADiB,MAAMH,IAElBG,EAAIG,QAAQ,EAAE,GAIhBH,EAAIG,QAAQN,EAAU;;AAU/B,SAAgBO,EACdT,GACAC,GACAC,IAAoB,GACZ;CAER,OAAOJ,EADWC,EAAmBC,GAASC,GAAUC,EAC7BQ,CAAU;;AASvC,SAAgBC,EACdC,GACAC,IAAsB,GACd;CAER,IAAMR,IAAMC,OAAOM,EAAO;CAkBxB,OAhBE,CAACP,KAAOA,MAAQ,IAAU,MAG1BA,IAAM,MACDP,EAAoBO,EAAIG,QAAQK,EAAY,CAAC,GAIlDR,KAAO,MACFP,GAAqBO,IAAM,KAAKG,QAAQ,EAAE,CAAC,GAAG,MAC5CH,KAAO,MACTP,GAAqBO,IAAM,KAAKG,QAAQ,EAAE,CAAC,GAAG,MAC5CH,KAAO,MACTP,GAAqBO,IAAM,KAAKG,QAAQ,EAAE,CAAC,GAAG,MAG9CV,EAAoBO,EAAIG,QAAQ,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Token","clsx","ClassValue","twMerge","assert","Prettify","cn","inputs","gatherObjectsByProp","elements","T","pickProp","elem","Record","transform","accumElem","U","reduce","accum","element","key","transformedElement","RemoveNullableElements","Head","Tail","MergeRecordsWithStrings","R1","R2","K","ConcatString","_ConcatString","Parts","Delim","RecordOfStrings","_MergeNStrings","Tuple","Result","MergeNStrings","MergeWithoutNullable","concatClassNamesMaps","maps","length","gathered","map","value","undefined","filterUnique","constructUniqueKeys","hasSeen","Set","filter","keys","some","has","forEach","add","isTruthy","x","isNonNullableEntry","entry","ReturnIfTruthy","assertProp","obj","prop","P","String","hasCorrectAddressLength","maybeAddress","filterInvalidTokenAddress","address","Pick","stringIncludes","a","b","toLowerCase","includes","shortenText","str","start","end","regexp","RegExp","replace","shortenAddress","slashIndex","rightCutLength","replaceUnderscoresWithSpaces","isValidUrl","url","URL","unorderedShallowEqual","setA","item","constructPropertiesEqual","properties","Partial","every","shallowEqual","aKeys","Object","bKeys","prototype","hasOwnProperty","call","getNumberWithinRange","num","min","max","Math"],"sources":["../../../src/lib/utils/index.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { assert, type Prettify } from \"ts-essentials\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n// reduce element[] to Object{key: prop, val?: element}\n// for example\n// gatherObjectsByProp(Token[], token => token.address) => Record<address, Token|undefined>\nexport function gatherObjectsByProp<T>(\n elements: T[],\n pickProp: (elem: T) => string\n): Record<string, T>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform: (elem: T, accumElem?: U) => U\n): Record<string, U>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform?: (elem: T, accumElem?: U) => U\n): Record<string, T> | Record<string, U> {\n return elements.reduce<Record<string, T> | Record<string, U>>(\n (accum, element) => {\n const key = pickProp(element);\n\n const accumElem: T | U | undefined = accum[key];\n const transformedElement = transform\n ? // if transform is available, can only be U | undefined\n transform(element, accumElem as U | undefined)\n : element;\n\n accum[key] = transformedElement;\n\n return accum;\n },\n {}\n );\n}\n\ntype RemoveNullableElements<T extends readonly unknown[]> = T extends readonly [\n infer Head,\n ...infer Tail,\n]\n ? Head extends undefined | null\n ? RemoveNullableElements<Tail>\n : [Head, ...RemoveNullableElements<Tail>]\n : [];\n\ntype MergeRecordsWithStrings<\n R1 extends Record<string, string>,\n R2 extends Record<string, string>,\n> = {\n [K in keyof R1 | keyof R2]: K extends keyof R1\n ? K extends keyof R2\n ? ConcatString<\" \", [R1[K], R2[K]]>\n : R1[K]\n : K extends keyof R2\n ? R2[K]\n : never;\n};\n\ntype _ConcatString<\n Delim extends string,\n Parts extends readonly string[],\n> = Parts extends readonly []\n ? \"\"\n : Parts extends readonly [\n infer Head extends string,\n ...infer Tail extends readonly string[],\n ]\n ? Tail extends readonly []\n ? Head\n : `${Head}${Delim}${_ConcatString<Delim, Tail>}`\n : never;\n\nexport type ConcatString<\n Delim extends string = \"\",\n Parts extends readonly string[] = [],\n> = _ConcatString<Delim, Parts>;\n\ntype RecordOfStrings = Record<string, string>;\n\ntype _MergeNStrings<\n Tuple extends readonly RecordOfStrings[],\n Result extends RecordOfStrings,\n> = Tuple extends readonly [\n infer Head extends RecordOfStrings,\n ...infer Tail extends readonly RecordOfStrings[],\n]\n ? _MergeNStrings<Tail, MergeRecordsWithStrings<Result, Head>>\n : Result;\ntype MergeNStrings<Tuple extends readonly RecordOfStrings[]> = _MergeNStrings<\n Tuple,\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n {}\n>;\n\ntype MergeWithoutNullable<\n Tuple extends readonly (RecordOfStrings | undefined | null)[],\n> = MergeNStrings<RemoveNullableElements<Tuple>>;\n\nexport function concatClassNamesMaps<\n T extends readonly (RecordOfStrings | undefined | null)[],\n>(...maps: T): Prettify<MergeWithoutNullable<T>> {\n if (maps.length <= 1)\n return (maps[0] || {}) as Prettify<MergeWithoutNullable<T>>;\n\n const gathered: Record<string, string> = {};\n\n for (const map of maps) {\n if (!map) continue;\n\n for (const key in map) {\n const value = map[key];\n if (value !== undefined) {\n gathered[key] = cn(gathered[key], value);\n }\n }\n }\n\n return gathered as Prettify<MergeWithoutNullable<T>>;\n}\n\nexport function filterUnique<T, U>(\n elements: T[],\n // supports multikey filtering, if only one key required return [U]\n constructUniqueKeys: (element: T) => U[]\n): T[] {\n if (elements.length <= 1) return elements;\n const hasSeen = new Set<U>();\n\n return elements.filter((element) => {\n const keys = constructUniqueKeys(element);\n if (keys.some((key) => hasSeen.has(key))) return false;\n\n keys.forEach((key) => hasSeen.add(key));\n return true;\n });\n}\n\nexport const isTruthy = <T>(\n x: T | false | 0 | 0n | \"\" | null | undefined\n): x is T => !!x;\n\nexport function isNonNullableEntry<T>(\n entry: [key: string, value: T | null | undefined]\n): entry is [string, T] {\n return entry[1] !== null && entry[1] !== undefined;\n}\n\ntype ReturnIfTruthy<T> = typeof isTruthy<T>;\n\nexport function assertProp<\n T extends Record<string, unknown>,\n K extends keyof T,\n>(obj: T, prop: K): asserts obj is T & { [P in K]-?: ReturnIfTruthy<T[P]> } {\n assert(isTruthy(obj[prop]), `${String(prop)} is required`);\n}\n\nexport function hasCorrectAddressLength(maybeAddress: string): boolean {\n return maybeAddress.length === 42;\n}\n\nexport const filterInvalidTokenAddress = ({\n address,\n}: Pick<Token, \"address\">) => hasCorrectAddressLength(address);\n\nexport const stringIncludes = (a: string, b: string): boolean => {\n return a.toLowerCase().includes(b.toLowerCase());\n};\n\n/**\n * Shorten any string with more than 6 characters (included) by inserting ellipsis placeholder in between\n *\n * @param {string} str the string to shorten\n * @param {number} start how much to leave off the start\n * @param {number} [end=0] how much to leave off the end\n * @returns {string} shortened text\n */\nexport const shortenText = (\n str: string,\n start: number,\n end: number = 0\n): string => {\n const regexp = new RegExp(`(.{${start}}).{3,}(.{${end}})`);\n return str.replace(regexp, \"$1...$2\");\n};\n\nexport function shortenAddress(\n address: string,\n slashIndex = 6,\n rightCutLength = 4\n): string {\n // An ethereum address has 42 characters\n return shortenText(address, slashIndex, rightCutLength);\n}\n\nexport function replaceUnderscoresWithSpaces(str: string): string {\n return str.replace(/_/g, \" \");\n}\n\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function unorderedShallowEqual<T>(a: T[], b: T[]): boolean {\n if (a.length !== b.length) return false;\n const setA = new Set(a);\n for (const item of b) {\n if (!setA.has(item)) return false;\n }\n return true;\n}\n\nexport function constructPropertiesEqual<K extends string>(\n properties: readonly K[]\n): (a: Partial<Record<K, unknown>>, b: Partial<Record<K, unknown>>) => boolean {\n return (a, b) => {\n return properties.every((key) => a[key] === b[key]);\n };\n}\n\nexport function shallowEqual<T>(a: T, b: T): boolean {\n // both the same value, check would pass for primitive values\n if (a === b) {\n return true;\n }\n\n // not an object, and checks for primitive have already been made\n if (typeof a !== \"object\" || typeof b !== \"object\" || !a || !b) {\n return false;\n }\n // both objects, check if they have the same keys\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n // different number of keys\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(\n (key) =>\n // b[key] exists, and not a[key] === undefined && b[key] doesn't exist\n Object.prototype.hasOwnProperty.call(b, key) &&\n a[key as keyof typeof a] === b[key as keyof typeof b]\n );\n}\n\nexport function getNumberWithinRange(\n num: number,\n min: number,\n max: number\n): number {\n return Math.min(Math.max(num, min), max);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Token","clsx","ClassValue","twMerge","assert","Prettify","cn","inputs","gatherObjectsByProp","elements","T","pickProp","elem","Record","transform","accumElem","U","reduce","accum","element","key","transformedElement","RemoveNullableElements","Head","Tail","MergeRecordsWithStrings","R1","R2","K","ConcatString","_ConcatString","Parts","Delim","RecordOfStrings","_MergeNStrings","Tuple","Result","MergeNStrings","MergeWithoutNullable","concatClassNamesMaps","maps","length","gathered","map","value","undefined","filterUnique","constructUniqueKeys","hasSeen","Set","filter","keys","some","has","forEach","add","isTruthy","x","isNonNullableEntry","entry","ReturnIfTruthy","assertProp","obj","prop","P","String","hasCorrectAddressLength","maybeAddress","filterInvalidTokenAddress","address","Pick","stringIncludes","a","b","toLowerCase","includes","shortenText","str","start","end","regexp","RegExp","replace","shortenAddress","slashIndex","rightCutLength","replaceUnderscoresWithSpaces","isValidUrl","url","URL","unorderedShallowEqual","setA","item","constructPropertiesEqual","properties","Partial","every","shallowEqual","aKeys","Object","bKeys","prototype","hasOwnProperty","call","getNumberWithinRange","num","min","max","Math"],"sources":["../../../src/lib/utils/index.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { assert, type Prettify } from \"ts-essentials\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n// reduce element[] to Object{key: prop, val?: element}\n// for example\n// gatherObjectsByProp(Token[], token => token.address) => Record<address, Token|undefined>\nexport function gatherObjectsByProp<T>(\n elements: T[],\n pickProp: (elem: T) => string\n): Record<string, T>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform: (elem: T, accumElem?: U) => U\n): Record<string, U>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T) => string,\n transform?: (elem: T, accumElem?: U) => U\n): Record<string, T> | Record<string, U> {\n return elements.reduce<Record<string, T> | Record<string, U>>(\n (accum, element) => {\n const key = pickProp(element);\n\n const accumElem: T | U | undefined = accum[key];\n const transformedElement = transform\n ? // if transform is available, can only be U | undefined\n transform(element, accumElem as U | undefined)\n : element;\n\n accum[key] = transformedElement;\n\n return accum;\n },\n {}\n );\n}\n\ntype RemoveNullableElements<T extends readonly unknown[]> = T extends readonly [\n infer Head,\n ...infer Tail,\n]\n ? Head extends undefined | null\n ? RemoveNullableElements<Tail>\n : [Head, ...RemoveNullableElements<Tail>]\n : [];\n\ntype MergeRecordsWithStrings<\n R1 extends Record<string, string>,\n R2 extends Record<string, string>,\n> = {\n [K in keyof R1 | keyof R2]: K extends keyof R1\n ? K extends keyof R2\n ? ConcatString<\" \", [R1[K], R2[K]]>\n : R1[K]\n : K extends keyof R2\n ? R2[K]\n : never;\n};\n\ntype _ConcatString<\n Delim extends string,\n Parts extends readonly string[],\n> = Parts extends readonly []\n ? \"\"\n : Parts extends readonly [\n infer Head extends string,\n ...infer Tail extends readonly string[],\n ]\n ? Tail extends readonly []\n ? Head\n : `${Head}${Delim}${_ConcatString<Delim, Tail>}`\n : never;\n\nexport type ConcatString<\n Delim extends string = \"\",\n Parts extends readonly string[] = [],\n> = _ConcatString<Delim, Parts>;\n\ntype RecordOfStrings = Record<string, string>;\n\ntype _MergeNStrings<\n Tuple extends readonly RecordOfStrings[],\n Result extends RecordOfStrings,\n> = Tuple extends readonly [\n infer Head extends RecordOfStrings,\n ...infer Tail extends readonly RecordOfStrings[],\n]\n ? _MergeNStrings<Tail, MergeRecordsWithStrings<Result, Head>>\n : Result;\ntype MergeNStrings<Tuple extends readonly RecordOfStrings[]> = _MergeNStrings<\n Tuple,\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n {}\n>;\n\ntype MergeWithoutNullable<\n Tuple extends readonly (RecordOfStrings | undefined | null)[],\n> = MergeNStrings<RemoveNullableElements<Tuple>>;\n\nexport function concatClassNamesMaps<\n T extends readonly (RecordOfStrings | undefined | null)[],\n>(...maps: T): Prettify<MergeWithoutNullable<T>> {\n if (maps.length <= 1)\n return (maps[0] || {}) as Prettify<MergeWithoutNullable<T>>;\n\n const gathered: Record<string, string> = {};\n\n for (const map of maps) {\n if (!map) continue;\n\n for (const key in map) {\n const value = map[key];\n if (value !== undefined) {\n gathered[key] = cn(gathered[key], value);\n }\n }\n }\n\n return gathered as Prettify<MergeWithoutNullable<T>>;\n}\n\nexport function filterUnique<T, U>(\n elements: T[],\n // supports multikey filtering, if only one key required return [U]\n constructUniqueKeys: (element: T) => U[]\n): T[] {\n if (elements.length <= 1) return elements;\n const hasSeen = new Set<U>();\n\n return elements.filter((element) => {\n const keys = constructUniqueKeys(element);\n if (keys.some((key) => hasSeen.has(key))) return false;\n\n keys.forEach((key) => hasSeen.add(key));\n return true;\n });\n}\n\nexport const isTruthy = <T>(\n x: T | false | 0 | 0n | \"\" | null | undefined\n): x is T => !!x;\n\nexport function isNonNullableEntry<T>(\n entry: [key: string, value: T | null | undefined]\n): entry is [string, T] {\n return entry[1] !== null && entry[1] !== undefined;\n}\n\ntype ReturnIfTruthy<T> = typeof isTruthy<T>;\n\nexport function assertProp<\n T extends Record<string, unknown>,\n K extends keyof T,\n>(obj: T, prop: K): asserts obj is T & { [P in K]-?: ReturnIfTruthy<T[P]> } {\n assert(isTruthy(obj[prop]), `${String(prop)} is required`);\n}\n\nexport function hasCorrectAddressLength(maybeAddress: string): boolean {\n return maybeAddress.length === 42;\n}\n\nexport const filterInvalidTokenAddress = ({\n address,\n}: Pick<Token, \"address\">) => hasCorrectAddressLength(address);\n\nexport const stringIncludes = (a: string, b: string): boolean => {\n return a.toLowerCase().includes(b.toLowerCase());\n};\n\n/**\n * Shorten any string with more than 6 characters (included) by inserting ellipsis placeholder in between\n *\n * @param {string} str the string to shorten\n * @param {number} start how much to leave off the start\n * @param {number} [end=0] how much to leave off the end\n * @returns {string} shortened text\n */\nexport const shortenText = (\n str: string,\n start: number,\n end: number = 0\n): string => {\n const regexp = new RegExp(`(.{${start}}).{3,}(.{${end}})`);\n return str.replace(regexp, \"$1...$2\");\n};\n\nexport function shortenAddress(\n address: string,\n slashIndex = 6,\n rightCutLength = 4\n): string {\n // An ethereum address has 42 characters\n return shortenText(address, slashIndex, rightCutLength);\n}\n\nexport function replaceUnderscoresWithSpaces(str: string): string {\n return str.replace(/_/g, \" \");\n}\n\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function unorderedShallowEqual<T>(a: T[], b: T[]): boolean {\n if (a.length !== b.length) return false;\n const setA = new Set(a);\n for (const item of b) {\n if (!setA.has(item)) return false;\n }\n return true;\n}\n\nexport function constructPropertiesEqual<K extends string>(\n properties: readonly K[]\n): (a: Partial<Record<K, unknown>>, b: Partial<Record<K, unknown>>) => boolean {\n return (a, b) => {\n return properties.every((key) => a[key] === b[key]);\n };\n}\n\nexport function shallowEqual<T>(a: T, b: T): boolean {\n // both the same value, check would pass for primitive values\n if (a === b) {\n return true;\n }\n\n // not an object, and checks for primitive have already been made\n if (typeof a !== \"object\" || typeof b !== \"object\" || !a || !b) {\n return false;\n }\n // both objects, check if they have the same keys\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n // different number of keys\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(\n (key) =>\n // b[key] exists, and not a[key] === undefined && b[key] doesn't exist\n Object.prototype.hasOwnProperty.call(b, key) &&\n a[key as keyof typeof a] === b[key as keyof typeof b]\n );\n}\n\nexport function getNumberWithinRange(\n num: number,\n min: number,\n max: number\n): number {\n return Math.min(Math.max(num, min), max);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","names":["BaseLogger","log","args","warn","error","info","OnceLogger","reset","getLastMessage","level","CreateLoggerFn","context","options","LoggerOptions","LoggerInstance","once","success","debug","table","data","properties","group","label","groupCollapsed","groupEnd","color","showCallSite","isOn","LOG_STYLES","string","number","boolean","null","undefined","object","array","function","bigint","symbol","warning","logLevel","const","noop","noopLogger","_createNoopLogger","_createLogger","createLoggerBase","getValueStyle","value","style","displayValue","type","String","name","Array","isArray","length","Object","keys","createColoredMessage","message","styles","nativeValues","push","forEach","arg","isObjectLike","prototype","toString","call","LogOnceLevel","lastMessages","Record","formatMessage","jsonReplacer","_key","logOnce","map","val","JSON","stringify","join","formattedArgs","console","trace","onceLogger","LogLevel","Exclude","successArgs"],"sources":["../../../src/lib/utils/logger.ts"],"sourcesContent":["/**\n * A console log utility that prevents logging the same message twice in a row\n * with semantic coloring for different data types\n */\n\ntype BaseLogger = {\n log: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n};\n\ntype OnceLogger = BaseLogger & {\n reset: () => void;\n getLastMessage: (\n level?: \"log\" | \"warn\" | \"error\" | \"info\"\n ) => string | undefined;\n};\n\nexport type CreateLoggerFn = (\n context?: string,\n options?: LoggerOptions\n) => LoggerInstance;\n\nexport type LoggerInstance = BaseLogger & {\n once: OnceLogger;\n // Utility methods for common logging patterns\n success: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n table: (data: unknown, properties?: string[]) => void;\n group: (label: string) => void;\n groupCollapsed: (label: string) => void;\n groupEnd: () => void;\n};\n\nexport type LoggerOptions = {\n color?: boolean;\n showCallSite?: boolean;\n isOn?: () => boolean;\n};\n\n// CSS styles for semantic coloring\nconst LOG_STYLES = {\n // Context styling\n context: \"color: #6366f1; font-weight: bold;\",\n\n // Data type styling\n string: \"color: #059669; font-weight: 500;\",\n number: \"color: #dc2626; font-weight: 500;\",\n boolean: \"color: #7c3aed; font-weight: 500;\",\n null: \"color: #6b7280; font-style: italic;\",\n undefined: \"color: #6b7280; font-style: italic;\",\n object: \"color: #ea580c; font-weight: 500;\",\n array: \"color: #0891b2; font-weight: 500;\",\n function: \"color: #be185d; font-style: italic;\",\n bigint: \"color: #dc2626; font-weight: 500;\",\n symbol: \"color: #7c3aed; font-weight: 500;\",\n\n // Special values\n error: \"color: #dc2626; font-weight: bold;\",\n warning: \"color: #d97706; font-weight: bold;\",\n success: \"color: #059669; font-weight: bold;\",\n\n // Log level styling\n logLevel: {\n log: \"color: #1f2937;\",\n warn: \"color: #d97706; font-weight: bold;\",\n error: \"color: #dc2626; font-weight: bold;\",\n info: \"color: #0891b2; font-weight: bold;\",\n },\n} as const;\n\n// No-op functions for production\nconst noop = (...args: unknown[]) => {\n // Intentionally empty - no-op function\n void args;\n};\n\nconst noopLogger: LoggerInstance = {\n log: noop,\n warn: noop,\n error: noop,\n info: noop,\n success: noop,\n debug: noop,\n table: noop,\n group: noop,\n groupCollapsed: noop,\n groupEnd: noop,\n once: {\n log: noop,\n warn: noop,\n error: noop,\n info: noop,\n reset: noop,\n getLastMessage: () => undefined,\n },\n};\n\nexport const _createNoopLogger: CreateLoggerFn = () => noopLogger;\n\nexport const _createLogger: CreateLoggerFn = createLoggerBase;\n\n/**\n * Determines the type and style for a value\n */\nfunction getValueStyle(value: unknown): {\n style: string;\n displayValue: string;\n} {\n if (value === null) {\n return { style: LOG_STYLES.null, displayValue: \"null\" };\n }\n\n if (value === undefined) {\n return { style: LOG_STYLES.undefined, displayValue: \"undefined\" };\n }\n\n const type = typeof value;\n\n switch (type) {\n case \"string\":\n return { style: LOG_STYLES.string, displayValue: `\"${value}\"` };\n\n case \"number\":\n return { style: LOG_STYLES.number, displayValue: String(value) };\n\n case \"boolean\":\n return { style: LOG_STYLES.boolean, displayValue: String(value) };\n\n case \"bigint\":\n return { style: LOG_STYLES.bigint, displayValue: `${value}n` };\n\n case \"symbol\":\n return { style: LOG_STYLES.symbol, displayValue: String(value) };\n\n case \"function\":\n return {\n style: LOG_STYLES.function,\n displayValue: `[function: ${(value as { name?: string }).name || \"anonymous\"}]`,\n };\n\n case \"object\":\n if (Array.isArray(value)) {\n return {\n style: LOG_STYLES.array,\n displayValue: `[${value.length} items]`,\n };\n }\n return {\n style: LOG_STYLES.object,\n displayValue: `{${Object.keys(value as object).length} keys}`,\n };\n\n default:\n return { style: \"\", displayValue: String(value) };\n }\n}\n\n/**\n * Creates a formatted message with semantic coloring\n */\nfunction createColoredMessage(\n args: unknown[],\n context?: string,\n color: boolean = true\n): unknown[] {\n let message = \"\";\n const styles: string[] = [];\n const nativeValues: unknown[] = [];\n\n // Add context if provided\n if (context) {\n if (color) {\n message += `%c${context}::`;\n styles.push(LOG_STYLES.context);\n } else {\n message += `${context}::`;\n }\n }\n\n args.forEach((arg) => {\n const type = typeof arg;\n const isObjectLike =\n (type === \"object\" && arg !== null) || type === \"function\";\n\n // Only treat plain objects (not arrays, dates, etc) as expandable objects\n // typeof is not enough: Object.prototype.toString.call(arg) === '[object Object]' ensures it's a plain object\n if (\n isObjectLike &&\n (Array.isArray(arg) ||\n Object.prototype.toString.call(arg) === \"[object Object]\")\n ) {\n // Add a space before object/array if needed\n if (message.length > 0) message += \" \";\n nativeValues.push(arg);\n } else {\n const { style, displayValue } = getValueStyle(arg);\n if (color) {\n message += `${message.length > 0 ? \" \" : \"\"}%c${displayValue}`;\n styles.push(style);\n } else {\n message += `${message.length > 0 ? \" \" : \"\"}${displayValue}`;\n }\n }\n });\n\n // If message is empty (all objects), just return the objects\n if (!message && nativeValues.length) return nativeValues;\n\n if (color) {\n return [message, ...styles, ...nativeValues];\n } else {\n return [message, ...nativeValues];\n }\n}\n\n/**\n * Creates a logger instance that provides both regular logging and once logging\n * Regular logging always outputs to console\n * Once logging prevents logging the same message twice in a row per level\n * @param context - Optional context string to prepend to all log messages\n */\nfunction createLoggerBase(\n context?: string,\n options?: LoggerOptions\n): LoggerInstance {\n const color = options?.color !== false;\n const isOn = options?.isOn || (() => true);\n\n type LogOnceLevel = keyof BaseLogger;\n const lastMessages: Record<LogOnceLevel, string | undefined> = {\n log: undefined,\n warn: undefined,\n error: undefined,\n info: undefined,\n };\n\n const formatMessage = (...args: unknown[]): unknown[] => {\n return createColoredMessage(args, context, color);\n };\n\n const jsonReplacer = (_key: string, value: unknown): unknown => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"function\") {\n return \"[function]\";\n }\n return value;\n };\n\n const logOnce = (level: LogOnceLevel, ...args: unknown[]): void => {\n if (!isOn()) {\n return;\n }\n\n const message = args\n .map((val) => JSON.stringify(val, jsonReplacer))\n .join(\" \");\n\n if (message === lastMessages[level]) {\n return;\n }\n\n lastMessages[level] = message;\n\n const formattedArgs = formatMessage(...args);\n\n if (options?.showCallSite === true) {\n // to see where logger.log was called,\n // otherwise we only see where console.log was called on the next line\n console.trace(\"Call stack:\");\n }\n switch (level) {\n case \"warn\":\n console.warn(...formattedArgs);\n break;\n case \"error\":\n console.error(...formattedArgs);\n break;\n case \"info\":\n console.info(...formattedArgs);\n break;\n default:\n console.log(...formattedArgs);\n }\n };\n\n const onceLogger: OnceLogger = {\n log: (...args) => logOnce(\"log\", ...args),\n warn: (...args) => logOnce(\"warn\", ...args),\n error: (...args) => logOnce(\"error\", ...args),\n info: (...args) => logOnce(\"info\", ...args),\n reset: () => {\n lastMessages.log = undefined;\n lastMessages.warn = undefined;\n lastMessages.error = undefined;\n lastMessages.info = undefined;\n },\n getLastMessage: (level: LogOnceLevel = \"log\") => {\n return lastMessages[level];\n },\n };\n\n type LogLevel = Exclude<keyof LoggerInstance, \"once\">;\n\n const log = (level: LogLevel, ...args: unknown[]) => {\n if (!isOn()) {\n return;\n }\n switch (level) {\n case \"log\":\n case \"warn\":\n case \"error\":\n case \"info\":\n case \"debug\":\n console[level](...formatMessage(...args));\n break;\n case \"success\": {\n const successArgs = [\n `%c✅ `,\n LOG_STYLES.success,\n ...formatMessage(...args),\n ];\n console.log(...successArgs);\n break;\n }\n case \"table\": {\n const data = args[0];\n const properties = args[1] as string[] | undefined;\n if (context) {\n console.group(`%c${context}::`, LOG_STYLES.context);\n console.table(data, properties);\n console.groupEnd();\n } else {\n console.table(data, properties);\n }\n break;\n }\n case \"group\":\n case \"groupCollapsed\": {\n const label = args[0];\n if (context) {\n console[level](`%c${context}:: ${label}`, LOG_STYLES.context);\n } else {\n console[level](label);\n }\n break;\n }\n case \"groupEnd\": {\n console.groupEnd();\n break;\n }\n }\n };\n\n return {\n log: (...args: unknown[]) => log(\"log\", ...args),\n warn: (...args: unknown[]) => log(\"warn\", ...args),\n error: (...args: unknown[]) => log(\"error\", ...args),\n info: (...args: unknown[]) => log(\"info\", ...args),\n success: (...args: unknown[]) => {\n log(\"success\", ...args);\n },\n debug: (...args: unknown[]) => {\n log(\"debug\", ...args);\n },\n table: (data: unknown, properties?: string[]) => {\n log(\"table\", data, properties);\n },\n group: (label: string) => {\n log(\"group\", label);\n },\n groupCollapsed: (label: string) => {\n log(\"groupCollapsed\", label);\n },\n groupEnd: () => {\n log(\"groupEnd\");\n },\n once: onceLogger,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.js","names":["BaseLogger","log","args","warn","error","info","OnceLogger","reset","getLastMessage","level","CreateLoggerFn","context","options","LoggerOptions","LoggerInstance","once","success","debug","table","data","properties","group","label","groupCollapsed","groupEnd","color","showCallSite","isOn","LOG_STYLES","string","number","boolean","null","undefined","object","array","function","bigint","symbol","warning","logLevel","const","noop","noopLogger","_createNoopLogger","_createLogger","createLoggerBase","getValueStyle","value","style","displayValue","type","String","name","Array","isArray","length","Object","keys","createColoredMessage","message","styles","nativeValues","push","forEach","arg","isObjectLike","prototype","toString","call","LogOnceLevel","lastMessages","Record","formatMessage","jsonReplacer","_key","logOnce","map","val","JSON","stringify","join","formattedArgs","console","trace","onceLogger","LogLevel","Exclude","successArgs"],"sources":["../../../src/lib/utils/logger.ts"],"sourcesContent":["/**\n * A console log utility that prevents logging the same message twice in a row\n * with semantic coloring for different data types\n */\n\ntype BaseLogger = {\n log: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n};\n\ntype OnceLogger = BaseLogger & {\n reset: () => void;\n getLastMessage: (\n level?: \"log\" | \"warn\" | \"error\" | \"info\"\n ) => string | undefined;\n};\n\nexport type CreateLoggerFn = (\n context?: string,\n options?: LoggerOptions\n) => LoggerInstance;\n\nexport type LoggerInstance = BaseLogger & {\n once: OnceLogger;\n // Utility methods for common logging patterns\n success: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n table: (data: unknown, properties?: string[]) => void;\n group: (label: string) => void;\n groupCollapsed: (label: string) => void;\n groupEnd: () => void;\n};\n\nexport type LoggerOptions = {\n color?: boolean;\n showCallSite?: boolean;\n isOn?: () => boolean;\n};\n\n// CSS styles for semantic coloring\nconst LOG_STYLES = {\n // Context styling\n context: \"color: #6366f1; font-weight: bold;\",\n\n // Data type styling\n string: \"color: #059669; font-weight: 500;\",\n number: \"color: #dc2626; font-weight: 500;\",\n boolean: \"color: #7c3aed; font-weight: 500;\",\n null: \"color: #6b7280; font-style: italic;\",\n undefined: \"color: #6b7280; font-style: italic;\",\n object: \"color: #ea580c; font-weight: 500;\",\n array: \"color: #0891b2; font-weight: 500;\",\n function: \"color: #be185d; font-style: italic;\",\n bigint: \"color: #dc2626; font-weight: 500;\",\n symbol: \"color: #7c3aed; font-weight: 500;\",\n\n // Special values\n error: \"color: #dc2626; font-weight: bold;\",\n warning: \"color: #d97706; font-weight: bold;\",\n success: \"color: #059669; font-weight: bold;\",\n\n // Log level styling\n logLevel: {\n log: \"color: #1f2937;\",\n warn: \"color: #d97706; font-weight: bold;\",\n error: \"color: #dc2626; font-weight: bold;\",\n info: \"color: #0891b2; font-weight: bold;\",\n },\n} as const;\n\n// No-op functions for production\nconst noop = (...args: unknown[]) => {\n // Intentionally empty - no-op function\n void args;\n};\n\nconst noopLogger: LoggerInstance = {\n log: noop,\n warn: noop,\n error: noop,\n info: noop,\n success: noop,\n debug: noop,\n table: noop,\n group: noop,\n groupCollapsed: noop,\n groupEnd: noop,\n once: {\n log: noop,\n warn: noop,\n error: noop,\n info: noop,\n reset: noop,\n getLastMessage: () => undefined,\n },\n};\n\nexport const _createNoopLogger: CreateLoggerFn = () => noopLogger;\n\nexport const _createLogger: CreateLoggerFn = createLoggerBase;\n\n/**\n * Determines the type and style for a value\n */\nfunction getValueStyle(value: unknown): {\n style: string;\n displayValue: string;\n} {\n if (value === null) {\n return { style: LOG_STYLES.null, displayValue: \"null\" };\n }\n\n if (value === undefined) {\n return { style: LOG_STYLES.undefined, displayValue: \"undefined\" };\n }\n\n const type = typeof value;\n\n switch (type) {\n case \"string\":\n return { style: LOG_STYLES.string, displayValue: `\"${value}\"` };\n\n case \"number\":\n return { style: LOG_STYLES.number, displayValue: String(value) };\n\n case \"boolean\":\n return { style: LOG_STYLES.boolean, displayValue: String(value) };\n\n case \"bigint\":\n return { style: LOG_STYLES.bigint, displayValue: `${value}n` };\n\n case \"symbol\":\n return { style: LOG_STYLES.symbol, displayValue: String(value) };\n\n case \"function\":\n return {\n style: LOG_STYLES.function,\n displayValue: `[function: ${(value as { name?: string }).name || \"anonymous\"}]`,\n };\n\n case \"object\":\n if (Array.isArray(value)) {\n return {\n style: LOG_STYLES.array,\n displayValue: `[${value.length} items]`,\n };\n }\n return {\n style: LOG_STYLES.object,\n displayValue: `{${Object.keys(value as object).length} keys}`,\n };\n\n default:\n return { style: \"\", displayValue: String(value) };\n }\n}\n\n/**\n * Creates a formatted message with semantic coloring\n */\nfunction createColoredMessage(\n args: unknown[],\n context?: string,\n color: boolean = true\n): unknown[] {\n let message = \"\";\n const styles: string[] = [];\n const nativeValues: unknown[] = [];\n\n // Add context if provided\n if (context) {\n if (color) {\n message += `%c${context}::`;\n styles.push(LOG_STYLES.context);\n } else {\n message += `${context}::`;\n }\n }\n\n args.forEach((arg) => {\n const type = typeof arg;\n const isObjectLike =\n (type === \"object\" && arg !== null) || type === \"function\";\n\n // Only treat plain objects (not arrays, dates, etc) as expandable objects\n // typeof is not enough: Object.prototype.toString.call(arg) === '[object Object]' ensures it's a plain object\n if (\n isObjectLike &&\n (Array.isArray(arg) ||\n Object.prototype.toString.call(arg) === \"[object Object]\")\n ) {\n // Add a space before object/array if needed\n if (message.length > 0) message += \" \";\n nativeValues.push(arg);\n } else {\n const { style, displayValue } = getValueStyle(arg);\n if (color) {\n message += `${message.length > 0 ? \" \" : \"\"}%c${displayValue}`;\n styles.push(style);\n } else {\n message += `${message.length > 0 ? \" \" : \"\"}${displayValue}`;\n }\n }\n });\n\n // If message is empty (all objects), just return the objects\n if (!message && nativeValues.length) return nativeValues;\n\n if (color) {\n return [message, ...styles, ...nativeValues];\n } else {\n return [message, ...nativeValues];\n }\n}\n\n/**\n * Creates a logger instance that provides both regular logging and once logging\n * Regular logging always outputs to console\n * Once logging prevents logging the same message twice in a row per level\n * @param context - Optional context string to prepend to all log messages\n */\nfunction createLoggerBase(\n context?: string,\n options?: LoggerOptions\n): LoggerInstance {\n const color = options?.color !== false;\n const isOn = options?.isOn || (() => true);\n\n type LogOnceLevel = keyof BaseLogger;\n const lastMessages: Record<LogOnceLevel, string | undefined> = {\n log: undefined,\n warn: undefined,\n error: undefined,\n info: undefined,\n };\n\n const formatMessage = (...args: unknown[]): unknown[] => {\n return createColoredMessage(args, context, color);\n };\n\n const jsonReplacer = (_key: string, value: unknown): unknown => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"function\") {\n return \"[function]\";\n }\n return value;\n };\n\n const logOnce = (level: LogOnceLevel, ...args: unknown[]): void => {\n if (!isOn()) {\n return;\n }\n\n const message = args\n .map((val) => JSON.stringify(val, jsonReplacer))\n .join(\" \");\n\n if (message === lastMessages[level]) {\n return;\n }\n\n lastMessages[level] = message;\n\n const formattedArgs = formatMessage(...args);\n\n if (options?.showCallSite === true) {\n // to see where logger.log was called,\n // otherwise we only see where console.log was called on the next line\n console.trace(\"Call stack:\");\n }\n switch (level) {\n case \"warn\":\n console.warn(...formattedArgs);\n break;\n case \"error\":\n console.error(...formattedArgs);\n break;\n case \"info\":\n console.info(...formattedArgs);\n break;\n default:\n console.log(...formattedArgs);\n }\n };\n\n const onceLogger: OnceLogger = {\n log: (...args) => logOnce(\"log\", ...args),\n warn: (...args) => logOnce(\"warn\", ...args),\n error: (...args) => logOnce(\"error\", ...args),\n info: (...args) => logOnce(\"info\", ...args),\n reset: () => {\n lastMessages.log = undefined;\n lastMessages.warn = undefined;\n lastMessages.error = undefined;\n lastMessages.info = undefined;\n },\n getLastMessage: (level: LogOnceLevel = \"log\") => {\n return lastMessages[level];\n },\n };\n\n type LogLevel = Exclude<keyof LoggerInstance, \"once\">;\n\n const log = (level: LogLevel, ...args: unknown[]) => {\n if (!isOn()) {\n return;\n }\n switch (level) {\n case \"log\":\n case \"warn\":\n case \"error\":\n case \"info\":\n case \"debug\":\n console[level](...formatMessage(...args));\n break;\n case \"success\": {\n const successArgs = [\n `%c✅ `,\n LOG_STYLES.success,\n ...formatMessage(...args),\n ];\n console.log(...successArgs);\n break;\n }\n case \"table\": {\n const data = args[0];\n const properties = args[1] as string[] | undefined;\n if (context) {\n console.group(`%c${context}::`, LOG_STYLES.context);\n console.table(data, properties);\n console.groupEnd();\n } else {\n console.table(data, properties);\n }\n break;\n }\n case \"group\":\n case \"groupCollapsed\": {\n const label = args[0];\n if (context) {\n console[level](`%c${context}:: ${label}`, LOG_STYLES.context);\n } else {\n console[level](label);\n }\n break;\n }\n case \"groupEnd\": {\n console.groupEnd();\n break;\n }\n }\n };\n\n return {\n log: (...args: unknown[]) => log(\"log\", ...args),\n warn: (...args: unknown[]) => log(\"warn\", ...args),\n error: (...args: unknown[]) => log(\"error\", ...args),\n info: (...args: unknown[]) => log(\"info\", ...args),\n success: (...args: unknown[]) => {\n log(\"success\", ...args);\n },\n debug: (...args: unknown[]) => {\n log(\"debug\", ...args);\n },\n table: (data: unknown, properties?: string[]) => {\n log(\"table\", data, properties);\n },\n group: (label: string) => {\n log(\"group\", label);\n },\n groupCollapsed: (label: string) => {\n log(\"groupCollapsed\", label);\n },\n groupEnd: () => {\n log(\"groupEnd\");\n },\n once: onceLogger,\n };\n}\n"],"mappings":"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"}
|
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
import { DeltaOrMarketPrice } from '../../hooks/swap/prices/types';
|
|
2
2
|
/**
|
|
3
|
-
* Applies slippage to
|
|
3
|
+
* Applies slippage to a {srcAmount, destAmount} pair.
|
|
4
4
|
*
|
|
5
5
|
* @param srcAmount - The source amount of the trade.
|
|
6
6
|
* @param destAmount - The destination amount of the trade.
|
|
@@ -8,7 +8,10 @@ import { DeltaOrMarketPrice } from '../../hooks/swap/prices/types';
|
|
|
8
8
|
* @param side - The side of the trade, either "BUY" or "SELL".
|
|
9
9
|
* @returns An object containing the adjusted srcAmount and destAmount after applying slippage.
|
|
10
10
|
*/
|
|
11
|
-
export declare function applySlippage({ srcAmount, destAmount
|
|
11
|
+
export declare function applySlippage({ srcAmount, destAmount }: {
|
|
12
|
+
srcAmount: string;
|
|
13
|
+
destAmount: string;
|
|
14
|
+
}, slippage: number, side: "BUY" | "SELL"): {
|
|
12
15
|
srcAmount: string;
|
|
13
16
|
destAmount: string;
|
|
14
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/price.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMpE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,
|
|
1
|
+
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/price.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMpE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EACpE,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,KAAK,GAAG,MAAM;;;EAyBrB;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,UAQ9D;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,EAC/C,KAAK,EACL,eAAe,GAChB,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,UAGA;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAGxD"}
|
package/dist/lib/utils/price.js
CHANGED
|
@@ -13,15 +13,18 @@ function a({ srcAmount: e, destAmount: n }, r, i) {
|
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
function o(t) {
|
|
16
|
-
return
|
|
16
|
+
return e(t) ? t.partner.feePercent : t.partnerFee;
|
|
17
17
|
}
|
|
18
|
-
function s(
|
|
19
|
-
return
|
|
18
|
+
function s(t) {
|
|
19
|
+
return r(e(t) ? t.route.destination.output.amount : t.destAmount, o(t));
|
|
20
20
|
}
|
|
21
|
-
function c(e, t) {
|
|
21
|
+
function c({ price: e, slippagePercent: t }) {
|
|
22
|
+
return n(s(e), t);
|
|
23
|
+
}
|
|
24
|
+
function l(e, t) {
|
|
22
25
|
return t === 0 || e === t ? 0 : i(e).minus(t).div(t).mul(100).toNumber();
|
|
23
26
|
}
|
|
24
27
|
//#endregion
|
|
25
|
-
export { a as applySlippage,
|
|
28
|
+
export { a as applySlippage, s as getDestAmountAfterFee, c as getDestAmountAfterFeeAndSlippage, l as getPercentDifference };
|
|
26
29
|
|
|
27
30
|
//# sourceMappingURL=price.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price.js","names":["DeltaOrMarketPrice","amountAfterSlippage","subtractSlippage","subtractFee","Big","isDeltaPrice","applySlippage","srcAmount","destAmount","
|
|
1
|
+
{"version":3,"file":"price.js","names":["DeltaOrMarketPrice","amountAfterSlippage","subtractSlippage","subtractFee","Big","isDeltaPrice","applySlippage","srcAmount","destAmount","slippage","side","srcAmountAfterSlippage","toFixed","destAmountAfterSlippage","getPartnerFeePercent","price","partner","feePercent","partnerFee","getDestAmountAfterFee","route","destination","output","amount","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 a {srcAmount, destAmount} pair.\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 { srcAmount, destAmount }: { srcAmount: string; destAmount: string },\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\nfunction getPartnerFeePercent(price: DeltaOrMarketPrice): number {\n return isDeltaPrice(price) ? price.partner.feePercent : price.partnerFee;\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.route.destination.output.amount\n : price.destAmount;\n\n return subtractFee(destAmount, getPartnerFeePercent(price));\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,EAAEC,cAAWC,iBACbC,GACAC,GACA;CAoBA,OAnBIA,MAAS,QAOJ;EACLH,WAP6BN,EAC7BM,GACAE,GACAC,EACD,CAACE,QAAQ,EAGGD;EACXH;EACD,GASI;EACLD;EACAC,YAR8BP,EAC9BO,GACAC,GACAC,EACD,CAACE,QAAQ,EAIIC;EACb;;AAGH,SAASC,EAAqBC,GAAmC;CAC/D,OAAOV,EAAaU,EAAM,GAAGA,EAAMC,QAAQC,aAAaF,EAAMG;;AAShE,SAAgBC,EAAsBJ,GAA2B;CAO/D,OAAOZ,EAJYE,EAAaU,EAAM,GAClCA,EAAMK,MAAMC,YAAYC,OAAOC,SAC/BR,EAAMP,YAEqBM,EAAqBC,EAAM,CAAC;;AAW7D,SAAgBS,EAAiC,EAC/CT,UACAU,sBAIC;CAED,OAAOvB,EADoBiB,EAAsBJ,EACzBW,EAAoBD,EAAgB;;AAG9D,SAAgBE,EAAqBC,GAAWC,GAAW;CAEzD,OADIA,MAAM,KAAKD,MAAMC,IAAU,IACxBzB,EAAIwB,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"}
|
package/dist/lib/utils/twap.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DeltaPriceV2 } from '@velora-dex/sdk';
|
|
2
2
|
import { DeltaAuctionWithTwapOrder } from '../../hooks/swap/prices/delta/orders/types';
|
|
3
3
|
export declare function getTwapChunkAmount({ totalWei, numSlices, }: {
|
|
4
4
|
totalWei: string;
|
|
@@ -9,7 +9,7 @@ export declare function getTotalTwapAmount({ chunkWei, numSlices, }: {
|
|
|
9
9
|
numSlices: number;
|
|
10
10
|
}): string;
|
|
11
11
|
export declare function getTwapAmountsFromPrice({ price, numSlices, }: {
|
|
12
|
-
price:
|
|
12
|
+
price: DeltaPriceV2;
|
|
13
13
|
numSlices: number;
|
|
14
14
|
}): {
|
|
15
15
|
srcAmount: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twap.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/twap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"twap.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/twap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAExF,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAGT;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAGT;AAED,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;;;EAWA;AACD,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,SAAS,GACV,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;;;EAcA;AAED,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,SAAS,GACV,EAAE,IAAI,CAAC,yBAAyB,EAAE,OAAO,GAAG,WAAW,CAAC;;;EAIxD"}
|
package/dist/lib/utils/twap.js
CHANGED
|
@@ -12,11 +12,11 @@ function o({ chunkWei: e, numSlices: t }) {
|
|
|
12
12
|
function s({ price: e, numSlices: t }) {
|
|
13
13
|
return {
|
|
14
14
|
srcAmount: o({
|
|
15
|
-
chunkWei: e.
|
|
15
|
+
chunkWei: e.route.origin.input.amount,
|
|
16
16
|
numSlices: t
|
|
17
17
|
}),
|
|
18
18
|
destAmount: o({
|
|
19
|
-
chunkWei: e.
|
|
19
|
+
chunkWei: e.route.destination.output.amount,
|
|
20
20
|
numSlices: t
|
|
21
21
|
})
|
|
22
22
|
};
|