@velora-dex/widget 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/web3/AccountButton.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
- package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
- package/dist/components/web3/ConnectWallets/index.js +1 -1
- package/dist/components/web3/ConnectWallets/index.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletFlags.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Activities.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivityItems.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
- package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/AppHeader/state/showMoreAtom.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeListItem.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeProtocolsList.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgesList.js.map +1 -1
- package/dist/components/widget/BridgeList/hooks.js.map +1 -1
- package/dist/components/widget/BridgePreferences/BridgePreferences.js.map +1 -1
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
- package/dist/components/widget/Button/CancelButton/CancelButton.js.map +1 -1
- package/dist/components/widget/Button/CancelButton/CancelButtonWithDrawer.js.map +1 -1
- package/dist/components/widget/Button/DismissButton.js.map +1 -1
- package/dist/components/widget/Button/RefreshButton.js.map +1 -1
- package/dist/components/widget/CompareQuotes/CompareQuotes.js.map +1 -1
- package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
- package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
- package/dist/components/widget/DexesList/DexItem.js.map +1 -1
- package/dist/components/widget/DexesList/DexesList.js.map +1 -1
- package/dist/components/widget/DexesList/getDexProps.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
- package/dist/components/widget/Drawer/Overlay.js.map +1 -1
- package/dist/components/widget/Drawer/index.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/Duration/Duration.js.map +1 -1
- package/dist/components/widget/Duration/utils.js.map +1 -1
- package/dist/components/widget/EnabledExchanges/EnabledExchanges.js.map +1 -1
- package/dist/components/widget/EnabledExchanges/EnabledExchangesList.js.map +1 -1
- package/dist/components/widget/EnabledList/EnabledList.js.map +1 -1
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.js.map +1 -1
- package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
- package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
- package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
- package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
- package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
- package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
- package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
- package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
- package/dist/components/widget/ImportToken/useImportTokenDrawer.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +5 -8
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/constants.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
- package/dist/components/widget/LimitPriceInput/index.js +6 -6
- package/dist/components/widget/LimitPriceInput/index.js.map +1 -1
- package/dist/components/widget/Line/Line.js.map +1 -1
- package/dist/components/widget/ListItem/ListItemWithSwitch.js.map +1 -1
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/common/NetworkItem.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/utils/items.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
- package/dist/components/widget/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +5 -8
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/constants.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
- package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
- package/dist/components/widget/Screen/ScreenContainer.js.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
- package/dist/components/widget/SettingsButton/SettingsButton.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRateWithTooltip.js.map +1 -1
- package/dist/components/widget/SwapRate/utils.js.map +1 -1
- package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js.map +1 -1
- package/dist/components/widget/Tabs/Tabs.js.map +1 -1
- package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenLink.js.map +1 -1
- package/dist/components/widget/TokenInput/InputContainer.js.map +1 -1
- package/dist/components/widget/TokenInput/InputField.js.map +1 -1
- package/dist/components/widget/TokenInput/InputFooter.js.map +1 -1
- package/dist/components/widget/TokenInput/InputHeader.js.map +1 -1
- package/dist/components/widget/TokenInput/common/Balance.js.map +1 -1
- package/dist/components/widget/TokenInput/common/MaxButtons.js.map +1 -1
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelButtonWithDrawer.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelOrder/ConfirmCancel.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelOrder/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewScreen.js.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js.map +1 -1
- package/dist/components/widget/TradeParameters/DegenModeConfirmation.js.map +1 -1
- package/dist/components/widget/TradeParameters/DegenModeParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/EnabledExchangesParameters/EnabledExchangesParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/EnabledExchangesParameters/useDraftEnabledExchangesState.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/deltaParamActionsAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/enabledExchanges/disabledDexesAtomFamily.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/enabledExchanges/useDisabledDexes.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/slippageParamAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/tradePreferencesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/TransactionDetails/TransactionListItem.js.map +1 -1
- package/dist/components/widget/TransactionDetails/utils.js.map +1 -1
- package/dist/components/widget/Twap/CustomDurationDrawer.js.map +1 -1
- package/dist/components/widget/Twap/OrderDuration.js.map +1 -1
- package/dist/components/widget/Twap/OrderSplit.js.map +1 -1
- package/dist/components/widget/Twap/RateProtection.js.map +1 -1
- package/dist/components/widget/Twap/TwapDetailWithTooltip.js.map +1 -1
- package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
- package/dist/components/widget/Warning/Warning.js.map +1 -1
- package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
- package/dist/components/widget/YouGet/YouGet.js.map +1 -1
- package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/LimitOrderDetails.js.map +1 -1
- package/dist/core/OtcOrderButton.js.map +1 -1
- package/dist/core/OtcOrderDetails.js.map +1 -1
- package/dist/core/Toaster.js.map +1 -1
- package/dist/core/TradeFlowScreenButton.js.map +1 -1
- package/dist/core/TwapDetails.js.map +1 -1
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/Warnings.js.map +1 -1
- package/dist/core/across/isCrosschainPossible.js.map +1 -1
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
- package/dist/core/inputs/hooks/utils.js.map +1 -1
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/inputs/state/subscriptions.js.map +1 -1
- package/dist/core/limit/state/deadlineAtom.js.map +1 -1
- package/dist/core/limit/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputActionsAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
- package/dist/core/limit/state/receiverAddressAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/limit/state/utils.js.map +1 -1
- package/dist/core/limit/useLimitDetailsListProps.js.map +1 -1
- package/dist/core/limit/useLimitNotSupported.js.map +1 -1
- package/dist/core/limit/useLimitPriceDifference.js.map +1 -1
- package/dist/core/limit/useLimitPriceInputProps.js.map +1 -1
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/otc/state/deadlineAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputActionsAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
- package/dist/core/otc/state/receiverAddressAtom.js.map +1 -1
- package/dist/core/otc/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/otc/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/otc/useOtcDetailsListProps.js.map +1 -1
- package/dist/core/otc/useOtcNotSupported.js.map +1 -1
- package/dist/core/otc/useOtcPriceDifference.js.map +1 -1
- package/dist/core/otc/useOtcPriceInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenSwitcherProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
- package/dist/core/screen/hooks/useInitialValue.js.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
- package/dist/core/screen/hooks/useResizeObserver.js.map +1 -1
- package/dist/core/screen/hooks/useRunOnMount.js.map +1 -1
- package/dist/core/screen/state/hooks/useScreen.js.map +1 -1
- package/dist/core/screen/state/hooks/useScreenValue.js.map +1 -1
- package/dist/core/screen/state/hooks/useSetScreen.js.map +1 -1
- package/dist/core/screen/state/screenAtom.js.map +1 -1
- package/dist/core/state/apiConfigAtom.js.map +1 -1
- package/dist/core/state/chainToAtom.js.map +1 -1
- package/dist/core/state/configActionsAtom.js.map +1 -1
- package/dist/core/state/configEffectAtom.js.map +1 -1
- package/dist/core/state/containerAtom.js.map +1 -1
- package/dist/core/state/enabledChainsAtom.js.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.js.map +1 -1
- package/dist/core/state/externalProviderAtom.js.map +1 -1
- package/dist/core/state/getSelectableDestChains.js.map +1 -1
- package/dist/core/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/state/tradeModeAtom.js.map +1 -1
- package/dist/core/state/validatedPartnerConfigAtom.js.map +1 -1
- package/dist/core/state/validatedReferrerConfigAtom.js.map +1 -1
- package/dist/core/state/widgetEventsAtom.js.map +1 -1
- package/dist/core/subscriptions.js.map +1 -1
- package/dist/core/swapDetails/fees.js.map +1 -1
- package/dist/core/swapDetails/maxToPay.js.map +1 -1
- package/dist/core/swapDetails/orderRouting.js.map +1 -1
- package/dist/core/swapDetails/priceImpact.js.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
- package/dist/core/swapDetails/youGet.js.map +1 -1
- package/dist/core/twap/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
- package/dist/core/twap/state/twapParamsAtom.js.map +1 -1
- package/dist/core/twap/state/twapSideAtom.js.map +1 -1
- package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
- package/dist/core/twap/useTwapDetailsListProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenSwitcherProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -1
- package/dist/events/effects/formInput.js.map +1 -1
- package/dist/events/effects/price.js.map +1 -1
- package/dist/events/effects/swapMode.js.map +1 -1
- package/dist/events/getters/limit.js.map +1 -1
- package/dist/events/getters/otc.js.map +1 -1
- package/dist/events/getters/settings.js.map +1 -1
- package/dist/events/getters/swap.js.map +1 -1
- package/dist/events/getters/twap.js.map +1 -1
- package/dist/events/getters/widgetState.js.map +1 -1
- package/dist/events/hooks/useActivateEffects.js.map +1 -1
- package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
- package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__6feb48fe37bd41e9af5c8e81d5a6f4e1/external/vaul/dist/index.js.map +1 -1
- package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
- package/dist/hooks/batch/useBatchWithApproveTxs.js.map +1 -1
- package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
- package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
- package/dist/hooks/gas/useGasPrices.js.map +1 -1
- package/dist/hooks/gas/utils.js.map +1 -1
- package/dist/hooks/getCode/query.js.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
- package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
- package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/utils.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/utils/constants.js.map +1 -1
- package/dist/hooks/permit/utils/construct.js.map +1 -1
- package/dist/hooks/permit/utils/deadlines.js.map +1 -1
- package/dist/hooks/permit/utils/detect.js.map +1 -1
- package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
- package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
- package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
- package/dist/hooks/permit/utils/utils.js.map +1 -1
- package/dist/hooks/sdk/useGetContracts.js.map +1 -1
- package/dist/hooks/sdk/useSpender.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/effect.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/storage.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +8 -11
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/factory.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/dexesList/useDexesList.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/errors.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermitEvents.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js.map +1 -1
- package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/allowance/utils.js.map +1 -1
- package/dist/hooks/tokens/balances/queries.js.map +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
- package/dist/hooks/tokens/data/useFetchTokens.js.map +1 -1
- package/dist/hooks/tokens/data/useMultichainTokensData.js.map +1 -1
- package/dist/hooks/tokens/prices/queries.js.map +1 -1
- package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
- package/dist/hooks/tokens/useNativeToken.js.map +1 -1
- package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
- package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
- package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
- package/dist/hooks/txs/mutations/useReplaceTx.js.map +1 -1
- package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
- package/dist/hooks/txs/queries/useAccountNonce.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/txs/queries/useTxFees.js.map +1 -1
- package/dist/hooks/txs/queries/useTxHistory.js.map +1 -1
- package/dist/hooks/txs/queries/useTxResponse.js.map +1 -1
- package/dist/hooks/txs/queries/useWalletCanReplaceTx.js.map +1 -1
- package/dist/hooks/txs/queries/utils.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBreakpoints.js.map +1 -1
- package/dist/hooks/useBridgeInfo.js.map +1 -1
- package/dist/hooks/useBridgeProtocols.js.map +1 -1
- package/dist/hooks/useCachedQueryError.js.map +1 -1
- package/dist/hooks/useChainMatches.js.map +1 -1
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/hooks/useCurrentChain.js.map +1 -1
- package/dist/hooks/useDebouncedInputState.js.map +1 -1
- package/dist/hooks/useEIP1559Enabled.js.map +1 -1
- package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
- package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
- package/dist/hooks/useMinViemClient.js.map +1 -1
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSelectableDestChains.js.map +1 -1
- package/dist/hooks/useSlippage.js.map +1 -1
- package/dist/hooks/useSwitchChainWithGuard.js.map +1 -1
- package/dist/lib/constants/urls.js.map +1 -1
- package/dist/lib/ipfs.js.map +1 -1
- package/dist/lib/queryClient.js.map +1 -1
- package/dist/lib/tradeMode.js.map +1 -1
- package/dist/lib/utils/approval.js.map +1 -1
- package/dist/lib/utils/atomWithCompare.js.map +1 -1
- package/dist/lib/utils/copyToClipboard.js.map +1 -1
- package/dist/lib/utils/delta.js.map +1 -1
- package/dist/lib/utils/dexes.js.map +1 -1
- package/dist/lib/utils/explorer.js.map +1 -1
- package/dist/lib/utils/fee.js.map +1 -1
- package/dist/lib/utils/formatFiatPrice.js.map +1 -1
- package/dist/lib/utils/formatPercent.js.map +1 -1
- package/dist/lib/utils/formatTokenBalance.js.map +1 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/logger.js.map +1 -1
- package/dist/lib/utils/metabase.js.map +1 -1
- package/dist/lib/utils/mobile.js.map +1 -1
- package/dist/lib/utils/price.js.map +1 -1
- package/dist/lib/utils/priceImpact.js.map +1 -1
- package/dist/lib/utils/providerErrors.js.map +1 -1
- package/dist/lib/utils/rate.js.map +1 -1
- package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
- package/dist/lib/utils/savedAmountUSD.js.map +1 -1
- package/dist/lib/utils/scaleFactor.js.map +1 -1
- package/dist/lib/utils/slippage.js.map +1 -1
- package/dist/lib/utils/time.js.map +1 -1
- package/dist/lib/utils/toDecimal.js.map +1 -1
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/utils/tradeFlow.js.map +1 -1
- package/dist/lib/utils/transactionHandlers.js.map +1 -1
- package/dist/lib/utils/tuple.js.map +1 -1
- package/dist/lib/utils/twap.js.map +1 -1
- package/dist/lib/utils/useDateNow.js.map +1 -1
- package/dist/lib/web3/wagmi/config.js.map +1 -1
- package/dist/lib/web3/wagmi/external.js.map +1 -1
- package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
- package/dist/lib/web3/wagmi/utils.js.map +1 -1
- package/dist/tokens/blacklist.js.map +1 -1
- package/dist/tokens/constructor.js.map +1 -1
- package/dist/tokens/defaultTokens.js.map +1 -1
- package/dist/tokens/hooks.js.map +1 -1
- package/dist/tokens/lists/constants.js.map +1 -1
- package/dist/tokens/lists/download.js.map +1 -1
- package/dist/tokens/lists/state/effects.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
- package/dist/tokens/overrides.js.map +1 -1
- package/dist/tokens/queries.js.map +1 -1
- package/dist/tokens/stabeCoins/hooks.js.map +1 -1
- package/dist/tokens/stabeCoins/index.js.map +1 -1
- package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
- package/dist/tokens/state/allTokensByChainAtom.js.map +1 -1
- package/dist/tokens/state/constructTokens.js.map +1 -1
- package/dist/tokens/state/fromListsAtom.js.map +1 -1
- package/dist/tokens/utils/areTokensSame.js.map +1 -1
- package/dist/tokens/utils/brand.js.map +1 -1
- package/dist/tokens/utils/eth.js.map +1 -1
- package/dist/tokens/utils/filtering.js.map +1 -1
- package/dist/tokens/utils/sets.js.map +1 -1
- package/dist/tokens/utils/sorting.js.map +1 -1
- package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -1
- package/dist/transactions/hash.js.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
- package/dist/transactions/queries/ensureEstimateFeesPerGas.js.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/transactions/queries/ensureTxResponse.js.map +1 -1
- package/dist/transactions/state/effects/finalize.js.map +1 -1
- package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
- package/dist/transactions/state/hooks/useMarkTxAsDropped.js.map +1 -1
- package/dist/transactions/state/hooks/useTransactions.js.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
- package/dist/transactions/state/transactionsAtom.js.map +1 -1
- package/dist/transactions/status.js.map +1 -1
- package/dist/transactions/utils.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReplaceTx.js","names":["useAccount","useChainId","EstimateFeesPerGasReturnType","TransactionNotFoundError","Address","Hash","Hex","TransactionReceipt","TransactionRequest","assert","SupportedChainId","useSendArbitraryTx","useTxResponse","passFeeValueTxTypesOnly","useGetChainFeeType","useTxFees","useAwaitTx","useEnsureTxReceipt","TxResponse","useMutation","useLogger","TxSentObject","CancelOrderStepKey","useGetAccountNonce","useWidgetEvents","CancelEventTxType","useWalletCanReplaceTx","useMarkTxAsDropped","GAS_BUMP_FACTOR","num","denom","increaseGas","value","min","increased","UseReplaceTxInput","txHash","onSuccess","result","ReplaceTxResult","onSettled","onError","error","Error","chainId","cancelTxType","enabled","UseReplaceTxReturn","replaceTx","ReplaceTxFn","isPending","isSuccess","isError","step","reset","originalTxResponse","response","hash","replacementTx","receipt","minFees","isWalletSupported","TxForReplacement","from","nonce","to","input","gas","gasPrice","maxFeePerGas","maxPriorityFeePerGas","ReplacementTxAction","BuildReplacementRequestParams","tx","Pick","TxMockResponse","action","currentFees","buildReplacementRequest","undefined","base","data","hasEip1559","hasLegacyGasPrice","isNotLegacyGasPrice","type","originalTx","replacementRequest","replacementTxHash","replacementTxReceipt","ReplaceTxInput","onTxSent","OnTxSent","signal","AbortSignal","txSent","Promise","REPLACE_TX_MUTATION_KEY","useReplaceTx","t0","$","_c","_chainId","t1","appChainId","queriesEnabled","t2","query","txResponseQuery","ensureTxResponse","t3","t4","t5","ensureEstimateFeesPerGas","currentFeesQuery","sendTxMut","t6","t7","replacementTxReceiptQuery","t8","ensureTxReceipt","logger","getAccountNonce","getChainFeeType","address","account","onCancelTx","t9","t10","throwIfAborted","originalTxObject","t11","feeType","all","replacementTxHash_0","sendTransactionAsync","event","name","params","txType","originalTxHash","log","replacementTxReceiptPromise","transactionHash","receiptPromise","transactionSpecificData","swapTxHash","markTxAsDropped","Symbol","for","variables","t12","variables_0","t13","error_0","variables_1","t14","t15","mutationFn","mutationKey","onMutate","replaceTxMut","t16","t17","mutateAsync"],"sources":["../../../../src/hooks/txs/mutations/useReplaceTx.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { type EstimateFeesPerGasReturnType } from \"@wagmi/core\";\nimport {\n TransactionNotFoundError,\n type Address,\n type Hash,\n type Hex,\n type TransactionReceipt,\n type TransactionRequest,\n} from \"viem\";\nimport { assert } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useSendArbitraryTx } from \"./useSendTx\";\nimport { useTxResponse } from \"../queries/useTxResponse\";\nimport {\n passFeeValueTxTypesOnly,\n useGetChainFeeType,\n useTxFees,\n} from \"../queries/useTxFees\";\nimport { useAwaitTx, useEnsureTxReceipt } from \"../queries/useAwaitTx\";\nimport type { TxResponse } from \"@/transactions/queries/ensureTxResponse\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useLogger } from \"@/core/logger\";\nimport type { TxSentObject } from \"@/lib/utils/transactionHandlers\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { useGetAccountNonce } from \"../queries/useAccountNonce\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport type { CancelEventTxType } from \"@/events/types/cancelTx\";\nimport { useWalletCanReplaceTx } from \"../queries/useWalletCanReplaceTx\";\nimport { useMarkTxAsDropped } from \"@/transactions/state/hooks/useMarkTxAsDropped\";\n\n/**\n * 15% gas bump for replacement txs (BigInt-safe: 115/100).\n * Standard nodes (Geth, Besu, Reth) require ≥10%; we use 15% for a small safety\n * margin so replacements are accepted across varied RPCs and node configs\n * without overpaying (e.g. vs 20%).\n */\nconst GAS_BUMP_FACTOR = { num: 115n, denom: 100n };\n\nfunction increaseGas(value: bigint, min = 0n): bigint {\n const increased = (value * GAS_BUMP_FACTOR.num) / GAS_BUMP_FACTOR.denom;\n return increased < min ? min : increased;\n}\n\ntype UseReplaceTxInput = {\n txHash?: Hash;\n onSuccess?: (result: ReplaceTxResult) => void;\n onSettled?: () => void;\n onError?: (error: Error) => void;\n chainId?: SupportedChainId;\n cancelTxType: CancelEventTxType;\n enabled?: boolean;\n};\n\ntype UseReplaceTxReturn = {\n replaceTx: ReplaceTxFn;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: ReplaceTxResult;\n step?: CancelOrderStepKey;\n reset: () => void;\n originalTxResponse: {\n response?: TxResponse;\n hash?: Hash;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n replacementTx: {\n hash?: Hash;\n receipt?: TransactionReceipt;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n minFees?: EstimateFeesPerGasReturnType;\n isWalletSupported: boolean;\n};\n\n/** Minimal tx shape needed to build a replacement (legacy or EIP-1559). */\ntype TxForReplacement = {\n from: Address;\n nonce: number;\n to?: Address | null;\n value?: bigint;\n input?: Hex;\n gas?: bigint;\n chainId?: number;\n} & (\n | { gasPrice?: bigint; maxFeePerGas?: never; maxPriorityFeePerGas?: never }\n | {\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n gasPrice?: never;\n }\n);\n\nexport type ReplacementTxAction = \"cancel\" | \"speedUp\";\n\ntype BuildReplacementRequestParams = {\n tx: TxForReplacement & Pick<TxMockResponse, \"type\">;\n action: ReplacementTxAction;\n currentFees: EstimateFeesPerGasReturnType;\n};\n\nfunction buildReplacementRequest({\n action,\n currentFees,\n tx,\n}: BuildReplacementRequestParams): TransactionRequest {\n assert(tx, \"Transaction not found\");\n assert(tx.from, \"Transaction has no from address\");\n assert(tx.nonce !== undefined, \"Transaction has no nonce\");\n\n const base: TransactionRequest = {\n from: tx.from,\n nonce: tx.nonce,\n gas: tx.gas,\n };\n\n if (action === \"cancel\") {\n base.to = tx.from;\n base.value = 0n;\n base.data = \"0x\";\n } else {\n assert(tx.to, \"Transaction has no to address\");\n base.to = tx.to;\n base.value = tx.value ?? 0n;\n base.data = tx.input ?? \"0x\";\n }\n\n const hasEip1559 =\n \"maxFeePerGas\" in tx &&\n tx.maxFeePerGas != null &&\n \"maxPriorityFeePerGas\" in tx &&\n tx.maxPriorityFeePerGas != null;\n\n const hasLegacyGasPrice = \"gasPrice\" in tx && tx.gasPrice != null;\n const isNotLegacyGasPrice = !hasLegacyGasPrice && tx.type !== \"legacy\";\n\n if (hasEip1559 || isNotLegacyGasPrice) {\n base.maxFeePerGas = increaseGas(\n tx.maxFeePerGas ?? 0n,\n currentFees.maxFeePerGas\n );\n base.maxPriorityFeePerGas = increaseGas(\n tx.maxPriorityFeePerGas ?? 0n,\n currentFees.maxPriorityFeePerGas\n );\n } else {\n const gasPrice = \"gasPrice\" in tx ? (tx.gasPrice ?? 0n) : 0n;\n base.gasPrice = increaseGas(gasPrice, currentFees.gasPrice);\n }\n\n return base;\n}\n\ntype TxMockResponse = TxForReplacement & {\n type: TxResponse[\"type\"];\n hash: Hash;\n};\n\nexport type ReplaceTxResult = {\n originalTx: TxResponse | TxMockResponse;\n replacementRequest: TransactionRequest;\n replacementTxHash: Hash;\n replacementTxReceipt: TransactionReceipt;\n};\n\ntype ReplaceTxInput = {\n action: ReplacementTxAction;\n hash: Hash;\n onTxSent?: OnTxSent;\n signal?: AbortSignal;\n};\n\ntype OnTxSent = (txSent: TxSentObject & { action: \"cancelSwap\" }) => void;\n\ntype ReplaceTxFn = (input: ReplaceTxInput) => Promise<ReplaceTxResult>;\n\nconst REPLACE_TX_MUTATION_KEY = \"replaceTx\";\n\nexport function useReplaceTx({\n txHash,\n onSuccess,\n onError,\n onSettled,\n chainId: _chainId,\n cancelTxType,\n enabled = true,\n}: UseReplaceTxInput): UseReplaceTxReturn {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n const isWalletSupported = useWalletCanReplaceTx();\n const queriesEnabled = isWalletSupported && enabled;\n\n /** 1. Get the original tx response */\n const { query: txResponseQuery, ensureTxResponse } = useTxResponse({\n hash: txHash,\n chainId,\n enabled: queriesEnabled,\n });\n\n const originalTxResponse = txResponseQuery.data;\n\n const originalTx: UseReplaceTxReturn[\"originalTxResponse\"] = {\n response: originalTxResponse,\n hash: txHash,\n isPending: txResponseQuery.isPending,\n isSuccess: txResponseQuery.isSuccess,\n isError: txResponseQuery.isError,\n error: txResponseQuery.error,\n };\n\n /** 2. Get the estimated fees for transactions at this */\n const { ensureEstimateFeesPerGas, query: currentFeesQuery } = useTxFees({\n chainId,\n type: originalTxResponse?.type\n ? passFeeValueTxTypesOnly(originalTxResponse.type)\n : undefined,\n enabled: queriesEnabled,\n });\n\n /** 3. Send a replacement tx */\n const sendTxMut = useSendArbitraryTx();\n\n const replacementTxHash = sendTxMut.txHash;\n\n /** 4. Wait for the replacement tx to be mined */\n const replacementTxReceiptQuery = useAwaitTx({\n chainId,\n hash: replacementTxHash,\n query: { enabled: queriesEnabled },\n });\n\n const replacementTx: UseReplaceTxReturn[\"replacementTx\"] = {\n hash: replacementTxHash,\n receipt: replacementTxReceiptQuery.data,\n isPending: replacementTxReceiptQuery.isPending,\n isSuccess: replacementTxReceiptQuery.isSuccess,\n isError: replacementTxReceiptQuery.isError,\n error: replacementTxReceiptQuery.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const logger = useLogger(\"ReplaceTx\");\n\n const getAccountNonce = useGetAccountNonce();\n const getChainFeeType = useGetChainFeeType();\n\n const { address: account } = useAccount();\n\n const { onCancelTx } = useWidgetEvents();\n\n const replaceTx: ReplaceTxFn = async ({ hash, action, onTxSent, signal }) => {\n assert(chainId != null, \"Chain not selected\");\n assert(account, \"Account not connected\");\n assert(\n isWalletSupported,\n \"Wallet does not support replacement txs or txParams.nonce\"\n );\n sendTxMut.reset();\n\n signal?.throwIfAborted();\n\n /** 1. Get the original tx response */\n let originalTxObject: TxMockResponse | null = null;\n try {\n originalTxObject = await ensureTxResponse({ hash, chainId });\n } catch (error) {\n if (error instanceof TransactionNotFoundError) {\n // tx with low gas may never be found\n logger.error(\"Original tx not found\", error);\n } else {\n throw error;\n }\n }\n\n if (!originalTxObject) {\n const [nonce, feeType] = await Promise.all([\n // a guess at the nonce we need to cancel the original tx,\n // gets nonce at the latest block\n // excluding the possibly pending (or dropped/not discovered tx) at pending block\n getAccountNonce({ chainId, address: account }),\n getChainFeeType(chainId),\n ]);\n originalTxObject = {\n from: account,\n nonce,\n type: feeType,\n hash,\n };\n }\n\n signal?.throwIfAborted();\n\n /** 2. Get the estimated fees for transactions at this */\n const currentFees = await ensureEstimateFeesPerGas({\n chainId,\n type: passFeeValueTxTypesOnly(originalTxObject.type),\n });\n\n signal?.throwIfAborted();\n\n /** 3. Build the replacement request */\n const replacementRequest = buildReplacementRequest({\n action,\n currentFees,\n tx: originalTxObject,\n });\n\n /** 4. Send the replacement tx */\n const replacementTxHash = await sendTxMut.sendTransactionAsync({\n ...replacementRequest,\n chainId,\n });\n\n if (action === \"cancel\") {\n onCancelTx?.({\n event: {\n name: \"CancelTx:sent\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: originalTxObject.hash,\n originalTx: originalTxObject,\n replacementRequest: replacementRequest,\n replacementTxHash: replacementTxHash,\n },\n },\n });\n }\n signal?.throwIfAborted();\n\n logger.log(\"Replacement tx sent\", {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n });\n\n /** 5. Wait for the replacement tx to be mined */\n const replacementTxReceiptPromise = ensureTxReceipt({\n chainId,\n hash: replacementTxHash,\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n transactionHash: replacementTxHash,\n action: \"cancelSwap\",\n receiptPromise: replacementTxReceiptPromise,\n transactionSpecificData: {\n action: \"cancelSwap\",\n swapTxHash: hash,\n },\n });\n }\n\n const replacementTxReceipt = await replacementTxReceiptPromise;\n\n return {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n replacementTxReceipt,\n };\n };\n\n const markTxAsDropped = useMarkTxAsDropped();\n\n const replaceTxMut = useMutation({\n mutationFn: replaceTx,\n mutationKey: [REPLACE_TX_MUTATION_KEY],\n onMutate: (variables) => {\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:request\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n },\n },\n });\n },\n onSuccess: (data, variables) => {\n logger.log(\"Replace tx success\", data);\n markTxAsDropped({\n account: data.originalTx.from,\n txHash: data.originalTx.hash,\n action: variables.action,\n replacementTxHash: data.replacementTxHash,\n });\n onSuccess?.(data);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:confirmed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: data.originalTx.hash,\n originalTx: data.originalTx,\n replacementRequest: data.replacementRequest,\n replacementTxHash: data.replacementTxHash,\n replacementTxReceipt: data.replacementTxReceipt,\n },\n },\n });\n },\n onError: (error, variables) => {\n logger.error(\"Replace tx error\", error);\n onError?.(error);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:failed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n error: error,\n },\n },\n });\n },\n onSettled: () => {\n onSettled?.();\n logger.log(\"Replace tx settled\");\n },\n });\n\n const reset = () => {\n sendTxMut.reset();\n replaceTxMut.reset();\n };\n\n let step: CancelOrderStepKey | undefined;\n if (replaceTxMut.isPending) {\n // Waiting for wallet confirmation / signature\n step = \"order-cancellation-approval\";\n if (replacementTx.hash) {\n // Tx submitted; waiting for it to be mined\n step = \"order-cancellation-execution\";\n }\n } else if (replaceTxMut.isSuccess) {\n step = \"order-cancellation-success\";\n } else if (replaceTxMut.isError) {\n step = \"order-cancellation-error\";\n }\n\n return {\n originalTxResponse: originalTx,\n replacementTx,\n minFees: currentFeesQuery.data,\n replaceTx: replaceTxMut.mutateAsync,\n isPending: replaceTxMut.isPending,\n isSuccess: replaceTxMut.isSuccess,\n isError: replaceTxMut.isError,\n error: replaceTxMut.error,\n result: replaceTxMut.data,\n reset,\n step,\n isWalletSupported,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useReplaceTx.js","names":["useAccount","useChainId","EstimateFeesPerGasReturnType","TransactionNotFoundError","Address","Hash","Hex","TransactionReceipt","TransactionRequest","assert","SupportedChainId","useSendArbitraryTx","useTxResponse","passFeeValueTxTypesOnly","useGetChainFeeType","useTxFees","useAwaitTx","useEnsureTxReceipt","TxResponse","useMutation","useLogger","TxSentObject","CancelOrderStepKey","useGetAccountNonce","useWidgetEvents","CancelEventTxType","useWalletCanReplaceTx","useMarkTxAsDropped","GAS_BUMP_FACTOR","num","denom","increaseGas","value","min","increased","UseReplaceTxInput","txHash","onSuccess","result","ReplaceTxResult","onSettled","onError","error","Error","chainId","cancelTxType","enabled","UseReplaceTxReturn","replaceTx","ReplaceTxFn","isPending","isSuccess","isError","step","reset","originalTxResponse","response","hash","replacementTx","receipt","minFees","isWalletSupported","TxForReplacement","from","nonce","to","input","gas","gasPrice","maxFeePerGas","maxPriorityFeePerGas","ReplacementTxAction","BuildReplacementRequestParams","tx","Pick","TxMockResponse","action","currentFees","buildReplacementRequest","undefined","base","data","hasEip1559","hasLegacyGasPrice","isNotLegacyGasPrice","type","originalTx","replacementRequest","replacementTxHash","replacementTxReceipt","ReplaceTxInput","onTxSent","OnTxSent","signal","AbortSignal","txSent","Promise","REPLACE_TX_MUTATION_KEY","useReplaceTx","t0","$","_c","_chainId","t1","appChainId","queriesEnabled","t2","query","txResponseQuery","ensureTxResponse","t3","t4","t5","ensureEstimateFeesPerGas","currentFeesQuery","sendTxMut","t6","t7","replacementTxReceiptQuery","t8","ensureTxReceipt","logger","getAccountNonce","getChainFeeType","address","account","onCancelTx","t9","t10","throwIfAborted","originalTxObject","t11","feeType","all","replacementTxHash_0","sendTransactionAsync","event","name","params","txType","originalTxHash","log","replacementTxReceiptPromise","transactionHash","receiptPromise","transactionSpecificData","swapTxHash","markTxAsDropped","Symbol","for","variables","t12","variables_0","t13","error_0","variables_1","t14","t15","mutationFn","mutationKey","onMutate","replaceTxMut","t16","t17","mutateAsync"],"sources":["../../../../src/hooks/txs/mutations/useReplaceTx.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { type EstimateFeesPerGasReturnType } from \"@wagmi/core\";\nimport {\n TransactionNotFoundError,\n type Address,\n type Hash,\n type Hex,\n type TransactionReceipt,\n type TransactionRequest,\n} from \"viem\";\nimport { assert } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useSendArbitraryTx } from \"./useSendTx\";\nimport { useTxResponse } from \"../queries/useTxResponse\";\nimport {\n passFeeValueTxTypesOnly,\n useGetChainFeeType,\n useTxFees,\n} from \"../queries/useTxFees\";\nimport { useAwaitTx, useEnsureTxReceipt } from \"../queries/useAwaitTx\";\nimport type { TxResponse } from \"@/transactions/queries/ensureTxResponse\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useLogger } from \"@/core/logger\";\nimport type { TxSentObject } from \"@/lib/utils/transactionHandlers\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { useGetAccountNonce } from \"../queries/useAccountNonce\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport type { CancelEventTxType } from \"@/events/types/cancelTx\";\nimport { useWalletCanReplaceTx } from \"../queries/useWalletCanReplaceTx\";\nimport { useMarkTxAsDropped } from \"@/transactions/state/hooks/useMarkTxAsDropped\";\n\n/**\n * 15% gas bump for replacement txs (BigInt-safe: 115/100).\n * Standard nodes (Geth, Besu, Reth) require ≥10%; we use 15% for a small safety\n * margin so replacements are accepted across varied RPCs and node configs\n * without overpaying (e.g. vs 20%).\n */\nconst GAS_BUMP_FACTOR = { num: 115n, denom: 100n };\n\nfunction increaseGas(value: bigint, min = 0n): bigint {\n const increased = (value * GAS_BUMP_FACTOR.num) / GAS_BUMP_FACTOR.denom;\n return increased < min ? min : increased;\n}\n\ntype UseReplaceTxInput = {\n txHash?: Hash;\n onSuccess?: (result: ReplaceTxResult) => void;\n onSettled?: () => void;\n onError?: (error: Error) => void;\n chainId?: SupportedChainId;\n cancelTxType: CancelEventTxType;\n enabled?: boolean;\n};\n\ntype UseReplaceTxReturn = {\n replaceTx: ReplaceTxFn;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: ReplaceTxResult;\n step?: CancelOrderStepKey;\n reset: () => void;\n originalTxResponse: {\n response?: TxResponse;\n hash?: Hash;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n replacementTx: {\n hash?: Hash;\n receipt?: TransactionReceipt;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n minFees?: EstimateFeesPerGasReturnType;\n isWalletSupported: boolean;\n};\n\n/** Minimal tx shape needed to build a replacement (legacy or EIP-1559). */\ntype TxForReplacement = {\n from: Address;\n nonce: number;\n to?: Address | null;\n value?: bigint;\n input?: Hex;\n gas?: bigint;\n chainId?: number;\n} & (\n | { gasPrice?: bigint; maxFeePerGas?: never; maxPriorityFeePerGas?: never }\n | {\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n gasPrice?: never;\n }\n);\n\nexport type ReplacementTxAction = \"cancel\" | \"speedUp\";\n\ntype BuildReplacementRequestParams = {\n tx: TxForReplacement & Pick<TxMockResponse, \"type\">;\n action: ReplacementTxAction;\n currentFees: EstimateFeesPerGasReturnType;\n};\n\nfunction buildReplacementRequest({\n action,\n currentFees,\n tx,\n}: BuildReplacementRequestParams): TransactionRequest {\n assert(tx, \"Transaction not found\");\n assert(tx.from, \"Transaction has no from address\");\n assert(tx.nonce !== undefined, \"Transaction has no nonce\");\n\n const base: TransactionRequest = {\n from: tx.from,\n nonce: tx.nonce,\n gas: tx.gas,\n };\n\n if (action === \"cancel\") {\n base.to = tx.from;\n base.value = 0n;\n base.data = \"0x\";\n } else {\n assert(tx.to, \"Transaction has no to address\");\n base.to = tx.to;\n base.value = tx.value ?? 0n;\n base.data = tx.input ?? \"0x\";\n }\n\n const hasEip1559 =\n \"maxFeePerGas\" in tx &&\n tx.maxFeePerGas != null &&\n \"maxPriorityFeePerGas\" in tx &&\n tx.maxPriorityFeePerGas != null;\n\n const hasLegacyGasPrice = \"gasPrice\" in tx && tx.gasPrice != null;\n const isNotLegacyGasPrice = !hasLegacyGasPrice && tx.type !== \"legacy\";\n\n if (hasEip1559 || isNotLegacyGasPrice) {\n base.maxFeePerGas = increaseGas(\n tx.maxFeePerGas ?? 0n,\n currentFees.maxFeePerGas\n );\n base.maxPriorityFeePerGas = increaseGas(\n tx.maxPriorityFeePerGas ?? 0n,\n currentFees.maxPriorityFeePerGas\n );\n } else {\n const gasPrice = \"gasPrice\" in tx ? (tx.gasPrice ?? 0n) : 0n;\n base.gasPrice = increaseGas(gasPrice, currentFees.gasPrice);\n }\n\n return base;\n}\n\ntype TxMockResponse = TxForReplacement & {\n type: TxResponse[\"type\"];\n hash: Hash;\n};\n\nexport type ReplaceTxResult = {\n originalTx: TxResponse | TxMockResponse;\n replacementRequest: TransactionRequest;\n replacementTxHash: Hash;\n replacementTxReceipt: TransactionReceipt;\n};\n\ntype ReplaceTxInput = {\n action: ReplacementTxAction;\n hash: Hash;\n onTxSent?: OnTxSent;\n signal?: AbortSignal;\n};\n\ntype OnTxSent = (txSent: TxSentObject & { action: \"cancelSwap\" }) => void;\n\ntype ReplaceTxFn = (input: ReplaceTxInput) => Promise<ReplaceTxResult>;\n\nconst REPLACE_TX_MUTATION_KEY = \"replaceTx\";\n\nexport function useReplaceTx({\n txHash,\n onSuccess,\n onError,\n onSettled,\n chainId: _chainId,\n cancelTxType,\n enabled = true,\n}: UseReplaceTxInput): UseReplaceTxReturn {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n const isWalletSupported = useWalletCanReplaceTx();\n const queriesEnabled = isWalletSupported && enabled;\n\n /** 1. Get the original tx response */\n const { query: txResponseQuery, ensureTxResponse } = useTxResponse({\n hash: txHash,\n chainId,\n enabled: queriesEnabled,\n });\n\n const originalTxResponse = txResponseQuery.data;\n\n const originalTx: UseReplaceTxReturn[\"originalTxResponse\"] = {\n response: originalTxResponse,\n hash: txHash,\n isPending: txResponseQuery.isPending,\n isSuccess: txResponseQuery.isSuccess,\n isError: txResponseQuery.isError,\n error: txResponseQuery.error,\n };\n\n /** 2. Get the estimated fees for transactions at this */\n const { ensureEstimateFeesPerGas, query: currentFeesQuery } = useTxFees({\n chainId,\n type: originalTxResponse?.type\n ? passFeeValueTxTypesOnly(originalTxResponse.type)\n : undefined,\n enabled: queriesEnabled,\n });\n\n /** 3. Send a replacement tx */\n const sendTxMut = useSendArbitraryTx();\n\n const replacementTxHash = sendTxMut.txHash;\n\n /** 4. Wait for the replacement tx to be mined */\n const replacementTxReceiptQuery = useAwaitTx({\n chainId,\n hash: replacementTxHash,\n query: { enabled: queriesEnabled },\n });\n\n const replacementTx: UseReplaceTxReturn[\"replacementTx\"] = {\n hash: replacementTxHash,\n receipt: replacementTxReceiptQuery.data,\n isPending: replacementTxReceiptQuery.isPending,\n isSuccess: replacementTxReceiptQuery.isSuccess,\n isError: replacementTxReceiptQuery.isError,\n error: replacementTxReceiptQuery.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const logger = useLogger(\"ReplaceTx\");\n\n const getAccountNonce = useGetAccountNonce();\n const getChainFeeType = useGetChainFeeType();\n\n const { address: account } = useAccount();\n\n const { onCancelTx } = useWidgetEvents();\n\n const replaceTx: ReplaceTxFn = async ({ hash, action, onTxSent, signal }) => {\n assert(chainId != null, \"Chain not selected\");\n assert(account, \"Account not connected\");\n assert(\n isWalletSupported,\n \"Wallet does not support replacement txs or txParams.nonce\"\n );\n sendTxMut.reset();\n\n signal?.throwIfAborted();\n\n /** 1. Get the original tx response */\n let originalTxObject: TxMockResponse | null = null;\n try {\n originalTxObject = await ensureTxResponse({ hash, chainId });\n } catch (error) {\n if (error instanceof TransactionNotFoundError) {\n // tx with low gas may never be found\n logger.error(\"Original tx not found\", error);\n } else {\n throw error;\n }\n }\n\n if (!originalTxObject) {\n const [nonce, feeType] = await Promise.all([\n // a guess at the nonce we need to cancel the original tx,\n // gets nonce at the latest block\n // excluding the possibly pending (or dropped/not discovered tx) at pending block\n getAccountNonce({ chainId, address: account }),\n getChainFeeType(chainId),\n ]);\n originalTxObject = {\n from: account,\n nonce,\n type: feeType,\n hash,\n };\n }\n\n signal?.throwIfAborted();\n\n /** 2. Get the estimated fees for transactions at this */\n const currentFees = await ensureEstimateFeesPerGas({\n chainId,\n type: passFeeValueTxTypesOnly(originalTxObject.type),\n });\n\n signal?.throwIfAborted();\n\n /** 3. Build the replacement request */\n const replacementRequest = buildReplacementRequest({\n action,\n currentFees,\n tx: originalTxObject,\n });\n\n /** 4. Send the replacement tx */\n const replacementTxHash = await sendTxMut.sendTransactionAsync({\n ...replacementRequest,\n chainId,\n });\n\n if (action === \"cancel\") {\n onCancelTx?.({\n event: {\n name: \"CancelTx:sent\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: originalTxObject.hash,\n originalTx: originalTxObject,\n replacementRequest: replacementRequest,\n replacementTxHash: replacementTxHash,\n },\n },\n });\n }\n signal?.throwIfAborted();\n\n logger.log(\"Replacement tx sent\", {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n });\n\n /** 5. Wait for the replacement tx to be mined */\n const replacementTxReceiptPromise = ensureTxReceipt({\n chainId,\n hash: replacementTxHash,\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n transactionHash: replacementTxHash,\n action: \"cancelSwap\",\n receiptPromise: replacementTxReceiptPromise,\n transactionSpecificData: {\n action: \"cancelSwap\",\n swapTxHash: hash,\n },\n });\n }\n\n const replacementTxReceipt = await replacementTxReceiptPromise;\n\n return {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n replacementTxReceipt,\n };\n };\n\n const markTxAsDropped = useMarkTxAsDropped();\n\n const replaceTxMut = useMutation({\n mutationFn: replaceTx,\n mutationKey: [REPLACE_TX_MUTATION_KEY],\n onMutate: (variables) => {\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:request\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n },\n },\n });\n },\n onSuccess: (data, variables) => {\n logger.log(\"Replace tx success\", data);\n markTxAsDropped({\n account: data.originalTx.from,\n txHash: data.originalTx.hash,\n action: variables.action,\n replacementTxHash: data.replacementTxHash,\n });\n onSuccess?.(data);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:confirmed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: data.originalTx.hash,\n originalTx: data.originalTx,\n replacementRequest: data.replacementRequest,\n replacementTxHash: data.replacementTxHash,\n replacementTxReceipt: data.replacementTxReceipt,\n },\n },\n });\n },\n onError: (error, variables) => {\n logger.error(\"Replace tx error\", error);\n onError?.(error);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:failed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n error: error,\n },\n },\n });\n },\n onSettled: () => {\n onSettled?.();\n logger.log(\"Replace tx settled\");\n },\n });\n\n const reset = () => {\n sendTxMut.reset();\n replaceTxMut.reset();\n };\n\n let step: CancelOrderStepKey | undefined;\n if (replaceTxMut.isPending) {\n // Waiting for wallet confirmation / signature\n step = \"order-cancellation-approval\";\n if (replacementTx.hash) {\n // Tx submitted; waiting for it to be mined\n step = \"order-cancellation-execution\";\n }\n } else if (replaceTxMut.isSuccess) {\n step = \"order-cancellation-success\";\n } else if (replaceTxMut.isError) {\n step = \"order-cancellation-error\";\n }\n\n return {\n originalTxResponse: originalTx,\n replacementTx,\n minFees: currentFeesQuery.data,\n replaceTx: replaceTxMut.mutateAsync,\n isPending: replaceTxMut.isPending,\n isSuccess: replaceTxMut.isSuccess,\n isError: replaceTxMut.isError,\n error: replaceTxMut.error,\n result: replaceTxMut.data,\n reset,\n step,\n isWalletSupported,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendTx.js","names":["useSendTransaction","Hash","TransactionRequest","useAccount","assert","SupportedChainId","UseSendArbitraryTxInput","onSuccess","hash","onError","error","Error","TxRequestWithChainId","chainId","UseSendArbitraryTxReturn","sendTransaction","txParams","sendTransactionAsync","Promise","isPending","isSuccess","isError","txHash","reset","useSendArbitraryTx","t0","$","_c","t1","undefined","isConnected","t2","mutation","data","t3","to","sendTx","t4","txParams_0","sendTxAsync","t5"],"sources":["../../../../src/hooks/txs/mutations/useSendTx.ts"],"sourcesContent":["import { useSendTransaction } from \"wagmi\";\nimport { type Hash, type TransactionRequest } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport type UseSendArbitraryTxInput = {\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\ntype TxRequestWithChainId = TransactionRequest & { chainId: SupportedChainId };\n\nexport type UseSendArbitraryTxReturn = {\n sendTransaction: (txParams: TxRequestWithChainId) => void;\n sendTransactionAsync: (txParams: TxRequestWithChainId) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nexport const useSendArbitraryTx = ({\n onSuccess,\n onError,\n}: UseSendArbitraryTxInput = {}): UseSendArbitraryTxReturn => {\n const { isConnected } = useAccount();\n\n const {\n sendTransaction,\n sendTransactionAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useSendTransaction({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const sendTx = (txParams: TxRequestWithChainId) => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(txParams, \"Transaction is required\");\n assert(txParams.to, \"Transaction recipient (to) is required\");\n\n // Execute transaction\n sendTransaction(txParams);\n };\n\n const sendTxAsync = async (txParams: TxRequestWithChainId): Promise<Hash> => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(txParams, \"Transaction is required\");\n assert(txParams.to, \"Transaction recipient (to) is required\");\n\n // Execute transaction and return the hash\n return sendTransactionAsync(txParams);\n };\n\n return {\n sendTransaction: sendTx,\n sendTransactionAsync: sendTxAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":";;;;;AAwBA,IAAawB,KAAqBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;
|
|
1
|
+
{"version":3,"file":"useSendTx.js","names":["useSendTransaction","Hash","TransactionRequest","useAccount","assert","SupportedChainId","UseSendArbitraryTxInput","onSuccess","hash","onError","error","Error","TxRequestWithChainId","chainId","UseSendArbitraryTxReturn","sendTransaction","txParams","sendTransactionAsync","Promise","isPending","isSuccess","isError","txHash","reset","useSendArbitraryTx","t0","$","_c","t1","undefined","isConnected","t2","mutation","data","t3","to","sendTx","t4","txParams_0","sendTxAsync","t5"],"sources":["../../../../src/hooks/txs/mutations/useSendTx.ts"],"sourcesContent":["import { useSendTransaction } from \"wagmi\";\nimport { type Hash, type TransactionRequest } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport type UseSendArbitraryTxInput = {\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\ntype TxRequestWithChainId = TransactionRequest & { chainId: SupportedChainId };\n\nexport type UseSendArbitraryTxReturn = {\n sendTransaction: (txParams: TxRequestWithChainId) => void;\n sendTransactionAsync: (txParams: TxRequestWithChainId) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nexport const useSendArbitraryTx = ({\n onSuccess,\n onError,\n}: UseSendArbitraryTxInput = {}): UseSendArbitraryTxReturn => {\n const { isConnected } = useAccount();\n\n const {\n sendTransaction,\n sendTransactionAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useSendTransaction({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const sendTx = (txParams: TxRequestWithChainId) => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(txParams, \"Transaction is required\");\n assert(txParams.to, \"Transaction recipient (to) is required\");\n\n // Execute transaction\n sendTransaction(txParams);\n };\n\n const sendTxAsync = async (txParams: TxRequestWithChainId): Promise<Hash> => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(txParams, \"Transaction is required\");\n assert(txParams.to, \"Transaction recipient (to) is required\");\n\n // Execute transaction and return the hash\n return sendTransactionAsync(txParams);\n };\n\n return {\n sendTransaction: sendTx,\n sendTransactionAsync: sendTxAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":";;;;;AAwBA,IAAawB,KAAqBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAGHG,IAAAF,EAAA,MAHIE,IAAAH,MAAAI,KAAAA,IAAA,EAGJ,GAHIJ,GAGJC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAHI,IAAA,EAAArB,cAAAE,eAAAmB,GAIjC,EAAAE,mBAAwB3B,GAAY,EAAC4B;CAAA,AAAAL,EAAA,OAAAjB,KAAAiB,EAAA,OAAAnB,KAWdwB,IAAA,EAAAC,UACX;EAAAzB;EAAAE;EAGV,EACD,EAAAiB,EAAA,KAAAjB,GAAAiB,EAAA,KAAAnB,GAAAmB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAdD,IAAA,EAAAX,oBAAAE,yBAAAE,cAAAC,cAAAC,YAAAX,UAAAuB,MAAAX,GAAAC,aASIvB,EAAmB+B,EAKrB,EAACG;CAAA,AAAAR,EAAA,OAAAI,KAAAJ,EAAA,OAAAX,KAEYmB,KAAAlB,MAAA;EAObD,AALAX,EAAO0B,GAAa,uBAAuB,EAC3C1B,EAAOY,GAAU,0BAA0B,EAC3CZ,EAAOY,EAAQmB,IAAK,yCAAyC,EAG7DpB,EAAgBC,EAAS;IAC1BU,EAAA,KAAAI,GAAAJ,EAAA,KAAAX,GAAAW,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CARD,IAAAU,IAAeF,GAQbG;CAAA,AAAAX,EAAA,OAAAI,KAAAJ,EAAA,OAAAT,KAEkBoB,IAAA,OAAAC,OAElBlC,EAAO0B,GAAa,uBAAuB,EAC3C1B,EAAOY,GAAU,0BAA0B,EAC3CZ,EAAOY,EAAQmB,IAAK,yCAAyC,EAGtDlB,EAAqBD,EAAS,GACtCU,EAAA,KAAAI,GAAAJ,EAAA,KAAAT,GAAAS,EAAA,MAAAW,KAAAA,IAAAX,EAAA;CARD,IAAAa,IAAoBF,GAQlBG;CAWD,OAXCd,EAAA,QAAAhB,KAAAgB,EAAA,QAAAL,KAAAK,EAAA,QAAAP,KAAAO,EAAA,QAAAN,KAAAM,EAAA,QAAAH,KAAAG,EAAA,QAAAU,KAAAV,EAAA,QAAAa,KAAAb,EAAA,QAAAJ,KAEKkB,IAAA;EAAAzB,iBACYqB;EAAMnB,sBACDsB;EAAWpB;EAAAC;EAAAC;EAAAX;EAAAY;EAAAC;EAOlC,EAAAG,EAAA,MAAAhB,GAAAgB,EAAA,MAAAL,GAAAK,EAAA,MAAAP,GAAAO,EAAA,MAAAN,GAAAM,EAAA,MAAAH,GAAAG,EAAA,MAAAU,GAAAV,EAAA,MAAAa,GAAAb,EAAA,MAAAJ,GAAAI,EAAA,MAAAc,KAAAA,IAAAd,EAAA,KATMc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAccountNonce.js","names":["SupportedChainId","getTransactionCount","Address","useConfig","GetAccountNonceInput","chainId","address","useGetAccountNonce","$","_c","wagmiConfig","t0","t1","nonce","getAccountNonce"],"sources":["../../../../src/hooks/txs/queries/useAccountNonce.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { getTransactionCount } from \"@wagmi/core\";\nimport type { Address } from \"viem\";\nimport { useConfig } from \"wagmi\";\n\ntype GetAccountNonceInput = {\n chainId: SupportedChainId;\n address: Address;\n};\n\nexport function useGetAccountNonce(): (\n input: GetAccountNonceInput\n) => Promise<number> {\n const wagmiConfig = useConfig();\n const getAccountNonce = async ({\n address,\n chainId,\n }: GetAccountNonceInput) => {\n const nonce = await getTransactionCount(wagmiConfig, { chainId, address });\n return nonce;\n };\n return getAccountNonce;\n}\n"],"mappings":";;;;AAUA,SAAOO,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGLC,IAAoBP,GAAW,EAACQ;
|
|
1
|
+
{"version":3,"file":"useAccountNonce.js","names":["SupportedChainId","getTransactionCount","Address","useConfig","GetAccountNonceInput","chainId","address","useGetAccountNonce","$","_c","wagmiConfig","t0","t1","nonce","getAccountNonce"],"sources":["../../../../src/hooks/txs/queries/useAccountNonce.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { getTransactionCount } from \"@wagmi/core\";\nimport type { Address } from \"viem\";\nimport { useConfig } from \"wagmi\";\n\ntype GetAccountNonceInput = {\n chainId: SupportedChainId;\n address: Address;\n};\n\nexport function useGetAccountNonce(): (\n input: GetAccountNonceInput\n) => Promise<number> {\n const wagmiConfig = useConfig();\n const getAccountNonce = async ({\n address,\n chainId,\n }: GetAccountNonceInput) => {\n const nonce = await getTransactionCount(wagmiConfig, { chainId, address });\n return nonce;\n };\n return getAccountNonce;\n}\n"],"mappings":";;;;AAUA,SAAOO,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGLC,IAAoBP,GAAW,EAACQ;CAO9B,OAP8BH,EAAA,OAAAE,IAO/BC,IAAAH,EAAA,MANuBG,IAAA,OAAAC,MAAA;EAAO,IAAA,EAAAN,YAAAD,eAAAO;EAI8C,OACpEC,MADaZ,EAAoBS,GAAa;GAAAL;GAAAC;GAAoB,CAAC;IAE3EE,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IACMG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAwaitTx.js","names":["wagmiConfig","SupportedChainId","useQueryClient","useAccount","useConfig","useConnectorClient","useWaitForTransactionReceipt","UseWaitForTransactionReceiptParameters","UseWaitForTransactionReceiptReturnType","WaitForTransactionReceiptData","useLogger","ensureTxReceiptFactory","EnsureTxReceiptFn","useConnectedSafe","useConnectedToSafeIframe","SAFE_CALLS_WAIT_TIMEOUT","assert","useIsSafeThroughWalletConnect","useAwaitCalls","UseAwaitTxParameters","DefaultTxReceiptSelect","chainId","confirmations","hash","query","SelectData","UseAwaitTxReturnType","TxReceiptFromWagmi","useAwaitTx","t0","$","_c","logger","isSafe","isConnectedToSafeIframe","isConnectedToSafeThroughWalletConnect","timeout","undefined","address","account","t1","data","connectorClient","config","realtxHash","sendCallsId","t2","options","t3","getClient","callsQueryEnabled","enabled","id","sendCallsReceipt","error","sendCallsError","lastCallsReceiptTxHash","receipts","length","transactionHash","t4","log","t5","onReplaced","queryResult","useEnsureTxReceipt","queryClient"],"sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"sourcesContent":["import type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n useAccount,\n useConfig,\n useConnectorClient,\n useWaitForTransactionReceipt,\n type UseWaitForTransactionReceiptParameters,\n type UseWaitForTransactionReceiptReturnType,\n} from \"wagmi\";\nimport { type WaitForTransactionReceiptData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n ensureTxReceiptFactory,\n type EnsureTxReceiptFn,\n} from \"@/transactions/queries/ensureTxReceipt\";\nimport {\n useConnectedSafe,\n useConnectedToSafeIframe,\n} from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { assert } from \"ts-essentials\";\nimport { useIsSafeThroughWalletConnect } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { useAwaitCalls } from \"@/hooks/batch/useAwaitCalls\";\n\nexport type UseAwaitTxParameters<SelectData = DefaultTxReceiptSelect> = {\n chainId: SupportedChainId;\n confirmations?: number;\n hash?: `0x${string}`;\n query?: UseWaitForTransactionReceiptParameters<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >[\"query\"];\n};\n\nexport type DefaultTxReceiptSelect = WaitForTransactionReceiptData<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport type UseAwaitTxReturnType<SelectData = DefaultTxReceiptSelect> =\n UseWaitForTransactionReceiptReturnType<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >;\n\nexport type TxReceiptFromWagmi = DefaultTxReceiptSelect;\n\nexport function useAwaitTx<SelectData = DefaultTxReceiptSelect>({\n chainId,\n confirmations,\n hash,\n query,\n}: UseAwaitTxParameters<SelectData>): UseAwaitTxReturnType<SelectData> {\n const logger = useLogger(\"AwaitTx\");\n\n // connected to Safe through WalletConnect or in Safe App\n const isSafe = useConnectedSafe();\n // connected to Safe in Safe App (either directly or through external provider)\n const isConnectedToSafeIframe = useConnectedToSafeIframe();\n\n const isConnectedToSafeThroughWalletConnect = useIsSafeThroughWalletConnect();\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n const { address: account } = useAccount();\n\n const { data: connectorClient } = useConnectorClient({\n chainId,\n account,\n });\n\n const wagmiConfig = useConfig();\n\n let config = wagmiConfig;\n let realtxHash = hash;\n let sendCallsId: string | undefined;\n\n if (isConnectedToSafeThroughWalletConnect) {\n /** Same logic as {@link ensureTxReceiptFactory} (Safe+WalletConnect branch). Full rationale and refs there. */\n sendCallsId = hash; // will disable calls query if no hash\n } else if (isConnectedToSafeIframe && connectorClient) {\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n config = {\n ...wagmiConfig,\n // doesn't work with Safe through WalletConnect connector\n getClient: (options) => {\n // either no chainId passed in options or chainId matches the expected chainId\n assert(\n !options?.chainId || options.chainId === chainId,\n \"chainId mismatch\"\n );\n return connectorClient;\n },\n } as typeof wagmiConfig;\n }\n\n // will disable calls query if disabled through query.input\n const callsQueryEnabled =\n typeof query?.enabled === \"boolean\" ? query.enabled : true;\n\n const { data: sendCallsReceipt, error: sendCallsError } = useAwaitCalls({\n id: sendCallsId,\n query: {\n enabled: callsQueryEnabled,\n },\n });\n\n const lastCallsReceiptTxHash =\n sendCallsReceipt?.receipts?.[sendCallsReceipt.receipts.length - 1]\n ?.transactionHash;\n if (isConnectedToSafeThroughWalletConnect) {\n realtxHash = lastCallsReceiptTxHash; // will disable txReceipt query if no lastCallsReceiptTxHash,\n // after callsStatus is updated to success or failure, realtxHash will be updated and txReceipt query will be enabled\n\n if (!realtxHash && sendCallsError) {\n // it is possible Safe through WalletConnect could be connected but called with a past non-Safe tx from localStorage,\n // in that case we should try to get the tx receipt normally\n realtxHash = hash;\n }\n }\n\n const queryResult = useWaitForTransactionReceipt<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >({\n config,\n chainId,\n confirmations,\n timeout,\n hash: realtxHash,\n query,\n onReplaced: (data) => {\n // @TODO connect to some atom if needed to detect cancelled/sped-up txs,\n // but sped-up txs may be detected correct internally and re-awaited with a new hash,\n // need to test\n // https://viem.sh/docs/actions/public/waitForTransactionReceipt.html#json-rpc-methods\n logger.log(\"onReplaced:tx\", hash, data);\n },\n });\n\n return queryResult;\n}\n\nexport function useEnsureTxReceipt(): EnsureTxReceiptFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n const isSafe = useConnectedSafe();\n\n return ensureTxReceiptFactory({ queryClient, wagmiConfig, isSafe });\n}\n"],"mappings":";;;;;;;;;;;;AAmDA,SAAO4B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAyD,EAAAV,YAAAC,kBAAAC,SAAAC,aAAAK,GAM9DG,IAAetB,EAAU,UAAU,EAGnCuB,IAAepB,GAAkB,EAEjCqB,IAAgCpB,GAA0B,EAE1DqB,IAA8ClB,GAA+B,EAE7EmB,IAAgBH,IAAAlB,IAAAsB,KAAAA,GAEhB,EAAAC,SAAAC,MAA6BpC,GAAY,EAACqC;
|
|
1
|
+
{"version":3,"file":"useAwaitTx.js","names":["wagmiConfig","SupportedChainId","useQueryClient","useAccount","useConfig","useConnectorClient","useWaitForTransactionReceipt","UseWaitForTransactionReceiptParameters","UseWaitForTransactionReceiptReturnType","WaitForTransactionReceiptData","useLogger","ensureTxReceiptFactory","EnsureTxReceiptFn","useConnectedSafe","useConnectedToSafeIframe","SAFE_CALLS_WAIT_TIMEOUT","assert","useIsSafeThroughWalletConnect","useAwaitCalls","UseAwaitTxParameters","DefaultTxReceiptSelect","chainId","confirmations","hash","query","SelectData","UseAwaitTxReturnType","TxReceiptFromWagmi","useAwaitTx","t0","$","_c","logger","isSafe","isConnectedToSafeIframe","isConnectedToSafeThroughWalletConnect","timeout","undefined","address","account","t1","data","connectorClient","config","realtxHash","sendCallsId","t2","options","t3","getClient","callsQueryEnabled","enabled","id","sendCallsReceipt","error","sendCallsError","lastCallsReceiptTxHash","receipts","length","transactionHash","t4","log","t5","onReplaced","queryResult","useEnsureTxReceipt","queryClient"],"sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"sourcesContent":["import type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n useAccount,\n useConfig,\n useConnectorClient,\n useWaitForTransactionReceipt,\n type UseWaitForTransactionReceiptParameters,\n type UseWaitForTransactionReceiptReturnType,\n} from \"wagmi\";\nimport { type WaitForTransactionReceiptData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n ensureTxReceiptFactory,\n type EnsureTxReceiptFn,\n} from \"@/transactions/queries/ensureTxReceipt\";\nimport {\n useConnectedSafe,\n useConnectedToSafeIframe,\n} from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { assert } from \"ts-essentials\";\nimport { useIsSafeThroughWalletConnect } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { useAwaitCalls } from \"@/hooks/batch/useAwaitCalls\";\n\nexport type UseAwaitTxParameters<SelectData = DefaultTxReceiptSelect> = {\n chainId: SupportedChainId;\n confirmations?: number;\n hash?: `0x${string}`;\n query?: UseWaitForTransactionReceiptParameters<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >[\"query\"];\n};\n\nexport type DefaultTxReceiptSelect = WaitForTransactionReceiptData<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport type UseAwaitTxReturnType<SelectData = DefaultTxReceiptSelect> =\n UseWaitForTransactionReceiptReturnType<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >;\n\nexport type TxReceiptFromWagmi = DefaultTxReceiptSelect;\n\nexport function useAwaitTx<SelectData = DefaultTxReceiptSelect>({\n chainId,\n confirmations,\n hash,\n query,\n}: UseAwaitTxParameters<SelectData>): UseAwaitTxReturnType<SelectData> {\n const logger = useLogger(\"AwaitTx\");\n\n // connected to Safe through WalletConnect or in Safe App\n const isSafe = useConnectedSafe();\n // connected to Safe in Safe App (either directly or through external provider)\n const isConnectedToSafeIframe = useConnectedToSafeIframe();\n\n const isConnectedToSafeThroughWalletConnect = useIsSafeThroughWalletConnect();\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n const { address: account } = useAccount();\n\n const { data: connectorClient } = useConnectorClient({\n chainId,\n account,\n });\n\n const wagmiConfig = useConfig();\n\n let config = wagmiConfig;\n let realtxHash = hash;\n let sendCallsId: string | undefined;\n\n if (isConnectedToSafeThroughWalletConnect) {\n /** Same logic as {@link ensureTxReceiptFactory} (Safe+WalletConnect branch). Full rationale and refs there. */\n sendCallsId = hash; // will disable calls query if no hash\n } else if (isConnectedToSafeIframe && connectorClient) {\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n config = {\n ...wagmiConfig,\n // doesn't work with Safe through WalletConnect connector\n getClient: (options) => {\n // either no chainId passed in options or chainId matches the expected chainId\n assert(\n !options?.chainId || options.chainId === chainId,\n \"chainId mismatch\"\n );\n return connectorClient;\n },\n } as typeof wagmiConfig;\n }\n\n // will disable calls query if disabled through query.input\n const callsQueryEnabled =\n typeof query?.enabled === \"boolean\" ? query.enabled : true;\n\n const { data: sendCallsReceipt, error: sendCallsError } = useAwaitCalls({\n id: sendCallsId,\n query: {\n enabled: callsQueryEnabled,\n },\n });\n\n const lastCallsReceiptTxHash =\n sendCallsReceipt?.receipts?.[sendCallsReceipt.receipts.length - 1]\n ?.transactionHash;\n if (isConnectedToSafeThroughWalletConnect) {\n realtxHash = lastCallsReceiptTxHash; // will disable txReceipt query if no lastCallsReceiptTxHash,\n // after callsStatus is updated to success or failure, realtxHash will be updated and txReceipt query will be enabled\n\n if (!realtxHash && sendCallsError) {\n // it is possible Safe through WalletConnect could be connected but called with a past non-Safe tx from localStorage,\n // in that case we should try to get the tx receipt normally\n realtxHash = hash;\n }\n }\n\n const queryResult = useWaitForTransactionReceipt<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >({\n config,\n chainId,\n confirmations,\n timeout,\n hash: realtxHash,\n query,\n onReplaced: (data) => {\n // @TODO connect to some atom if needed to detect cancelled/sped-up txs,\n // but sped-up txs may be detected correct internally and re-awaited with a new hash,\n // need to test\n // https://viem.sh/docs/actions/public/waitForTransactionReceipt.html#json-rpc-methods\n logger.log(\"onReplaced:tx\", hash, data);\n },\n });\n\n return queryResult;\n}\n\nexport function useEnsureTxReceipt(): EnsureTxReceiptFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n const isSafe = useConnectedSafe();\n\n return ensureTxReceiptFactory({ queryClient, wagmiConfig, isSafe });\n}\n"],"mappings":";;;;;;;;;;;;AAmDA,SAAO4B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAyD,EAAAV,YAAAC,kBAAAC,SAAAC,aAAAK,GAM9DG,IAAetB,EAAU,UAAU,EAGnCuB,IAAepB,GAAkB,EAEjCqB,IAAgCpB,GAA0B,EAE1DqB,IAA8ClB,GAA+B,EAE7EmB,IAAgBH,IAAAlB,IAAAsB,KAAAA,GAEhB,EAAAC,SAAAC,MAA6BpC,GAAY,EAACqC;CAAA,AAAAV,EAAA,OAAAS,KAAAT,EAAA,OAAAT,KAEWmB,IAAA;EAAAnB;EAAAkB;EAGpD,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAT,GAAAS,EAAA,KAAAU,KAAAA,IAAAV,EAAA;CAHD,IAAA,EAAAW,MAAAC,MAAkCrC,EAAmBmC,EAGnD,EAEFxC,IAAoBI,GAAW,EAE/BuC,IAAa3C,GACb4C,IAAiBrB,GACbsB;CAEJ,IAAIV,GAEFU,IAActB;MACT,IAAIW,KAAAQ,GAA0C;EAAA,IAAAI;EAAA,AAAAhB,EAAA,OAAAT,KAAAS,EAAA,OAAAY,KAOtCI,KAAAC,OAET/B,EACE,CAAC+B,GAAO1B,WAAa0B,EAAO1B,YAAaA,GACzC,mBACD,EACMqB,IACRZ,EAAA,KAAAT,GAAAS,EAAA,KAAAY,GAAAZ,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA;EAAA,IAAAkB;EAVHL,AAUGb,EAAA,OAAAgB,KAAAhB,EAAA,OAAA9B,KAVMgD,IAAA;GAAA,GACJhD;GAAWiD,WAEHH;GAQZ,EAAAhB,EAAA,KAAAgB,GAAAhB,EAAA,KAAA9B,GAAA8B,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAXDa,IAASA;;CAeX,IAAAO,IACE,OAAO1B,GAAK2B,WAAc,YAAY3B,EAAK2B,UAA3C,IAA2DL;CAAA,AAAAhB,EAAA,OAAAoB,IAM1DJ,IAAAhB,EAAA,OAFMgB,IAAA,EAAAK,SACID,GACV,EAAApB,EAAA,KAAAoB,GAAApB,EAAA,MAAAgB;CAAA,IAAAE;CAAA,AAAAlB,EAAA,QAAAe,KAAAf,EAAA,QAAAgB,KAJqEE,IAAA;EAAAI,IAClEP;EAAWrB,OACRsB;EAGR,EAAAhB,EAAA,MAAAe,GAAAf,EAAA,MAAAgB,GAAAhB,EAAA,MAAAkB,KAAAA,IAAAlB,EAAA;CALD,IAAA,EAAAW,MAAAY,GAAAC,OAAAC,MAA0DrC,EAAc8B,EAKtE,EAEFQ,IACEH,GAAgBI,WAAaJ,EAAgBI,SAASC,SAAU,IAC7CC;CACrB,AAAIxB,MACFS,IAAaY,GAGT,CAACZ,KAADW,MAGFX,IAAarB;CAEhB,IAAAqC;CAAA,AAAA9B,EAAA,QAAAP,KAAAO,EAAA,QAAAE,KAaa4B,KAAAnB,MAAA;EAKVT,EAAM6B,IAAK,iBAAiBtC,GAAMkB,EAAK;IACxCX,EAAA,MAAAP,GAAAO,EAAA,MAAAE,GAAAF,EAAA,MAAA8B,KAAAA,IAAA9B,EAAA;CAAA,IAAAgC;CACA,OADAhC,EAAA,QAAAT,KAAAS,EAAA,QAAAa,KAAAb,EAAA,QAAAR,KAAAQ,EAAA,QAAAN,KAAAM,EAAA,QAAAc,KAAAd,EAAA,QAAA8B,KAAA9B,EAAA,QAAAM,KAbD0B,IAAA;EAAAnB;EAAAtB;EAAAC;EAAAc;EAAAb,MAKMqB;EAAUpB;EAAAuC,YAEJH;EAOb,EAAA9B,EAAA,MAAAT,GAAAS,EAAA,MAAAa,GAAAb,EAAA,MAAAR,GAAAQ,EAAA,MAAAN,GAAAM,EAAA,MAAAc,GAAAd,EAAA,MAAA8B,GAAA9B,EAAA,MAAAM,GAAAN,EAAA,MAAAgC,KAAAA,IAAAhC,EAAA,KAlBmBxB,EAIlBwD,EAgBKE;;AAGT,SAAOC,IAAA;CAAA,IAAAnC,IAAAC,EAAA,EAAA,EACLmC,IAAoBhE,GAAgB,EACpCF,IAAoBI,GAAW,EAC/B6B,IAAepB,GAAkB,EAACgB;CAEiC,OAFjCC,EAAA,OAAAG,KAAAH,EAAA,OAAAoC,KAAApC,EAAA,OAAA9B,KAE3B6B,IAAAlB,EAAuB;EAAAuD;EAAAlE;EAAAiC;EAAoC,CAAC,EAAAH,EAAA,KAAAG,GAAAH,EAAA,KAAAoC,GAAApC,EAAA,KAAA9B,GAAA8B,EAAA,KAAAD,KAAAA,IAAAC,EAAA,IAA5DD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTxFees.js","names":["SupportedChainId","estimateFeesPerGasFactory","EstimateFeesPerGasFn","useQueryClient","getBlock","FeeValuesType","TransactionType","useConfig","useEstimateFeesPerGas","useEnsureEstimateFeesPerGas","$","_c","queryClient","wagmiConfig","t0","UseTxFeesInput","chainId","type","enabled","useTxFees","t1","t2","undefined","t3","t4","query","estimateGasQuery","ensureEstimateFeesPerGas","t5","FeeValueTypeSet","Set","passFeeValueTxTypesOnly","txType","has","useGetChainFeeType","block","blockTag","baseFeePerGas","getChainFeeType"],"sources":["../../../../src/hooks/txs/queries/useTxFees.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n estimateFeesPerGasFactory,\n type EstimateFeesPerGasFn,\n} from \"@/transactions/queries/ensureEstimateFeesPerGas\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { getBlock } from \"@wagmi/core\";\nimport type { FeeValuesType, TransactionType } from \"viem\";\nimport { useConfig, useEstimateFeesPerGas } from \"wagmi\";\n\nfunction useEnsureEstimateFeesPerGas(): EstimateFeesPerGasFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n\n return estimateFeesPerGasFactory({ queryClient, wagmiConfig });\n}\n\ntype UseTxFeesInput = {\n chainId?: SupportedChainId;\n type?: FeeValuesType;\n enabled?: boolean;\n};\n\nexport function useTxFees({\n chainId,\n type = \"eip1559\",\n enabled = true,\n}: UseTxFeesInput) {\n const estimateGasQuery = useEstimateFeesPerGas({\n chainId,\n type,\n query: { enabled },\n });\n\n const ensureEstimateFeesPerGas = useEnsureEstimateFeesPerGas();\n\n return {\n query: estimateGasQuery,\n ensureEstimateFeesPerGas,\n };\n}\n\nconst FeeValueTypeSet: Set<string> = new Set<FeeValuesType>([\n \"eip1559\",\n \"eip4844\",\n \"legacy\",\n]);\nexport function passFeeValueTxTypesOnly(\n txType: TransactionType\n): FeeValuesType {\n if (!FeeValueTypeSet.has(txType)) {\n return \"eip1559\"; // always return the default tx.type to have a reliable EstimateFeesPerGas queryKey\n }\n return txType as FeeValuesType;\n}\n\nexport function useGetChainFeeType(): (\n chainId: SupportedChainId\n) => Promise<FeeValuesType> {\n const wagmiConfig = useConfig();\n\n const getChainFeeType = async (chainId: SupportedChainId) => {\n const block = await getBlock(wagmiConfig, { chainId, blockTag: \"latest\" });\n return block.baseFeePerGas !== null ? \"eip1559\" : \"legacy\";\n };\n return getChainFeeType;\n}\n"],"mappings":";;;;;;AAUA,SAAAS,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACEC,IAAoBT,GAAgB,EACpCU,IAAoBN,GAAW,EAACO;
|
|
1
|
+
{"version":3,"file":"useTxFees.js","names":["SupportedChainId","estimateFeesPerGasFactory","EstimateFeesPerGasFn","useQueryClient","getBlock","FeeValuesType","TransactionType","useConfig","useEstimateFeesPerGas","useEnsureEstimateFeesPerGas","$","_c","queryClient","wagmiConfig","t0","UseTxFeesInput","chainId","type","enabled","useTxFees","t1","t2","undefined","t3","t4","query","estimateGasQuery","ensureEstimateFeesPerGas","t5","FeeValueTypeSet","Set","passFeeValueTxTypesOnly","txType","has","useGetChainFeeType","block","blockTag","baseFeePerGas","getChainFeeType"],"sources":["../../../../src/hooks/txs/queries/useTxFees.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n estimateFeesPerGasFactory,\n type EstimateFeesPerGasFn,\n} from \"@/transactions/queries/ensureEstimateFeesPerGas\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { getBlock } from \"@wagmi/core\";\nimport type { FeeValuesType, TransactionType } from \"viem\";\nimport { useConfig, useEstimateFeesPerGas } from \"wagmi\";\n\nfunction useEnsureEstimateFeesPerGas(): EstimateFeesPerGasFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n\n return estimateFeesPerGasFactory({ queryClient, wagmiConfig });\n}\n\ntype UseTxFeesInput = {\n chainId?: SupportedChainId;\n type?: FeeValuesType;\n enabled?: boolean;\n};\n\nexport function useTxFees({\n chainId,\n type = \"eip1559\",\n enabled = true,\n}: UseTxFeesInput) {\n const estimateGasQuery = useEstimateFeesPerGas({\n chainId,\n type,\n query: { enabled },\n });\n\n const ensureEstimateFeesPerGas = useEnsureEstimateFeesPerGas();\n\n return {\n query: estimateGasQuery,\n ensureEstimateFeesPerGas,\n };\n}\n\nconst FeeValueTypeSet: Set<string> = new Set<FeeValuesType>([\n \"eip1559\",\n \"eip4844\",\n \"legacy\",\n]);\nexport function passFeeValueTxTypesOnly(\n txType: TransactionType\n): FeeValuesType {\n if (!FeeValueTypeSet.has(txType)) {\n return \"eip1559\"; // always return the default tx.type to have a reliable EstimateFeesPerGas queryKey\n }\n return txType as FeeValuesType;\n}\n\nexport function useGetChainFeeType(): (\n chainId: SupportedChainId\n) => Promise<FeeValuesType> {\n const wagmiConfig = useConfig();\n\n const getChainFeeType = async (chainId: SupportedChainId) => {\n const block = await getBlock(wagmiConfig, { chainId, blockTag: \"latest\" });\n return block.baseFeePerGas !== null ? \"eip1559\" : \"legacy\";\n };\n return getChainFeeType;\n}\n"],"mappings":";;;;;;AAUA,SAAAS,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACEC,IAAoBT,GAAgB,EACpCU,IAAoBN,GAAW,EAACO;CAE8B,OAF9BJ,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAEzBC,IAAAb,EAA0B;EAAAW;EAAAC;EAA4B,CAAC,EAAAH,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAI,KAAAA,IAAAJ,EAAA,IAAvDI;;AAST,SAAOK,EAAAL,GAAA;CAAA,IAAAJ,IAAAC,EAAA,EAAA,EAAmB,EAAAK,YAAAC,MAAAG,GAAAF,SAAAG,MAAAP,GAExBG,IAAAG,MAAAE,KAAAA,IAAA,YAAAF,GACAF,IAAAG,MAAAC,KAAAA,IAAA,KAAAD,GAAcE;CAAA,AAAAb,EAAA,OAAAQ,IAKMK,IAAAb,EAAA,MAAXa,IAAA,EAAAL,YAAW,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAa;CAAA,IAAAC;CAAA,AAAAd,EAAA,OAAAM,KAAAN,EAAA,OAAAa,KAAAb,EAAA,OAAAO,KAH2BO,IAAA;EAAAR;EAAAC;EAAAQ,OAGtCF;EACR,EAAAb,EAAA,KAAAM,GAAAN,EAAA,KAAAa,GAAAb,EAAA,KAAAO,GAAAP,EAAA,KAAAc,KAAAA,IAAAd,EAAA;CAJD,IAAAgB,IAAyBlB,EAAsBgB,EAI7C,EAEFG,IAAiClB,GAA6B,EAACmB;CAK9D,OAL8DlB,EAAA,OAAAiB,KAAAjB,EAAA,OAAAgB,KAExDE,IAAA;EAAAH,OACEC;EAAgBC;EAExB,EAAAjB,EAAA,KAAAiB,GAAAjB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAHMkB;;AAMT,IAAMC,IAA+B,IAAIC,IAAmB;CAC1D;CACA;CACA;CACD,CAAC;AACF,SAAgBC,EACdC,GACe;CAIf,OAHKH,EAAgBI,IAAID,EAAO,GAGzBA,IAFE;;AAKX,SAAOE,IAAA;CAAA,IAAAxB,IAAAC,EAAA,EAAA,EAGLE,IAAoBN,GAAW,EAACO;CAK9B,OAL8BJ,EAAA,OAAAG,IAK/BC,IAAAJ,EAAA,MAHuBI,IAAA,OAAAE,OAEfmB,MADa/B,EAASS,GAAa;EAAAG;EAAAoB,UAAqB;EAAU,CAAC,EAC9DC,kBAAmB,OAAxB,WAAA,WACR3B,EAAA,KAAAG,GAAAH,EAAA,KAAAI,IACMwB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTxHistory.js","names":["assertProp","useQuery","useQueryClient","UseQueryOptions","UseQueryResult","axios","constructMetaParams","MetabaseResponse","MarkOptional","TransactionItemSwap","isAddress","isHash","Address","isSupportedChainId","getLogger","Big","getApiProxyURL","SwapTxParams","account","chainId","limit","offset","SwapTxRow","txhash","srctoken","srcamount","srcamountusd","desttoken","destamount","destamountusd","txorigin","initiator","entrytimestamp","txgasused","txgasprice","side","SwapTxsResponse","logger","formatSwapTxsData","data","transactionItems","row","rows","warn","push","transactionHash","dropped","timestamp","Date","getTime","action","transactionSpecificData","source","srcTokenAddress","srcAmount","toFixed","srcAmountUSD","destTokenAddress","destAmount","destAmountUSD","gasCost","mul","swapSide","fetchSwapTxs","params","signal","AbortSignal","Promise","metaParams","url","JSON","stringify","get","SwapParams","SWAP_TX_HISTORY_QUERY_KEY_BASE","SwapTxHistoryQueryKey","base","SwapTxHistoryQueryParams","Omit","Error","TData","useSwapTxHistory","t0","$","_c","query","queryClient","t1","t2","t3","queryParamsWithoutChainId","queryKeyWithoutChainId","query_0","getQueryCache","find","queryKey","stale","dataForAllChains","state","filter","tx","enabled","t4","queryFn"],"sources":["../../../../src/hooks/txs/queries/useTxHistory.ts"],"sourcesContent":["import { assertProp } from \"@/lib/utils\";\nimport {\n useQuery,\n useQueryClient,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport axios from \"axios\";\n\nimport {\n constructMetaParams,\n type MetabaseResponse,\n} from \"@/lib/utils/metabase\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { TransactionItemSwap } from \"@/transactions/types\";\nimport { isAddress, isHash, type Address } from \"viem\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { getLogger } from \"@/core/logger\";\nimport Big from \"big.js\";\nimport { getApiProxyURL } from \"@/lib/constants/urls\";\n\ntype SwapTxParams = {\n account: Address;\n chainId?: number;\n limit?: number;\n offset?: number;\n};\n\ntype SwapTxRow = [\n txhash: string,\n chainId: number,\n srctoken: string,\n srcamount: number,\n srcamountusd: number,\n desttoken: string,\n destamount: number,\n destamountusd: number,\n txorigin: string,\n initiator: string,\n entrytimestamp: string,\n txgasused: number, // can falsely return 0, also this is not gasUsed, this is gasLimit; better rely on gas data from GRP table if available\n txgasprice: number,\n side: \"true\" | \"false\", // \"true\" = BUY, \"false\" = SELL\n];\n\ntype SwapTxsResponse = MetabaseResponse<SwapTxRow>;\n\nconst logger = getLogger(\"SwapTxHistory\");\n\nfunction formatSwapTxsData(\n { data }: SwapTxsResponse,\n { account }: SwapTxParams\n): TransactionItemSwap[] {\n const transactionItems: TransactionItemSwap[] = [];\n\n for (const row of data.rows) {\n const [\n txhash,\n chainId,\n srctoken,\n srcamount,\n srcamountusd,\n desttoken,\n destamount,\n destamountusd,\n ,\n ,\n entrytimestamp,\n txgasused,\n txgasprice,\n side,\n ] = row;\n\n if (\n !isSupportedChainId(chainId) ||\n !isHash(txhash) ||\n !isAddress(srctoken) ||\n !isAddress(desttoken)\n ) {\n logger.warn(\"Invalid swap tx data row, skipping\", row);\n continue;\n }\n\n transactionItems.push({\n account,\n transactionHash: txhash,\n chainId,\n dropped: false,\n timestamp: new Date(entrytimestamp).getTime(),\n action: \"swap\",\n transactionSpecificData: {\n action: \"swap\",\n source: \"metabase\",\n srcTokenAddress: srctoken,\n srcAmount: Big(srcamount).toFixed(),\n srcAmountUSD: Big(srcamountusd).toFixed(),\n destTokenAddress: desttoken,\n destAmount: Big(destamount).toFixed(),\n destAmountUSD: Big(destamountusd).toFixed(),\n gasCost: Big(txgasused).mul(txgasprice).toFixed(),\n swapSide: side === \"true\" ? \"BUY\" : \"SELL\",\n },\n });\n }\n\n return transactionItems;\n}\n\nasync function fetchSwapTxs(\n params: SwapTxParams,\n signal?: AbortSignal\n): Promise<TransactionItemSwap[]> {\n const metaParams = constructMetaParams(params);\n\n const url = `${getApiProxyURL()}/swap/txs?parameters=${JSON.stringify(metaParams)}`;\n\n const { data } = await axios.get<SwapTxsResponse>(url, { signal });\n\n return formatSwapTxsData(data, params);\n}\n\ntype SwapParams = MarkOptional<SwapTxParams, \"account\">;\n\nconst SWAP_TX_HISTORY_QUERY_KEY_BASE = \"swap/tx-history\";\ntype SwapTxHistoryQueryKey = [\n base: typeof SWAP_TX_HISTORY_QUERY_KEY_BASE,\n params: SwapParams,\n];\n\ntype SwapTxHistoryQueryParams<TData = TransactionItemSwap[]> = Omit<\n UseQueryOptions<TransactionItemSwap[], Error, TData, SwapTxHistoryQueryKey>,\n \"queryKey\" | \"queryFn\"\n>;\n\nexport function useSwapTxHistory<TData = TransactionItemSwap[]>({\n params,\n query,\n}: {\n params: SwapParams;\n query?: SwapTxHistoryQueryParams<TData>;\n}): UseQueryResult<TData, Error> {\n const queryClient = useQueryClient();\n\n return useQuery<TransactionItemSwap[], Error, TData, SwapTxHistoryQueryKey>({\n queryKey: [SWAP_TX_HISTORY_QUERY_KEY_BASE, params],\n queryFn: ({ signal }) => {\n assertProp(params, \"account\");\n if (params.chainId) {\n // don't bother with picking past data for different limit & offset, it's too hard to get right data slice given different chainIds\n const { chainId, ...queryParamsWithoutChainId } = params;\n const queryKeyWithoutChainId: SwapTxHistoryQueryKey = [\n SWAP_TX_HISTORY_QUERY_KEY_BASE,\n queryParamsWithoutChainId,\n ];\n\n const query = queryClient.getQueryCache().find<TransactionItemSwap[]>({\n queryKey: queryKeyWithoutChainId,\n stale: false, // get only non-stale data\n });\n\n const dataForAllChains = query?.state.data;\n\n if (dataForAllChains) {\n return dataForAllChains.filter((tx) => tx.chainId === chainId);\n }\n }\n\n return fetchSwapTxs(params, signal);\n },\n ...query,\n enabled: !!params.account && (query?.enabled ?? true),\n });\n}\n"],"mappings":";;;;;;;;;;;AA+CA,IAAMqC,IAASvB,EAAU,gBAAgB;AAEzC,SAASwB,EACP,EAAEC,WACF,EAAErB,cACqB;CACvB,IAAMsB,IAA0C,EAAE;
|
|
1
|
+
{"version":3,"file":"useTxHistory.js","names":["assertProp","useQuery","useQueryClient","UseQueryOptions","UseQueryResult","axios","constructMetaParams","MetabaseResponse","MarkOptional","TransactionItemSwap","isAddress","isHash","Address","isSupportedChainId","getLogger","Big","getApiProxyURL","SwapTxParams","account","chainId","limit","offset","SwapTxRow","txhash","srctoken","srcamount","srcamountusd","desttoken","destamount","destamountusd","txorigin","initiator","entrytimestamp","txgasused","txgasprice","side","SwapTxsResponse","logger","formatSwapTxsData","data","transactionItems","row","rows","warn","push","transactionHash","dropped","timestamp","Date","getTime","action","transactionSpecificData","source","srcTokenAddress","srcAmount","toFixed","srcAmountUSD","destTokenAddress","destAmount","destAmountUSD","gasCost","mul","swapSide","fetchSwapTxs","params","signal","AbortSignal","Promise","metaParams","url","JSON","stringify","get","SwapParams","SWAP_TX_HISTORY_QUERY_KEY_BASE","SwapTxHistoryQueryKey","base","SwapTxHistoryQueryParams","Omit","Error","TData","useSwapTxHistory","t0","$","_c","query","queryClient","t1","t2","t3","queryParamsWithoutChainId","queryKeyWithoutChainId","query_0","getQueryCache","find","queryKey","stale","dataForAllChains","state","filter","tx","enabled","t4","queryFn"],"sources":["../../../../src/hooks/txs/queries/useTxHistory.ts"],"sourcesContent":["import { assertProp } from \"@/lib/utils\";\nimport {\n useQuery,\n useQueryClient,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport axios from \"axios\";\n\nimport {\n constructMetaParams,\n type MetabaseResponse,\n} from \"@/lib/utils/metabase\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { TransactionItemSwap } from \"@/transactions/types\";\nimport { isAddress, isHash, type Address } from \"viem\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { getLogger } from \"@/core/logger\";\nimport Big from \"big.js\";\nimport { getApiProxyURL } from \"@/lib/constants/urls\";\n\ntype SwapTxParams = {\n account: Address;\n chainId?: number;\n limit?: number;\n offset?: number;\n};\n\ntype SwapTxRow = [\n txhash: string,\n chainId: number,\n srctoken: string,\n srcamount: number,\n srcamountusd: number,\n desttoken: string,\n destamount: number,\n destamountusd: number,\n txorigin: string,\n initiator: string,\n entrytimestamp: string,\n txgasused: number, // can falsely return 0, also this is not gasUsed, this is gasLimit; better rely on gas data from GRP table if available\n txgasprice: number,\n side: \"true\" | \"false\", // \"true\" = BUY, \"false\" = SELL\n];\n\ntype SwapTxsResponse = MetabaseResponse<SwapTxRow>;\n\nconst logger = getLogger(\"SwapTxHistory\");\n\nfunction formatSwapTxsData(\n { data }: SwapTxsResponse,\n { account }: SwapTxParams\n): TransactionItemSwap[] {\n const transactionItems: TransactionItemSwap[] = [];\n\n for (const row of data.rows) {\n const [\n txhash,\n chainId,\n srctoken,\n srcamount,\n srcamountusd,\n desttoken,\n destamount,\n destamountusd,\n ,\n ,\n entrytimestamp,\n txgasused,\n txgasprice,\n side,\n ] = row;\n\n if (\n !isSupportedChainId(chainId) ||\n !isHash(txhash) ||\n !isAddress(srctoken) ||\n !isAddress(desttoken)\n ) {\n logger.warn(\"Invalid swap tx data row, skipping\", row);\n continue;\n }\n\n transactionItems.push({\n account,\n transactionHash: txhash,\n chainId,\n dropped: false,\n timestamp: new Date(entrytimestamp).getTime(),\n action: \"swap\",\n transactionSpecificData: {\n action: \"swap\",\n source: \"metabase\",\n srcTokenAddress: srctoken,\n srcAmount: Big(srcamount).toFixed(),\n srcAmountUSD: Big(srcamountusd).toFixed(),\n destTokenAddress: desttoken,\n destAmount: Big(destamount).toFixed(),\n destAmountUSD: Big(destamountusd).toFixed(),\n gasCost: Big(txgasused).mul(txgasprice).toFixed(),\n swapSide: side === \"true\" ? \"BUY\" : \"SELL\",\n },\n });\n }\n\n return transactionItems;\n}\n\nasync function fetchSwapTxs(\n params: SwapTxParams,\n signal?: AbortSignal\n): Promise<TransactionItemSwap[]> {\n const metaParams = constructMetaParams(params);\n\n const url = `${getApiProxyURL()}/swap/txs?parameters=${JSON.stringify(metaParams)}`;\n\n const { data } = await axios.get<SwapTxsResponse>(url, { signal });\n\n return formatSwapTxsData(data, params);\n}\n\ntype SwapParams = MarkOptional<SwapTxParams, \"account\">;\n\nconst SWAP_TX_HISTORY_QUERY_KEY_BASE = \"swap/tx-history\";\ntype SwapTxHistoryQueryKey = [\n base: typeof SWAP_TX_HISTORY_QUERY_KEY_BASE,\n params: SwapParams,\n];\n\ntype SwapTxHistoryQueryParams<TData = TransactionItemSwap[]> = Omit<\n UseQueryOptions<TransactionItemSwap[], Error, TData, SwapTxHistoryQueryKey>,\n \"queryKey\" | \"queryFn\"\n>;\n\nexport function useSwapTxHistory<TData = TransactionItemSwap[]>({\n params,\n query,\n}: {\n params: SwapParams;\n query?: SwapTxHistoryQueryParams<TData>;\n}): UseQueryResult<TData, Error> {\n const queryClient = useQueryClient();\n\n return useQuery<TransactionItemSwap[], Error, TData, SwapTxHistoryQueryKey>({\n queryKey: [SWAP_TX_HISTORY_QUERY_KEY_BASE, params],\n queryFn: ({ signal }) => {\n assertProp(params, \"account\");\n if (params.chainId) {\n // don't bother with picking past data for different limit & offset, it's too hard to get right data slice given different chainIds\n const { chainId, ...queryParamsWithoutChainId } = params;\n const queryKeyWithoutChainId: SwapTxHistoryQueryKey = [\n SWAP_TX_HISTORY_QUERY_KEY_BASE,\n queryParamsWithoutChainId,\n ];\n\n const query = queryClient.getQueryCache().find<TransactionItemSwap[]>({\n queryKey: queryKeyWithoutChainId,\n stale: false, // get only non-stale data\n });\n\n const dataForAllChains = query?.state.data;\n\n if (dataForAllChains) {\n return dataForAllChains.filter((tx) => tx.chainId === chainId);\n }\n }\n\n return fetchSwapTxs(params, signal);\n },\n ...query,\n enabled: !!params.account && (query?.enabled ?? true),\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTxResponse.js","names":["SupportedChainId","ensureTxResponseFactory","EnsureTxResponseFn","useQueryClient","Hash","useConfig","useTransaction","useEnsureTxResponse","$","_c","queryClient","wagmiConfig","t0","UseTxResponseInput","hash","chainId","enabled","useTxResponse","t1","undefined","ensureTxResponse","t2","t3","t4","query","txResponseQuery","t5"],"sources":["../../../../src/hooks/txs/queries/useTxResponse.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n ensureTxResponseFactory,\n type EnsureTxResponseFn,\n} from \"@/transactions/queries/ensureTxResponse\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { Hash } from \"viem\";\nimport { useConfig, useTransaction } from \"wagmi\";\n\nexport function useEnsureTxResponse(): EnsureTxResponseFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n\n return ensureTxResponseFactory({ queryClient, wagmiConfig });\n}\n\ntype UseTxResponseInput = {\n hash?: Hash;\n chainId?: SupportedChainId;\n enabled?: boolean;\n};\n\nexport function useTxResponse({\n hash,\n chainId,\n enabled = true,\n}: UseTxResponseInput) {\n const ensureTxResponse = useEnsureTxResponse();\n\n const txResponseQuery = useTransaction({\n hash,\n chainId,\n query: { enabled: !!hash && enabled },\n });\n\n return {\n query: txResponseQuery,\n ensureTxResponse,\n };\n}\n"],"mappings":";;;;;AASA,SAAOO,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAoBP,GAAgB,EACpCQ,IAAoBN,GAAW,EAACO;
|
|
1
|
+
{"version":3,"file":"useTxResponse.js","names":["SupportedChainId","ensureTxResponseFactory","EnsureTxResponseFn","useQueryClient","Hash","useConfig","useTransaction","useEnsureTxResponse","$","_c","queryClient","wagmiConfig","t0","UseTxResponseInput","hash","chainId","enabled","useTxResponse","t1","undefined","ensureTxResponse","t2","t3","t4","query","txResponseQuery","t5"],"sources":["../../../../src/hooks/txs/queries/useTxResponse.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n ensureTxResponseFactory,\n type EnsureTxResponseFn,\n} from \"@/transactions/queries/ensureTxResponse\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { Hash } from \"viem\";\nimport { useConfig, useTransaction } from \"wagmi\";\n\nexport function useEnsureTxResponse(): EnsureTxResponseFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n\n return ensureTxResponseFactory({ queryClient, wagmiConfig });\n}\n\ntype UseTxResponseInput = {\n hash?: Hash;\n chainId?: SupportedChainId;\n enabled?: boolean;\n};\n\nexport function useTxResponse({\n hash,\n chainId,\n enabled = true,\n}: UseTxResponseInput) {\n const ensureTxResponse = useEnsureTxResponse();\n\n const txResponseQuery = useTransaction({\n hash,\n chainId,\n query: { enabled: !!hash && enabled },\n });\n\n return {\n query: txResponseQuery,\n ensureTxResponse,\n };\n}\n"],"mappings":";;;;;AASA,SAAOO,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAoBP,GAAgB,EACpCQ,IAAoBN,GAAW,EAACO;CAE4B,OAF5BJ,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAEzBC,IAAAX,EAAwB;EAAAS;EAAAC;EAA4B,CAAC,EAAAH,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAI,KAAAA,IAAAJ,EAAA,IAArDI;;AAST,SAAOK,EAAAL,GAAA;CAAA,IAAAJ,IAAAC,EAAA,EAAA,EAAuB,EAAAK,SAAAC,YAAAC,SAAAE,MAAAN,GAG5BI,IAAAE,MAAAC,KAAAA,IAAA,KAAAD,GAEAE,IAAyBb,GAAqB,EAK1Bc,IAAA,CAAC,CAACP,KAAFE,GAAiBM;CAAA,AAAAd,EAAA,OAAAa,IAAEC,IAAAd,EAAA,MAA9Bc,IAAA,EAAAN,SAAWK,GAAmB,EAAAb,EAAA,KAAAa,GAAAb,EAAA,KAAAc;CAAA,IAAAC;CAAA,AAAAf,EAAA,OAAAO,KAAAP,EAAA,OAAAM,KAAAN,EAAA,OAAAc,KAHAC,IAAA;EAAAT;EAAAC;EAAAS,OAG9BF;EACR,EAAAd,EAAA,KAAAO,GAAAP,EAAA,KAAAM,GAAAN,EAAA,KAAAc,GAAAd,EAAA,KAAAe,KAAAA,IAAAf,EAAA;CAJD,IAAAiB,IAAwBnB,EAAeiB,EAIrC,EAACG;CAKF,OALElB,EAAA,OAAAY,KAAAZ,EAAA,OAAAiB,KAEIC,IAAA;EAAAF,OACEC;EAAeL;EAEvB,EAAAZ,EAAA,KAAAY,GAAAZ,EAAA,KAAAiB,GAAAjB,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAHMkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletCanReplaceTx.js","names":["useAccount","useWalletMetadata","useIsAccountContract","SUPPORTED_WALLETS_REGEX","useWalletCanReplaceTx","$","_c","connector","walletMetadata","data","accountContractData","t0","name","test","isKnownUnsupportedWallet","isSmartContract","isContract"],"sources":["../../../../src/hooks/txs/queries/useWalletCanReplaceTx.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useWalletMetadata } from \"@/components/web3/ConnectWallets/walletIcons\";\nimport { useIsAccountContract } from \"@/hooks/getCode/useIsAccountContract\";\n/**\n * Some of the tested wallets:\n *\n * | Wallet | Test result | Supports | metadata.name |\n * | ------------- | -------------------------------------------------------------------------------------------------------- | -------- | ------------- |\n * | Rabby | Works, but ignores gasPrice params | ✓ | Rabby Wallet |\n * | MetaMask | nonce is ignored, gasPrice params accepted | ✗ | MetaMask |\n * | TrustWallet | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Trust Wallet |\n * | BitGet Wallet | ignores gasPrice params, accepts nonce, but doesn't allow to submit tx with same nonce to replace | ✗ | Bitget Wallet |\n * | Rainbow | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Rainbow |\n * | Phantom | accepts nonce, but doesn't allow to submit tx with same nonce to replace, ignores gasPrice params | ✗ | Phantom |\n * | Enkrypt | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Enkrypt |\n * | Ledger Live | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Ledger Live |\n * | Ledger Button | supports nonce, should take all params as is | ✓ | Ledger Wallet |\n *\n */\n\nconst SUPPORTED_WALLETS_REGEX = /Rabby|Ledger Wallet/i; // wallets known to support replaceTx nonce override\n\nexport function useWalletCanReplaceTx(): boolean {\n const { connector } = useAccount();\n const walletMetadata = useWalletMetadata(connector);\n const { data: accountContractData } = useIsAccountContract();\n\n // 1. Check if Wallet is Metamask (injected wallet or through WalletConnect)\n // Metamask ignores txParams.nonce and doesn't allow replacing txs\n const isKnownUnsupportedWallet =\n !!walletMetadata?.name &&\n !SUPPORTED_WALLETS_REGEX.test(walletMetadata.name);\n\n // 2. Check if user account is a SmartContract\n // SmartContracts have their own logic for replacing pending txs (if any)\n const isSmartContract = accountContractData?.isContract ?? false;\n\n return (\n !!connector &&\n !!walletMetadata &&\n !isKnownUnsupportedWallet &&\n !isSmartContract\n );\n}\n"],"mappings":";;;;;AAoBA,IAAMG,IAA0B;AAEhC,SAAOC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACL,EAAAC,iBAAsBP,GAAY,EAClCQ,IAAuBP,EAAkBM,EAAU,EACnD,EAAAE,MAAAC,MAAsCR,GAAsB,EAACS;
|
|
1
|
+
{"version":3,"file":"useWalletCanReplaceTx.js","names":["useAccount","useWalletMetadata","useIsAccountContract","SUPPORTED_WALLETS_REGEX","useWalletCanReplaceTx","$","_c","connector","walletMetadata","data","accountContractData","t0","name","test","isKnownUnsupportedWallet","isSmartContract","isContract"],"sources":["../../../../src/hooks/txs/queries/useWalletCanReplaceTx.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useWalletMetadata } from \"@/components/web3/ConnectWallets/walletIcons\";\nimport { useIsAccountContract } from \"@/hooks/getCode/useIsAccountContract\";\n/**\n * Some of the tested wallets:\n *\n * | Wallet | Test result | Supports | metadata.name |\n * | ------------- | -------------------------------------------------------------------------------------------------------- | -------- | ------------- |\n * | Rabby | Works, but ignores gasPrice params | ✓ | Rabby Wallet |\n * | MetaMask | nonce is ignored, gasPrice params accepted | ✗ | MetaMask |\n * | TrustWallet | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Trust Wallet |\n * | BitGet Wallet | ignores gasPrice params, accepts nonce, but doesn't allow to submit tx with same nonce to replace | ✗ | Bitget Wallet |\n * | Rainbow | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Rainbow |\n * | Phantom | accepts nonce, but doesn't allow to submit tx with same nonce to replace, ignores gasPrice params | ✗ | Phantom |\n * | Enkrypt | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Enkrypt |\n * | Ledger Live | ignores nonce, uses its internal nonce, ignores gasPrice params | ✗ | Ledger Live |\n * | Ledger Button | supports nonce, should take all params as is | ✓ | Ledger Wallet |\n *\n */\n\nconst SUPPORTED_WALLETS_REGEX = /Rabby|Ledger Wallet/i; // wallets known to support replaceTx nonce override\n\nexport function useWalletCanReplaceTx(): boolean {\n const { connector } = useAccount();\n const walletMetadata = useWalletMetadata(connector);\n const { data: accountContractData } = useIsAccountContract();\n\n // 1. Check if Wallet is Metamask (injected wallet or through WalletConnect)\n // Metamask ignores txParams.nonce and doesn't allow replacing txs\n const isKnownUnsupportedWallet =\n !!walletMetadata?.name &&\n !SUPPORTED_WALLETS_REGEX.test(walletMetadata.name);\n\n // 2. Check if user account is a SmartContract\n // SmartContracts have their own logic for replacing pending txs (if any)\n const isSmartContract = accountContractData?.isContract ?? false;\n\n return (\n !!connector &&\n !!walletMetadata &&\n !isKnownUnsupportedWallet &&\n !isSmartContract\n );\n}\n"],"mappings":";;;;;AAoBA,IAAMG,IAA0B;AAEhC,SAAOC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACL,EAAAC,iBAAsBP,GAAY,EAClCQ,IAAuBP,EAAkBM,EAAU,EACnD,EAAAE,MAAAC,MAAsCR,GAAsB,EAACS;CAAA,AAAAN,EAAA,OAAAG,IAMTG,IAAAN,EAAA,MADlDM,IAAA,CAAC,CAACH,GAAcI,QAAhB,CACCT,EAAuBU,KAAML,EAAcI,KAAM,EAAAP,EAAA,KAAAG,GAAAH,EAAA,KAAAM;CAFpD,IAAAG,IACEH,GAKFI,IAAwBL,GAAmBM,cAAnB;CAAyC,OAG/D,CAAC,CAACT,KAAF,CACC,CAACC,KADF,CAECM,KAFD,CAGCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["WaitForCallsStatusDataWithReceipts","isFilledArray","TransactionReceipt","WaitForCallsStatusData","isTransactionReceipt","data","isWaitForCallsStatusData","isReceiptsInWaitForCallsStatusData","Array","isArray","receipts"],"sources":["../../../../src/hooks/txs/queries/utils.ts"],"sourcesContent":["import type { WaitForCallsStatusDataWithReceipts } from \"@/hooks/batch/useAwaitCalls\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport type { TransactionReceipt } from \"viem\";\nimport type { WaitForCallsStatusData } from \"wagmi/query\";\n\nexport function isTransactionReceipt(\n data: unknown\n): data is TransactionReceipt {\n return (\n typeof data === \"object\" &&\n data !== null &&\n \"blockHash\" in data &&\n \"transactionHash\" in data &&\n \"status\" in data &&\n \"gasUsed\" in data\n );\n}\n\nexport function isWaitForCallsStatusData(\n data: unknown\n): data is WaitForCallsStatusData {\n return (\n typeof data === \"object\" &&\n data !== null &&\n \"id\" in data &&\n \"status\" in data &&\n \"atomic\" in data\n );\n}\n\nexport function isReceiptsInWaitForCallsStatusData(\n data: WaitForCallsStatusData\n): data is WaitForCallsStatusDataWithReceipts {\n return Array.isArray(data.receipts) && isFilledArray(data.receipts);\n}\n"],"mappings":";;AAKA,SAAgBI,EACdC,GAC4B;
|
|
1
|
+
{"version":3,"file":"utils.js","names":["WaitForCallsStatusDataWithReceipts","isFilledArray","TransactionReceipt","WaitForCallsStatusData","isTransactionReceipt","data","isWaitForCallsStatusData","isReceiptsInWaitForCallsStatusData","Array","isArray","receipts"],"sources":["../../../../src/hooks/txs/queries/utils.ts"],"sourcesContent":["import type { WaitForCallsStatusDataWithReceipts } from \"@/hooks/batch/useAwaitCalls\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport type { TransactionReceipt } from \"viem\";\nimport type { WaitForCallsStatusData } from \"wagmi/query\";\n\nexport function isTransactionReceipt(\n data: unknown\n): data is TransactionReceipt {\n return (\n typeof data === \"object\" &&\n data !== null &&\n \"blockHash\" in data &&\n \"transactionHash\" in data &&\n \"status\" in data &&\n \"gasUsed\" in data\n );\n}\n\nexport function isWaitForCallsStatusData(\n data: unknown\n): data is WaitForCallsStatusData {\n return (\n typeof data === \"object\" &&\n data !== null &&\n \"id\" in data &&\n \"status\" in data &&\n \"atomic\" in data\n );\n}\n\nexport function isReceiptsInWaitForCallsStatusData(\n data: WaitForCallsStatusData\n): data is WaitForCallsStatusDataWithReceipts {\n return Array.isArray(data.receipts) && isFilledArray(data.receipts);\n}\n"],"mappings":";;AAKA,SAAgBI,EACdC,GAC4B;CAC5B,OACE,OAAOA,KAAS,cAChBA,KACA,eAAeA,KACf,qBAAqBA,KACrB,YAAYA,KACZ,aAAaA;;AAIjB,SAAgBC,EACdD,GACgC;CAChC,OACE,OAAOA,KAAS,cAChBA,KACA,QAAQA,KACR,YAAYA,KACZ,YAAYA;;AAIhB,SAAgBE,EACdF,GAC4C;CAC5C,OAAOG,MAAMC,QAAQJ,EAAKK,SAAS,IAAIT,EAAcI,EAAKK,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAvailableCrosses.js","names":["SupportedChainId","isSupportedChainId","useMemo","useGetBridgeInfo","emptyArray","BridgeInfoMode","getBridgeInfoQueryData","useAvailableCrosses","t0","$","_c","fromChainId","mode","t1","data","bridgeInfo","error","isLoading","acrossTokenAddresses","t2","bb0","t3","Object","keys","map","Number","filter","availableCrosses","getAvailableCrosses","cachedBridgeInfo","Array","from","Set"],"sources":["../../src/hooks/useAvailableCrosses.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { useMemo } from \"react\";\nimport { useGetBridgeInfo } from \"./useBridgeInfo\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { type BridgeInfoMode } from \"./swap/prices/delta/queries/bridgeInfo/types\";\nimport { getBridgeInfoQueryData } from \"./swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData\";\n\nexport function useAvailableCrosses({\n fromChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): {\n availableCrosses?: SupportedChainId[];\n error: Error | null;\n isLoading: boolean;\n} {\n const { data: bridgeInfo, error, isLoading } = useGetBridgeInfo({ mode });\n const acrossTokenAddresses = bridgeInfo?.[fromChainId];\n const availableCrosses = useMemo(() => {\n if (!acrossTokenAddresses && !isLoading) return emptyArray;\n return (\n acrossTokenAddresses &&\n Object.keys(acrossTokenAddresses).map(Number).filter(isSupportedChainId)\n );\n }, [acrossTokenAddresses, isLoading]);\n\n return { availableCrosses, error, isLoading };\n}\n\nexport function getAvailableCrosses({\n fromChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): SupportedChainId[] {\n const cachedBridgeInfo = getBridgeInfoQueryData(mode);\n if (!cachedBridgeInfo) return emptyArray;\n\n const acrossTokenAddresses = cachedBridgeInfo[fromChainId];\n if (!acrossTokenAddresses) return emptyArray;\n\n const availableCrosses = Object.keys(acrossTokenAddresses)\n .map(Number)\n .filter(isSupportedChainId);\n\n return Array.from(new Set(availableCrosses));\n}\n"],"mappings":";;;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAA6B,EAAAC,gBAAAC,YAAAJ,GAMnCK;
|
|
1
|
+
{"version":3,"file":"useAvailableCrosses.js","names":["SupportedChainId","isSupportedChainId","useMemo","useGetBridgeInfo","emptyArray","BridgeInfoMode","getBridgeInfoQueryData","useAvailableCrosses","t0","$","_c","fromChainId","mode","t1","data","bridgeInfo","error","isLoading","acrossTokenAddresses","t2","bb0","t3","Object","keys","map","Number","filter","availableCrosses","getAvailableCrosses","cachedBridgeInfo","Array","from","Set"],"sources":["../../src/hooks/useAvailableCrosses.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { useMemo } from \"react\";\nimport { useGetBridgeInfo } from \"./useBridgeInfo\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { type BridgeInfoMode } from \"./swap/prices/delta/queries/bridgeInfo/types\";\nimport { getBridgeInfoQueryData } from \"./swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData\";\n\nexport function useAvailableCrosses({\n fromChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): {\n availableCrosses?: SupportedChainId[];\n error: Error | null;\n isLoading: boolean;\n} {\n const { data: bridgeInfo, error, isLoading } = useGetBridgeInfo({ mode });\n const acrossTokenAddresses = bridgeInfo?.[fromChainId];\n const availableCrosses = useMemo(() => {\n if (!acrossTokenAddresses && !isLoading) return emptyArray;\n return (\n acrossTokenAddresses &&\n Object.keys(acrossTokenAddresses).map(Number).filter(isSupportedChainId)\n );\n }, [acrossTokenAddresses, isLoading]);\n\n return { availableCrosses, error, isLoading };\n}\n\nexport function getAvailableCrosses({\n fromChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): SupportedChainId[] {\n const cachedBridgeInfo = getBridgeInfoQueryData(mode);\n if (!cachedBridgeInfo) return emptyArray;\n\n const acrossTokenAddresses = cachedBridgeInfo[fromChainId];\n if (!acrossTokenAddresses) return emptyArray;\n\n const availableCrosses = Object.keys(acrossTokenAddresses)\n .map(Number)\n .filter(isSupportedChainId);\n\n return Array.from(new Set(availableCrosses));\n}\n"],"mappings":";;;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAA6B,EAAAC,gBAAAC,YAAAJ,GAMnCK;CAAA,AAAAJ,EAAA,OAAAG,IAKyEC,IAAAJ,EAAA,MAARI,IAAA,EAAAD,SAAQ,EAAAH,EAAA,KAAAG,GAAAH,EAAA,KAAAI;CAAxE,IAAA,EAAAC,MAAAC,GAAAC,UAAAC,iBAA+Cd,EAAiBU,EAAS,EACzEK,IAA6BH,IAAaJ,IAAaQ;CAAAC,KAAA;EAErD,IAAI,CAACF,KAAD,CAA0BD,GAAS;GAAEE,IAAOf;GAAP,MAAAgB;;EAAkB,IAAAC;EAC3DF,AAD2DV,EAAA,OAAAS,IAGeG,IAAAZ,EAAA,MADxEY,IAAAH,KACAI,OAAMC,KAAML,EAAqB,CAAAM,IAAKC,OAAO,CAAAC,OAAQzB,EAAmB,EAAAQ,EAAA,KAAAS,GAAAT,EAAA,KAAAY,IAF1EF,IACEE;;CAHJ,IAAAM,IAAyBR,GAMaE;CAEO,OAFPZ,EAAA,OAAAkB,KAAAlB,EAAA,OAAAO,KAAAP,EAAA,OAAAQ,KAE/BI,IAAA;EAAAM;EAAAX;EAAAC;EAAsC,EAAAR,EAAA,KAAAkB,GAAAlB,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,GAAAR,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAAtCY;;AAGT,SAAgBO,EAAoB,EAClCjB,gBACAC,WAIqB;CACrB,IAAMiB,IAAmBvB,EAAuBM,EAAK;CACrD,IAAI,CAACiB,GAAkB,OAAOzB;CAE9B,IAAMc,IAAuBW,EAAiBlB;CAC9C,IAAI,CAACO,GAAsB,OAAOd;CAElC,IAAMuB,IAAmBL,OAAOC,KAAKL,EAAqB,CACvDM,IAAIC,OAAO,CACXC,OAAOzB,EAAmB;CAE7B,OAAO6B,MAAMC,KAAK,IAAIC,IAAIL,EAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBreakpoints.js","names":["isOverMdAtom","useAtomValue","useBreakpoints","$","_c","isOverMd","t0"],"sources":["../../src/hooks/useBreakpoints.ts"],"sourcesContent":["import { isOverMdAtom } from \"@/core/state/containerAtom\";\nimport { useAtomValue } from \"@/core/store\";\n\nexport function useBreakpoints() {\n const isOverMd = useAtomValue(isOverMdAtom);\n\n return { isOverMd };\n}\n"],"mappings":";;;;AAGA,SAAOE,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAiBJ,EAAaD,EAAa,EAACM;
|
|
1
|
+
{"version":3,"file":"useBreakpoints.js","names":["isOverMdAtom","useAtomValue","useBreakpoints","$","_c","isOverMd","t0"],"sources":["../../src/hooks/useBreakpoints.ts"],"sourcesContent":["import { isOverMdAtom } from \"@/core/state/containerAtom\";\nimport { useAtomValue } from \"@/core/store\";\n\nexport function useBreakpoints() {\n const isOverMd = useAtomValue(isOverMdAtom);\n\n return { isOverMd };\n}\n"],"mappings":";;;;AAGA,SAAOE,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAiBJ,EAAaD,EAAa,EAACM;CAEzB,OAFyBH,EAAA,OAAAE,IAEzBC,IAAAH,EAAA,MAAZG,IAAA,EAAAD,aAAY,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAAZA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBridgeInfo.js","names":["UseQueryResult","BridgeInfo","useBridgeInfoQuery","BridgeInfoMode","useGetBridgeInfo","t0","$","_c","mode","t1","Symbol","for","staleTime","Infinity","gcTime","t2","t3","query","input","allowBridgeAndSwap","result"],"sources":["../../src/hooks/useBridgeInfo.ts"],"sourcesContent":["import { type UseQueryResult } from \"@tanstack/react-query\";\nimport type { BridgeInfo } from \"@velora-dex/sdk\";\nimport { useBridgeInfoQuery } from \"./swap/prices/delta/queries/bridgeInfo/useBridgeInfo\";\nimport type { BridgeInfoMode } from \"./swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useGetBridgeInfo({\n mode,\n}: {\n mode: BridgeInfoMode;\n}): UseQueryResult<BridgeInfo, Error> {\n const result = useBridgeInfoQuery({\n query: {\n staleTime: Infinity,\n gcTime: Infinity,\n },\n input: {\n allowBridgeAndSwap: mode === \"swap\",\n },\n });\n\n return result;\n}\n"],"mappings":";;;;AAKA,SAAOI,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAA0B,EAAAC,YAAAH,GAIhCI;
|
|
1
|
+
{"version":3,"file":"useBridgeInfo.js","names":["UseQueryResult","BridgeInfo","useBridgeInfoQuery","BridgeInfoMode","useGetBridgeInfo","t0","$","_c","mode","t1","Symbol","for","staleTime","Infinity","gcTime","t2","t3","query","input","allowBridgeAndSwap","result"],"sources":["../../src/hooks/useBridgeInfo.ts"],"sourcesContent":["import { type UseQueryResult } from \"@tanstack/react-query\";\nimport type { BridgeInfo } from \"@velora-dex/sdk\";\nimport { useBridgeInfoQuery } from \"./swap/prices/delta/queries/bridgeInfo/useBridgeInfo\";\nimport type { BridgeInfoMode } from \"./swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useGetBridgeInfo({\n mode,\n}: {\n mode: BridgeInfoMode;\n}): UseQueryResult<BridgeInfo, Error> {\n const result = useBridgeInfoQuery({\n query: {\n staleTime: Infinity,\n gcTime: Infinity,\n },\n input: {\n allowBridgeAndSwap: mode === \"swap\",\n },\n });\n\n return result;\n}\n"],"mappings":";;;;AAKA,SAAOI,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAA0B,EAAAC,YAAAH,GAIhCI;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAEUF,IAAA;EAAAG,WACMC;EAAQC,QACXD;EACT,EAAAP,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAEqB,IAAAS,IAAAP,MAAS,QAAMQ;CAEpC,OAFoCV,EAAA,OAAAS,IAEtCC,IAAAV,EAAA,MARiCU,IAAA;EAAAC,OACzBR;EAGNS,OACM,EAAAC,oBACeJ,GACtB;EACD,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAU,IARcd,EAAmBc,EAU3BI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBridgeProtocols.js","names":["BridgeProtocolsMapping","BridgeProtocolsReturn","useBridgeProtocolsQuery","createProtocolMapping","data","reduce","acc","protocol","rest","lowercasedProtocol","toLowerCase","useGetBridgeProtocolsMap","$","_c","t0","Symbol","for","query","staleTime","Infinity","gcTime","select","result"],"sources":["../../src/hooks/useBridgeProtocols.ts"],"sourcesContent":["import type {\n BridgeProtocolsMapping,\n BridgeProtocolsReturn,\n} from \"./swap/prices/delta/queries/bridgeProtocols/types\";\nimport { useBridgeProtocolsQuery } from \"./swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols\";\n\n// mapping {[protocol.toLowerCase()]: bridgeProtocolResponse} for faster access\nconst createProtocolMapping = (data: BridgeProtocolsReturn) =>\n data.reduce<BridgeProtocolsMapping>((acc, { protocol, ...rest }) => {\n const lowercasedProtocol = protocol.toLowerCase();\n acc[lowercasedProtocol] = { protocol: lowercasedProtocol, ...rest };\n return acc;\n }, {});\n\nexport function useGetBridgeProtocolsMap() {\n const result = useBridgeProtocolsQuery({\n query: {\n staleTime: Infinity,\n gcTime: Infinity,\n select: createProtocolMapping,\n },\n });\n\n return result;\n}\n"],"mappings":";;;AAOA,IAAMG,KAAyBC,MAC7BA,EAAKC,QAAgCC,GAAK,EAAEC,aAAU,GAAGC,QAAW;CAClE,IAAMC,IAAqBF,EAASG,aAAa;
|
|
1
|
+
{"version":3,"file":"useBridgeProtocols.js","names":["BridgeProtocolsMapping","BridgeProtocolsReturn","useBridgeProtocolsQuery","createProtocolMapping","data","reduce","acc","protocol","rest","lowercasedProtocol","toLowerCase","useGetBridgeProtocolsMap","$","_c","t0","Symbol","for","query","staleTime","Infinity","gcTime","select","result"],"sources":["../../src/hooks/useBridgeProtocols.ts"],"sourcesContent":["import type {\n BridgeProtocolsMapping,\n BridgeProtocolsReturn,\n} from \"./swap/prices/delta/queries/bridgeProtocols/types\";\nimport { useBridgeProtocolsQuery } from \"./swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols\";\n\n// mapping {[protocol.toLowerCase()]: bridgeProtocolResponse} for faster access\nconst createProtocolMapping = (data: BridgeProtocolsReturn) =>\n data.reduce<BridgeProtocolsMapping>((acc, { protocol, ...rest }) => {\n const lowercasedProtocol = protocol.toLowerCase();\n acc[lowercasedProtocol] = { protocol: lowercasedProtocol, ...rest };\n return acc;\n }, {});\n\nexport function useGetBridgeProtocolsMap() {\n const result = useBridgeProtocolsQuery({\n query: {\n staleTime: Infinity,\n gcTime: Infinity,\n select: createProtocolMapping,\n },\n });\n\n return result;\n}\n"],"mappings":";;;AAOA,IAAMG,KAAyBC,MAC7BA,EAAKC,QAAgCC,GAAK,EAAEC,aAAU,GAAGC,QAAW;CAClE,IAAMC,IAAqBF,EAASG,aAAa;CAEjD,OADAJ,EAAIG,KAAsB;EAAEF,UAAUE;EAAoB,GAAGD;EAAM,EAC5DF;GACN,EAAE,CAAC;AAER,SAAOK,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;CAOF,OAPEF,EAAA,OAAAG,OAAAC,IAAA,4BAAA,IACkCF,IAAA,EAAAG,OAC9B;EAAAC,WACMC;EAAQC,QACXD;EAAQE,QACRlB;EACV,EACD,EAAAS,EAAA,KAAAE,KAAAA,IAAAF,EAAA,IANcV,EAAwBY,EAQhCQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCachedQueryError.js","names":["DefaultError","UseQueryResult","useRef","useCachedQueryError","query","TData","TError","errorRef","error","current","isSuccess"],"sources":["../../src/hooks/useCachedQueryError.ts"],"sourcesContent":["import type { DefaultError, UseQueryResult } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\n\nexport function useCachedQueryError<TData = unknown, TError = DefaultError>(\n query: UseQueryResult<TData, TError>\n): TError | null {\n // keep track if last result was error\n const errorRef = useRef(query.error);\n // by itself isError resets when fetching\n\n /* eslint-disable react-hooks/refs */\n if (query.error) errorRef.current = query.error;\n // keep errorRef until delta succeeds\n if (query.isSuccess) errorRef.current = null;\n /* eslint-disable react-hooks/refs */\n\n return errorRef.current;\n}\n"],"mappings":";;AAGA,SAAgBG,EACdC,GACe;CAEf,IAAMG,IAAWL,EAAOE,EAAMI,MAAM;
|
|
1
|
+
{"version":3,"file":"useCachedQueryError.js","names":["DefaultError","UseQueryResult","useRef","useCachedQueryError","query","TData","TError","errorRef","error","current","isSuccess"],"sources":["../../src/hooks/useCachedQueryError.ts"],"sourcesContent":["import type { DefaultError, UseQueryResult } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\n\nexport function useCachedQueryError<TData = unknown, TError = DefaultError>(\n query: UseQueryResult<TData, TError>\n): TError | null {\n // keep track if last result was error\n const errorRef = useRef(query.error);\n // by itself isError resets when fetching\n\n /* eslint-disable react-hooks/refs */\n if (query.error) errorRef.current = query.error;\n // keep errorRef until delta succeeds\n if (query.isSuccess) errorRef.current = null;\n /* eslint-disable react-hooks/refs */\n\n return errorRef.current;\n}\n"],"mappings":";;AAGA,SAAgBG,EACdC,GACe;CAEf,IAAMG,IAAWL,EAAOE,EAAMI,MAAM;CASpC,OALIJ,EAAMI,UAAOD,EAASE,UAAUL,EAAMI,QAEtCJ,EAAMM,cAAWH,EAASE,UAAU,OAGjCF,EAASE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChainMatches.js","names":["SupportedChainId","useAccount","useChainId","useChainMatches","forcedChainId","$","_c","appChainId","chainId","walletChainId","isConnected","walletChainMatchesAppChain","forcedChainMatchesWalletChain","undefined","t0"],"sources":["../../src/hooks/useChainMatches.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAccount, useChainId } from \"wagmi\";\n\nexport function useChainMatches(forcedChainId?: SupportedChainId) {\n const appChainId = useChainId();\n const { chainId: walletChainId, isConnected } = useAccount();\n\n const walletChainMatchesAppChain =\n isConnected && !!walletChainId && appChainId === walletChainId;\n\n const forcedChainMatchesWalletChain =\n isConnected &&\n forcedChainId !== undefined &&\n walletChainId !== undefined &&\n forcedChainId === walletChainId;\n\n return {\n isConnected,\n walletChainMatchesAppChain,\n forcedChainMatchesWalletChain,\n };\n}\n"],"mappings":";;;AAGA,SAAOG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAmBL,GAAY,EAC/B,EAAAM,SAAAC,GAAAC,mBAAgDT,GAAY,EAE5DU,IACED,KAAA,CAAgB,CAACD,KAAiBF,MAAeE,GAEnDG,IACEF,KACAN,MAAkBS,KAAAA,KAClBJ,MAAkBI,KAAAA,KAClBT,MAAkBK,GAAcK;
|
|
1
|
+
{"version":3,"file":"useChainMatches.js","names":["SupportedChainId","useAccount","useChainId","useChainMatches","forcedChainId","$","_c","appChainId","chainId","walletChainId","isConnected","walletChainMatchesAppChain","forcedChainMatchesWalletChain","undefined","t0"],"sources":["../../src/hooks/useChainMatches.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAccount, useChainId } from \"wagmi\";\n\nexport function useChainMatches(forcedChainId?: SupportedChainId) {\n const appChainId = useChainId();\n const { chainId: walletChainId, isConnected } = useAccount();\n\n const walletChainMatchesAppChain =\n isConnected && !!walletChainId && appChainId === walletChainId;\n\n const forcedChainMatchesWalletChain =\n isConnected &&\n forcedChainId !== undefined &&\n walletChainId !== undefined &&\n forcedChainId === walletChainId;\n\n return {\n isConnected,\n walletChainMatchesAppChain,\n forcedChainMatchesWalletChain,\n };\n}\n"],"mappings":";;;AAGA,SAAOG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAmBL,GAAY,EAC/B,EAAAM,SAAAC,GAAAC,mBAAgDT,GAAY,EAE5DU,IACED,KAAA,CAAgB,CAACD,KAAiBF,MAAeE,GAEnDG,IACEF,KACAN,MAAkBS,KAAAA,KAClBJ,MAAkBI,KAAAA,KAClBT,MAAkBK,GAAcK;CAMjC,OANiCT,EAAA,OAAAO,KAAAP,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAE3BG,IAAA;EAAAJ;EAAAC;EAAAC;EAIN,EAAAP,EAAA,KAAAO,GAAAP,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAS,KAAAA,IAAAT,EAAA,IAJMS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClickOutside.js","names":["useEffect","useLayoutEffect","useRef","useClickOutside","ref","callback","$","_c","callbackRef","t0","t1","current","t2","t3","listener","event","element","target","Node","isConnected","contains","clickPoint","x","clientX","y","clientY","dimensions","getBoundingClientRect","isClickInside","left","right","top","bottom","document","addEventListener","removeEventListener"],"sources":["../../src/hooks/useClickOutside.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from \"react\";\n\nexport function useClickOutside<T extends HTMLElement>(\n ref: React.RefObject<T | null>,\n callback: (event: PointerEvent) => void\n) {\n // keep track of the latest callback\n // and don't include it in the effect deps\n const callbackRef = useRef(callback);\n useLayoutEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const listener = (event: PointerEvent) => {\n const element = event.target as Node | null;\n // element belongs to Document tree\n if (!element || !element.isConnected) return;\n if (!ref.current) return;\n\n if (ref.current.contains(element)) {\n return;\n }\n /**\n * edge case when a Dropdown is opened and click is performed outside of dropdown,\n * but inside the Widget container, still registers as a click outside the Widget because:\n * 1. Dropdown onOpen assigns document.style.pointerEvents = \"none\"\n * and events don't reach below <html> (this prevents detecting document.elementsFromPoint)\n * 2. Dropdown onOpen adds pointerdown listener to document, which triggers after pointerdown listener here,\n * so we can't use DropdownMenuContent.onPointerDownOutside to intercept first\n *\n * Manual check against BoundingClientRect to determine if click is inside the Widget works\n */\n\n const clickPoint = {\n // in viewport coordinates\n x: event.clientX,\n y: event.clientY,\n };\n\n // in viewport coordinates\n const dimensions = ref.current.getBoundingClientRect();\n const isClickInside =\n clickPoint.x >= dimensions.left &&\n clickPoint.x <= dimensions.right &&\n clickPoint.y >= dimensions.top &&\n clickPoint.y <= dimensions.bottom;\n\n if (isClickInside) {\n return;\n }\n\n callbackRef.current(event);\n };\n\n // pointerdown = mousedown + touchstart\n document.addEventListener(\"pointerdown\", listener);\n\n return () => {\n document.removeEventListener(\"pointerdown\", listener);\n };\n }, [ref]);\n}\n"],"mappings":";;;AAEA,SAAOG,EAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAMLC,IAAoBN,EAAOG,EAAS,EAACI,GAAAC;
|
|
1
|
+
{"version":3,"file":"useClickOutside.js","names":["useEffect","useLayoutEffect","useRef","useClickOutside","ref","callback","$","_c","callbackRef","t0","t1","current","t2","t3","listener","event","element","target","Node","isConnected","contains","clickPoint","x","clientX","y","clientY","dimensions","getBoundingClientRect","isClickInside","left","right","top","bottom","document","addEventListener","removeEventListener"],"sources":["../../src/hooks/useClickOutside.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from \"react\";\n\nexport function useClickOutside<T extends HTMLElement>(\n ref: React.RefObject<T | null>,\n callback: (event: PointerEvent) => void\n) {\n // keep track of the latest callback\n // and don't include it in the effect deps\n const callbackRef = useRef(callback);\n useLayoutEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const listener = (event: PointerEvent) => {\n const element = event.target as Node | null;\n // element belongs to Document tree\n if (!element || !element.isConnected) return;\n if (!ref.current) return;\n\n if (ref.current.contains(element)) {\n return;\n }\n /**\n * edge case when a Dropdown is opened and click is performed outside of dropdown,\n * but inside the Widget container, still registers as a click outside the Widget because:\n * 1. Dropdown onOpen assigns document.style.pointerEvents = \"none\"\n * and events don't reach below <html> (this prevents detecting document.elementsFromPoint)\n * 2. Dropdown onOpen adds pointerdown listener to document, which triggers after pointerdown listener here,\n * so we can't use DropdownMenuContent.onPointerDownOutside to intercept first\n *\n * Manual check against BoundingClientRect to determine if click is inside the Widget works\n */\n\n const clickPoint = {\n // in viewport coordinates\n x: event.clientX,\n y: event.clientY,\n };\n\n // in viewport coordinates\n const dimensions = ref.current.getBoundingClientRect();\n const isClickInside =\n clickPoint.x >= dimensions.left &&\n clickPoint.x <= dimensions.right &&\n clickPoint.y >= dimensions.top &&\n clickPoint.y <= dimensions.bottom;\n\n if (isClickInside) {\n return;\n }\n\n callbackRef.current(event);\n };\n\n // pointerdown = mousedown + touchstart\n document.addEventListener(\"pointerdown\", listener);\n\n return () => {\n document.removeEventListener(\"pointerdown\", listener);\n };\n }, [ref]);\n}\n"],"mappings":";;;AAEA,SAAOG,EAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAMLC,IAAoBN,EAAOG,EAAS,EAACI,GAAAC;CACrCT,AADqCK,EAAA,OAAAD,KAGxBI,IAAAH,EAAA,IAAAI,IAAAJ,EAAA,OAFGG,UAAA;EACdD,EAAWG,UAAWN;IACrBK,IAAA,CAACL,EAAS,EAAAC,EAAA,KAAAD,GAAAC,EAAA,KAAAG,GAAAH,EAAA,KAAAI,IAFbT,EAAgBQ,GAEbC,EAAW;CAAA,IAAAE,GAAAC;CAEdb,AAFcM,EAAA,OAAAF,KAkDNQ,IAAAN,EAAA,IAAAO,IAAAP,EAAA,OAhDEM,UAAA;EACR,IAAAE,KAAiBC,MAAA;GACf,IAAAC,IAAgBD,EAAKE;GAKrB,IAHI,CAACD,KAAD,CAAaA,EAAOG,eACpB,CAACf,EAAGO,WAEJP,EAAGO,QAAQS,SAAUJ,EAAQ,EAAA;GAcjC,IAAAK,IAAmB;IAAAC,GAEdP,EAAKQ;IAAQC,GACbT,EAAKU;IACT,EAGDC,IAAmBtB,EAAGO,QAAQgB,uBAAwB;GAEpDN,EAAUC,KAAMI,EAAUG,QAC1BR,EAAUC,KAAMI,EAAUI,SAC1BT,EAAUG,KAAME,EAAUK,OAC1BV,EAAUG,KAAME,EAAUM,UAM5BxB,EAAWG,QAASI,EAAM;;EAIsB,OAAlDkB,SAAQC,iBAAkB,eAAepB,EAAS,QAE3C;GACLmB,SAAQE,oBAAqB,eAAerB,EAAS;;IAEtDD,IAAA,CAACT,EAAI,EAAAE,EAAA,KAAAF,GAAAE,EAAA,KAAAM,GAAAN,EAAA,KAAAO,IAhDRb,EAAUY,GAgDPC,EAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentChain.js","names":["chainConfigMap","SupportedChainId","Chain","useChainId","useCurrentChainConfig","forcedChainId","currentChainId"],"sources":["../../src/hooks/useCurrentChain.ts"],"sourcesContent":["import { chainConfigMap } from \"@/lib/web3/wagmi/constants\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { useChainId } from \"wagmi\";\n\n/**\n Only returns config for chains configured via createConfig's chains parameter.\n If the active connection chainId is not from a chain included in your Wagmi Config, useCurrentChainConfig will return the last configured chain.\n*/\nexport const useCurrentChainConfig = (\n forcedChainId?: SupportedChainId\n): Chain & { id: SupportedChainId } => {\n const currentChainId = useChainId();\n\n return chainConfigMap[forcedChainId ?? currentChainId];\n};\n"],"mappings":";;;AASA,IAAaI,KAAwBC,MAAA;CAGnC,IAAAC,IAAuBH,GAAY;
|
|
1
|
+
{"version":3,"file":"useCurrentChain.js","names":["chainConfigMap","SupportedChainId","Chain","useChainId","useCurrentChainConfig","forcedChainId","currentChainId"],"sources":["../../src/hooks/useCurrentChain.ts"],"sourcesContent":["import { chainConfigMap } from \"@/lib/web3/wagmi/constants\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { useChainId } from \"wagmi\";\n\n/**\n Only returns config for chains configured via createConfig's chains parameter.\n If the active connection chainId is not from a chain included in your Wagmi Config, useCurrentChainConfig will return the last configured chain.\n*/\nexport const useCurrentChainConfig = (\n forcedChainId?: SupportedChainId\n): Chain & { id: SupportedChainId } => {\n const currentChainId = useChainId();\n\n return chainConfigMap[forcedChainId ?? currentChainId];\n};\n"],"mappings":";;;AASA,IAAaI,KAAwBC,MAAA;CAGnC,IAAAC,IAAuBH,GAAY;CAAC,OAE7BH,EAAeK,KAAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDebouncedInputState.js","names":["useState","useCallback","useDeferredValue","useDeferredInputState","t0","$","_c","t1","undefined","defaultFilter","t2","inputValue","setInputValue","deferredInputValue","effectiveInputValue","t3","Symbol","for","clearInputValue","t4","event","target","value","handleInputValueChange","t5"],"sources":["../../src/hooks/useDebouncedInputState.ts"],"sourcesContent":["import { useState, useCallback, useDeferredValue } from \"react\";\n\nexport const useDeferredInputState = ({ defaultFilter = \"\" } = {}): {\n inputValue: string;\n setInputValue: (value: string) => void;\n deferredInputValue: string;\n effectiveInputValue: string;\n clearInputValue: () => void;\n handleInputValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n} => {\n const [inputValue, setInputValue] = useState<string>(defaultFilter);\n\n const deferredInputValue = useDeferredValue(inputValue);\n\n // Use immediate value if input is empty, otherwise use deferred\n const effectiveInputValue =\n inputValue === \"\" ? inputValue : deferredInputValue;\n\n const clearInputValue = useCallback(() => setInputValue(\"\"), []);\n\n const handleInputValueChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n },\n [setInputValue]\n );\n\n return {\n inputValue,\n setInputValue,\n deferredInputValue,\n effectiveInputValue,\n clearInputValue,\n handleInputValueChange,\n };\n};\n"],"mappings":";;;AAEA,IAAaG,KAAwBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;
|
|
1
|
+
{"version":3,"file":"useDebouncedInputState.js","names":["useState","useCallback","useDeferredValue","useDeferredInputState","t0","$","_c","t1","undefined","defaultFilter","t2","inputValue","setInputValue","deferredInputValue","effectiveInputValue","t3","Symbol","for","clearInputValue","t4","event","target","value","handleInputValueChange","t5"],"sources":["../../src/hooks/useDebouncedInputState.ts"],"sourcesContent":["import { useState, useCallback, useDeferredValue } from \"react\";\n\nexport const useDeferredInputState = ({ defaultFilter = \"\" } = {}): {\n inputValue: string;\n setInputValue: (value: string) => void;\n deferredInputValue: string;\n effectiveInputValue: string;\n clearInputValue: () => void;\n handleInputValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n} => {\n const [inputValue, setInputValue] = useState<string>(defaultFilter);\n\n const deferredInputValue = useDeferredValue(inputValue);\n\n // Use immediate value if input is empty, otherwise use deferred\n const effectiveInputValue =\n inputValue === \"\" ? inputValue : deferredInputValue;\n\n const clearInputValue = useCallback(() => setInputValue(\"\"), []);\n\n const handleInputValueChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n },\n [setInputValue]\n );\n\n return {\n inputValue,\n setInputValue,\n deferredInputValue,\n effectiveInputValue,\n clearInputValue,\n handleInputValueChange,\n };\n};\n"],"mappings":";;;AAEA,IAAaG,KAAwBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAA4BG,IAAAF,EAAA,MAA3BE,IAAAH,MAAAI,KAAAA,IAAA,EAA2B,GAA3BJ,GAA2BC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAA3B,IAAA,EAAAE,eAAAC,MAAAH,GAQpC,CAAAI,GAAAC,KAAoCZ,EAREU,MAAAF,KAAAA,IAAA,KAAAE,EAQ6B,EAEnEG,IAA2BX,EAAiBS,EAAW,EAGvDG,IACEH,MAAe,KAAfA,IAAAE,GAAoDE;CAAA,AAAAV,EAAA,OAAAW,OAAAC,IAAA,4BAAA,IAElBF,UAAMH,EAAc,GAAG,EAAAP,EAAA,KAAAU,KAAAA,IAAAV,EAAA;CAA3D,IAAAa,IAAwBH,GAAyCI;CAAA,AAAAd,EAAA,OAAAW,OAAAC,IAAA,4BAAA,IAG/DE,KAAAC,MAAA;EACER,EAAcQ,EAAKC,OAAOC,MAAO;IAClCjB,EAAA,KAAAc,KAAAA,IAAAd,EAAA;CAHH,IAAAkB,IAA+BJ,GAK7BK;CASD,OATCnB,EAAA,OAAAQ,KAAAR,EAAA,OAAAS,KAAAT,EAAA,OAAAM,KAEKa,IAAA;EAAAb;EAAAC;EAAAC;EAAAC;EAAAI;EAAAK;EAON,EAAAlB,EAAA,KAAAQ,GAAAR,EAAA,KAAAS,GAAAT,EAAA,KAAAM,GAAAN,EAAA,KAAAmB,KAAAA,IAAAnB,EAAA,IAPMmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEIP1559Enabled.js","names":["eip1559EnabledAtom","useAtomValue","useChainId","gasPricesConfig","useEIP1559Enabled","$","_c","chainId","eip1559EnabledInSettings","eip1559EnabledOnApi","eip1559","t0","t1","enabled"],"sources":["../../src/hooks/useEIP1559Enabled.ts"],"sourcesContent":["import { eip1559EnabledAtom } from \"@/components/widget/TradeParameters/state/eip1559ParamAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useChainId } from \"wagmi\";\nimport { gasPricesConfig } from \"./gas/config\";\n\nexport function useEIP1559Enabled() {\n const chainId = useChainId();\n const eip1559EnabledInSettings = useAtomValue(eip1559EnabledAtom);\n const eip1559EnabledOnApi = gasPricesConfig[chainId].eip1559;\n return {\n enabled: eip1559EnabledInSettings && eip1559EnabledOnApi,\n eip1559EnabledInSettings,\n eip1559EnabledOnApi,\n };\n}\n"],"mappings":";;;;;;AAKA,SAAOI,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAgBL,GAAY,EAC5BM,IAAiCP,EAAaD,EAAmB,EACjES,IAA4BN,EAAgBI,GAAQG,SAEzCC,IAAAH,KAAAC,GAA+CG;
|
|
1
|
+
{"version":3,"file":"useEIP1559Enabled.js","names":["eip1559EnabledAtom","useAtomValue","useChainId","gasPricesConfig","useEIP1559Enabled","$","_c","chainId","eip1559EnabledInSettings","eip1559EnabledOnApi","eip1559","t0","t1","enabled"],"sources":["../../src/hooks/useEIP1559Enabled.ts"],"sourcesContent":["import { eip1559EnabledAtom } from \"@/components/widget/TradeParameters/state/eip1559ParamAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useChainId } from \"wagmi\";\nimport { gasPricesConfig } from \"./gas/config\";\n\nexport function useEIP1559Enabled() {\n const chainId = useChainId();\n const eip1559EnabledInSettings = useAtomValue(eip1559EnabledAtom);\n const eip1559EnabledOnApi = gasPricesConfig[chainId].eip1559;\n return {\n enabled: eip1559EnabledInSettings && eip1559EnabledOnApi,\n eip1559EnabledInSettings,\n eip1559EnabledOnApi,\n };\n}\n"],"mappings":";;;;;;AAKA,SAAOI,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAgBL,GAAY,EAC5BM,IAAiCP,EAAaD,EAAmB,EACjES,IAA4BN,EAAgBI,GAAQG,SAEzCC,IAAAH,KAAAC,GAA+CG;CAGzD,OAHyDP,EAAA,OAAAG,KAAAH,EAAA,OAAAI,KAAAJ,EAAA,OAAAM,KADnDC,IAAA;EAAAC,SACIF;EAA+CH;EAAAC;EAGzD,EAAAJ,EAAA,KAAAG,GAAAH,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAJMO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGlobalDeltaEnabled.js","names":["swapModeAtom","deltaParamAtom","deltaEnabledOnAPI","useWidgetConfig","useAtomValue","useChainId","useGlobalDeltaEnabled","$","_c","chainId","widgetConfig","deltaParam","swapMode","enabledInConfig","enableDelta","enabledInSettings","enabledOnCurrentChain","enabledGlobally","t0","t1","isDeltaMode"],"sources":["../../src/hooks/useGlobalDeltaEnabled.ts"],"sourcesContent":["import { swapModeAtom } from \"@/components/widget/SwapModeSwitcher/state/swapModeAtom\";\nimport { deltaParamAtom } from \"@/components/widget/TradeParameters/state/deltaParamAtom\";\nimport { deltaEnabledOnAPI } from \"@/lib/constants/delta\";\nimport { useWidgetConfig } from \"@/core/state/configAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useChainId } from \"wagmi\";\n\nexport const useGlobalDeltaEnabled = () => {\n const chainId = useChainId();\n const widgetConfig = useWidgetConfig();\n const deltaParam = useAtomValue(deltaParamAtom);\n const swapMode = useAtomValue(swapModeAtom);\n\n const enabledInConfig = widgetConfig.enableDelta;\n const enabledInSettings = deltaParam;\n const enabledOnCurrentChain = deltaEnabledOnAPI[chainId];\n const enabledGlobally =\n enabledInConfig && enabledInSettings && enabledOnCurrentChain;\n\n return {\n enabledGlobally,\n enabledInConfig,\n enabledInSettings,\n enabledOnCurrentChain,\n isDeltaMode: swapMode === \"delta\",\n };\n};\n"],"mappings":";;;;;;;;AAOA,IAAaM,UAAwB;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACnCC,IAAgBJ,GAAY,EAC5BK,IAAqBP,GAAiB,EACtCQ,IAAmBP,EAAaH,EAAe,EAC/CW,IAAiBR,EAAaJ,EAAa,EAE3Ca,IAAwBH,EAAYI,aACpCC,IAA0BJ,GAC1BK,IAA8Bd,EAAkBO,IAChDQ,IACEJ,KAAAE,KAAAC,GAOaE,IAAAN,MAAa,SAAOO;
|
|
1
|
+
{"version":3,"file":"useGlobalDeltaEnabled.js","names":["swapModeAtom","deltaParamAtom","deltaEnabledOnAPI","useWidgetConfig","useAtomValue","useChainId","useGlobalDeltaEnabled","$","_c","chainId","widgetConfig","deltaParam","swapMode","enabledInConfig","enableDelta","enabledInSettings","enabledOnCurrentChain","enabledGlobally","t0","t1","isDeltaMode"],"sources":["../../src/hooks/useGlobalDeltaEnabled.ts"],"sourcesContent":["import { swapModeAtom } from \"@/components/widget/SwapModeSwitcher/state/swapModeAtom\";\nimport { deltaParamAtom } from \"@/components/widget/TradeParameters/state/deltaParamAtom\";\nimport { deltaEnabledOnAPI } from \"@/lib/constants/delta\";\nimport { useWidgetConfig } from \"@/core/state/configAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useChainId } from \"wagmi\";\n\nexport const useGlobalDeltaEnabled = () => {\n const chainId = useChainId();\n const widgetConfig = useWidgetConfig();\n const deltaParam = useAtomValue(deltaParamAtom);\n const swapMode = useAtomValue(swapModeAtom);\n\n const enabledInConfig = widgetConfig.enableDelta;\n const enabledInSettings = deltaParam;\n const enabledOnCurrentChain = deltaEnabledOnAPI[chainId];\n const enabledGlobally =\n enabledInConfig && enabledInSettings && enabledOnCurrentChain;\n\n return {\n enabledGlobally,\n enabledInConfig,\n enabledInSettings,\n enabledOnCurrentChain,\n isDeltaMode: swapMode === \"delta\",\n };\n};\n"],"mappings":";;;;;;;;AAOA,IAAaM,UAAwB;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACnCC,IAAgBJ,GAAY,EAC5BK,IAAqBP,GAAiB,EACtCQ,IAAmBP,EAAaH,EAAe,EAC/CW,IAAiBR,EAAaJ,EAAa,EAE3Ca,IAAwBH,EAAYI,aACpCC,IAA0BJ,GAC1BK,IAA8Bd,EAAkBO,IAChDQ,IACEJ,KAAAE,KAAAC,GAOaE,IAAAN,MAAa,SAAOO;CAClC,OADkCZ,EAAA,OAAAU,KAAAV,EAAA,OAAAM,KAAAN,EAAA,OAAAQ,KAAAR,EAAA,OAAAS,KAAAT,EAAA,OAAAW,KAL5BC,IAAA;EAAAF;EAAAJ;EAAAE;EAAAC;EAAAI,aAKQF;EACd,EAAAX,EAAA,KAAAU,GAAAV,EAAA,KAAAM,GAAAN,EAAA,KAAAQ,GAAAR,EAAA,KAAAS,GAAAT,EAAA,KAAAW,GAAAX,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IANMY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsCrosschainPossible.js","names":["BridgeInfoMode","useIsTokenSupportedInDeltaQuery","useGetBridgeInfo","useIsCrosschainPossible","t0","$","_c","fromChainId","toChainId","tokenAddress","mode","t1","data","bridgeInfo","isLoading","isBridgeInfoLoading","tokenAddresses","undefined","hasTokens","length","t2","token","chainId","tokenSupported","isTokenSupportedLoading","isCrosschainPossible","t3"],"sources":["../../src/hooks/useIsCrosschainPossible.ts"],"sourcesContent":["import type { BridgeInfoMode } from \"./swap/prices/delta/queries/bridgeInfo/types\";\nimport { useIsTokenSupportedInDeltaQuery } from \"./swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport { useGetBridgeInfo } from \"./useBridgeInfo\";\n\nexport function useIsCrosschainPossible({\n fromChainId,\n toChainId,\n tokenAddress,\n mode,\n}: {\n fromChainId: number;\n toChainId?: number;\n tokenAddress?: string;\n mode: BridgeInfoMode;\n}): {\n hasTokens: boolean;\n isLoading: boolean;\n tokenSupported?: boolean;\n tokenAddresses?: string[];\n isCrosschainPossible: boolean;\n} {\n const { data: bridgeInfo, isLoading: isBridgeInfoLoading } = useGetBridgeInfo(\n { mode }\n );\n\n const tokenAddresses = toChainId\n ? bridgeInfo?.[fromChainId]?.[toChainId]\n : undefined;\n const hasTokens = tokenAddresses !== undefined && tokenAddresses.length > 0;\n\n const { data: tokenSupported, isLoading: isTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenAddress,\n chainId: fromChainId,\n });\n\n const isLoading = isBridgeInfoLoading || isTokenSupportedLoading;\n\n const isCrosschainPossible = hasTokens && !!tokenSupported;\n\n return {\n hasTokens,\n tokenSupported,\n isLoading,\n tokenAddresses,\n isCrosschainPossible,\n };\n}\n"],"mappings":";;;;AAIA,SAAOG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAiC,EAAAC,gBAAAC,cAAAC,iBAAAC,YAAAN,GAUvCO;
|
|
1
|
+
{"version":3,"file":"useIsCrosschainPossible.js","names":["BridgeInfoMode","useIsTokenSupportedInDeltaQuery","useGetBridgeInfo","useIsCrosschainPossible","t0","$","_c","fromChainId","toChainId","tokenAddress","mode","t1","data","bridgeInfo","isLoading","isBridgeInfoLoading","tokenAddresses","undefined","hasTokens","length","t2","token","chainId","tokenSupported","isTokenSupportedLoading","isCrosschainPossible","t3"],"sources":["../../src/hooks/useIsCrosschainPossible.ts"],"sourcesContent":["import type { BridgeInfoMode } from \"./swap/prices/delta/queries/bridgeInfo/types\";\nimport { useIsTokenSupportedInDeltaQuery } from \"./swap/prices/delta/queries/useIsTokenSupportedInDelta\";\nimport { useGetBridgeInfo } from \"./useBridgeInfo\";\n\nexport function useIsCrosschainPossible({\n fromChainId,\n toChainId,\n tokenAddress,\n mode,\n}: {\n fromChainId: number;\n toChainId?: number;\n tokenAddress?: string;\n mode: BridgeInfoMode;\n}): {\n hasTokens: boolean;\n isLoading: boolean;\n tokenSupported?: boolean;\n tokenAddresses?: string[];\n isCrosschainPossible: boolean;\n} {\n const { data: bridgeInfo, isLoading: isBridgeInfoLoading } = useGetBridgeInfo(\n { mode }\n );\n\n const tokenAddresses = toChainId\n ? bridgeInfo?.[fromChainId]?.[toChainId]\n : undefined;\n const hasTokens = tokenAddresses !== undefined && tokenAddresses.length > 0;\n\n const { data: tokenSupported, isLoading: isTokenSupportedLoading } =\n useIsTokenSupportedInDeltaQuery({\n token: tokenAddress,\n chainId: fromChainId,\n });\n\n const isLoading = isBridgeInfoLoading || isTokenSupportedLoading;\n\n const isCrosschainPossible = hasTokens && !!tokenSupported;\n\n return {\n hasTokens,\n tokenSupported,\n isLoading,\n tokenAddresses,\n isCrosschainPossible,\n };\n}\n"],"mappings":";;;;AAIA,SAAOG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAiC,EAAAC,gBAAAC,cAAAC,iBAAAC,YAAAN,GAUvCO;CAAA,AAAAN,EAAA,OAAAK,IAQWC,IAAAN,EAAA,MAARM,IAAA,EAAAD,SAAQ,EAAAL,EAAA,KAAAK,GAAAL,EAAA,KAAAM;CADV,IAAA,EAAAC,MAAAC,GAAAC,WAAAC,MAA6Db,EAC3DS,EACD,EAEDK,IAAuBR,IACnBK,IAAaN,KAAeC,KADTS,KAAAA,GAGvBC,IAAkBF,MAAmBC,KAAAA,KAAaD,EAAcG,SAAU,GAAEC;CAAA,AAAAf,EAAA,OAAAE,KAAAF,EAAA,OAAAI,KAG1CW,IAAA;EAAAC,OACvBZ;EAAYa,SACVf;EACV,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAI,GAAAJ,EAAA,KAAAe,KAAAA,IAAAf,EAAA;CAJH,IAAA,EAAAO,MAAAW,GAAAT,WAAAU,MACEvB,EAAgCmB,EAG9B,EAEJN,IAAkBC,KAAAS,GAElBC,IAA6BP,KAAA,CAAc,CAACK,GAAeG;CAQ1D,OAR0DrB,EAAA,OAAAa,KAAAb,EAAA,OAAAoB,KAAApB,EAAA,OAAAS,KAAAT,EAAA,OAAAW,KAAAX,EAAA,OAAAkB,KAEpDG,IAAA;EAAAR;EAAAK;EAAAT;EAAAE;EAAAS;EAMN,EAAApB,EAAA,KAAAa,GAAAb,EAAA,KAAAoB,GAAApB,EAAA,KAAAS,GAAAT,EAAA,KAAAW,GAAAX,EAAA,KAAAkB,GAAAlB,EAAA,MAAAqB,KAAAA,IAAArB,EAAA,KANMqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMinViemClient.js","names":["useCallback","useMemo","useQueryClient","useAccount","useChainId","useConfig","useConnectorClient","readContract","signTypedData","writeContract","Address","SupportedChainId","MinViemClient","getConnectorClientQueryOptions","GetConnectorClientReturnType","wagmiConfig","UseMinViemClientInput","chainId","account","UseMinViemClientResult","minClient","isLoading","error","Error","isError","ConnectorClient","useMinViemClient","options","$","_c","data","connectorClient","t0","bb0","undefined","t1","constructMinViemClient","params","useCacheMinViemClient","address","EnsureMinViemClientOptions","connector","ReturnType","UseEnsureConnectorClientResult","ensureViemClient","Promise","useEnsureConnectorClient","queryClient","config","queryOptions","ensureQueryData"],"sources":["../../src/hooks/useMinViemClient.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useAccount, useChainId, useConfig, useConnectorClient } from \"wagmi\";\nimport { readContract, signTypedData, writeContract } from \"viem/actions\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { MinViemClient } from \"@velora-dex/sdk\";\nimport { getConnectorClientQueryOptions } from \"wagmi/query\";\nimport type { GetConnectorClientReturnType } from \"@wagmi/core\";\nimport type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\n\ntype UseMinViemClientInput = {\n chainId?: SupportedChainId;\n account?: Address;\n};\n\ntype UseMinViemClientResult = {\n minClient?: MinViemClient;\n isLoading: boolean;\n error: Error | null;\n isError: boolean;\n};\n\ntype ConnectorClient = GetConnectorClientReturnType<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport function useMinViemClient(\n options?: UseMinViemClientInput\n): UseMinViemClientResult {\n const {\n data: connectorClient,\n isLoading,\n error,\n isError,\n } = useConnectorClient(options);\n\n const minClient = useMemo<MinViemClient | undefined>(() => {\n if (!connectorClient) return;\n\n // walletClient(useWalletClient) has writeContract and signTypedData,\n // publicClient(usePublicClient) has readContract\n // sdk requires all of them,\n // easier to compose connectorClient + viem actions (readContract, writeContract)\n return constructMinViemClient(connectorClient);\n }, [connectorClient]);\n\n return {\n minClient,\n isLoading,\n error,\n isError,\n };\n}\n\nfunction constructMinViemClient(\n connectorClient: ConnectorClient\n): MinViemClient {\n return {\n readContract: (params) => readContract(connectorClient, params),\n writeContract: (params) => writeContract(connectorClient, params),\n signTypedData: (params) => signTypedData(connectorClient, params),\n };\n}\n\n/**\n * Keep one subscriber to useConnectorClient query at all times\n * to avoid async client creation on useMinViemClient mount\n * and first useConnectorClient().data being undefined for a short time,\n * which breaks Fill OTC flow which starts from Activities screen\n */\nexport function useCacheMinViemClient() {\n const { address: account } = useAccount();\n const chainId = useChainId();\n useConnectorClient({\n chainId,\n account,\n });\n}\n\ntype EnsureMinViemClientOptions = {\n chainId?: SupportedChainId;\n connector?: ReturnType<typeof useAccount>[\"connector\"];\n};\n\ntype UseEnsureConnectorClientResult = {\n ensureViemClient: (options: UseMinViemClientInput) => Promise<MinViemClient>;\n};\n\n/**\n * Returns a function that loads the connector client on demand via\n * queryClient.ensureQueryData and getConnectorClientQueryOptions.\n * Uses current account's chainId and connector when options are omitted.\n */\nexport function useEnsureConnectorClient(): UseEnsureConnectorClientResult {\n const queryClient = useQueryClient();\n const config = useConfig();\n\n const ensureViemClient = useCallback(\n async (options: EnsureMinViemClientOptions): Promise<MinViemClient> => {\n const queryOptions = getConnectorClientQueryOptions(config, options);\n\n const connectorClient = await queryClient.ensureQueryData(queryOptions);\n\n return constructMinViemClient(connectorClient);\n },\n [queryClient, config]\n );\n\n return { ensureViemClient };\n}\n"],"mappings":";;;;;;;AA4BA,SAAO0B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGL,EAAAC,MAAAC,GAAAV,cAAAC,UAAAE,eAKIlB,EAAmBqB,EAAQ,EAACK;
|
|
1
|
+
{"version":3,"file":"useMinViemClient.js","names":["useCallback","useMemo","useQueryClient","useAccount","useChainId","useConfig","useConnectorClient","readContract","signTypedData","writeContract","Address","SupportedChainId","MinViemClient","getConnectorClientQueryOptions","GetConnectorClientReturnType","wagmiConfig","UseMinViemClientInput","chainId","account","UseMinViemClientResult","minClient","isLoading","error","Error","isError","ConnectorClient","useMinViemClient","options","$","_c","data","connectorClient","t0","bb0","undefined","t1","constructMinViemClient","params","useCacheMinViemClient","address","EnsureMinViemClientOptions","connector","ReturnType","UseEnsureConnectorClientResult","ensureViemClient","Promise","useEnsureConnectorClient","queryClient","config","queryOptions","ensureQueryData"],"sources":["../../src/hooks/useMinViemClient.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useAccount, useChainId, useConfig, useConnectorClient } from \"wagmi\";\nimport { readContract, signTypedData, writeContract } from \"viem/actions\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { MinViemClient } from \"@velora-dex/sdk\";\nimport { getConnectorClientQueryOptions } from \"wagmi/query\";\nimport type { GetConnectorClientReturnType } from \"@wagmi/core\";\nimport type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\n\ntype UseMinViemClientInput = {\n chainId?: SupportedChainId;\n account?: Address;\n};\n\ntype UseMinViemClientResult = {\n minClient?: MinViemClient;\n isLoading: boolean;\n error: Error | null;\n isError: boolean;\n};\n\ntype ConnectorClient = GetConnectorClientReturnType<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport function useMinViemClient(\n options?: UseMinViemClientInput\n): UseMinViemClientResult {\n const {\n data: connectorClient,\n isLoading,\n error,\n isError,\n } = useConnectorClient(options);\n\n const minClient = useMemo<MinViemClient | undefined>(() => {\n if (!connectorClient) return;\n\n // walletClient(useWalletClient) has writeContract and signTypedData,\n // publicClient(usePublicClient) has readContract\n // sdk requires all of them,\n // easier to compose connectorClient + viem actions (readContract, writeContract)\n return constructMinViemClient(connectorClient);\n }, [connectorClient]);\n\n return {\n minClient,\n isLoading,\n error,\n isError,\n };\n}\n\nfunction constructMinViemClient(\n connectorClient: ConnectorClient\n): MinViemClient {\n return {\n readContract: (params) => readContract(connectorClient, params),\n writeContract: (params) => writeContract(connectorClient, params),\n signTypedData: (params) => signTypedData(connectorClient, params),\n };\n}\n\n/**\n * Keep one subscriber to useConnectorClient query at all times\n * to avoid async client creation on useMinViemClient mount\n * and first useConnectorClient().data being undefined for a short time,\n * which breaks Fill OTC flow which starts from Activities screen\n */\nexport function useCacheMinViemClient() {\n const { address: account } = useAccount();\n const chainId = useChainId();\n useConnectorClient({\n chainId,\n account,\n });\n}\n\ntype EnsureMinViemClientOptions = {\n chainId?: SupportedChainId;\n connector?: ReturnType<typeof useAccount>[\"connector\"];\n};\n\ntype UseEnsureConnectorClientResult = {\n ensureViemClient: (options: UseMinViemClientInput) => Promise<MinViemClient>;\n};\n\n/**\n * Returns a function that loads the connector client on demand via\n * queryClient.ensureQueryData and getConnectorClientQueryOptions.\n * Uses current account's chainId and connector when options are omitted.\n */\nexport function useEnsureConnectorClient(): UseEnsureConnectorClientResult {\n const queryClient = useQueryClient();\n const config = useConfig();\n\n const ensureViemClient = useCallback(\n async (options: EnsureMinViemClientOptions): Promise<MinViemClient> => {\n const queryOptions = getConnectorClientQueryOptions(config, options);\n\n const connectorClient = await queryClient.ensureQueryData(queryOptions);\n\n return constructMinViemClient(connectorClient);\n },\n [queryClient, config]\n );\n\n return { ensureViemClient };\n}\n"],"mappings":";;;;;;;AA4BA,SAAO0B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGL,EAAAC,MAAAC,GAAAV,cAAAC,UAAAE,eAKIlB,EAAmBqB,EAAQ,EAACK;CAAAC,KAAA;EAG9B,IAAI,CAACF,GAAe;GAAEC,IAAAE,KAAAA;GAAA,MAAAD;;EAAO,IAAAE;EAM7BH,AAN6BJ,EAAA,OAAAG,IAMiBI,IAAAP,EAAA,MAAvCO,IAAAC,EAAuBL,EAAgB,EAAAH,EAAA,KAAAG,GAAAH,EAAA,KAAAO,IAA9CH,IAAOG;;CAPT,IAAAf,IAAkBY,GAQIG;CAOrB,OAPqBP,EAAA,OAAAN,KAAAM,EAAA,OAAAJ,KAAAI,EAAA,OAAAP,KAAAO,EAAA,OAAAR,KAEfe,IAAA;EAAAf;EAAAC;EAAAC;EAAAE;EAKN,EAAAI,EAAA,KAAAN,GAAAM,EAAA,KAAAJ,GAAAI,EAAA,KAAAP,GAAAO,EAAA,KAAAR,GAAAQ,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IALMO;;AAQT,SAASC,EACPL,GACe;CACf,OAAO;EACLxB,eAAe8B,MAAW9B,EAAawB,GAAiBM,EAAO;EAC/D5B,gBAAgB4B,MAAW5B,EAAcsB,GAAiBM,EAAO;EACjE7B,gBAAgB6B,MAAW7B,EAAcuB,GAAiBM,EAAM;EACjE;;AASH,SAAOC,IAAA;CAAA,IAAAV,IAAAC,EAAA,EAAA,EACL,EAAAU,SAAArB,MAA6Bf,GAAY,EACzCc,IAAgBb,GAAY,EAAC4B;CAC7B1B,AAD6BsB,EAAA,OAAAV,KAAAU,EAAA,OAAAX,KACVe,IAAA;EAAAf;EAAAC;EAGlB,EAAAU,EAAA,KAAAV,GAAAU,EAAA,KAAAX,GAAAW,EAAA,KAAAI,KAAAA,IAAAJ,EAAA,IAHDtB,EAAmB0B,EAGjB;;AAiBJ,SAAOc,IAAA;CAAA,IAAAlB,IAAAC,EAAA,EAAA,EACLkB,IAAoB7C,GAAgB,EACpC8C,IAAe3C,GAAW,EAAC2B;CAAA,AAAAJ,EAAA,OAAAoB,KAAApB,EAAA,OAAAmB,KAGzBf,IAAA,OAAAL,MAAA;EACE,IAAAsB,IAAqBpC,EAA+BmC,GAAQrB,EAAQ;EAEI,OAEjES,EAAuBL,MAFAgB,EAAWG,gBAAiBD,EAAa,CAEzB;IAC/CrB,EAAA,KAAAoB,GAAApB,EAAA,KAAAmB,GAAAnB,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAPH,IAAAgB,IAAyBZ,GASvBG;CAEyB,OAFzBP,EAAA,OAAAgB,IAEyBT,IAAAP,EAAA,MAApBO,IAAA,EAAAS,qBAAoB,EAAAhB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAO,IAApBA"}
|