@velora-dex/widget 0.0.23 → 0.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index.js +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/badge.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/dialog.js.map +1 -1
- package/dist/components/ui/drawer.d.ts +2 -2
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/drawer.js +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.d.ts.map +1 -1
- package/dist/components/ui/sonner.js +1 -2
- 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/ConnectWallets/WalletConnectButtons.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/WalletConnectButtons.js +23 -14
- package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +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.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/connectRunner.js +0 -2
- 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/walletIcons.d.ts +30 -0
- package/dist/components/web3/ConnectWallets/walletIcons.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js +84 -2
- package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +69 -65
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js +49 -55
- package/dist/components/widget/AppHeader/AppHeader.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/Dialog/ConnectWalletDialog/ConnectWalletDialog.js.map +1 -1
- package/dist/components/widget/Dialog/DialogRoot.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +2 -2
- 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.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +125 -78
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +5 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js +10 -8
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts +5 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js +10 -8
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.d.ts +11 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.d.ts.map +1 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js +101 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.d.ts +5 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.d.ts.map +1 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js +186 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map +1 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts +6 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js +33 -20
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
- package/dist/components/widget/Dialog/state/dialogAtom.js.map +1 -1
- package/dist/components/widget/Drawer/index.d.ts +3 -1
- package/dist/components/widget/Drawer/index.d.ts.map +1 -1
- package/dist/components/widget/Drawer/index.js +64 -37
- package/dist/components/widget/Drawer/index.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +24 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js +91 -2
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/Dropdown/DropdownWithItems.d.ts.map +1 -1
- package/dist/components/widget/Dropdown/DropdownWithItems.js +5 -3
- package/dist/components/widget/Dropdown/DropdownWithItems.js.map +1 -1
- package/dist/components/widget/Dropdown/types.d.ts +2 -1
- package/dist/components/widget/Dropdown/types.d.ts.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/Line/Line.js.map +1 -1
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.d.ts.map +1 -1
- package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js +14 -10
- package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.d.ts.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js +10 -8
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/types.d.ts +2 -2
- package/dist/components/widget/NetworkSwitcher/types.d.ts.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/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/RowVirtualizer/RowVirtualizerFixed.d.ts +1 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.d.ts.map +1 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js +5 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
- package/dist/components/widget/RowVirtualizer/types.d.ts +1 -0
- package/dist/components/widget/RowVirtualizer/types.d.ts.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.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.d.ts.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.js +3 -0
- package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
- package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.d.ts.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
- package/dist/components/widget/TokenInput/EmptyInput.js.map +1 -1
- package/dist/components/widget/TokenInput/index.js +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/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.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.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js +39 -21
- 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.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +40 -72
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts +23 -3
- package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js +67 -19
- 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.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js +40 -56
- 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/VerticalDash.js.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.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/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 +2 -2
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js +42 -19
- 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 +3 -3
- 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/slippageParamActionsAtom.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.d.ts.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js +18 -24
- 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/configurator/Configurator.d.ts.map +1 -1
- package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
- package/dist/core/Toaster.js.map +1 -1
- package/dist/core/TradeFlowButton.js +154 -126
- package/dist/core/TradeFlowButton.js.map +1 -1
- package/dist/core/Updaters.d.ts.map +1 -1
- package/dist/core/Updaters.js +2 -0
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +55 -28
- package/dist/core/index.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.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +15 -15
- package/dist/core/inputs/hooks/useTokenToInputProps.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/subscriptions.js.map +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/state/chainToAtom.d.ts +2 -2
- package/dist/core/state/chainToAtom.js.map +1 -1
- package/dist/core/state/configActionsAtom.d.ts +1 -1
- package/dist/core/state/configActionsAtom.js.map +1 -1
- package/dist/core/state/configAtom.js.map +1 -1
- package/dist/core/state/externalProviderAtom.js.map +1 -1
- package/dist/core/swapDetails/fees.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/external/.pnpm/{react-compiler-runtime@19.1.0-rc.2_react@19.1.0 → react-compiler-runtime@19.1.0-rc.2_react@19.1.1}/external/react-compiler-runtime/dist/index.js.map +1 -1
- package/dist/external/.pnpm/{vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33 → vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__7f2d7d5ed11750fbec42b3f5689c802d}/external/vaul/dist/index.js.map +1 -1
- package/dist/hooks/gas/useGasPrices.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/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/useTokenFromPermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/utils/construct.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 +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/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +2 -0
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +4 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +14 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +60 -2
- 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.d.ts +8 -0
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +12 -3
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.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/useMarketPriceQuery.d.ts +14 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +60 -2
- 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/tradeFlow/common/errors.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +1 -0
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +207 -458
- 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/useMarketFlow.d.ts +1 -0
- package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js +210 -411
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.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/balances/queries.js.map +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.d.ts.map +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js +18 -7
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts +3 -2
- package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.js +60 -77
- 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/useMultichainTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useSelectedTokenBalances.d.ts +5 -0
- package/dist/hooks/tokens/balances/useSelectedTokenBalances.d.ts.map +1 -0
- package/dist/hooks/tokens/balances/useSelectedTokenBalances.js +38 -0
- package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -0
- package/dist/hooks/tokens/balances/useTokenBalance.d.ts +15 -0
- package/dist/hooks/tokens/balances/useTokenBalance.d.ts.map +1 -1
- package/dist/hooks/tokens/balances/useTokenBalance.js +2 -0
- package/dist/hooks/tokens/balances/useTokenBalance.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/useNativeToken.js.map +1 -1
- package/dist/hooks/tokens/useTokenLists.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/useSendTx.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/txs/queries/utils.d.ts +3 -0
- package/dist/hooks/txs/queries/utils.d.ts.map +1 -0
- package/dist/hooks/txs/queries/utils.js +6 -0
- package/dist/hooks/txs/queries/utils.js.map +1 -0
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBridgeInfo.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 +1 -1
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSlippage.js.map +1 -1
- package/dist/lib/ipfs.js.map +1 -1
- package/dist/lib/queryClient.d.ts.map +1 -1
- package/dist/lib/queryClient.js +32 -2
- package/dist/lib/queryClient.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/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/price.js.map +1 -1
- package/dist/lib/utils/priceImpact.d.ts.map +1 -1
- package/dist/lib/utils/priceImpact.js +1 -1
- package/dist/lib/utils/priceImpact.js.map +1 -1
- package/dist/lib/utils/providerErrors.js.map +1 -1
- package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
- package/dist/lib/utils/toasts.js +0 -24
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/web3/privy/config.js +1 -1
- package/dist/lib/web3/wagmi/config.d.ts +12 -2
- package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/config.js +6 -3
- package/dist/lib/web3/wagmi/config.js.map +1 -1
- package/dist/lib/web3/wagmi/constants.d.ts +12 -2
- package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts +25 -0
- package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts.map +1 -0
- package/dist/lib/web3/wagmi/isInsideSafeIframe.js +113 -0
- package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -0
- package/dist/styles.css +81 -9
- package/dist/tokens/lists/constants.js.map +1 -1
- package/dist/tokens/lists/download.js.map +1 -1
- package/dist/tokens/lists/hooks.js.map +1 -1
- package/dist/tokens/lists/state/observer.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsStateAtom.d.ts +2 -2
- 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/state/constructTokens.js.map +1 -1
- package/dist/tokens/state/tokensAtom.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.d.ts +51 -0
- package/dist/tokens/utils/transferAmountsFromReceipt.d.ts.map +1 -0
- package/dist/tokens/utils/transferAmountsFromReceipt.js +281 -0
- package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -0
- package/package.json +32 -31
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts +0 -25
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts.map +0 -1
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js +0 -103
- package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js.map +0 -1
- /package/dist/external/.pnpm/{react-compiler-runtime@19.1.0-rc.2_react@19.1.0 → react-compiler-runtime@19.1.0-rc.2_react@19.1.1}/external/react-compiler-runtime/dist/index.js +0 -0
- /package/dist/external/.pnpm/{vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33 → vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__7f2d7d5ed11750fbec42b3f5689c802d}/external/vaul/dist/index.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport { useBuildTx } from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useInvalidateTokenDataQuery } from \"@/hooks/tokens/balances/useInvalidateTokenData\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type { TxSentObject } from \"@/lib/utils/toasts\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useWidgetConfig } from \"@/core/state/configAtom\";\nimport { useLogger } from \"@/core/logger\";\nimport { useTrackedPrice } from \"./common/useTrackedPrice\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: \"marketSwap\";\n approve: SubmitTxResult;\n swap: SubmitTxResult;\n marketPrice: OptimalRate;\n account: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage();\n const swapSide = useSwapSide();\n\n const trackedPrice = useTrackedPrice({\n price: marketPrice,\n slippage: resolvedSlippage,\n side: swapSide,\n });\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const usingPrice = trackedPrice.get.usingPrice();\n const { approval, signPermit, approveTxMut, signPermitMut } =\n useApproveOrPermit({\n srcToken: usingPrice?.srcToken ?? marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: trackedPrice.get.approvedAmount() ?? marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: usingPrice?.side ?? swapSide,\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const receiverAddress = useReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = useWidgetConfig().partner;\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n // we use this allowance as a max allowance we will accept new prices for\n\n if (approval.needsApproval) {\n // need allowance\n if (!signPermit.isPermitSupported || !signPermit.isPermitReadyToSign) {\n // freeze allowanceToSet\n trackedPrice.set.approvedAmount(allowanceToSet);\n\n // Token doesn't support Permit\n // make an Approval tx\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: approveTxHash,\n actionType: \"approve\",\n receiptPromise: approveTxReceiptPromise,\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } else {\n // freeze allowanceToSet\n trackedPrice.set.approvedAmount(allowanceToSet);\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n // as long as we had set approvedAmountRef, we will only get new prices that satisfy the allowance\n let marketPriceToUse = trackedPrice.get.usingPrice();\n // usingPriceRef.current can be null depending on reset() timing (e.g. inside retry)\n if (!marketPriceToUse) {\n marketPriceToUse = marketPrice || null;\n trackedPrice.set.usingPrice(marketPriceToUse);\n }\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side\n );\n\n // freeze final price to avoid any changes to displayed and result amounts\n trackedPrice.set.finalPrice(marketPriceToUse);\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const txParams = await buildTxMut.mutateAsync({\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions:\n // ignoreChecks: true,\n // ignoreGasEstimate: true,\n // ignoreAllowance: true,\n // onlyParams: true,\n // @TODO turn on ignore options when necessary (for Safe),\n gasParams,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n try {\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: swapTxHash,\n actionType: \"swap\",\n receiptPromise: swapTxReceiptPromise,\n });\n }\n\n const swapTxReceipt = await swapTxReceiptPromise;\n logger.log(\"~ swapTx ~ receipt:\", swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: \"marketSwap\",\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n throw error;\n }\n };\n\n const invalidateTokenData = useInvalidateTokenDataQuery();\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled, invalidating balances and allowances\");\n invalidateTokenData({ nonces: true });\n trackedPrice.resetTrackedPrice();\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n trackedPrice.resetTrackedPrice();\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice =\n trackedPrice.get.finalPrice() ||\n trackedPrice.get.usingPrice() ||\n marketPrice;\n\n /* 7. return result */\n return {\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n };\n}\n"],"names":["MARKET_SWAP_MUTATION_KEY","useMarketFlow","t0","$","_c","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSide","useSwapSide","t1","price","slippage","side","trackedPrice","useTrackedPrice","t2","get","usingPrice","t3","srcToken","t4","srcAmount","approvedAmount","t5","t6","spenderContractType","approval","signPermit","approveTxMut","signPermitMut","useApproveOrPermit","t7","onSuccess","log","onError","error","t8","mutationOptions","buildTxMut","useBuildTx","t9","isError","isPending","isSuccess","buildTxParams","t10","error_0","sendSwapTxMut","useSendMarketSwapTx","t11","txHash","hash","swapTxMined","useAwaitTx","t12","isLoading","t13","t14","t15","data","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isTxMined","isTxAwaitingError","swap","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","t16","Symbol","for","current","abort","UserCancelledError","cancelFlow","receiverAddress","useReceiverAddressValue","t17","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","useWidgetConfig","t18","set","t19","onTxSent","undefined","reset","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","needsApproval","isPermitSupported","isPermitReadyToSign","approveAsync","allowanceData","throwIfAborted","approveTxReceiptPromise","onReplaced","actionType","receiptPromise","signPermitAsync","value","assert","marketPriceToUse","amountsAfterSlippage","applySlippage","destAmount","finalPrice","gasParams","txParams","mutateAsync","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","permit","permitEncodedArgs","priceRoute","swapTxOptions","swapTxHash","sendTransactionAsync","signedPermitData","swapTxReceiptPromise","data_0","swapTxReceipt","tradeFlowType","approve","t20","submitSwapTx","invalidateTokenData","useInvalidateTokenDataQuery","t21","data_1","error_2","t22","nonces","resetTrackedPrice","t23","mutationFn","mutationKey","onSettled","marketSwapMut","useMutation","runMarketSwapFlow","t24","t25","options","retryFlow","t26","usedPrice","t27","result"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport { useBuildTx } from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type { TxSentObject } from \"@/lib/utils/toasts\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useWidgetConfig } from \"@/core/state/configAtom\";\nimport { useLogger } from \"@/core/logger\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\nimport {\n useMarketPriceQueryForPrice,\n useSubscribeToMarketPrice,\n} from \"../prices/market/queries/useMarketPriceQuery\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: \"marketSwap\";\n approve: SubmitTxResult;\n swap: SubmitTxResult;\n marketPrice: OptimalRate;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage();\n const swapSide = useSwapSide();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const { approval, signPermit, approveTxMut, signPermitMut } =\n useApproveOrPermit({\n srcToken: marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: marketPrice?.side ?? swapSide,\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<OptimalRate | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = useWidgetConfig().partner;\n\n const getQueryForPrice = useMarketPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToMarketPrice();\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(marketPrice, \"Market price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n // we use this allowance as a max allowance we will accept new prices for\n\n // marketPrice here is the starting price, available before async code and waiting\n let freshPrice = marketPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n try {\n // need allowance\n if (approval.needsApproval && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = getQueryForPrice({\n chainId,\n price: freshPrice,\n })?.queryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (newPrice) => {\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher amount if BUY with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n newPrice.side\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n if (!signPermit.isPermitSupported || !signPermit.isPermitReadyToSign) {\n // Token doesn't support Permit\n // make an Approval tx\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: approveTxHash,\n actionType: \"approve\",\n receiptPromise: approveTxReceiptPromise,\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } else {\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const marketPriceToUse = freshPrice;\n usingPriceRef.current = marketPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side\n );\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const txParams = await buildTxMut.mutateAsync({\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions:\n // ignoreChecks: true,\n // ignoreGasEstimate: true,\n // ignoreAllowance: true,\n // onlyParams: true,\n // @TODO turn on ignore options when necessary (for Safe),\n gasParams,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: swapTxHash,\n actionType: \"swap\",\n receiptPromise: swapTxReceiptPromise,\n });\n }\n\n const swapTxReceipt = await swapTxReceiptPromise;\n logger.log(\"~ swapTx ~ receipt:\", swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: \"marketSwap\",\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled\");\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice = usingPriceRef.current || marketPrice;\n\n /* 7. return result */\n return {\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n };\n}\n"],"names":["MARKET_SWAP_MUTATION_KEY","useMarketFlow","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSide","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","useApproveOrPermit","srcToken","srcAmount","spenderContractType","side","buildTxMut","useBuildTx","mutationOptions","onSuccess","log","onError","error","buildTxParams","isPending","isError","isSuccess","sendSwapTxMut","useSendMarketSwapTx","swapTxMined","useAwaitTx","hash","txHash","swap","receipt","data","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","useWidgetConfig","getQueryForPrice","useMarketPriceQueryForPrice","subscribeToPrice","useSubscribeToMarketPrice","submitSwapTx","onTxSent","reset","assert","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","needsApproval","queryKey","price","approvedAmount","onData","newPrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","isPermitSupported","isPermitReadyToSign","approveAsync","allowanceData","throwIfAborted","approveTxReceiptPromise","onReplaced","actionType","receiptPromise","signPermitAsync","value","marketPriceToUse","gasParams","txParams","mutateAsync","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","permit","permitEncodedArgs","priceRoute","swapTxOptions","swapTxHash","sendTransactionAsync","signedPermitData","swapTxReceiptPromise","swapTxReceipt","tradeFlowType","approve","marketSwapMut","useMutation","mutationFn","mutationKey","onSettled","runMarketSwapFlow","retryFlow","options","usedPrice","result"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (marketFlow.swap.isTxPending) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" && !marketFlow.swap.isTxSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n const txHash = marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError\n ) {\n erroredStep = \"signature\";\n } else if (marketFlow.swap.isTxAwaitingError) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","permitOrApprovalHappened","txHash","signature","isTxPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isTxAwaitingError","t1","result","usedPrice"],"mappings":";;;;;;AA6BO,SAAAA,kBAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAGL,EAAA,MAAAC,MAAAA,GAAeC,UAAU,gBAAgB,CAAA;AACzC,EAAA,MAAAC,UAAAA,GAAmBC,cAAcN,OAAO,CAAA;AAExC,EAAA,MAAAO,kBAAwBF,UAAAA,CAAUG,iBAAAA;AAClC,EAAA,MAAAC,QAAcJ,UAAAA,CAAUI,KAAAA;AACxB,EAAA,MAAAC,aAAmBL,UAAAA,CAAUK,UAAAA;AAC7B,EAAA,MAAAC,YAAkBN,UAAAA,CAAUM,SAAAA;AAAW,EAAA,IAAAC,YAAAA;AAAA,EAAA,IAAAC,aAAAA;AAAA,EAAA,IAAAC,IAAAA;AAAA,EAAA,IAAAb,CAAAA,QAAAE,MAAAA,CAAAY,QAAAd,CAAAA,QAAAI,UAAAA,EAAA;AAIvC,IAAA,MAAAW,wCAGEX,UAAAA,CAAUY,UAAAA,CAAAC,SAAAA,IAAA,CAA0Bb,WAAUY,UAAAA,CAAAE,cAAAA;AAEhD,IAAA,MAAAC,mCAGEf,UAAAA,CAAUgB,QAAAA,CAAAH,SAAAA,IAAA,CAAwBb,WAAUgB,QAAAA,CAAAC,SAAAA;AAE9C,IAAA,MAAAC,aAAAA,GACElB,WAAUgB,QAAAA,CAAAG,aAAAA,IACVnB,WAAUY,UAAAA,CAAAQ,iBAAAA,IACVpB,WAAUY,UAAAA,CAAAS,mBAAAA;AAEZ,IAAA,MAAAC,wCAAAA,GAAiDJ,gBAC7CP,qCAAAA,GACAI,gCAAAA;AAAiC,IAAA,IAGnCf,UAAAA,CAAUgB,QAAAA,CAAAG,aAAAA,IACVG,wCAAAA,EAAwC;AAExCb,MAAAA,IAAAA,GAAAA;AAAAA,QAAAA,GAAAA,EAAcA,WAAAA;AAAAA,QAAWA,OAAAA,EAAWA;AAAAA,OAAoBA;AAAAA,KAApD,MAAA;AAAA,MAAA,IAEJT,UAAAA,CAAUuB,aAAAA,CAAAV,SAAAA,IACVb,UAAAA,CAAUwB,KAAAC,cAAAA,EAAoB;AAE9B,QAAA,MAAAC,2BAAA,CAAA,EACE1B,WAAUgB,QAAAA,CAAAW,MAAAA,IAAoB3B,WAAUY,UAAAA,CAAAgB,SAAAA,CAAAA;AAG1CnB,QAAAA,IAAAA,GAAAA;AAAAA,UAAAA,GAAAA,EACOA,WAAAA;AAAAA,UAAWA,OAAAA,EACPiB,2BACL,iBAAA,GACA;AAAA,SAA4B;AAAA,OAJ9B,MAAA;AAAA,QAAA,IAMK1B,UAAAA,CAAUwB,KAAAK,WAAAA,EAAA;AACnBpB,UAAAA,IAAAA,GAAAA;AAAAA,YAAAA,GAAAA,EAAcA;AAAAA,WAAmBA;AAAAA,SAA7B,MAAA;AAAA,UAAA,IACKT,WAAUa,SAAAA,EAAA;AAGnBJ,YAAAA,IAAAA,GAAAA;AAAAA,cAAAA,GAAAA,EAAcA,WAAAA;AAAAA,cAAWA,OAAAA,EAAWA;AAAAA,aAA4BA;AAAAA;AAA5D;AAAA;AAAA;AAGN,IAAA,MAAAqB,iBAAAA,GACErB,MAAIsB,GAAAA,KAAU,WAAA,IACdtB,KAAIuB,OAAAA,KAAa,oBAAA,IACjBhC,WAAUgB,QAAAA,CAAAa,WAAAA;AAEZ,IAAA,MAAAI,oBAAAA,GACExB,MAAIsB,GAAAA,KAAU,WAAA,KACbtB,KAAIuB,OAAAA,KAAa,iBAAA,IAChBvB,KAAIuB,OAAAA,KAAa,4BAAA,CAAA;AAErB,IAAA,MAAAE,mBACEzB,IAAAA,EAAIsB,GAAAA,KAAU,mBAAA,IAAmB,CAAK/B,WAAUwB,IAAAA,CAAAW,QAAAA;AAIlD3B,IAAAA,aAAAA,GACEsB,qBAAqBG,oBAAAA,IAAwBC,gBAAAA;AAE/C,IAAA,MAAAP,MAAAA,GAAe3B,WAAUwB,IAAAA,CAAAG,MAAAA;AACzBpB,IAAAA,YAAAA,GAAqBoB,SACjBS,uBAAAA,CAAA;AAAA,MAAAC,SAAmCrC,UAAAA,CAAUqC,OAAAA;AAAAA,MAAAV;AAAAA,KAAkB,CAAA,GAACW,MAAAA;AAGpExC,IAAAA,MAAAA,CAAMY,IAAAA,CAAA6B,GAAAA,CAAU,MAAA,EAAQ9B,IAAAA,EAAMT,UAAAA,EAAU;AAAA,MAAAQ,aAAAA;AAAAA,MAAAD,YAAAA;AAAAA,MAAAoB;AAAAA,KAIvC,CAAA;AAAC/B,IAAAA,CAAAA,CAAA,CAAA,IAAAE,MAAAA,CAAAY,IAAAA;AAAAd,IAAAA,CAAAA,MAAAI,UAAAA;AAAAJ,IAAAA,CAAAA,MAAAW,YAAAA;AAAAX,IAAAA,CAAAA,MAAAY,aAAAA;AAAAZ,IAAAA,CAAAA,MAAAa,IAAAA;AAAAA,GAAA,MAAA;AAAAF,IAAAA,YAAAA,GAAAX,EAAA,CAAA,CAAA;AAAAY,IAAAA,aAAAA,GAAAZ,EAAA,CAAA,CAAA;AAAAa,IAAAA,IAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,IAAA4C,EAAAA;AAAA,EAAA,IAAA5C,CAAAA,CAAA,CAAA,CAAA,KAAAI,UAAAA,CAAAyC,KAAAA,EAAA;AAGYD,IAAAA,EAAAA,GAAAE,oBAAAA,CAAqB1C,UAAAA,CAAUyC,KAAM,CAAA,GAAC,OAEhDzC,UAAAA,CAAUyC,KAAAA;AAAM7C,IAAAA,CAAAA,CAAA,CAAA,IAAAI,UAAAA,CAAAyC,KAAAA;AAAA7C,IAAAA,CAAAA,MAAA4C,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA5C,EAAA,CAAA,CAAA;AAAA;AAFpB,EAAA,MAAA6C,KAAAA,GAAcD,EAAAA;AAIVG,EAAAA,IAAAA,WAAAA;AAA0C,EAAA,IAE1C3C,WAAU4C,OAAAA,EAAA;AAAA,IAAA,IAEV5C,UAAAA,CAAUgB,QAAAA,CAAA4B,OAAAA,IACV5C,UAAAA,CAAUY,UAAAA,CAAAgC,OAAAA,IACV5C,UAAAA,CAAUuB,aAAAA,CAAAqB,OAAAA,IACV5C,UAAAA,CAAUwB,IAAAA,CAAAqB,mBAAAA,EAAyB;AAEnCF,MAAAA,WAAAA,GAAcA,WAAAA;AAAAA,KAAH,MAAA;AAAA,MAAA,IACF3C,UAAAA,CAAUwB,KAAAsB,iBAAAA,EAAA;AACnBH,QAAAA,WAAAA,GAAcA,mBAAAA;AAAAA;AAAH;AAAA;AAAA,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAnD,CAAAA,QAAAS,UAAAA,IAAAT,EAAA,CAAA,CAAA,KAAA6C,SAAA7C,CAAAA,CAAA,CAAA,MAAA+C,WAAAA,IAAA/C,CAAAA,SAAAW,YAAAA,IAAAX,EAAA,EAAA,CAAA,KAAAY,iBAAAZ,CAAAA,CAAA,EAAA,MAAAI,UAAAA,CAAAgD,MAAAA,IAAApD,EAAA,EAAA,CAAA,KAAAI,WAAAiD,SAAAA,IAAArD,CAAAA,CAAA,EAAA,CAAA,KAAAQ,KAAAA,IAAAR,EAAA,EAAA,CAAA,KAAAU,aAAAV,CAAAA,SAAAM,eAAAA,IAAAN,CAAAA,CAAA,EAAA,CAAA,KAAAa,IAAAA,EAAA;AAIRsC,IAAAA,EAAAA,GAAA;AAAA,MAAA7C,eAAAA;AAAAA,MAAAE,KAAAA;AAAAA,MAAAC,UAAAA;AAAAA,MAAAC,SAAAA;AAAAA,MAAAE,aAAAA;AAAAA,MAAAC,IAAAA;AAAAA,MAAAF,YAAAA;AAAAA,MAAAkC,KAAAA;AAAAA,MAAAE,WAAAA;AAAAA,MAAAK,QAUGhD,UAAAA,CAAUgD,MAAAA;AAAAA,MAAAC,WACPjD,UAAAA,CAAUiD;AAAAA,KAAA;AACtBrD,IAAAA,CAAAA,MAAAS,UAAAA;AAAAT,IAAAA,CAAAA,MAAA6C,KAAAA;AAAA7C,IAAAA,CAAAA,MAAA+C,WAAAA;AAAA/C,IAAAA,CAAAA,OAAAW,YAAAA;AAAAX,IAAAA,CAAAA,OAAAY,aAAAA;AAAAZ,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAgD,MAAAA;AAAApD,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAiD,SAAAA;AAAArD,IAAAA,CAAAA,OAAAQ,KAAAA;AAAAR,IAAAA,CAAAA,OAAAU,SAAAA;AAAAV,IAAAA,CAAAA,OAAAM,eAAAA;AAAAN,IAAAA,CAAAA,OAAAa,IAAAA;AAAAb,IAAAA,CAAAA,OAAAmD,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAnD,EAAA,EAAA,CAAA;AAAA;AAAA,EAAA,OAZMmD,EAAAA;AAYN;;;;"}
|
|
1
|
+
{"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (marketFlow.swap.isTxPending) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" && !marketFlow.swap.isTxSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n const txHash = marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError\n ) {\n erroredStep = \"signature\";\n } else if (marketFlow.swap.isTxAwaitingError) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","permitOrApprovalHappened","txHash","signature","isTxPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isTxAwaitingError","t1","result","usedPrice"],"mappings":";;;;;;AA6BO,SAAAA,kBAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAGL,EAAA,MAAAC,MAAAA,GAAeC,UAAU,gBAAgB,CAAA;AACzC,EAAA,MAAAC,UAAAA,GAAmBC,cAAcN,OAAO,CAAA;AAExC,EAAA,MAAAO,kBAAwBF,UAAAA,CAAUG,iBAAAA;AAClC,EAAA,MAAAC,QAAcJ,UAAAA,CAAUI,KAAAA;AACxB,EAAA,MAAAC,aAAmBL,UAAAA,CAAUK,UAAAA;AAC7B,EAAA,MAAAC,YAAkBN,UAAAA,CAAUM,SAAAA;AAAW,EAAA,IAAAC,YAAAA;AAAA,EAAA,IAAAC,aAAAA;AAAA,EAAA,IAAAC,IAAAA;AAAA,EAAA,IAAAb,CAAAA,QAAAE,MAAAA,CAAAY,QAAAd,CAAAA,QAAAI,UAAAA,EAAA;AAIvC,IAAA,MAAAW,wCAGEX,UAAAA,CAAUY,UAAAA,CAAAC,SAAAA,IAAA,CAA0Bb,WAAUY,UAAAA,CAAAE,cAAAA;AAEhD,IAAA,MAAAC,mCAGEf,UAAAA,CAAUgB,QAAAA,CAAAH,SAAAA,IAAA,CAAwBb,WAAUgB,QAAAA,CAAAC,SAAAA;AAE9C,IAAA,MAAAC,aAAAA,GACElB,WAAUgB,QAAAA,CAAAG,aAAAA,IACVnB,WAAUY,UAAAA,CAAAQ,iBAAAA,IACVpB,WAAUY,UAAAA,CAAAS,mBAAAA;AAEZ,IAAA,MAAAC,wCAAAA,GAAiDJ,gBAC7CP,qCAAAA,GACAI,gCAAAA;AAAiC,IAAA,IAGnCf,UAAAA,CAAUgB,QAAAA,CAAAG,aAAAA,IACVG,wCAAAA,EAAwC;AAExCb,MAAAA,IAAAA,GAAAA;AAAAA,QAAAA,GAAAA,EAAcA,WAAAA;AAAAA,QAAWA,OAAAA,EAAWA;AAAAA,OAAoBA;AAAAA,IAApD,CAAA,MAAA;AAAA,MAAA,IAEJT,UAAAA,CAAUuB,aAAAA,CAAAV,SAAAA,IACVb,UAAAA,CAAUwB,KAAAC,cAAAA,EAAoB;AAE9B,QAAA,MAAAC,2BAAA,CAAA,EACE1B,WAAUgB,QAAAA,CAAAW,MAAAA,IAAoB3B,WAAUY,UAAAA,CAAAgB,SAAAA,CAAAA;AAG1CnB,QAAAA,IAAAA,GAAAA;AAAAA,UAAAA,GAAAA,EACOA,WAAAA;AAAAA,UAAWA,OAAAA,EACPiB,2BACL,iBAAA,GACA;AAAA,SAA4B;AAAA,MAJ9B,CAAA,MAAA;AAAA,QAAA,IAMK1B,UAAAA,CAAUwB,KAAAK,WAAAA,EAAA;AACnBpB,UAAAA,IAAAA,GAAAA;AAAAA,YAAAA,GAAAA,EAAcA;AAAAA,WAAmBA;AAAAA,QAA7B,CAAA,MAAA;AAAA,UAAA,IACKT,WAAUa,SAAAA,EAAA;AAGnBJ,YAAAA,IAAAA,GAAAA;AAAAA,cAAAA,GAAAA,EAAcA,WAAAA;AAAAA,cAAWA,OAAAA,EAAWA;AAAAA,aAA4BA;AAAAA,UAA5D;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAGN,IAAA,MAAAqB,iBAAAA,GACErB,MAAIsB,GAAAA,KAAU,WAAA,IACdtB,KAAIuB,OAAAA,KAAa,oBAAA,IACjBhC,WAAUgB,QAAAA,CAAAa,WAAAA;AAEZ,IAAA,MAAAI,oBAAAA,GACExB,MAAIsB,GAAAA,KAAU,WAAA,KACbtB,KAAIuB,OAAAA,KAAa,iBAAA,IAChBvB,KAAIuB,OAAAA,KAAa,4BAAA,CAAA;AAErB,IAAA,MAAAE,mBACEzB,IAAAA,EAAIsB,GAAAA,KAAU,mBAAA,IAAmB,CAAK/B,WAAUwB,IAAAA,CAAAW,QAAAA;AAIlD3B,IAAAA,aAAAA,GACEsB,qBAAqBG,oBAAAA,IAAwBC,gBAAAA;AAE/C,IAAA,MAAAP,MAAAA,GAAe3B,WAAUwB,IAAAA,CAAAG,MAAAA;AACzBpB,IAAAA,YAAAA,GAAqBoB,SACjBS,uBAAAA,CAAA;AAAA,MAAAC,SAAmCrC,UAAAA,CAAUqC,OAAAA;AAAAA,MAAAV;AAAAA,KAAkB,CAAA,GAACW,MAAAA;AAGpExC,IAAAA,MAAAA,CAAMY,IAAAA,CAAA6B,GAAAA,CAAU,MAAA,EAAQ9B,IAAAA,EAAMT,UAAAA,EAAU;AAAA,MAAAQ,aAAAA;AAAAA,MAAAD,YAAAA;AAAAA,MAAAoB;AAAAA,KAIvC,CAAA;AAAC/B,IAAAA,CAAAA,CAAA,CAAA,IAAAE,MAAAA,CAAAY,IAAAA;AAAAd,IAAAA,CAAAA,MAAAI,UAAAA;AAAAJ,IAAAA,CAAAA,MAAAW,YAAAA;AAAAX,IAAAA,CAAAA,MAAAY,aAAAA;AAAAZ,IAAAA,CAAAA,MAAAa,IAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAF,IAAAA,YAAAA,GAAAX,EAAA,CAAA,CAAA;AAAAY,IAAAA,aAAAA,GAAAZ,EAAA,CAAA,CAAA;AAAAa,IAAAA,IAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA4C,EAAAA;AAAA,EAAA,IAAA5C,CAAAA,CAAA,CAAA,CAAA,KAAAI,UAAAA,CAAAyC,KAAAA,EAAA;AAGYD,IAAAA,EAAAA,GAAAE,oBAAAA,CAAqB1C,UAAAA,CAAUyC,KAAM,CAAA,GAAC,OAEhDzC,UAAAA,CAAUyC,KAAAA;AAAM7C,IAAAA,CAAAA,CAAA,CAAA,IAAAI,UAAAA,CAAAyC,KAAAA;AAAA7C,IAAAA,CAAAA,MAAA4C,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA5C,EAAA,CAAA,CAAA;AAAA,EAAA;AAFpB,EAAA,MAAA6C,KAAAA,GAAcD,EAAAA;AAIVG,EAAAA,IAAAA,WAAAA;AAA0C,EAAA,IAE1C3C,WAAU4C,OAAAA,EAAA;AAAA,IAAA,IAEV5C,UAAAA,CAAUgB,QAAAA,CAAA4B,OAAAA,IACV5C,UAAAA,CAAUY,UAAAA,CAAAgC,OAAAA,IACV5C,UAAAA,CAAUuB,aAAAA,CAAAqB,OAAAA,IACV5C,UAAAA,CAAUwB,IAAAA,CAAAqB,mBAAAA,EAAyB;AAEnCF,MAAAA,WAAAA,GAAcA,WAAAA;AAAAA,IAAH,CAAA,MAAA;AAAA,MAAA,IACF3C,UAAAA,CAAUwB,KAAAsB,iBAAAA,EAAA;AACnBH,QAAAA,WAAAA,GAAcA,mBAAAA;AAAAA,MAAH;AAAA,IAAA;AAAA,EAAA;AAAA,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAnD,CAAAA,QAAAS,UAAAA,IAAAT,EAAA,CAAA,CAAA,KAAA6C,SAAA7C,CAAAA,CAAA,CAAA,MAAA+C,WAAAA,IAAA/C,CAAAA,SAAAW,YAAAA,IAAAX,EAAA,EAAA,CAAA,KAAAY,iBAAAZ,CAAAA,CAAA,EAAA,MAAAI,UAAAA,CAAAgD,MAAAA,IAAApD,EAAA,EAAA,CAAA,KAAAI,WAAAiD,SAAAA,IAAArD,CAAAA,CAAA,EAAA,CAAA,KAAAQ,KAAAA,IAAAR,EAAA,EAAA,CAAA,KAAAU,aAAAV,CAAAA,SAAAM,eAAAA,IAAAN,CAAAA,CAAA,EAAA,CAAA,KAAAa,IAAAA,EAAA;AAIRsC,IAAAA,EAAAA,GAAA;AAAA,MAAA7C,eAAAA;AAAAA,MAAAE,KAAAA;AAAAA,MAAAC,UAAAA;AAAAA,MAAAC,SAAAA;AAAAA,MAAAE,aAAAA;AAAAA,MAAAC,IAAAA;AAAAA,MAAAF,YAAAA;AAAAA,MAAAkC,KAAAA;AAAAA,MAAAE,WAAAA;AAAAA,MAAAK,QAUGhD,UAAAA,CAAUgD,MAAAA;AAAAA,MAAAC,WACPjD,UAAAA,CAAUiD;AAAAA,KAAA;AACtBrD,IAAAA,CAAAA,MAAAS,UAAAA;AAAAT,IAAAA,CAAAA,MAAA6C,KAAAA;AAAA7C,IAAAA,CAAAA,MAAA+C,WAAAA;AAAA/C,IAAAA,CAAAA,OAAAW,YAAAA;AAAAX,IAAAA,CAAAA,OAAAY,aAAAA;AAAAZ,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAgD,MAAAA;AAAApD,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAiD,SAAAA;AAAArD,IAAAA,CAAAA,OAAAQ,KAAAA;AAAAR,IAAAA,CAAAA,OAAAU,SAAAA;AAAAV,IAAAA,CAAAA,OAAAM,eAAAA;AAAAN,IAAAA,CAAAA,OAAAa,IAAAA;AAAAb,IAAAA,CAAAA,OAAAmD,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAnD,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAZMmD,EAAAA;AAYN;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGenericTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useGenericTokenAllowance.ts"],"sourcesContent":["import { useTokenAllowance } from \"./useTokenAllowance\";\nimport { formatUnits } from \"viem\";\nimport { useSpender } from \"@/hooks/sdk/useSpender\";\n\nimport { useAccount } from \"wagmi\";\nimport { toDecimal } from \"@/lib/utils/toDecimal\";\nimport { useMemo } from \"react\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type {\n AllowanceData,\n GenericTokenAllowance,\n UseGenericTokenAllowanceInput,\n} from \"./types\";\nimport type { SpenderContractType } from \"@/hooks/sdk/types\";\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useGenericTokenAllowance = ({\n token,\n amountToApproveInWei = 0n,\n spenderContractType,\n}: UseGenericTokenAllowanceInput = {}): GenericTokenAllowance => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const { data: allowance, isLoading: isLoadingAllowance } = useTokenAllowance({\n tokenAddress: token?.address,\n spender,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance = !token || isETH(token) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n return calcAllowanceData({\n allowance: allowance || 0n,\n amountToApproveInWei: BigInt(amountToApproveInWei), // ok to cast wei\n tokenDecimals: token?.decimals,\n });\n }, [allowance, amountToApproveInWei, isConnected, token]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n };\n};\n\ntype UseGenericTokenAllowanceMinInput = {\n tokenAddress?: string;\n spenderContractType?: SpenderContractType;\n amountToApproveInWei?: string | bigint;\n chainId?: SupportedChainId;\n};\n\ntype GenericTokenAllowanceMin = Pick<\n GenericTokenAllowance,\n | \"isLoadingPrerequisites\"\n | \"allowance\"\n | \"needsApproval\"\n | \"enoughAllowance\"\n | \"allowanceToSet\"\n | \"spender\"\n> & { queryKey: QueryKey };\n\n// exclusively deals with wei\nexport const useGenericTokenAllowanceMin = ({\n tokenAddress,\n amountToApproveInWei = 0n,\n spenderContractType,\n chainId,\n}: UseGenericTokenAllowanceMinInput = {}): GenericTokenAllowanceMin => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const {\n data: allowance,\n isLoading: isLoadingAllowance,\n queryKey,\n } = useTokenAllowance({\n tokenAddress,\n spender,\n chainId,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance =\n !tokenAddress || isETH({ address: tokenAddress }) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n const amountToApproveInWeiBigInt = BigInt(amountToApproveInWei);\n\n const enoughAllowance =\n !!allowance && allowance >= amountToApproveInWeiBigInt;\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove =\n amountToApproveInWeiBigInt - (allowance || 0n);\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWeiBigInt,\n differenceLeftToApprove,\n };\n }, [allowance, amountToApproveInWei, isConnected, tokenAddress]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n queryKey,\n };\n};\n\nfunction calcAllowanceData({\n allowance,\n amountToApproveInWei,\n tokenDecimals,\n}: {\n allowance: bigint;\n amountToApproveInWei: bigint;\n tokenDecimals: number;\n}): AllowanceData {\n const enoughAllowance = allowance >= amountToApproveInWei;\n\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove = amountToApproveInWei - allowance;\n\n const amountToApproveUnits = formatUnits(amountToApproveInWei, tokenDecimals);\n const allowanceToSetHumanReadable = toDecimal(Number(amountToApproveUnits));\n\n const differenceLeftToApproveUnits = formatUnits(\n differenceLeftToApprove,\n tokenDecimals\n );\n const differenceLeftToApproveHumanReadable = toDecimal(\n Number(differenceLeftToApproveUnits)\n );\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWei,\n allowanceToSetHumanReadable,\n differenceLeftToApprove,\n differenceLeftToApproveHumanReadable,\n };\n}\n"],"names":["useGenericTokenAllowance","token","amountToApproveInWei","spenderContractType","isConnected","useAccount","spender","isLoading","isLoadingSpender","useSpender","data","allowance","isLoadingAllowance","useTokenAllowance","tokenAddress","address","allowanceOnChain","useMemo","tokenDoesntRequireAllowance","isETH","needsApproval","enoughAllowance","calcAllowanceData","BigInt","tokenDecimals","decimals","isLoadingPrerequisites","useGenericTokenAllowanceMin","chainId","queryKey","amountToApproveInWeiBigInt","differenceLeftToApprove","allowanceToSet","amountToApproveUnits","formatUnits","allowanceToSetHumanReadable","toDecimal","Number","differenceLeftToApproveUnits","differenceLeftToApproveHumanReadable"],"mappings":";;;;;;;;AAiBO,MAAMA,2BAA2BA,CAAC;AAAA,EACvCC,KAAAA;AAAAA,EACAC,oBAAAA,GAAuB,EAAA;AAAA,EACvBC;AAC6B,CAAA,GAAI,EAAC,KAA6B;AAC/D,EAAA,MAAM;AAAA,IAAEC;AAAAA,MAAgBC,UAAAA,EAAW;AAEnC,EAAA,MAAM;AAAA,IAAEC,OAAAA;AAAAA,IAASC,SAAAA,EAAWC;AAAAA,GAAiB,GAC3CC,WAAWN,mBAAmB,CAAA;AAEhC,EAAA,MAAM;AAAA,IAAEO,IAAAA,EAAMC,SAAAA;AAAAA,IAAWJ,SAAAA,EAAWK;AAAAA,MAAuBC,iBAAAA,CAAkB;AAAA,IAC3EC,cAAcb,KAAAA,EAAOc,OAAAA;AAAAA,IACrBT;AAAAA,GACD,CAAA;AAED,EAAA,MAAMU,gBAAAA,GAAmBC,QAAQ,MAAM;AACrC,IAAA,MAAMC,8BAA8B,CAACjB,KAAAA,IAASkB,KAAAA,CAAMlB,KAAK,KAAK,CAACG,WAAAA;AAE/D,IAAA,IAAIc,2BAAAA,EAA6B;AAC/B,MAAA,OAAO;AAAA,QACLE,aAAAA,EAAe,KAAA;AAAA,QACfC,eAAAA,EAAiB;AAAA,OACnB;AAAA;
|
|
1
|
+
{"version":3,"file":"useGenericTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useGenericTokenAllowance.ts"],"sourcesContent":["import { useTokenAllowance } from \"./useTokenAllowance\";\nimport { formatUnits } from \"viem\";\nimport { useSpender } from \"@/hooks/sdk/useSpender\";\n\nimport { useAccount } from \"wagmi\";\nimport { toDecimal } from \"@/lib/utils/toDecimal\";\nimport { useMemo } from \"react\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type {\n AllowanceData,\n GenericTokenAllowance,\n UseGenericTokenAllowanceInput,\n} from \"./types\";\nimport type { SpenderContractType } from \"@/hooks/sdk/types\";\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useGenericTokenAllowance = ({\n token,\n amountToApproveInWei = 0n,\n spenderContractType,\n}: UseGenericTokenAllowanceInput = {}): GenericTokenAllowance => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const { data: allowance, isLoading: isLoadingAllowance } = useTokenAllowance({\n tokenAddress: token?.address,\n spender,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance = !token || isETH(token) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n return calcAllowanceData({\n allowance: allowance || 0n,\n amountToApproveInWei: BigInt(amountToApproveInWei), // ok to cast wei\n tokenDecimals: token?.decimals,\n });\n }, [allowance, amountToApproveInWei, isConnected, token]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n };\n};\n\ntype UseGenericTokenAllowanceMinInput = {\n tokenAddress?: string;\n spenderContractType?: SpenderContractType;\n amountToApproveInWei?: string | bigint;\n chainId?: SupportedChainId;\n};\n\ntype GenericTokenAllowanceMin = Pick<\n GenericTokenAllowance,\n | \"isLoadingPrerequisites\"\n | \"allowance\"\n | \"needsApproval\"\n | \"enoughAllowance\"\n | \"allowanceToSet\"\n | \"spender\"\n> & { queryKey: QueryKey };\n\n// exclusively deals with wei\nexport const useGenericTokenAllowanceMin = ({\n tokenAddress,\n amountToApproveInWei = 0n,\n spenderContractType,\n chainId,\n}: UseGenericTokenAllowanceMinInput = {}): GenericTokenAllowanceMin => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const {\n data: allowance,\n isLoading: isLoadingAllowance,\n queryKey,\n } = useTokenAllowance({\n tokenAddress,\n spender,\n chainId,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance =\n !tokenAddress || isETH({ address: tokenAddress }) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n const amountToApproveInWeiBigInt = BigInt(amountToApproveInWei);\n\n const enoughAllowance =\n !!allowance && allowance >= amountToApproveInWeiBigInt;\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove =\n amountToApproveInWeiBigInt - (allowance || 0n);\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWeiBigInt,\n differenceLeftToApprove,\n };\n }, [allowance, amountToApproveInWei, isConnected, tokenAddress]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n queryKey,\n };\n};\n\nfunction calcAllowanceData({\n allowance,\n amountToApproveInWei,\n tokenDecimals,\n}: {\n allowance: bigint;\n amountToApproveInWei: bigint;\n tokenDecimals: number;\n}): AllowanceData {\n const enoughAllowance = allowance >= amountToApproveInWei;\n\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove = amountToApproveInWei - allowance;\n\n const amountToApproveUnits = formatUnits(amountToApproveInWei, tokenDecimals);\n const allowanceToSetHumanReadable = toDecimal(Number(amountToApproveUnits));\n\n const differenceLeftToApproveUnits = formatUnits(\n differenceLeftToApprove,\n tokenDecimals\n );\n const differenceLeftToApproveHumanReadable = toDecimal(\n Number(differenceLeftToApproveUnits)\n );\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWei,\n allowanceToSetHumanReadable,\n differenceLeftToApprove,\n differenceLeftToApproveHumanReadable,\n };\n}\n"],"names":["useGenericTokenAllowance","token","amountToApproveInWei","spenderContractType","isConnected","useAccount","spender","isLoading","isLoadingSpender","useSpender","data","allowance","isLoadingAllowance","useTokenAllowance","tokenAddress","address","allowanceOnChain","useMemo","tokenDoesntRequireAllowance","isETH","needsApproval","enoughAllowance","calcAllowanceData","BigInt","tokenDecimals","decimals","isLoadingPrerequisites","useGenericTokenAllowanceMin","chainId","queryKey","amountToApproveInWeiBigInt","differenceLeftToApprove","allowanceToSet","amountToApproveUnits","formatUnits","allowanceToSetHumanReadable","toDecimal","Number","differenceLeftToApproveUnits","differenceLeftToApproveHumanReadable"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useTokenAllowance.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { erc20Abi, isAddress } from \"viem\";\nimport { useAccount, useReadContract } from \"wagmi\";\nimport type { UseTokenAllowanceInput } from \"./types\";\n\nexport const useTokenAllowance = ({\n tokenAddress,\n spender,\n chainId,\n owner,\n enabled = true,\n}: UseTokenAllowanceInput) => {\n const { address: account } = useAccount();\n\n const ownerAddress = owner || account;\n\n return useReadContract({\n address: tokenAddress && isAddress(tokenAddress) ? tokenAddress : undefined,\n functionName: \"allowance\" as const,\n abi: erc20Abi,\n chainId,\n args:\n ownerAddress && spender && isAddress(spender)\n ? [ownerAddress, spender]\n : undefined,\n query: {\n enabled:\n enabled &&\n !!tokenAddress &&\n !!account &&\n !!spender &&\n !isETH({ address: tokenAddress }),\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n },\n });\n};\n"],"names":["useTokenAllowance","t0","$","_c","tokenAddress","spender","chainId","owner","enabled","t1","undefined","address","account","useAccount","ownerAddress","t2","isAddress","t3","t4","isETH","t5","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t6","functionName","abi","erc20Abi","args","query","useReadContract"],"mappings":";;;;;;AAMO,MAAMA,oBAAoBC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,YAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,OAAAA,EAAAC;AAAAA,GAAA,GAAAR,EAAAA;AAKhC,EAAA,MAAAO,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAEA,EAAA,MAAA;AAAA,IAAAE,OAAAA,EAAAC;AAAAA,MAA6BC,UAAAA,EAAW;AAExC,EAAA,MAAAC,eAAqBP,KAAAA,IAASK,OAAAA;AAGnB,EAAA,MAAAG,EAAAA,GAAAX,YAAAA,IAAgBY,SAAAA,CAAUZ,YAAY,IAAIA,YAAAA,GAAYM,MAAAA;AAAY,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAf,EAAA,CAAA,CAAA,KAAAY,gBAAAZ,CAAAA,QAAAG,OAAAA,EAAA;AAKzEY,IAAAA,EAAAA,GAAAH,YAAAA,IAAgBT,WAAWW,SAAAA,CAAUX,OAAO,IAAC,CACxCS,YAAAA,EAAcT,OAAO,CAAA,GAAAK,MAAAA;AACbR,IAAAA,CAAAA,MAAAY,YAAAA;AAAAZ,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAe,EAAAA;AAAAA,
|
|
1
|
+
{"version":3,"file":"useTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useTokenAllowance.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { erc20Abi, isAddress } from \"viem\";\nimport { useAccount, useReadContract } from \"wagmi\";\nimport type { UseTokenAllowanceInput } from \"./types\";\n\nexport const useTokenAllowance = ({\n tokenAddress,\n spender,\n chainId,\n owner,\n enabled = true,\n}: UseTokenAllowanceInput) => {\n const { address: account } = useAccount();\n\n const ownerAddress = owner || account;\n\n return useReadContract({\n address: tokenAddress && isAddress(tokenAddress) ? tokenAddress : undefined,\n functionName: \"allowance\" as const,\n abi: erc20Abi,\n chainId,\n args:\n ownerAddress && spender && isAddress(spender)\n ? [ownerAddress, spender]\n : undefined,\n query: {\n enabled:\n enabled &&\n !!tokenAddress &&\n !!account &&\n !!spender &&\n !isETH({ address: tokenAddress }),\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n },\n });\n};\n"],"names":["useTokenAllowance","t0","$","_c","tokenAddress","spender","chainId","owner","enabled","t1","undefined","address","account","useAccount","ownerAddress","t2","isAddress","t3","t4","isETH","t5","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t6","functionName","abi","erc20Abi","args","query","useReadContract"],"mappings":";;;;;;AAMO,MAAMA,oBAAoBC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,YAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,OAAAA,EAAAC;AAAAA,GAAA,GAAAR,EAAAA;AAKhC,EAAA,MAAAO,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAEA,EAAA,MAAA;AAAA,IAAAE,OAAAA,EAAAC;AAAAA,MAA6BC,UAAAA,EAAW;AAExC,EAAA,MAAAC,eAAqBP,KAAAA,IAASK,OAAAA;AAGnB,EAAA,MAAAG,EAAAA,GAAAX,YAAAA,IAAgBY,SAAAA,CAAUZ,YAAY,IAAIA,YAAAA,GAAYM,MAAAA;AAAY,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAf,EAAA,CAAA,CAAA,KAAAY,gBAAAZ,CAAAA,QAAAG,OAAAA,EAAA;AAKzEY,IAAAA,EAAAA,GAAAH,YAAAA,IAAgBT,WAAWW,SAAAA,CAAUX,OAAO,IAAC,CACxCS,YAAAA,EAAcT,OAAO,CAAA,GAAAK,MAAAA;AACbR,IAAAA,CAAAA,MAAAY,YAAAA;AAAAZ,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAe,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAf,EAAA,CAAA,CAAA;AAAA,EAAA;AAGX,EAAA,MAAAgB,EAAAA,GAAAV,OAAAA,IAAO,CAAA,CACLJ,YAAAA,MACAQ,OAAAA,IAAO,CAAA,CACPP,OAAAA,IAAO,CACRc,KAAAA,CAAA;AAAA,IAAAR,OAAAA,EAAiBP;AAAAA,GAAc,CAAA;AAAC,EAAA,IAAAgB,EAAAA;AAAA,EAAA,IAAAlB,CAAAA,QAAAgB,EAAAA,EAAA;AAN9BE,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,OAAAA,EAEHU,EAAAA;AAAAA,MAIiCG,SAAAA,EAAAC;AAAAA,KAAA;AAEpCpB,IAAAA,CAAAA,MAAAgB,EAAAA;AAAAhB,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAlB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAqB,EAAAA;AAAA,EAAA,IAAArB,CAAAA,CAAA,CAAA,CAAA,KAAAI,OAAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAa,EAAAA,IAAAb,CAAAA,CAAA,CAAA,CAAA,KAAAe,EAAAA,IAAAf,CAAAA,QAAAkB,EAAAA,EAAA;AAjBoBG,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,OAAAA,EACZI,EAAAA;AAAAA,MAAkES,YAAAA,EAC7D,WAAA;AAAA,MAAoBC,GAAAA,EAAAC,QAAAA;AAAAA,MAAApB,OAAAA;AAAAA,MAAAqB,IAAAA,EAIhCV,EAAAA;AAAAA,MAEaW,KAAAA,EACRR;AAAAA,KAQN;AACFlB,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAa,EAAAA;AAAAb,IAAAA,CAAAA,MAAAe,EAAAA;AAAAf,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAlB,IAAAA,CAAAA,MAAAqB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAArB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAlBM2B,gBAAgBN,EAkBtB,CAAA;AAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sources":["../../../../src/hooks/tokens/balances/queries.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { ETH_ADDRESS_LOWERCASE } from \"@/tokens/constants\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport { assert } from \"ts-essentials\";\nimport { erc20Abi } from \"viem\";\nimport { getBalance, multicall } from \"viem/actions\";\nimport type {\n BalanceOfResult,\n ProduceQueryOptionsInput,\n TokenBalancesQueryKey,\n AddressBalanceMap,\n} from \"./types\";\n\nfunction constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase,\n account,\n}: Pick<\n ProduceQueryOptionsInput,\n \"chainId\" | \"tokenAddressesLowercase\" | \"account\"\n>): TokenBalancesQueryKey {\n return [\"token-balances\", chainId, tokenAddressesLowercase, account];\n}\n\n// arbitrary, don't know what is the best value to use\nconst BATCH_SIZE = 1024 * 5; // 5 KB\n\nexport function constructTokenBalancesQueryOptions<TData>({\n tokenAddressesLowercase,\n chainId,\n account,\n}: ProduceQueryOptionsInput<TData>): UseQueryOptions<\n AddressBalanceMap,\n Error,\n TData,\n TokenBalancesQueryKey\n> {\n const addressesWithoutEth = tokenAddressesLowercase.filter(\n (address) => !isETH({ address })\n );\n\n const isRequestedEthBalance =\n addressesWithoutEth.length < tokenAddressesLowercase.length;\n\n const queryKey = constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase: tokenAddressesLowercase,\n account,\n });\n\n return {\n queryKey,\n queryFn: async () => {\n assert(account, \"account is required\");\n\n function constructAddressBalanceMap(results: BalanceOfResult[]) {\n return results.reduce<AddressBalanceMap>((acc, result, index) => {\n const tokenAddress = addressesWithoutEth[index];\n if (tokenAddress) acc[tokenAddress] = result;\n return acc;\n }, {});\n }\n\n const contracts = addressesWithoutEth.map((address) => ({\n address,\n abi: erc20Abi,\n functionName: \"balanceOf\" as const,\n args: [account],\n chainId,\n }));\n\n const client = wagmiConfig.getClient({ chainId });\n\n const multicallPromise = multicall(client, {\n contracts,\n batchSize: BATCH_SIZE,\n });\n\n let addressBalanceMap: AddressBalanceMap = {};\n\n if (isRequestedEthBalance) {\n const ethBalance = await getBalance(client, {\n address: account,\n });\n const multiBalances = await multicallPromise;\n\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n\n addressBalanceMap[ETH_ADDRESS_LOWERCASE] = {\n result: ethBalance,\n status: \"success\",\n };\n } else {\n const multiBalances = await multicallPromise;\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n }\n\n return addressBalanceMap;\n },\n enabled: !!account && tokenAddressesLowercase.length > 0,\n staleTime: 25_000,\n };\n}\n"],"names":["constructTokenBalancesQueryKey","chainId","tokenAddressesLowercase","account","BATCH_SIZE","constructTokenBalancesQueryOptions","addressesWithoutEth","filter","address","isETH","isRequestedEthBalance","length","queryKey","queryFn","assert","constructAddressBalanceMap","results","reduce","acc","result","index","tokenAddress","contracts","map","abi","erc20Abi","functionName","args","client","wagmiConfig","getClient","multicallPromise","multicall","batchSize","addressBalanceMap","ethBalance","getBalance","multiBalances","ETH_ADDRESS_LOWERCASE","status","enabled","staleTime"],"mappings":";;;;;;;AAcA,SAASA,8BAAAA,CAA+B;AAAA,EACtCC,OAAAA;AAAAA,EACAC,uBAAAA;AAAAA,EACAC;AAIF,CAAA,EAA0B;AACxB,EAAA,OAAO,CAAC,gBAAA,EAAkBF,OAAAA,EAASC,uBAAAA,EAAyBC,OAAO,CAAA;AACrE;AAGA,MAAMC,aAAa,IAAA,GAAO,CAAA;AAEnB,SAASC,kCAAAA,CAA0C;AAAA,EACxDH,uBAAAA;AAAAA,EACAD,OAAAA;AAAAA,EACAE;AAC+B,CAAA,EAK/B;AACA,EAAA,MAAMG,mBAAAA,GAAsBJ,uBAAAA,CAAwBK,MAAAA,CACjDC,CAAAA,OAAAA,KAAY,CAACC,KAAAA,CAAM;AAAA,IAAED;AAAAA,GAAS,CACjC,CAAA;AAEA,EAAA,MAAME,qBAAAA,GACJJ,mBAAAA,CAAoBK,MAAAA,GAAST,uBAAAA,CAAwBS,MAAAA;AAEvD,EAAA,MAAMC,WAAWZ,8BAAAA,CAA+B;AAAA,IAC9CC,OAAAA;AAAAA,IACAC,uBAAAA;AAAAA,IACAC;AAAAA,GACD,CAAA;AAED,EAAA,OAAO;AAAA,IACLS,QAAAA;AAAAA,IACAC,SAAS,YAAY;AACnBC,MAAAA,MAAAA,CAAOX,SAAS,qBAAqB,CAAA;AAErC,MAAA,SAASY,2BAA2BC,OAAAA,EAA4B;AAC9D,QAAA,OAAOA,OAAAA,CAAQC,MAAAA,CAA0B,CAACC,GAAAA,EAAKC,QAAQC,KAAAA,KAAU;AAC/D,UAAA,MAAMC,YAAAA,GAAef,oBAAoBc,KAAK,CAAA;AAC9C,UAAA,IAAIC,YAAAA,EAAcH,GAAAA,CAAIG,YAAY,CAAA,GAAIF,MAAAA;AACtC,UAAA,OAAOD,GAAAA;AAAAA,
|
|
1
|
+
{"version":3,"file":"queries.js","sources":["../../../../src/hooks/tokens/balances/queries.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { ETH_ADDRESS_LOWERCASE } from \"@/tokens/constants\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport { assert } from \"ts-essentials\";\nimport { erc20Abi } from \"viem\";\nimport { getBalance, multicall } from \"viem/actions\";\nimport type {\n BalanceOfResult,\n ProduceQueryOptionsInput,\n TokenBalancesQueryKey,\n AddressBalanceMap,\n} from \"./types\";\n\nfunction constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase,\n account,\n}: Pick<\n ProduceQueryOptionsInput,\n \"chainId\" | \"tokenAddressesLowercase\" | \"account\"\n>): TokenBalancesQueryKey {\n return [\"token-balances\", chainId, tokenAddressesLowercase, account];\n}\n\n// arbitrary, don't know what is the best value to use\nconst BATCH_SIZE = 1024 * 5; // 5 KB\n\nexport function constructTokenBalancesQueryOptions<TData>({\n tokenAddressesLowercase,\n chainId,\n account,\n}: ProduceQueryOptionsInput<TData>): UseQueryOptions<\n AddressBalanceMap,\n Error,\n TData,\n TokenBalancesQueryKey\n> {\n const addressesWithoutEth = tokenAddressesLowercase.filter(\n (address) => !isETH({ address })\n );\n\n const isRequestedEthBalance =\n addressesWithoutEth.length < tokenAddressesLowercase.length;\n\n const queryKey = constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase: tokenAddressesLowercase,\n account,\n });\n\n return {\n queryKey,\n queryFn: async () => {\n assert(account, \"account is required\");\n\n function constructAddressBalanceMap(results: BalanceOfResult[]) {\n return results.reduce<AddressBalanceMap>((acc, result, index) => {\n const tokenAddress = addressesWithoutEth[index];\n if (tokenAddress) acc[tokenAddress] = result;\n return acc;\n }, {});\n }\n\n const contracts = addressesWithoutEth.map((address) => ({\n address,\n abi: erc20Abi,\n functionName: \"balanceOf\" as const,\n args: [account],\n chainId,\n }));\n\n const client = wagmiConfig.getClient({ chainId });\n\n const multicallPromise = multicall(client, {\n contracts,\n batchSize: BATCH_SIZE,\n });\n\n let addressBalanceMap: AddressBalanceMap = {};\n\n if (isRequestedEthBalance) {\n const ethBalance = await getBalance(client, {\n address: account,\n });\n const multiBalances = await multicallPromise;\n\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n\n addressBalanceMap[ETH_ADDRESS_LOWERCASE] = {\n result: ethBalance,\n status: \"success\",\n };\n } else {\n const multiBalances = await multicallPromise;\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n }\n\n return addressBalanceMap;\n },\n enabled: !!account && tokenAddressesLowercase.length > 0,\n staleTime: 25_000,\n };\n}\n"],"names":["constructTokenBalancesQueryKey","chainId","tokenAddressesLowercase","account","BATCH_SIZE","constructTokenBalancesQueryOptions","addressesWithoutEth","filter","address","isETH","isRequestedEthBalance","length","queryKey","queryFn","assert","constructAddressBalanceMap","results","reduce","acc","result","index","tokenAddress","contracts","map","abi","erc20Abi","functionName","args","client","wagmiConfig","getClient","multicallPromise","multicall","batchSize","addressBalanceMap","ethBalance","getBalance","multiBalances","ETH_ADDRESS_LOWERCASE","status","enabled","staleTime"],"mappings":";;;;;;;AAcA,SAASA,8BAAAA,CAA+B;AAAA,EACtCC,OAAAA;AAAAA,EACAC,uBAAAA;AAAAA,EACAC;AAIF,CAAA,EAA0B;AACxB,EAAA,OAAO,CAAC,gBAAA,EAAkBF,OAAAA,EAASC,uBAAAA,EAAyBC,OAAO,CAAA;AACrE;AAGA,MAAMC,aAAa,IAAA,GAAO,CAAA;AAEnB,SAASC,kCAAAA,CAA0C;AAAA,EACxDH,uBAAAA;AAAAA,EACAD,OAAAA;AAAAA,EACAE;AAC+B,CAAA,EAK/B;AACA,EAAA,MAAMG,mBAAAA,GAAsBJ,uBAAAA,CAAwBK,MAAAA,CACjDC,CAAAA,OAAAA,KAAY,CAACC,KAAAA,CAAM;AAAA,IAAED;AAAAA,GAAS,CACjC,CAAA;AAEA,EAAA,MAAME,qBAAAA,GACJJ,mBAAAA,CAAoBK,MAAAA,GAAST,uBAAAA,CAAwBS,MAAAA;AAEvD,EAAA,MAAMC,WAAWZ,8BAAAA,CAA+B;AAAA,IAC9CC,OAAAA;AAAAA,IACAC,uBAAAA;AAAAA,IACAC;AAAAA,GACD,CAAA;AAED,EAAA,OAAO;AAAA,IACLS,QAAAA;AAAAA,IACAC,SAAS,YAAY;AACnBC,MAAAA,MAAAA,CAAOX,SAAS,qBAAqB,CAAA;AAErC,MAAA,SAASY,2BAA2BC,OAAAA,EAA4B;AAC9D,QAAA,OAAOA,OAAAA,CAAQC,MAAAA,CAA0B,CAACC,GAAAA,EAAKC,QAAQC,KAAAA,KAAU;AAC/D,UAAA,MAAMC,YAAAA,GAAef,oBAAoBc,KAAK,CAAA;AAC9C,UAAA,IAAIC,YAAAA,EAAcH,GAAAA,CAAIG,YAAY,CAAA,GAAIF,MAAAA;AACtC,UAAA,OAAOD,GAAAA;AAAAA,QACT,CAAA,EAAG,EAAE,CAAA;AAAA,MACP;AAEA,MAAA,MAAMI,SAAAA,GAAYhB,mBAAAA,CAAoBiB,GAAAA,CAAKf,CAAAA,OAAAA,MAAa;AAAA,QACtDA,OAAAA;AAAAA,QACAgB,GAAAA,EAAKC,QAAAA;AAAAA,QACLC,YAAAA,EAAc,WAAA;AAAA,QACdC,IAAAA,EAAM,CAACxB,OAAO,CAAA;AAAA,QACdF;AAAAA,OACF,CAAE,CAAA;AAEF,MAAA,MAAM2B,MAAAA,GAASC,YAAYC,SAAAA,CAAU;AAAA,QAAE7B;AAAAA,OAAS,CAAA;AAEhD,MAAA,MAAM8B,gBAAAA,GAAmBC,UAAUJ,MAAAA,EAAQ;AAAA,QACzCN,SAAAA;AAAAA,QACAW,SAAAA,EAAW7B;AAAAA,OACZ,CAAA;AAED,MAAA,IAAI8B,oBAAuC,EAAC;AAE5C,MAAA,IAAIxB,qBAAAA,EAAuB;AACzB,QAAA,MAAMyB,UAAAA,GAAa,MAAMC,UAAAA,CAAWR,MAAAA,EAAQ;AAAA,UAC1CpB,OAAAA,EAASL;AAAAA,SACV,CAAA;AACD,QAAA,MAAMkC,gBAAgB,MAAMN,gBAAAA;AAE5BG,QAAAA,iBAAAA,GAAoBnB,2BAA2BsB,aAAa,CAAA;AAE5DH,QAAAA,iBAAAA,CAAkBI,qBAAqB,CAAA,GAAI;AAAA,UACzCnB,MAAAA,EAAQgB,UAAAA;AAAAA,UACRI,MAAAA,EAAQ;AAAA,SACV;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAMF,gBAAgB,MAAMN,gBAAAA;AAC5BG,QAAAA,iBAAAA,GAAoBnB,2BAA2BsB,aAAa,CAAA;AAAA,MAC9D;AAEA,MAAA,OAAOH,iBAAAA;AAAAA,IACT,CAAA;AAAA,IACAM,OAAAA,EAAS,CAAC,CAACrC,OAAAA,IAAWD,wBAAwBS,MAAAA,GAAS,CAAA;AAAA,IACvD8B,SAAAA,EAAW;AAAA,GACb;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttachTokenBalanceMultichain.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAI5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAttachTokenBalanceMultichain.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAI5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D;;GAEG;AACH,eAAO,MAAM,+BAA+B,GAAI,mBAE7C;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3D,aAgBW,KAAK,KAAG,wBAqCnB,CAAC"}
|
|
@@ -4,12 +4,17 @@ import { isAddress, formatUnits } from 'viem';
|
|
|
4
4
|
import { useMultiChainTokenBalances } from './useMultichainTokenBalances.js';
|
|
5
5
|
import { useMultiChainTokenPrices } from '../prices/useMultichainTokenPrices.js';
|
|
6
6
|
import { isSupportedChainId } from '../../../lib/web3/wagmi/utils.js';
|
|
7
|
+
import { useAccount } from 'wagmi';
|
|
8
|
+
import { useSelectedTokenBalances } from './useSelectedTokenBalances.js';
|
|
7
9
|
|
|
8
10
|
const useAttachTokenBalanceMultichain = (t0) => {
|
|
9
|
-
const $ = distExports.c(
|
|
11
|
+
const $ = distExports.c(9);
|
|
10
12
|
const {
|
|
11
13
|
addressesMap
|
|
12
14
|
} = t0;
|
|
15
|
+
const {
|
|
16
|
+
address: account
|
|
17
|
+
} = useAccount();
|
|
13
18
|
let t1;
|
|
14
19
|
if ($[0] !== addressesMap) {
|
|
15
20
|
t1 = {
|
|
@@ -21,6 +26,7 @@ const useAttachTokenBalanceMultichain = (t0) => {
|
|
|
21
26
|
t1 = $[1];
|
|
22
27
|
}
|
|
23
28
|
const multiChainTokenBalances = useMultiChainTokenBalances(t1);
|
|
29
|
+
const selectedTokenBalances = useSelectedTokenBalances();
|
|
24
30
|
let t2;
|
|
25
31
|
let t3;
|
|
26
32
|
if ($[2] !== addressesMap) {
|
|
@@ -34,13 +40,16 @@ const useAttachTokenBalanceMultichain = (t0) => {
|
|
|
34
40
|
const chainIds = t2;
|
|
35
41
|
const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);
|
|
36
42
|
let t4;
|
|
37
|
-
if ($[4] !==
|
|
43
|
+
if ($[4] !== account || $[5] !== multiChainTokenBalances || $[6] !== multiChainTokenPrices || $[7] !== selectedTokenBalances) {
|
|
38
44
|
t4 = (token) => {
|
|
45
|
+
if (!account) {
|
|
46
|
+
return token;
|
|
47
|
+
}
|
|
39
48
|
const loweredAddress = token.address.toLowerCase();
|
|
40
49
|
if (!isAddress(loweredAddress)) {
|
|
41
50
|
return token;
|
|
42
51
|
}
|
|
43
|
-
const balance = multiChainTokenBalances[token.network]?.[loweredAddress]?.result;
|
|
52
|
+
const balance = selectedTokenBalances[token.network]?.[loweredAddress] ?? multiChainTokenBalances[token.network]?.[loweredAddress]?.result;
|
|
44
53
|
if (balance === void 0) {
|
|
45
54
|
return token;
|
|
46
55
|
}
|
|
@@ -52,11 +61,13 @@ const useAttachTokenBalanceMultichain = (t0) => {
|
|
|
52
61
|
usdBalance
|
|
53
62
|
};
|
|
54
63
|
};
|
|
55
|
-
$[4] =
|
|
56
|
-
$[5] =
|
|
57
|
-
$[6] =
|
|
64
|
+
$[4] = account;
|
|
65
|
+
$[5] = multiChainTokenBalances;
|
|
66
|
+
$[6] = multiChainTokenPrices;
|
|
67
|
+
$[7] = selectedTokenBalances;
|
|
68
|
+
$[8] = t4;
|
|
58
69
|
} else {
|
|
59
|
-
t4 = $[
|
|
70
|
+
t4 = $[8];
|
|
60
71
|
}
|
|
61
72
|
return t4;
|
|
62
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttachTokenBalanceMultichain.js","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"sourcesContent":["import type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { formatUnits, isAddress } from \"viem\";\nimport { useMultiChainTokenBalances } from \"./useMultichainTokenBalances\";\nimport { useMultiChainTokenPrices } from \"../prices/useMultichainTokenPrices\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\n/**\n This hook will fetch the balances and return a function that will add a balance to the token if available.\n */\nexport const useAttachTokenBalanceMultichain = ({\n addressesMap,\n}: {\n addressesMap: Partial<Record<SupportedChainId, string[]>>;\n}) => {\n const multiChainTokenBalances = useMultiChainTokenBalances({\n addressesMap,\n });\n\n const chainIds = useMemo(\n () => Object.keys(addressesMap).map(Number).filter(isSupportedChainId),\n [addressesMap]\n );\n\n const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);\n\n return useCallback(\n (token: Token): TokenMaybeWithUsdBalance => {\n const loweredAddress = token.address.toLowerCase();\n\n if (!isAddress(loweredAddress)) return token;\n\n const balance =\n multiChainTokenBalances[token.network]?.[loweredAddress]?.result;\n\n if (balance === undefined) return token;\n\n const tokenPrice =\n multiChainTokenPrices[token.network]?.[loweredAddress]?.price;\n\n const usdBalance = tokenPrice\n ? +formatUnits(BigInt(balance), token.decimals) * tokenPrice\n : undefined;\n\n return {\n ...token,\n balance: balance.toString(),\n usdBalance,\n };\n },\n [multiChainTokenPrices
|
|
1
|
+
{"version":3,"file":"useAttachTokenBalanceMultichain.js","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"sourcesContent":["import type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { formatUnits, isAddress } from \"viem\";\nimport { useMultiChainTokenBalances } from \"./useMultichainTokenBalances\";\nimport { useMultiChainTokenPrices } from \"../prices/useMultichainTokenPrices\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\nimport { useAccount } from \"wagmi\";\nimport { useSelectedTokenBalances } from \"./useSelectedTokenBalances\";\n\n/**\n This hook will fetch the balances and return a function that will add a balance to the token if available.\n */\nexport const useAttachTokenBalanceMultichain = ({\n addressesMap,\n}: {\n addressesMap: Partial<Record<SupportedChainId, string[]>>;\n}) => {\n const { address: account } = useAccount();\n\n const multiChainTokenBalances = useMultiChainTokenBalances({\n addressesMap,\n });\n const selectedTokenBalances = useSelectedTokenBalances();\n\n const chainIds = useMemo(\n () => Object.keys(addressesMap).map(Number).filter(isSupportedChainId),\n [addressesMap]\n );\n\n const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);\n\n return useCallback(\n (token: Token): TokenMaybeWithUsdBalance => {\n if (!account) return token;\n\n const loweredAddress = token.address.toLowerCase();\n\n if (!isAddress(loweredAddress)) return token;\n\n const balance =\n // selected token balances have priority,\n // because only these balances are invalidated after each transaction/order,\n // and have the most frequent refetch interval\n selectedTokenBalances[token.network]?.[loweredAddress] ??\n // otherwise grab the balance from the multichain balances query\n multiChainTokenBalances[token.network]?.[loweredAddress]?.result;\n\n if (balance === undefined) return token;\n\n const tokenPrice =\n multiChainTokenPrices[token.network]?.[loweredAddress]?.price;\n\n const usdBalance = tokenPrice\n ? +formatUnits(BigInt(balance), token.decimals) * tokenPrice\n : undefined;\n\n return {\n ...token,\n balance: balance.toString(),\n usdBalance,\n };\n },\n [\n account,\n multiChainTokenBalances,\n multiChainTokenPrices,\n selectedTokenBalances,\n ]\n );\n};\n"],"names":["useAttachTokenBalanceMultichain","t0","$","_c","addressesMap","address","account","useAccount","t1","multiChainTokenBalances","useMultiChainTokenBalances","selectedTokenBalances","useSelectedTokenBalances","t2","t3","Object","keys","map","Number","filter","isSupportedChainId","chainIds","multiChainTokenPrices","useMultiChainTokenPrices","t4","token","loweredAddress","toLowerCase","isAddress","balance","network","result","undefined","tokenPrice","price","usdBalance","formatUnits","BigInt","decimals","toString"],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
1
2
|
type TokenFuncsToInvalidate = {
|
|
2
3
|
allowance?: boolean;
|
|
3
4
|
balanceOf?: boolean;
|
|
4
5
|
nonces?: boolean;
|
|
5
6
|
};
|
|
6
7
|
/**
|
|
7
|
-
* Helper function to invalidate token-related query cache entries.
|
|
8
|
+
* Helper function constructor to invalidate token-related query cache entries.
|
|
8
9
|
* Used to refresh token balances and allowances after transactions that modify them.
|
|
9
10
|
* Can selectively invalidate either balance or allowance queries, or both.
|
|
10
11
|
* Invalidates for all tokens that have their queries currently mounted, which is easier than matching.
|
|
11
12
|
*/
|
|
12
|
-
export declare
|
|
13
|
+
export declare const invalidateBalancesAndAllowancesFactory: (queryClient: QueryClient) => ({ allowance, balanceOf, nonces, }?: TokenFuncsToInvalidate) => Promise<void>;
|
|
13
14
|
export {};
|
|
14
15
|
//# sourceMappingURL=useInvalidateTokenData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInvalidateTokenData.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useInvalidateTokenData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useInvalidateTokenData.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useInvalidateTokenData.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAuD1E,KAAK,sBAAsB,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAElB,CAAC;AACF;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,GAChD,aAAa,WAAW,MAClB,oCAIJ,sBAA2B,kBA4E7B,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useQueryClient } from '@tanstack/react-query';
|
|
1
|
+
import '@tanstack/react-query';
|
|
3
2
|
import 'viem';
|
|
4
3
|
import 'wagmi';
|
|
5
4
|
import 'wagmi/query';
|
|
@@ -11,86 +10,70 @@ const nonceMethods = ["nonces", "_nonces", "nonce", "getNonce"];
|
|
|
11
10
|
function isReadContractsQueryKey(queryKey) {
|
|
12
11
|
return queryKey[0] === "readContracts";
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
exact: false,
|
|
48
|
-
predicate: (query) => {
|
|
49
|
-
const {
|
|
50
|
-
queryKey
|
|
51
|
-
} = query;
|
|
52
|
-
if (isReadContractQueryKey(queryKey)) {
|
|
53
|
-
if (queryKey[1].functionName && matchedERC20Funcs.includes(queryKey[1].functionName)) {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return false;
|
|
13
|
+
const invalidateBalancesAndAllowancesFactory = (queryClient) => async ({
|
|
14
|
+
allowance = true,
|
|
15
|
+
balanceOf = true,
|
|
16
|
+
nonces = false
|
|
17
|
+
} = {}) => {
|
|
18
|
+
const queries = [];
|
|
19
|
+
if (balanceOf) {
|
|
20
|
+
const ethBalanceQuery = {
|
|
21
|
+
// easier to just match the queryKey base
|
|
22
|
+
queryKey: ["balance"],
|
|
23
|
+
exact: false
|
|
24
|
+
};
|
|
25
|
+
queries.push(ethBalanceQuery);
|
|
26
|
+
}
|
|
27
|
+
const tokenFuncs = [];
|
|
28
|
+
if (balanceOf) {
|
|
29
|
+
tokenFuncs.push("balanceOf");
|
|
30
|
+
}
|
|
31
|
+
if (allowance) {
|
|
32
|
+
tokenFuncs.push("allowance");
|
|
33
|
+
}
|
|
34
|
+
if (tokenFuncs.length > 0) {
|
|
35
|
+
const matchedERC20Funcs = tokenFuncs;
|
|
36
|
+
const erc20BalanceQuery = {
|
|
37
|
+
queryKey: ["readContract"],
|
|
38
|
+
exact: false,
|
|
39
|
+
predicate: (query) => {
|
|
40
|
+
const {
|
|
41
|
+
queryKey
|
|
42
|
+
} = query;
|
|
43
|
+
if (isReadContractQueryKey(queryKey)) {
|
|
44
|
+
if (queryKey[1].functionName && matchedERC20Funcs.includes(queryKey[1].functionName)) {
|
|
45
|
+
return true;
|
|
58
46
|
}
|
|
59
|
-
}
|
|
60
|
-
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
61
49
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
50
|
+
};
|
|
51
|
+
queries.push(erc20BalanceQuery);
|
|
52
|
+
}
|
|
53
|
+
if (nonces) {
|
|
54
|
+
const matchedNonceMethods = nonceMethods;
|
|
55
|
+
const nonceQuery = {
|
|
56
|
+
queryKey: ["readContracts"],
|
|
57
|
+
exact: false,
|
|
58
|
+
predicate: (query) => {
|
|
59
|
+
const {
|
|
60
|
+
queryKey
|
|
61
|
+
} = query;
|
|
62
|
+
if (isReadContractsQueryKey(queryKey)) {
|
|
63
|
+
const firstMethod = queryKey[1].contracts?.[0]?.functionName;
|
|
64
|
+
if (firstMethod && matchedNonceMethods.includes(firstMethod)) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
72
69
|
}
|
|
73
70
|
};
|
|
74
|
-
|
|
75
|
-
$[1] = t0;
|
|
76
|
-
} else {
|
|
77
|
-
t0 = $[1];
|
|
71
|
+
queries.push(nonceQuery);
|
|
78
72
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
function _temp(query_0) {
|
|
83
|
-
const {
|
|
84
|
-
queryKey: queryKey_0
|
|
85
|
-
} = query_0;
|
|
86
|
-
if (isReadContractsQueryKey(queryKey_0)) {
|
|
87
|
-
const firstMethod = queryKey_0[1].contracts?.[0]?.functionName;
|
|
88
|
-
if (firstMethod && nonceMethods.includes(firstMethod)) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
73
|
+
if (queries.length > 0) {
|
|
74
|
+
await Promise.all(queries.map((query) => queryClient.invalidateQueries(query)));
|
|
91
75
|
}
|
|
92
|
-
|
|
93
|
-
}
|
|
76
|
+
};
|
|
94
77
|
|
|
95
|
-
export {
|
|
78
|
+
export { invalidateBalancesAndAllowancesFactory };
|
|
96
79
|
//# sourceMappingURL=useInvalidateTokenData.js.map
|