@velora-dex/widget 0.9.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/web3/AccountButton.js +1 -1
- package/dist/components/web3/AccountButton.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +22 -21
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/utils.js +1 -1
- package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
- package/dist/components/web3/ConnectWallets/index.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/index.js +67 -66
- package/dist/components/web3/ConnectWallets/index.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/iframe.js +1 -1
- package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +27 -26
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js +9 -9
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/utils.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js +2 -2
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +2 -2
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
- package/dist/core/LimitOrderButton.js +1 -1
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/OtcOrderButton.js +1 -1
- package/dist/core/OtcOrderButton.js.map +1 -1
- package/dist/core/TradeFlowScreenButton.js +1 -1
- package/dist/core/TradeFlowScreenButton.js.map +1 -1
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/state/guards.d.ts.map +1 -1
- package/dist/core/inputs/state/guards.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.d.ts.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.d.ts.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
- package/dist/core/state/configAtom.js +2 -2
- package/dist/core/state/configAtom.js.map +1 -1
- package/dist/core/state/getSelectableDestChains.d.ts +1 -1
- package/dist/core/state/getSelectableDestChains.d.ts.map +1 -1
- package/dist/core/state/getSelectableDestChains.js.map +1 -1
- package/dist/core/twap/state/twapInputAmountAtom.d.ts.map +1 -1
- package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
- package/dist/events/getters/limit.js +1 -1
- package/dist/events/getters/limit.js.map +1 -1
- package/dist/events/getters/otc.js +1 -1
- package/dist/events/getters/otc.js.map +1 -1
- package/dist/events/getters/swap.js +1 -1
- package/dist/events/getters/swap.js.map +1 -1
- package/dist/events/getters/twap.js +1 -1
- package/dist/events/getters/twap.js.map +1 -1
- package/dist/events/getters/widgetState.js +1 -1
- package/dist/events/getters/widgetState.js.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.d.ts.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.js +1 -1
- package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
- package/dist/events/types/swap.d.ts.map +1 -1
- package/dist/hooks/batch/useBatchWithApproveTxs.js +1 -1
- package/dist/hooks/batch/useBatchWithApproveTxs.js.map +1 -1
- package/dist/hooks/batch/useCanBatchTxs.d.ts +0 -1
- package/dist/hooks/batch/useCanBatchTxs.d.ts.map +1 -1
- package/dist/hooks/batch/useCanBatchTxs.js +20 -29
- package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
- package/dist/hooks/batch/useSendBatchTx.d.ts.map +1 -1
- package/dist/hooks/batch/useSendBatchTx.js +1 -1
- package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.d.ts.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.d.ts.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.d.ts +1 -1
- package/dist/hooks/getCode/useIsAccountContract.d.ts.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.js +1 -1
- package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
- package/dist/hooks/getCode/useIsContractAtAddress.d.ts +1 -1
- package/dist/hooks/getCode/useIsContractAtAddress.d.ts.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js +2 -2
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrders.d.ts.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrders.js +1 -1
- package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js +3 -3
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +3 -3
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.d.ts.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js +2 -2
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js +1 -1
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.d.ts +2 -2
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js +1 -1
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/utils/types.d.ts +1 -1
- package/dist/hooks/permit/utils/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.d.ts +11 -6
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js +2 -2
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +4 -4
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +3 -3
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
- package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js +1 -1
- package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.js +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useMultichainTokenBalances.js +1 -1
- package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useTokenBalance.d.ts +0 -11
- package/dist/hooks/tokens/balances/useTokenBalance.d.ts.map +1 -1
- package/dist/hooks/tokens/balances/useTokenBalance.js +11 -11
- package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.d.ts.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
- package/dist/hooks/txs/mutations/useApprove.d.ts.map +1 -1
- package/dist/hooks/txs/mutations/useApprove.js +2 -2
- package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.js +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
- package/dist/hooks/txs/mutations/useReplaceTx.js +3 -3
- package/dist/hooks/txs/mutations/useReplaceTx.js.map +1 -1
- package/dist/hooks/txs/mutations/useSendTx.d.ts.map +1 -1
- package/dist/hooks/txs/mutations/useSendTx.js +2 -2
- package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js +4 -4
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/txs/queries/useTxResponse.d.ts +88 -1
- package/dist/hooks/txs/queries/useTxResponse.d.ts.map +1 -1
- package/dist/hooks/txs/queries/useWalletCanReplaceTx.js +1 -1
- package/dist/hooks/txs/queries/useWalletCanReplaceTx.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBridgeInfo.d.ts.map +1 -1
- package/dist/hooks/useBridgeInfo.js.map +1 -1
- package/dist/hooks/useChainMatches.js +2 -2
- package/dist/hooks/useChainMatches.js.map +1 -1
- package/dist/hooks/useConnections.d.ts +3 -0
- package/dist/hooks/useConnections.d.ts.map +1 -0
- package/dist/hooks/useConnections.js +24 -0
- package/dist/hooks/useConnections.js.map +1 -0
- package/dist/hooks/useDisconnect.d.ts +3 -0
- package/dist/hooks/useDisconnect.d.ts.map +1 -0
- package/dist/hooks/useDisconnect.js +29 -0
- package/dist/hooks/useDisconnect.js.map +1 -0
- package/dist/hooks/useMinViemClient.d.ts.map +1 -1
- package/dist/hooks/useMinViemClient.js +9 -9
- package/dist/hooks/useMinViemClient.js.map +1 -1
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSwitchChainWithGuard.js +1 -1
- package/dist/hooks/useSwitchChainWithGuard.js.map +1 -1
- package/dist/lib/constants/urls.js +1 -1
- package/dist/lib/constants/urls.js.map +1 -1
- package/dist/lib/utils/twap.js.map +1 -1
- package/dist/lib/web3/wagmi/config.d.ts +40 -6
- package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/config.js.map +1 -1
- package/dist/lib/web3/wagmi/constants.d.ts +40 -1
- package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/external.js +1 -1
- package/dist/lib/web3/wagmi/external.js.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.d.ts +40 -1
- package/dist/lib/web3/wagmi/switchChain.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.js +1 -1
- package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
- package/dist/tokens/lists/lists.js.map +1 -1
- package/dist/tokens/lists/lists.json.d.ts +12 -31
- package/dist/transactions/queries/ensureCallsStatus.d.ts.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/wagmi-register.d.ts +7 -0
- package/dist/wagmi-register.d.ts.map +1 -0
- package/package.json +13 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenBalance.js","names":["ONE_MINUTE_MS","SupportedChainId","Token","isETH","erc20Abi","formatUnits","isAddress","
|
|
1
|
+
{"version":3,"file":"useTokenBalance.js","names":["ONE_MINUTE_MS","SupportedChainId","Token","isETH","erc20Abi","formatUnits","isAddress","useConnection","useReadContract","useBalance","useERC20Balance","t0","$","_c","token","queryOptions","_queryOptions","address","account","t1","t2","enabled","undefined","addressToFetch","t3","network","t4","t5","t6","refetchInterval","refetchOnWindowFocus","t7","functionName","const","chainId","abi","args","query","useNativeBalance","params","UseTokenBalanceInput","Pick","useTokenBalance","requestedNative","data","nativeTokenBalance","nativeBalanceQueryResult","erc20BalanceQueryResult","erc20TokenBalance","balance","getBalanceFromQueries","tokenDecimals","decimals","queryResult","GetBalanceReturnType","symbol","value","balanceUnit"],"sources":["../../../../src/hooks/tokens/balances/useTokenBalance.ts"],"sourcesContent":["import { ONE_MINUTE_MS } from \"@/lib/constants/time\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\n\nimport { erc20Abi, formatUnits, isAddress } from \"viem\";\nimport { useConnection, useReadContract, useBalance } from \"wagmi\";\n\nexport const useERC20Balance = ({\n token,\n queryOptions: _queryOptions,\n}: UseTokenBalanceInput) => {\n const { address: account } = useConnection();\n const { enabled = true, ...queryOptions } = _queryOptions ?? {};\n\n const addressToFetch =\n token && isAddress(token.address) && !isETH({ address: token.address })\n ? token.address\n : undefined;\n\n return useReadContract({\n functionName: \"balanceOf\" as const,\n address: addressToFetch,\n chainId: token?.network,\n abi: erc20Abi,\n args: account ? [account] : undefined,\n query: {\n enabled: !!enabled && !!addressToFetch && !!account,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\nexport const useNativeBalance = (\n params?: Omit<UseTokenBalanceInput, \"token\">\n) => {\n const { address: account } = useConnection();\n const { enabled = true, ...queryOptions } = params?.queryOptions ?? {};\n\n return useBalance({\n address: account,\n chainId: params?.chainId,\n query: {\n enabled: !!enabled && !!account && !!params?.chainId,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\ntype UseTokenBalanceInput = {\n token?: Pick<Token, \"address\" | \"decimals\" | \"network\">;\n chainId?: SupportedChainId;\n queryOptions?: {\n refetchInterval?: number;\n refetchOnWindowFocus?: boolean | \"always\";\n enabled?: boolean;\n };\n};\n\n// BOTH\nexport const useTokenBalance = ({\n token,\n chainId,\n queryOptions,\n}: UseTokenBalanceInput) => {\n const requestedNative = token?.address\n ? isETH({ address: token.address })\n : undefined;\n\n const { data: nativeTokenBalance, ...nativeBalanceQueryResult } =\n useNativeBalance({\n chainId: chainId ?? token?.network,\n queryOptions: {\n enabled: requestedNative,\n ...queryOptions,\n },\n });\n\n const { data: erc20TokenBalance, ...erc20BalanceQueryResult } =\n useERC20Balance({\n chainId: chainId ?? token?.network,\n token,\n queryOptions: {\n enabled: !requestedNative,\n ...queryOptions,\n },\n });\n\n const balance = getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals: token?.decimals,\n });\n\n const queryResult = requestedNative\n ? nativeBalanceQueryResult\n : erc20BalanceQueryResult;\n\n return {\n ...balance,\n ...queryResult,\n };\n};\n\ntype GetBalanceReturnType = {\n decimals: number;\n symbol: string;\n value: bigint;\n};\n\nfunction getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals,\n}: {\n requestedNative?: boolean;\n nativeTokenBalance?: GetBalanceReturnType;\n erc20TokenBalance?: bigint;\n tokenDecimals?: number;\n}) {\n if (requestedNative && nativeTokenBalance !== undefined) {\n const balance = nativeTokenBalance.value;\n const balanceUnit = formatUnits(balance, nativeTokenBalance.decimals);\n return { balance, balanceUnit };\n }\n\n if (erc20TokenBalance !== undefined && tokenDecimals !== undefined) {\n const balance = erc20TokenBalance;\n const balanceUnit = formatUnits(balance, tokenDecimals);\n return { balance, balanceUnit };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokensFromAcross.d.ts","sourceRoot":"","sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,SAAS,EACT,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG;IAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"useTokensFromAcross.d.ts","sourceRoot":"","sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,SAAS,EACT,IAAI,GACL,EAAE;IACD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG;IAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAahD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeInfo","useTokensByAddress","emptyArray","BridgeRoutesMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeInfo","error","acrossTokenAddresses","tokensMap","t2","t3","tokenAddress","toLowerCase","map","filter","tokensFromAcross","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeInfo } from \"../useBridgeInfo\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeRoutesMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeRoutesMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeInfo, error } = useGetBridgeInfo({ mode });\n\n const acrossTokenAddresses
|
|
1
|
+
{"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeInfo","useTokensByAddress","emptyArray","BridgeRoutesMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeInfo","error","acrossTokenAddresses","tokensMap","t2","t3","tokenAddress","toLowerCase","map","filter","tokensFromAcross","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeInfo } from \"../useBridgeInfo\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeRoutesMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeRoutesMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeInfo, error } = useGetBridgeInfo({ mode });\n\n const acrossTokenAddresses =\n bridgeInfo?.[fromChainId]?.[toChainId] ?? emptyArray;\n\n const tokensMap = useTokensByAddress(toChainId);\n\n const tokensFromAcross = acrossTokenAddresses\n .map((tokenAddress) => tokensMap[tokenAddress.toLowerCase()])\n .filter(isTruthy);\n\n return { crossTokens: tokensFromAcross, error };\n}\n"],"mappings":";;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAC,cAAAC,YAAAL,GAQnCM;CAAA,AAAAL,EAAA,OAAAI,IAC8DC,IAAAL,EAAA,MAARK,IAAA,EAAAD,SAAQ,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAA7D,IAAA,EAAAC,MAAAC,GAAAC,aAAoCd,EAAiBW,EAAS,EAE9DI,IACEF,IAAaL,KAAeC,MAA5BP,GAEFc,IAAkBf,EAAmBQ,EAAU,EAACQ;CAAA,IAAAX,EAAA,OAAAS,KAAAT,EAAA,OAAAU,GAAA;EAAA,IAAAE;EAI7BZ,AAJ6BA,EAAA,OAAAU,IAGcE,IAAAZ,EAAA,MAAvDY,KAAAC,MAAkBH,EAAUG,EAAYC,aAAc,GAACd,EAAA,KAAAU,GAAAV,EAAA,KAAAY,IADrCD,IAAAF,EAAoBM,IACtCH,EAAwD,CAAAI,OACrDzB,EAAS,EAAAS,EAAA,KAAAS,GAAAT,EAAA,KAAAU,GAAAV,EAAA,KAAAW;QAAAA,IAAAX,EAAA;CAFnB,IAAAiB,IAAyBN,GAELC;CAE2B,OAF3BZ,EAAA,OAAAQ,KAAAR,EAAA,OAAAiB,KAEbL,IAAA;EAAAM,aAAeD;EAAgBT;EAAS,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAiB,GAAAjB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAAxCY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApprove.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/mutations/useApprove.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useApprove.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/mutations/useApprove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,eAAe,CACtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;CAGnB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,yDAMxB,eAAoB,KAAG,gBAmFzB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { useConstructGasParams as e } from "../../swap/tradeFlow/common/useConst
|
|
|
2
2
|
import { c as t } from "react-compiler-runtime";
|
|
3
3
|
import { assert as n } from "ts-essentials";
|
|
4
4
|
import { erc20Abi as r, isAddress as i } from "viem";
|
|
5
|
-
import {
|
|
5
|
+
import { useConnection as a, useWriteContract as o } from "wagmi";
|
|
6
6
|
//#region src/hooks/txs/mutations/useApprove.ts
|
|
7
7
|
var s = (s) => {
|
|
8
8
|
let c = t(28), l;
|
|
@@ -12,7 +12,7 @@ var s = (s) => {
|
|
|
12
12
|
onSuccess: p,
|
|
13
13
|
onError: m
|
|
14
14
|
} }, c[2] = m, c[3] = p, c[4] = g) : g = c[4];
|
|
15
|
-
let {
|
|
15
|
+
let { mutate: _, mutateAsync: v, isPending: y, isSuccess: b, isError: x, error: S, data: C, reset: w } = o(g), { constructViemGasParams: T } = e(), E = u?.address, D = f?.allowanceToSet, O;
|
|
16
16
|
c[5] !== D || c[6] !== T || c[7] !== h || c[8] !== d || c[9] !== E || c[10] !== _ ? (O = (e) => {
|
|
17
17
|
let t = e?.token?.address || E, a = e?.spender || d, o = e?.allowanceData?.allowanceToSet || D;
|
|
18
18
|
n(h, "Wallet not connected"), n(t && i(t), "Token is required"), n(a && i(a), "Spender address is required"), n(o, "Amount to approve is required");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApprove.js","names":["
|
|
1
|
+
{"version":3,"file":"useApprove.js","names":["erc20Abi","isAddress","Hash","useConnection","useWriteContract","assert","AllowanceData","Token","useConstructGasParams","UseApproveInput","token","Pick","spender","allowanceData","onSuccess","hash","onError","error","Error","ApprovalInput","UseApproveResult","approve","params","approveAsync","Promise","isPending","isSuccess","isError","txHash","reset","useApprove","t0","$","_c","t1","undefined","isConnected","t2","mutation","mutate","writeContract","mutateAsync","writeContractAsync","data","constructViemGasParams","tokenAddress","address","allowanceToSet","t3","_address","_spender","_allowanceToSet","gasParams","abi","functionName","args","t4","params_0","_address_0","_spender_0","_allowanceToSet_0","gasParams_0","t5"],"sources":["../../../../src/hooks/txs/mutations/useApprove.ts"],"sourcesContent":["import { erc20Abi, isAddress, type Hash } from \"viem\";\nimport { useConnection, useWriteContract } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { AllowanceData } from \"@/hooks/tokens/allowance/types\";\nimport type { Token } from \"@velora-dex/sdk\";\nimport { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\n\nexport type UseApproveInput = {\n token?: Pick<Token, \"address\">;\n spender?: string;\n allowanceData?: Pick<AllowanceData, \"allowanceToSet\">;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type ApprovalInput = Pick<\n UseApproveInput,\n \"token\" | \"spender\" | \"allowanceData\"\n>;\n\nexport type UseApproveResult = {\n approve: (params?: ApprovalInput) => void;\n approveAsync: (params?: ApprovalInput) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n // @TODO reset may be useful for retrying after Tx Confirmation error/user rejection,\n // if the hook remains in sope (Comp not remounted)\n};\n\nexport const useApprove = ({\n token,\n spender,\n allowanceData,\n onSuccess,\n onError,\n}: UseApproveInput = {}): UseApproveResult => {\n const { isConnected } = useConnection();\n\n const {\n mutate: writeContract,\n mutateAsync: writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const tokenAddress = token?.address;\n\n const allowanceToSet = allowanceData?.allowanceToSet;\n\n const approve = (params?: ApprovalInput) => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval\n writeContract({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n const approveAsync = async (params?: ApprovalInput): Promise<Hash> => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval and return the hash\n return writeContractAsync({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n return {\n approve,\n approveAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ function s(s) {
|
|
|
21
21
|
onSuccess: f,
|
|
22
22
|
onError: d
|
|
23
23
|
} }, c[2] = d, c[3] = f, c[4] = m) : m = c[4];
|
|
24
|
-
let {
|
|
24
|
+
let { mutate: h, mutateAsync: g, isPending: _, isSuccess: v, isError: y, error: b, data: x, reset: S } = a(m), { constructViemGasParams: C } = t(), w = e[p], T;
|
|
25
25
|
c[5] === u ? T = c[6] : (T = u ? BigInt(u) : void 0, c[5] = u, c[6] = T);
|
|
26
26
|
let E = T, D;
|
|
27
27
|
c[7] !== C || c[8] !== E || c[9] !== w || c[10] !== h ? (D = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDepositWeth.js","names":["useConstructGasParams","wrappedNativeCurrency","assert","Hash","useChainId","useWriteContract","UseDepositWethInput","amount","onSuccess","hash","onError","error","Error","UseDepositReturn","deposit","depositAsync","Promise","isPending","isSuccess","isError","txHash","reset","minWethAbi","constant","inputs","name","outputs","payable","stateMutability","type","const","useDepositWeth","t0","$","_c","t1","undefined","chainId","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","wrappedNativeToken","t3","BigInt","value","t4","gasParams","address","abi","functionName","t5","gasParams_0","t6"],"sources":["../../../../src/hooks/txs/mutations/useDepositWeth.ts"],"sourcesContent":["import { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { assert } from \"ts-essentials\";\nimport type { Hash } from \"viem\";\nimport { useChainId, useWriteContract } from \"wagmi\";\n\nexport type UseDepositWethInput = {\n amount?: string;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseDepositReturn = {\n deposit: () => void;\n depositAsync: () => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nconst minWethAbi = [\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nexport function useDepositWeth({\n amount,\n onError,\n onSuccess,\n}: UseDepositWethInput = {}): UseDepositReturn {\n const chainId = useChainId();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const wrappedNativeToken = wrappedNativeCurrency[chainId];\n const value = amount ? BigInt(amount) : undefined;\n\n const deposit = (): void => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n writeContract({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n const depositAsync = (): Promise<Hash> => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n return writeContractAsync({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n return {\n deposit,\n depositAsync,\n txHash,\n isPending,\n isSuccess,\n isError,\n error,\n reset,\n };\n}\n"],"mappings":";;;;;;AAuBA,IAAMsB,IAAa,CACjB;CACEC,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNC,SAAS,EAAE;CACXC,SAAS;CACTC,iBAAiB;CACjBC,MAAM;CACP,CACF;AAED,SAAOE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAIoBG,IAAAF,EAAA,MAJIE,IAAAH,MAAAI,KAAAA,IAAA,EAIJ,GAJIJ,GAIJC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAJI,IAAA,EAAA5B,WAAAG,YAAAF,iBAAA2B,GAK7BE,IAAgBjC,GAAY,EAACkC;CAAA,AAAAL,EAAA,OAAAvB,KAAAuB,EAAA,OAAAzB,KAWR8B,IAAA,EAAAC,UACT;EAAA/B;EAAAE;EAGV,EACD,EAAAuB,EAAA,KAAAvB,GAAAuB,EAAA,KAAAzB,GAAAyB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAdD,IAAA,EAAAO,
|
|
1
|
+
{"version":3,"file":"useDepositWeth.js","names":["useConstructGasParams","wrappedNativeCurrency","assert","Hash","useChainId","useWriteContract","UseDepositWethInput","amount","onSuccess","hash","onError","error","Error","UseDepositReturn","deposit","depositAsync","Promise","isPending","isSuccess","isError","txHash","reset","minWethAbi","constant","inputs","name","outputs","payable","stateMutability","type","const","useDepositWeth","t0","$","_c","t1","undefined","chainId","t2","mutation","mutate","writeContract","mutateAsync","writeContractAsync","data","constructViemGasParams","wrappedNativeToken","t3","BigInt","value","t4","gasParams","address","abi","functionName","t5","gasParams_0","t6"],"sources":["../../../../src/hooks/txs/mutations/useDepositWeth.ts"],"sourcesContent":["import { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { assert } from \"ts-essentials\";\nimport type { Hash } from \"viem\";\nimport { useChainId, useWriteContract } from \"wagmi\";\n\nexport type UseDepositWethInput = {\n amount?: string;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseDepositReturn = {\n deposit: () => void;\n depositAsync: () => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nconst minWethAbi = [\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nexport function useDepositWeth({\n amount,\n onError,\n onSuccess,\n}: UseDepositWethInput = {}): UseDepositReturn {\n const chainId = useChainId();\n\n const {\n mutate: writeContract,\n mutateAsync: writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const wrappedNativeToken = wrappedNativeCurrency[chainId];\n const value = amount ? BigInt(amount) : undefined;\n\n const deposit = (): void => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n writeContract({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n const depositAsync = (): Promise<Hash> => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n return writeContractAsync({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n return {\n deposit,\n depositAsync,\n txHash,\n isPending,\n isSuccess,\n isError,\n error,\n reset,\n };\n}\n"],"mappings":";;;;;;AAuBA,IAAMsB,IAAa,CACjB;CACEC,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNC,SAAS,EAAE;CACXC,SAAS;CACTC,iBAAiB;CACjBC,MAAM;CACP,CACF;AAED,SAAOE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAIoBG,IAAAF,EAAA,MAJIE,IAAAH,MAAAI,KAAAA,IAAA,EAIJ,GAJIJ,GAIJC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAJI,IAAA,EAAA5B,WAAAG,YAAAF,iBAAA2B,GAK7BE,IAAgBjC,GAAY,EAACkC;CAAA,AAAAL,EAAA,OAAAvB,KAAAuB,EAAA,OAAAzB,KAWR8B,IAAA,EAAAC,UACT;EAAA/B;EAAAE;EAGV,EACD,EAAAuB,EAAA,KAAAvB,GAAAuB,EAAA,KAAAzB,GAAAyB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAdD,IAAA,EAAAO,QAAAC,GAAAC,aAAAC,GAAA1B,cAAAC,cAAAC,YAAAR,UAAAiC,MAAAxB,GAAAC,aASIhB,EAAiBiC,EAKnB,EAEF,EAAAO,8BAAmC7C,GAAuB,EAE1D8C,IAA2B7C,EAAsBoC,IAASU;CAAA,AAAAd,EAAA,OAAA1B,IACTwC,IAAAd,EAAA,MAAnCc,IAAAxC,IAASyC,OAAOzC,EAAmB,GAAnC6B,KAAAA,GAAmCH,EAAA,KAAA1B,GAAA0B,EAAA,KAAAc;CAAjD,IAAAE,IAAcF,GAAoCG;CAAA,AAAAjB,EAAA,OAAAY,KAAAZ,EAAA,OAAAgB,KAAAhB,EAAA,OAAAa,KAAAb,EAAA,QAAAQ,KAElCS,UAAA;EAKdT,AAJAvC,EAAO4C,GAAoB,iCAAiC,EAI5DL,EAAc;GAAAW,SACHN;GAAkBO,KACtB/B;GAAUgC,cACD;GAASL;GAAA,GALPJ,GAObM;GACJ,CAAC;IACHlB,EAAA,KAAAY,GAAAZ,EAAA,KAAAgB,GAAAhB,EAAA,KAAAa,GAAAb,EAAA,MAAAQ,GAAAR,EAAA,MAAAiB,KAAAA,IAAAjB,EAAA;CAZD,IAAAnB,IAAgBoC,GAYdK;CAAA,AAAAtB,EAAA,QAAAY,KAAAZ,EAAA,QAAAgB,KAAAhB,EAAA,QAAAa,KAAAb,EAAA,QAAAU,KAEmBY,WACnBrD,EAAO4C,GAAoB,iCAAiC,EAIrDH,EAAmB;EAAAS,SACfN;EAAkBO,KACtB/B;EAAUgC,cACD;EAASL;EAAA,GALPJ,GAObM;EACJ,CAAC,GACHlB,EAAA,MAAAY,GAAAZ,EAAA,MAAAgB,GAAAhB,EAAA,MAAAa,GAAAb,EAAA,MAAAU,GAAAV,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA;CAZD,IAAAlB,IAAqBwC,GAYnBE;CAWD,OAXCxB,EAAA,QAAAnB,KAAAmB,EAAA,QAAAlB,KAAAkB,EAAA,QAAAtB,KAAAsB,EAAA,QAAAd,KAAAc,EAAA,QAAAhB,KAAAgB,EAAA,QAAAf,KAAAe,EAAA,QAAAZ,KAAAY,EAAA,QAAAb,KAEKqC,IAAA;EAAA3C;EAAAC;EAAAK;EAAAH;EAAAC;EAAAC;EAAAR;EAAAU;EASN,EAAAY,EAAA,MAAAnB,GAAAmB,EAAA,MAAAlB,GAAAkB,EAAA,MAAAtB,GAAAsB,EAAA,MAAAd,GAAAc,EAAA,MAAAhB,GAAAgB,EAAA,MAAAf,GAAAe,EAAA,MAAAZ,GAAAY,EAAA,MAAAb,GAAAa,EAAA,MAAAwB,KAAAA,IAAAxB,EAAA,KATMwB"}
|
|
@@ -11,7 +11,7 @@ import { c as re } from "react-compiler-runtime";
|
|
|
11
11
|
import { useMutation as ie } from "@tanstack/react-query";
|
|
12
12
|
import { assert as l } from "ts-essentials";
|
|
13
13
|
import { TransactionNotFoundError as ae } from "viem";
|
|
14
|
-
import {
|
|
14
|
+
import { useChainId as oe, useConnection as se } from "wagmi";
|
|
15
15
|
import "@wagmi/core";
|
|
16
16
|
//#region src/hooks/txs/mutations/useReplaceTx.ts
|
|
17
17
|
var u = {
|
|
@@ -35,7 +35,7 @@ function ce({ action: e, currentFees: t, tx: n }) {
|
|
|
35
35
|
}
|
|
36
36
|
var le = "replaceTx";
|
|
37
37
|
function f(u) {
|
|
38
|
-
let d = re(86), { txHash: f, onSuccess: ue, onError: p, onSettled: m, chainId: de, cancelTxType: h, enabled: fe } = u, pe = fe === void 0 ? !0 : fe, me =
|
|
38
|
+
let d = re(86), { txHash: f, onSuccess: ue, onError: p, onSettled: m, chainId: de, cancelTxType: h, enabled: fe } = u, pe = fe === void 0 ? !0 : fe, me = oe(), g = de ?? me, _ = c(), v = _ && pe, y;
|
|
39
39
|
d[0] !== g || d[1] !== v || d[2] !== f ? (y = {
|
|
40
40
|
hash: f,
|
|
41
41
|
chainId: g,
|
|
@@ -75,7 +75,7 @@ function f(u) {
|
|
|
75
75
|
isError: N.isError,
|
|
76
76
|
error: N.error
|
|
77
77
|
}, d[23] = A, d[24] = N.data, d[25] = N.error, d[26] = N.isError, d[27] = N.isPending, d[28] = N.isSuccess, d[29] = P) : P = d[29];
|
|
78
|
-
let F = P, I = r(), L = e("ReplaceTx"), R = s(), z = te(), { address: B } =
|
|
78
|
+
let F = P, I = r(), L = e("ReplaceTx"), R = s(), z = te(), { address: B } = se(), { onCancelTx: V } = t(), H;
|
|
79
79
|
d[30] !== B || d[31] !== h || d[32] !== g || d[33] !== D || d[34] !== I || d[35] !== x || d[36] !== R || d[37] !== z || d[38] !== _ || d[39] !== L || d[40] !== V || d[41] !== k ? (H = async (e) => {
|
|
80
80
|
let { hash: t, action: n, onTxSent: r, signal: i } = e;
|
|
81
81
|
l(g != null, "Chain not selected"), l(B, "Account not connected"), l(_, "Wallet does not support replacement txs or txParams.nonce"), k.reset(), i?.throwIfAborted();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReplaceTx.js","names":["useAccount","useChainId","EstimateFeesPerGasReturnType","TransactionNotFoundError","Address","Hash","Hex","TransactionReceipt","TransactionRequest","assert","SupportedChainId","useSendArbitraryTx","useTxResponse","passFeeValueTxTypesOnly","useGetChainFeeType","useTxFees","useAwaitTx","useEnsureTxReceipt","TxResponse","useMutation","useLogger","TxSentObject","CancelOrderStepKey","useGetAccountNonce","useWidgetEvents","CancelEventTxType","useWalletCanReplaceTx","useMarkTxAsDropped","GAS_BUMP_FACTOR","num","denom","increaseGas","value","min","increased","UseReplaceTxInput","txHash","onSuccess","result","ReplaceTxResult","onSettled","onError","error","Error","chainId","cancelTxType","enabled","UseReplaceTxReturn","replaceTx","ReplaceTxFn","isPending","isSuccess","isError","step","reset","originalTxResponse","response","hash","replacementTx","receipt","minFees","isWalletSupported","TxForReplacement","from","nonce","to","input","gas","gasPrice","maxFeePerGas","maxPriorityFeePerGas","ReplacementTxAction","BuildReplacementRequestParams","tx","Pick","TxMockResponse","action","currentFees","buildReplacementRequest","undefined","base","data","hasEip1559","hasLegacyGasPrice","isNotLegacyGasPrice","type","originalTx","replacementRequest","replacementTxHash","replacementTxReceipt","ReplaceTxInput","onTxSent","OnTxSent","signal","AbortSignal","txSent","Promise","REPLACE_TX_MUTATION_KEY","useReplaceTx","t0","$","_c","_chainId","t1","appChainId","queriesEnabled","t2","query","txResponseQuery","ensureTxResponse","t3","t4","t5","ensureEstimateFeesPerGas","currentFeesQuery","sendTxMut","t6","t7","replacementTxReceiptQuery","t8","ensureTxReceipt","logger","getAccountNonce","getChainFeeType","address","account","onCancelTx","t9","t10","throwIfAborted","originalTxObject","t11","feeType","all","replacementTxHash_0","sendTransactionAsync","event","name","params","txType","originalTxHash","log","replacementTxReceiptPromise","transactionHash","receiptPromise","transactionSpecificData","swapTxHash","markTxAsDropped","Symbol","for","variables","t12","variables_0","t13","error_0","variables_1","t14","t15","mutationFn","mutationKey","onMutate","replaceTxMut","t16","t17","mutateAsync"],"sources":["../../../../src/hooks/txs/mutations/useReplaceTx.ts"],"sourcesContent":["import { useAccount, useChainId } from \"wagmi\";\nimport { type EstimateFeesPerGasReturnType } from \"@wagmi/core\";\nimport {\n TransactionNotFoundError,\n type Address,\n type Hash,\n type Hex,\n type TransactionReceipt,\n type TransactionRequest,\n} from \"viem\";\nimport { assert } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useSendArbitraryTx } from \"./useSendTx\";\nimport { useTxResponse } from \"../queries/useTxResponse\";\nimport {\n passFeeValueTxTypesOnly,\n useGetChainFeeType,\n useTxFees,\n} from \"../queries/useTxFees\";\nimport { useAwaitTx, useEnsureTxReceipt } from \"../queries/useAwaitTx\";\nimport type { TxResponse } from \"@/transactions/queries/ensureTxResponse\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useLogger } from \"@/core/logger\";\nimport type { TxSentObject } from \"@/lib/utils/transactionHandlers\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { useGetAccountNonce } from \"../queries/useAccountNonce\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport type { CancelEventTxType } from \"@/events/types/cancelTx\";\nimport { useWalletCanReplaceTx } from \"../queries/useWalletCanReplaceTx\";\nimport { useMarkTxAsDropped } from \"@/transactions/state/hooks/useMarkTxAsDropped\";\n\n/**\n * 15% gas bump for replacement txs (BigInt-safe: 115/100).\n * Standard nodes (Geth, Besu, Reth) require ≥10%; we use 15% for a small safety\n * margin so replacements are accepted across varied RPCs and node configs\n * without overpaying (e.g. vs 20%).\n */\nconst GAS_BUMP_FACTOR = { num: 115n, denom: 100n };\n\nfunction increaseGas(value: bigint, min = 0n): bigint {\n const increased = (value * GAS_BUMP_FACTOR.num) / GAS_BUMP_FACTOR.denom;\n return increased < min ? min : increased;\n}\n\ntype UseReplaceTxInput = {\n txHash?: Hash;\n onSuccess?: (result: ReplaceTxResult) => void;\n onSettled?: () => void;\n onError?: (error: Error) => void;\n chainId?: SupportedChainId;\n cancelTxType: CancelEventTxType;\n enabled?: boolean;\n};\n\ntype UseReplaceTxReturn = {\n replaceTx: ReplaceTxFn;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: ReplaceTxResult;\n step?: CancelOrderStepKey;\n reset: () => void;\n originalTxResponse: {\n response?: TxResponse;\n hash?: Hash;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n replacementTx: {\n hash?: Hash;\n receipt?: TransactionReceipt;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n minFees?: EstimateFeesPerGasReturnType;\n isWalletSupported: boolean;\n};\n\n/** Minimal tx shape needed to build a replacement (legacy or EIP-1559). */\ntype TxForReplacement = {\n from: Address;\n nonce: number;\n to?: Address | null;\n value?: bigint;\n input?: Hex;\n gas?: bigint;\n chainId?: number;\n} & (\n | { gasPrice?: bigint; maxFeePerGas?: never; maxPriorityFeePerGas?: never }\n | {\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n gasPrice?: never;\n }\n);\n\nexport type ReplacementTxAction = \"cancel\" | \"speedUp\";\n\ntype BuildReplacementRequestParams = {\n tx: TxForReplacement & Pick<TxMockResponse, \"type\">;\n action: ReplacementTxAction;\n currentFees: EstimateFeesPerGasReturnType;\n};\n\nfunction buildReplacementRequest({\n action,\n currentFees,\n tx,\n}: BuildReplacementRequestParams): TransactionRequest {\n assert(tx, \"Transaction not found\");\n assert(tx.from, \"Transaction has no from address\");\n assert(tx.nonce !== undefined, \"Transaction has no nonce\");\n\n const base: TransactionRequest = {\n from: tx.from,\n nonce: tx.nonce,\n gas: tx.gas,\n };\n\n if (action === \"cancel\") {\n base.to = tx.from;\n base.value = 0n;\n base.data = \"0x\";\n } else {\n assert(tx.to, \"Transaction has no to address\");\n base.to = tx.to;\n base.value = tx.value ?? 0n;\n base.data = tx.input ?? \"0x\";\n }\n\n const hasEip1559 =\n \"maxFeePerGas\" in tx &&\n tx.maxFeePerGas != null &&\n \"maxPriorityFeePerGas\" in tx &&\n tx.maxPriorityFeePerGas != null;\n\n const hasLegacyGasPrice = \"gasPrice\" in tx && tx.gasPrice != null;\n const isNotLegacyGasPrice = !hasLegacyGasPrice && tx.type !== \"legacy\";\n\n if (hasEip1559 || isNotLegacyGasPrice) {\n base.maxFeePerGas = increaseGas(\n tx.maxFeePerGas ?? 0n,\n currentFees.maxFeePerGas\n );\n base.maxPriorityFeePerGas = increaseGas(\n tx.maxPriorityFeePerGas ?? 0n,\n currentFees.maxPriorityFeePerGas\n );\n } else {\n const gasPrice = \"gasPrice\" in tx ? (tx.gasPrice ?? 0n) : 0n;\n base.gasPrice = increaseGas(gasPrice, currentFees.gasPrice);\n }\n\n return base;\n}\n\ntype TxMockResponse = TxForReplacement & {\n type: TxResponse[\"type\"];\n hash: Hash;\n};\n\nexport type ReplaceTxResult = {\n originalTx: TxResponse | TxMockResponse;\n replacementRequest: TransactionRequest;\n replacementTxHash: Hash;\n replacementTxReceipt: TransactionReceipt;\n};\n\ntype ReplaceTxInput = {\n action: ReplacementTxAction;\n hash: Hash;\n onTxSent?: OnTxSent;\n signal?: AbortSignal;\n};\n\ntype OnTxSent = (txSent: TxSentObject & { action: \"cancelSwap\" }) => void;\n\ntype ReplaceTxFn = (input: ReplaceTxInput) => Promise<ReplaceTxResult>;\n\nconst REPLACE_TX_MUTATION_KEY = \"replaceTx\";\n\nexport function useReplaceTx({\n txHash,\n onSuccess,\n onError,\n onSettled,\n chainId: _chainId,\n cancelTxType,\n enabled = true,\n}: UseReplaceTxInput): UseReplaceTxReturn {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n const isWalletSupported = useWalletCanReplaceTx();\n const queriesEnabled = isWalletSupported && enabled;\n\n /** 1. Get the original tx response */\n const { query: txResponseQuery, ensureTxResponse } = useTxResponse({\n hash: txHash,\n chainId,\n enabled: queriesEnabled,\n });\n\n const originalTxResponse = txResponseQuery.data;\n\n const originalTx: UseReplaceTxReturn[\"originalTxResponse\"] = {\n response: originalTxResponse,\n hash: txHash,\n isPending: txResponseQuery.isPending,\n isSuccess: txResponseQuery.isSuccess,\n isError: txResponseQuery.isError,\n error: txResponseQuery.error,\n };\n\n /** 2. Get the estimated fees for transactions at this */\n const { ensureEstimateFeesPerGas, query: currentFeesQuery } = useTxFees({\n chainId,\n type: originalTxResponse?.type\n ? passFeeValueTxTypesOnly(originalTxResponse.type)\n : undefined,\n enabled: queriesEnabled,\n });\n\n /** 3. Send a replacement tx */\n const sendTxMut = useSendArbitraryTx();\n\n const replacementTxHash = sendTxMut.txHash;\n\n /** 4. Wait for the replacement tx to be mined */\n const replacementTxReceiptQuery = useAwaitTx({\n chainId,\n hash: replacementTxHash,\n query: { enabled: queriesEnabled },\n });\n\n const replacementTx: UseReplaceTxReturn[\"replacementTx\"] = {\n hash: replacementTxHash,\n receipt: replacementTxReceiptQuery.data,\n isPending: replacementTxReceiptQuery.isPending,\n isSuccess: replacementTxReceiptQuery.isSuccess,\n isError: replacementTxReceiptQuery.isError,\n error: replacementTxReceiptQuery.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const logger = useLogger(\"ReplaceTx\");\n\n const getAccountNonce = useGetAccountNonce();\n const getChainFeeType = useGetChainFeeType();\n\n const { address: account } = useAccount();\n\n const { onCancelTx } = useWidgetEvents();\n\n const replaceTx: ReplaceTxFn = async ({ hash, action, onTxSent, signal }) => {\n assert(chainId != null, \"Chain not selected\");\n assert(account, \"Account not connected\");\n assert(\n isWalletSupported,\n \"Wallet does not support replacement txs or txParams.nonce\"\n );\n sendTxMut.reset();\n\n signal?.throwIfAborted();\n\n /** 1. Get the original tx response */\n let originalTxObject: TxMockResponse | null = null;\n try {\n originalTxObject = await ensureTxResponse({ hash, chainId });\n } catch (error) {\n if (error instanceof TransactionNotFoundError) {\n // tx with low gas may never be found\n logger.error(\"Original tx not found\", error);\n } else {\n throw error;\n }\n }\n\n if (!originalTxObject) {\n const [nonce, feeType] = await Promise.all([\n // a guess at the nonce we need to cancel the original tx,\n // gets nonce at the latest block\n // excluding the possibly pending (or dropped/not discovered tx) at pending block\n getAccountNonce({ chainId, address: account }),\n getChainFeeType(chainId),\n ]);\n originalTxObject = {\n from: account,\n nonce,\n type: feeType,\n hash,\n };\n }\n\n signal?.throwIfAborted();\n\n /** 2. Get the estimated fees for transactions at this */\n const currentFees = await ensureEstimateFeesPerGas({\n chainId,\n type: passFeeValueTxTypesOnly(originalTxObject.type),\n });\n\n signal?.throwIfAborted();\n\n /** 3. Build the replacement request */\n const replacementRequest = buildReplacementRequest({\n action,\n currentFees,\n tx: originalTxObject,\n });\n\n /** 4. Send the replacement tx */\n const replacementTxHash = await sendTxMut.sendTransactionAsync({\n ...replacementRequest,\n chainId,\n });\n\n if (action === \"cancel\") {\n onCancelTx?.({\n event: {\n name: \"CancelTx:sent\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: originalTxObject.hash,\n originalTx: originalTxObject,\n replacementRequest: replacementRequest,\n replacementTxHash: replacementTxHash,\n },\n },\n });\n }\n signal?.throwIfAborted();\n\n logger.log(\"Replacement tx sent\", {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n });\n\n /** 5. Wait for the replacement tx to be mined */\n const replacementTxReceiptPromise = ensureTxReceipt({\n chainId,\n hash: replacementTxHash,\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n transactionHash: replacementTxHash,\n action: \"cancelSwap\",\n receiptPromise: replacementTxReceiptPromise,\n transactionSpecificData: {\n action: \"cancelSwap\",\n swapTxHash: hash,\n },\n });\n }\n\n const replacementTxReceipt = await replacementTxReceiptPromise;\n\n return {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n replacementTxReceipt,\n };\n };\n\n const markTxAsDropped = useMarkTxAsDropped();\n\n const replaceTxMut = useMutation({\n mutationFn: replaceTx,\n mutationKey: [REPLACE_TX_MUTATION_KEY],\n onMutate: (variables) => {\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:request\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n },\n },\n });\n },\n onSuccess: (data, variables) => {\n logger.log(\"Replace tx success\", data);\n markTxAsDropped({\n account: data.originalTx.from,\n txHash: data.originalTx.hash,\n action: variables.action,\n replacementTxHash: data.replacementTxHash,\n });\n onSuccess?.(data);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:confirmed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: data.originalTx.hash,\n originalTx: data.originalTx,\n replacementRequest: data.replacementRequest,\n replacementTxHash: data.replacementTxHash,\n replacementTxReceipt: data.replacementTxReceipt,\n },\n },\n });\n },\n onError: (error, variables) => {\n logger.error(\"Replace tx error\", error);\n onError?.(error);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:failed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n error: error,\n },\n },\n });\n },\n onSettled: () => {\n onSettled?.();\n logger.log(\"Replace tx settled\");\n },\n });\n\n const reset = () => {\n sendTxMut.reset();\n replaceTxMut.reset();\n };\n\n let step: CancelOrderStepKey | undefined;\n if (replaceTxMut.isPending) {\n // Waiting for wallet confirmation / signature\n step = \"order-cancellation-approval\";\n if (replacementTx.hash) {\n // Tx submitted; waiting for it to be mined\n step = \"order-cancellation-execution\";\n }\n } else if (replaceTxMut.isSuccess) {\n step = \"order-cancellation-success\";\n } else if (replaceTxMut.isError) {\n step = \"order-cancellation-error\";\n }\n\n return {\n originalTxResponse: originalTx,\n replacementTx,\n minFees: currentFeesQuery.data,\n replaceTx: replaceTxMut.mutateAsync,\n isPending: replaceTxMut.isPending,\n isSuccess: replaceTxMut.isSuccess,\n isError: replaceTxMut.isError,\n error: replaceTxMut.error,\n result: replaceTxMut.data,\n reset,\n step,\n isWalletSupported,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useReplaceTx.js","names":["useConnection","useChainId","EstimateFeesPerGasReturnType","TransactionNotFoundError","Address","Hash","Hex","TransactionReceipt","TransactionRequest","assert","SupportedChainId","useSendArbitraryTx","useTxResponse","passFeeValueTxTypesOnly","useGetChainFeeType","useTxFees","useAwaitTx","useEnsureTxReceipt","TxResponse","useMutation","useLogger","TxSentObject","CancelOrderStepKey","useGetAccountNonce","useWidgetEvents","CancelEventTxType","useWalletCanReplaceTx","useMarkTxAsDropped","GAS_BUMP_FACTOR","num","denom","increaseGas","value","min","increased","UseReplaceTxInput","txHash","onSuccess","result","ReplaceTxResult","onSettled","onError","error","Error","chainId","cancelTxType","enabled","UseReplaceTxReturn","replaceTx","ReplaceTxFn","isPending","isSuccess","isError","step","reset","originalTxResponse","response","hash","replacementTx","receipt","minFees","isWalletSupported","TxForReplacement","from","nonce","to","input","gas","gasPrice","maxFeePerGas","maxPriorityFeePerGas","ReplacementTxAction","BuildReplacementRequestParams","tx","Pick","TxMockResponse","action","currentFees","buildReplacementRequest","undefined","base","data","hasEip1559","hasLegacyGasPrice","isNotLegacyGasPrice","type","originalTx","replacementRequest","replacementTxHash","replacementTxReceipt","ReplaceTxInput","onTxSent","OnTxSent","signal","AbortSignal","txSent","Promise","REPLACE_TX_MUTATION_KEY","useReplaceTx","t0","$","_c","_chainId","t1","appChainId","queriesEnabled","t2","query","txResponseQuery","ensureTxResponse","t3","t4","t5","ensureEstimateFeesPerGas","currentFeesQuery","sendTxMut","t6","t7","replacementTxReceiptQuery","t8","ensureTxReceipt","logger","getAccountNonce","getChainFeeType","address","account","onCancelTx","t9","t10","throwIfAborted","originalTxObject","t11","feeType","all","replacementTxHash_0","sendTransactionAsync","event","name","params","txType","originalTxHash","log","replacementTxReceiptPromise","transactionHash","receiptPromise","transactionSpecificData","swapTxHash","markTxAsDropped","Symbol","for","variables","t12","variables_0","t13","error_0","variables_1","t14","t15","mutationFn","mutationKey","onMutate","replaceTxMut","t16","t17","mutateAsync"],"sources":["../../../../src/hooks/txs/mutations/useReplaceTx.ts"],"sourcesContent":["import { useConnection, useChainId } from \"wagmi\";\nimport { type EstimateFeesPerGasReturnType } from \"@wagmi/core\";\nimport {\n TransactionNotFoundError,\n type Address,\n type Hash,\n type Hex,\n type TransactionReceipt,\n type TransactionRequest,\n} from \"viem\";\nimport { assert } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useSendArbitraryTx } from \"./useSendTx\";\nimport { useTxResponse } from \"../queries/useTxResponse\";\nimport {\n passFeeValueTxTypesOnly,\n useGetChainFeeType,\n useTxFees,\n} from \"../queries/useTxFees\";\nimport { useAwaitTx, useEnsureTxReceipt } from \"../queries/useAwaitTx\";\nimport type { TxResponse } from \"@/transactions/queries/ensureTxResponse\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useLogger } from \"@/core/logger\";\nimport type { TxSentObject } from \"@/lib/utils/transactionHandlers\";\nimport type { CancelOrderStepKey } from \"@/components/widget/TradeOverview/steps\";\nimport { useGetAccountNonce } from \"../queries/useAccountNonce\";\nimport { useWidgetEvents } from \"@/core/state/widgetEventsAtom\";\nimport type { CancelEventTxType } from \"@/events/types/cancelTx\";\nimport { useWalletCanReplaceTx } from \"../queries/useWalletCanReplaceTx\";\nimport { useMarkTxAsDropped } from \"@/transactions/state/hooks/useMarkTxAsDropped\";\n\n/**\n * 15% gas bump for replacement txs (BigInt-safe: 115/100).\n * Standard nodes (Geth, Besu, Reth) require ≥10%; we use 15% for a small safety\n * margin so replacements are accepted across varied RPCs and node configs\n * without overpaying (e.g. vs 20%).\n */\nconst GAS_BUMP_FACTOR = { num: 115n, denom: 100n };\n\nfunction increaseGas(value: bigint, min = 0n): bigint {\n const increased = (value * GAS_BUMP_FACTOR.num) / GAS_BUMP_FACTOR.denom;\n return increased < min ? min : increased;\n}\n\ntype UseReplaceTxInput = {\n txHash?: Hash;\n onSuccess?: (result: ReplaceTxResult) => void;\n onSettled?: () => void;\n onError?: (error: Error) => void;\n chainId?: SupportedChainId;\n cancelTxType: CancelEventTxType;\n enabled?: boolean;\n};\n\ntype UseReplaceTxReturn = {\n replaceTx: ReplaceTxFn;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: ReplaceTxResult;\n step?: CancelOrderStepKey;\n reset: () => void;\n originalTxResponse: {\n response?: TxResponse;\n hash?: Hash;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n replacementTx: {\n hash?: Hash;\n receipt?: TransactionReceipt;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n };\n minFees?: EstimateFeesPerGasReturnType;\n isWalletSupported: boolean;\n};\n\n/** Minimal tx shape needed to build a replacement (legacy or EIP-1559). */\ntype TxForReplacement = {\n from: Address;\n nonce: number;\n to?: Address | null;\n value?: bigint;\n input?: Hex;\n gas?: bigint;\n chainId?: number;\n} & (\n | { gasPrice?: bigint; maxFeePerGas?: never; maxPriorityFeePerGas?: never }\n | {\n maxFeePerGas?: bigint;\n maxPriorityFeePerGas?: bigint;\n gasPrice?: never;\n }\n);\n\nexport type ReplacementTxAction = \"cancel\" | \"speedUp\";\n\ntype BuildReplacementRequestParams = {\n tx: TxForReplacement & Pick<TxMockResponse, \"type\">;\n action: ReplacementTxAction;\n currentFees: EstimateFeesPerGasReturnType;\n};\n\nfunction buildReplacementRequest({\n action,\n currentFees,\n tx,\n}: BuildReplacementRequestParams): TransactionRequest {\n assert(tx, \"Transaction not found\");\n assert(tx.from, \"Transaction has no from address\");\n assert(tx.nonce !== undefined, \"Transaction has no nonce\");\n\n const base: TransactionRequest = {\n from: tx.from,\n nonce: tx.nonce,\n gas: tx.gas,\n };\n\n if (action === \"cancel\") {\n base.to = tx.from;\n base.value = 0n;\n base.data = \"0x\";\n } else {\n assert(tx.to, \"Transaction has no to address\");\n base.to = tx.to;\n base.value = tx.value ?? 0n;\n base.data = tx.input ?? \"0x\";\n }\n\n const hasEip1559 =\n \"maxFeePerGas\" in tx &&\n tx.maxFeePerGas != null &&\n \"maxPriorityFeePerGas\" in tx &&\n tx.maxPriorityFeePerGas != null;\n\n const hasLegacyGasPrice = \"gasPrice\" in tx && tx.gasPrice != null;\n const isNotLegacyGasPrice = !hasLegacyGasPrice && tx.type !== \"legacy\";\n\n if (hasEip1559 || isNotLegacyGasPrice) {\n base.maxFeePerGas = increaseGas(\n tx.maxFeePerGas ?? 0n,\n currentFees.maxFeePerGas\n );\n base.maxPriorityFeePerGas = increaseGas(\n tx.maxPriorityFeePerGas ?? 0n,\n currentFees.maxPriorityFeePerGas\n );\n } else {\n const gasPrice = \"gasPrice\" in tx ? (tx.gasPrice ?? 0n) : 0n;\n base.gasPrice = increaseGas(gasPrice, currentFees.gasPrice);\n }\n\n return base;\n}\n\ntype TxMockResponse = TxForReplacement & {\n type: TxResponse[\"type\"];\n hash: Hash;\n};\n\nexport type ReplaceTxResult = {\n originalTx: TxResponse | TxMockResponse;\n replacementRequest: TransactionRequest;\n replacementTxHash: Hash;\n replacementTxReceipt: TransactionReceipt;\n};\n\ntype ReplaceTxInput = {\n action: ReplacementTxAction;\n hash: Hash;\n onTxSent?: OnTxSent;\n signal?: AbortSignal;\n};\n\ntype OnTxSent = (txSent: TxSentObject & { action: \"cancelSwap\" }) => void;\n\ntype ReplaceTxFn = (input: ReplaceTxInput) => Promise<ReplaceTxResult>;\n\nconst REPLACE_TX_MUTATION_KEY = \"replaceTx\";\n\nexport function useReplaceTx({\n txHash,\n onSuccess,\n onError,\n onSettled,\n chainId: _chainId,\n cancelTxType,\n enabled = true,\n}: UseReplaceTxInput): UseReplaceTxReturn {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n const isWalletSupported = useWalletCanReplaceTx();\n const queriesEnabled = isWalletSupported && enabled;\n\n /** 1. Get the original tx response */\n const { query: txResponseQuery, ensureTxResponse } = useTxResponse({\n hash: txHash,\n chainId,\n enabled: queriesEnabled,\n });\n\n const originalTxResponse = txResponseQuery.data;\n\n const originalTx: UseReplaceTxReturn[\"originalTxResponse\"] = {\n response: originalTxResponse,\n hash: txHash,\n isPending: txResponseQuery.isPending,\n isSuccess: txResponseQuery.isSuccess,\n isError: txResponseQuery.isError,\n error: txResponseQuery.error,\n };\n\n /** 2. Get the estimated fees for transactions at this */\n const { ensureEstimateFeesPerGas, query: currentFeesQuery } = useTxFees({\n chainId,\n type: originalTxResponse?.type\n ? passFeeValueTxTypesOnly(originalTxResponse.type)\n : undefined,\n enabled: queriesEnabled,\n });\n\n /** 3. Send a replacement tx */\n const sendTxMut = useSendArbitraryTx();\n\n const replacementTxHash = sendTxMut.txHash;\n\n /** 4. Wait for the replacement tx to be mined */\n const replacementTxReceiptQuery = useAwaitTx({\n chainId,\n hash: replacementTxHash,\n query: { enabled: queriesEnabled },\n });\n\n const replacementTx: UseReplaceTxReturn[\"replacementTx\"] = {\n hash: replacementTxHash,\n receipt: replacementTxReceiptQuery.data,\n isPending: replacementTxReceiptQuery.isPending,\n isSuccess: replacementTxReceiptQuery.isSuccess,\n isError: replacementTxReceiptQuery.isError,\n error: replacementTxReceiptQuery.error,\n };\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n const logger = useLogger(\"ReplaceTx\");\n\n const getAccountNonce = useGetAccountNonce();\n const getChainFeeType = useGetChainFeeType();\n\n const { address: account } = useConnection();\n\n const { onCancelTx } = useWidgetEvents();\n\n const replaceTx: ReplaceTxFn = async ({ hash, action, onTxSent, signal }) => {\n assert(chainId != null, \"Chain not selected\");\n assert(account, \"Account not connected\");\n assert(\n isWalletSupported,\n \"Wallet does not support replacement txs or txParams.nonce\"\n );\n sendTxMut.reset();\n\n signal?.throwIfAborted();\n\n /** 1. Get the original tx response */\n let originalTxObject: TxMockResponse | null = null;\n try {\n originalTxObject = await ensureTxResponse({ hash, chainId });\n } catch (error) {\n if (error instanceof TransactionNotFoundError) {\n // tx with low gas may never be found\n logger.error(\"Original tx not found\", error);\n } else {\n throw error;\n }\n }\n\n if (!originalTxObject) {\n const [nonce, feeType] = await Promise.all([\n // a guess at the nonce we need to cancel the original tx,\n // gets nonce at the latest block\n // excluding the possibly pending (or dropped/not discovered tx) at pending block\n getAccountNonce({ chainId, address: account }),\n getChainFeeType(chainId),\n ]);\n originalTxObject = {\n from: account,\n nonce,\n type: feeType,\n hash,\n };\n }\n\n signal?.throwIfAborted();\n\n /** 2. Get the estimated fees for transactions at this */\n const currentFees = await ensureEstimateFeesPerGas({\n chainId,\n type: passFeeValueTxTypesOnly(originalTxObject.type),\n });\n\n signal?.throwIfAborted();\n\n /** 3. Build the replacement request */\n const replacementRequest = buildReplacementRequest({\n action,\n currentFees,\n tx: originalTxObject,\n });\n\n /** 4. Send the replacement tx */\n const replacementTxHash = await sendTxMut.sendTransactionAsync({\n ...replacementRequest,\n chainId,\n });\n\n if (action === \"cancel\") {\n onCancelTx?.({\n event: {\n name: \"CancelTx:sent\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: originalTxObject.hash,\n originalTx: originalTxObject,\n replacementRequest: replacementRequest,\n replacementTxHash: replacementTxHash,\n },\n },\n });\n }\n signal?.throwIfAborted();\n\n logger.log(\"Replacement tx sent\", {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n });\n\n /** 5. Wait for the replacement tx to be mined */\n const replacementTxReceiptPromise = ensureTxReceipt({\n chainId,\n hash: replacementTxHash,\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n transactionHash: replacementTxHash,\n action: \"cancelSwap\",\n receiptPromise: replacementTxReceiptPromise,\n transactionSpecificData: {\n action: \"cancelSwap\",\n swapTxHash: hash,\n },\n });\n }\n\n const replacementTxReceipt = await replacementTxReceiptPromise;\n\n return {\n originalTx: originalTxObject,\n replacementRequest,\n replacementTxHash,\n replacementTxReceipt,\n };\n };\n\n const markTxAsDropped = useMarkTxAsDropped();\n\n const replaceTxMut = useMutation({\n mutationFn: replaceTx,\n mutationKey: [REPLACE_TX_MUTATION_KEY],\n onMutate: (variables) => {\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:request\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n },\n },\n });\n },\n onSuccess: (data, variables) => {\n logger.log(\"Replace tx success\", data);\n markTxAsDropped({\n account: data.originalTx.from,\n txHash: data.originalTx.hash,\n action: variables.action,\n replacementTxHash: data.replacementTxHash,\n });\n onSuccess?.(data);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:confirmed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: data.originalTx.hash,\n originalTx: data.originalTx,\n replacementRequest: data.replacementRequest,\n replacementTxHash: data.replacementTxHash,\n replacementTxReceipt: data.replacementTxReceipt,\n },\n },\n });\n },\n onError: (error, variables) => {\n logger.error(\"Replace tx error\", error);\n onError?.(error);\n if (variables.action !== \"cancel\") return;\n onCancelTx?.({\n event: {\n name: \"CancelTx:failed\",\n params: {\n chainId,\n txType: cancelTxType,\n originalTxHash: variables.hash,\n error: error,\n },\n },\n });\n },\n onSettled: () => {\n onSettled?.();\n logger.log(\"Replace tx settled\");\n },\n });\n\n const reset = () => {\n sendTxMut.reset();\n replaceTxMut.reset();\n };\n\n let step: CancelOrderStepKey | undefined;\n if (replaceTxMut.isPending) {\n // Waiting for wallet confirmation / signature\n step = \"order-cancellation-approval\";\n if (replacementTx.hash) {\n // Tx submitted; waiting for it to be mined\n step = \"order-cancellation-execution\";\n }\n } else if (replaceTxMut.isSuccess) {\n step = \"order-cancellation-success\";\n } else if (replaceTxMut.isError) {\n step = \"order-cancellation-error\";\n }\n\n return {\n originalTxResponse: originalTx,\n replacementTx,\n minFees: currentFeesQuery.data,\n replaceTx: replaceTxMut.mutateAsync,\n isPending: replaceTxMut.isPending,\n isSuccess: replaceTxMut.isSuccess,\n isError: replaceTxMut.isError,\n error: replaceTxMut.error,\n result: replaceTxMut.data,\n reset,\n step,\n isWalletSupported,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendTx.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/mutations/useSendTx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSendTx.d.ts","sourceRoot":"","sources":["../../../../src/hooks/txs/mutations/useSendTx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,KAAK,oBAAoB,GAAG,kBAAkB,GAAG;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/E,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,oBAAoB,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,0BAGhC,uBAA4B,KAAG,wBAiDjC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as e } from "react-compiler-runtime";
|
|
2
2
|
import { assert as t } from "ts-essentials";
|
|
3
3
|
import "viem";
|
|
4
|
-
import {
|
|
4
|
+
import { useConnection as n, useSendTransaction as r } from "wagmi";
|
|
5
5
|
//#region src/hooks/txs/mutations/useSendTx.ts
|
|
6
6
|
var i = (i) => {
|
|
7
7
|
let a = e(20), o;
|
|
@@ -11,7 +11,7 @@ var i = (i) => {
|
|
|
11
11
|
onSuccess: s,
|
|
12
12
|
onError: c
|
|
13
13
|
} }, a[2] = c, a[3] = s, a[4] = u) : u = a[4];
|
|
14
|
-
let {
|
|
14
|
+
let { mutate: d, mutateAsync: f, isPending: p, isSuccess: m, isError: h, error: g, data: _, reset: v } = r(u), y;
|
|
15
15
|
a[5] !== l || a[6] !== d ? (y = (e) => {
|
|
16
16
|
t(l, "Wallet not connected"), t(e, "Transaction is required"), t(e.to, "Transaction recipient (to) is required"), d(e);
|
|
17
17
|
}, a[5] = l, a[6] = d, a[7] = y) : y = a[7];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendTx.js","names":["
|
|
1
|
+
{"version":3,"file":"useSendTx.js","names":["Hash","TransactionRequest","useConnection","useSendTransaction","assert","SupportedChainId","UseSendArbitraryTxInput","onSuccess","hash","onError","error","Error","TxRequestWithChainId","chainId","UseSendArbitraryTxReturn","sendTransaction","txParams","sendTransactionAsync","Promise","isPending","isSuccess","isError","txHash","reset","useSendArbitraryTx","t0","$","_c","t1","undefined","isConnected","t2","mutation","mutate","mutateAsync","data","t3","to","sendTx","t4","txParams_0","sendTxAsync","t5"],"sources":["../../../../src/hooks/txs/mutations/useSendTx.ts"],"sourcesContent":["import { type Hash, type TransactionRequest } from \"viem\";\nimport { useConnection, useSendTransaction } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport type UseSendArbitraryTxInput = {\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\ntype TxRequestWithChainId = TransactionRequest & { chainId: SupportedChainId };\n\nexport type UseSendArbitraryTxReturn = {\n sendTransaction: (txParams: TxRequestWithChainId) => void;\n sendTransactionAsync: (txParams: TxRequestWithChainId) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nexport const useSendArbitraryTx = ({\n onSuccess,\n onError,\n}: UseSendArbitraryTxInput = {}): UseSendArbitraryTxReturn => {\n const { isConnected } = useConnection();\n\n const {\n mutate: sendTransaction,\n mutateAsync: sendTransactionAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useSendTransaction({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const sendTx = (txParams: TxRequestWithChainId) => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(txParams, \"Transaction is required\");\n assert(txParams.to, \"Transaction recipient (to) is required\");\n\n // Execute transaction\n sendTransaction(txParams);\n };\n\n const sendTxAsync = async (txParams: TxRequestWithChainId): Promise<Hash> => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(txParams, \"Transaction is required\");\n assert(txParams.to, \"Transaction recipient (to) is required\");\n\n // Execute transaction and return the hash\n return sendTransactionAsync(txParams);\n };\n\n return {\n sendTransaction: sendTx,\n sendTransactionAsync: sendTxAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":";;;;;AAuBA,IAAawB,KAAqBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAGHG,IAAAF,EAAA,MAHIE,IAAAH,MAAAI,KAAAA,IAAA,EAGJ,GAHIJ,GAGJC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAHI,IAAA,EAAArB,cAAAE,eAAAmB,GAIjC,EAAAE,mBAAwB5B,GAAe,EAAC6B;CAAA,AAAAL,EAAA,OAAAjB,KAAAiB,EAAA,OAAAnB,KAWjBwB,IAAA,EAAAC,UACX;EAAAzB;EAAAE;EAGV,EACD,EAAAiB,EAAA,KAAAjB,GAAAiB,EAAA,KAAAnB,GAAAmB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAdD,IAAA,EAAAO,QAAAlB,GAAAmB,aAAAjB,GAAAE,cAAAC,cAAAC,YAAAX,UAAAyB,MAAAb,GAAAC,aASIpB,EAAmB4B,EAKrB,EAACK;CAAA,AAAAV,EAAA,OAAAI,KAAAJ,EAAA,OAAAX,KAEYqB,KAAApB,MAAA;EAObD,AALAX,EAAO0B,GAAa,uBAAuB,EAC3C1B,EAAOY,GAAU,0BAA0B,EAC3CZ,EAAOY,EAAQqB,IAAK,yCAAyC,EAG7DtB,EAAgBC,EAAS;IAC1BU,EAAA,KAAAI,GAAAJ,EAAA,KAAAX,GAAAW,EAAA,KAAAU,KAAAA,IAAAV,EAAA;CARD,IAAAY,IAAeF,GAQbG;CAAA,AAAAb,EAAA,OAAAI,KAAAJ,EAAA,OAAAT,KAEkBsB,IAAA,OAAAC,OAElBpC,EAAO0B,GAAa,uBAAuB,EAC3C1B,EAAOY,GAAU,0BAA0B,EAC3CZ,EAAOY,EAAQqB,IAAK,yCAAyC,EAGtDpB,EAAqBD,EAAS,GACtCU,EAAA,KAAAI,GAAAJ,EAAA,KAAAT,GAAAS,EAAA,MAAAa,KAAAA,IAAAb,EAAA;CARD,IAAAe,IAAoBF,GAQlBG;CAWD,OAXChB,EAAA,QAAAhB,KAAAgB,EAAA,QAAAL,KAAAK,EAAA,QAAAP,KAAAO,EAAA,QAAAN,KAAAM,EAAA,QAAAH,KAAAG,EAAA,QAAAY,KAAAZ,EAAA,QAAAe,KAAAf,EAAA,QAAAJ,KAEKoB,IAAA;EAAA3B,iBACYuB;EAAMrB,sBACDwB;EAAWtB;EAAAC;EAAAC;EAAAX;EAAAY;EAAAC;EAOlC,EAAAG,EAAA,MAAAhB,GAAAgB,EAAA,MAAAL,GAAAK,EAAA,MAAAP,GAAAO,EAAA,MAAAN,GAAAM,EAAA,MAAAH,GAAAG,EAAA,MAAAY,GAAAZ,EAAA,MAAAe,GAAAf,EAAA,MAAAJ,GAAAI,EAAA,MAAAgB,KAAAA,IAAAhB,EAAA,KATMgB"}
|
|
@@ -7,16 +7,16 @@ import { useAwaitCalls as o } from "../../batch/useAwaitCalls.js";
|
|
|
7
7
|
import { c as s } from "react-compiler-runtime";
|
|
8
8
|
import { useQueryClient as c } from "@tanstack/react-query";
|
|
9
9
|
import { assert as l } from "ts-essentials";
|
|
10
|
-
import {
|
|
10
|
+
import { useConfig as u, useConnection as d, useConnectorClient as f, useWaitForTransactionReceipt as p } from "wagmi";
|
|
11
11
|
import "wagmi/query";
|
|
12
12
|
//#region src/hooks/txs/queries/useAwaitTx.ts
|
|
13
13
|
function m(r) {
|
|
14
|
-
let c = s(25), { chainId: m, confirmations: h, hash: g, query: _ } = r, v = t("AwaitTx"), y = i(), b = a(), x = n(), S = y ? e : void 0, { address: C } =
|
|
14
|
+
let c = s(25), { chainId: m, confirmations: h, hash: g, query: _ } = r, v = t("AwaitTx"), y = i(), b = a(), x = n(), S = y ? e : void 0, { address: C } = d(), w;
|
|
15
15
|
c[0] !== C || c[1] !== m ? (w = {
|
|
16
16
|
chainId: m,
|
|
17
17
|
account: C
|
|
18
18
|
}, c[0] = C, c[1] = m, c[2] = w) : w = c[2];
|
|
19
|
-
let { data: T } = f(w), E =
|
|
19
|
+
let { data: T } = f(w), E = u(), D = E, O = g, k;
|
|
20
20
|
if (x) k = g;
|
|
21
21
|
else if (b && T) {
|
|
22
22
|
let e;
|
|
@@ -52,7 +52,7 @@ function m(r) {
|
|
|
52
52
|
}, c[17] = m, c[18] = D, c[19] = h, c[20] = _, c[21] = O, c[22] = I, c[23] = S, c[24] = L) : L = c[24], p(L);
|
|
53
53
|
}
|
|
54
54
|
function h() {
|
|
55
|
-
let e = s(4), t = c(), n =
|
|
55
|
+
let e = s(4), t = c(), n = u(), a = i(), o;
|
|
56
56
|
return e[0] !== a || e[1] !== t || e[2] !== n ? (o = r({
|
|
57
57
|
queryClient: t,
|
|
58
58
|
wagmiConfig: n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAwaitTx.js","names":["wagmiConfig","SupportedChainId","useQueryClient","
|
|
1
|
+
{"version":3,"file":"useAwaitTx.js","names":["wagmiConfig","SupportedChainId","useQueryClient","useConnection","useConfig","useConnectorClient","useWaitForTransactionReceipt","UseWaitForTransactionReceiptParameters","UseWaitForTransactionReceiptReturnType","WaitForTransactionReceiptData","useLogger","ensureTxReceiptFactory","EnsureTxReceiptFn","useConnectedSafe","useConnectedToSafeIframe","SAFE_CALLS_WAIT_TIMEOUT","assert","useIsSafeThroughWalletConnect","useAwaitCalls","UseAwaitTxParameters","DefaultTxReceiptSelect","chainId","confirmations","hash","query","SelectData","UseAwaitTxReturnType","TxReceiptFromWagmi","useAwaitTx","t0","$","_c","logger","isSafe","isConnectedToSafeIframe","isConnectedToSafeThroughWalletConnect","timeout","undefined","address","account","t1","data","connectorClient","config","realtxHash","sendCallsId","t2","options","t3","getClient","callsQueryEnabled","enabled","id","sendCallsReceipt","error","sendCallsError","lastCallsReceiptTxHash","receipts","length","transactionHash","t4","log","t5","onReplaced","queryResult","useEnsureTxReceipt","queryClient"],"sources":["../../../../src/hooks/txs/queries/useAwaitTx.ts"],"sourcesContent":["import type { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n useConnection,\n useConfig,\n useConnectorClient,\n useWaitForTransactionReceipt,\n type UseWaitForTransactionReceiptParameters,\n type UseWaitForTransactionReceiptReturnType,\n} from \"wagmi\";\nimport { type WaitForTransactionReceiptData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport {\n ensureTxReceiptFactory,\n type EnsureTxReceiptFn,\n} from \"@/transactions/queries/ensureTxReceipt\";\nimport {\n useConnectedSafe,\n useConnectedToSafeIframe,\n} from \"@/hooks/connectors/useIsConnectedSafe\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { assert } from \"ts-essentials\";\nimport { useIsSafeThroughWalletConnect } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { useAwaitCalls } from \"@/hooks/batch/useAwaitCalls\";\n\nexport type UseAwaitTxParameters<SelectData = DefaultTxReceiptSelect> = {\n chainId: SupportedChainId;\n confirmations?: number;\n hash?: `0x${string}`;\n query?: UseWaitForTransactionReceiptParameters<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >[\"query\"];\n};\n\nexport type DefaultTxReceiptSelect = WaitForTransactionReceiptData<\n typeof wagmiConfig,\n SupportedChainId\n>;\n\nexport type UseAwaitTxReturnType<SelectData = DefaultTxReceiptSelect> =\n UseWaitForTransactionReceiptReturnType<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >;\n\nexport type TxReceiptFromWagmi = DefaultTxReceiptSelect;\n\nexport function useAwaitTx<SelectData = DefaultTxReceiptSelect>({\n chainId,\n confirmations,\n hash,\n query,\n}: UseAwaitTxParameters<SelectData>): UseAwaitTxReturnType<SelectData> {\n const logger = useLogger(\"AwaitTx\");\n\n // connected to Safe through WalletConnect or in Safe App\n const isSafe = useConnectedSafe();\n // connected to Safe in Safe App (either directly or through external provider)\n const isConnectedToSafeIframe = useConnectedToSafeIframe();\n\n const isConnectedToSafeThroughWalletConnect = useIsSafeThroughWalletConnect();\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n const { address: account } = useConnection();\n\n const { data: connectorClient } = useConnectorClient({\n chainId,\n account,\n });\n\n const wagmiConfig = useConfig();\n\n let config = wagmiConfig;\n let realtxHash = hash;\n let sendCallsId: string | undefined;\n\n if (isConnectedToSafeThroughWalletConnect) {\n /** Same logic as {@link ensureTxReceiptFactory} (Safe+WalletConnect branch). Full rationale and refs there. */\n sendCallsId = hash; // will disable calls query if no hash\n } else if (isConnectedToSafeIframe && connectorClient) {\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n config = {\n ...wagmiConfig,\n // doesn't work with Safe through WalletConnect connector\n getClient: (options) => {\n // either no chainId passed in options or chainId matches the expected chainId\n assert(\n !options?.chainId || options.chainId === chainId,\n \"chainId mismatch\"\n );\n return connectorClient;\n },\n } as typeof wagmiConfig;\n }\n\n // will disable calls query if disabled through query.input\n const callsQueryEnabled =\n typeof query?.enabled === \"boolean\" ? query.enabled : true;\n\n const { data: sendCallsReceipt, error: sendCallsError } = useAwaitCalls({\n id: sendCallsId,\n query: {\n enabled: callsQueryEnabled,\n },\n });\n\n const lastCallsReceiptTxHash =\n sendCallsReceipt?.receipts?.[sendCallsReceipt.receipts.length - 1]\n ?.transactionHash;\n if (isConnectedToSafeThroughWalletConnect) {\n realtxHash = lastCallsReceiptTxHash; // will disable txReceipt query if no lastCallsReceiptTxHash,\n // after callsStatus is updated to success or failure, realtxHash will be updated and txReceipt query will be enabled\n\n if (!realtxHash && sendCallsError) {\n // it is possible Safe through WalletConnect could be connected but called with a past non-Safe tx from localStorage,\n // in that case we should try to get the tx receipt normally\n realtxHash = hash;\n }\n }\n\n const queryResult = useWaitForTransactionReceipt<\n typeof wagmiConfig,\n SupportedChainId,\n SelectData\n >({\n config,\n chainId,\n confirmations,\n timeout,\n hash: realtxHash,\n query,\n onReplaced: (data) => {\n // @TODO connect to some atom if needed to detect cancelled/sped-up txs,\n // but sped-up txs may be detected correct internally and re-awaited with a new hash,\n // need to test\n // https://viem.sh/docs/actions/public/waitForTransactionReceipt.html#json-rpc-methods\n logger.log(\"onReplaced:tx\", hash, data);\n },\n });\n\n return queryResult;\n}\n\nexport function useEnsureTxReceipt(): EnsureTxReceiptFn {\n const queryClient = useQueryClient();\n const wagmiConfig = useConfig();\n const isSafe = useConnectedSafe();\n\n return ensureTxReceiptFactory({ queryClient, wagmiConfig, isSafe });\n}\n"],"mappings":";;;;;;;;;;;;AAmDA,SAAO4B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAyD,EAAAV,YAAAC,kBAAAC,SAAAC,aAAAK,GAM9DG,IAAetB,EAAU,UAAU,EAGnCuB,IAAepB,GAAkB,EAEjCqB,IAAgCpB,GAA0B,EAE1DqB,IAA8ClB,GAA+B,EAE7EmB,IAAgBH,IAAAlB,IAAAsB,KAAAA,GAEhB,EAAAC,SAAAC,MAA6BpC,GAAe,EAACqC;CAAA,AAAAV,EAAA,OAAAS,KAAAT,EAAA,OAAAT,KAEQmB,IAAA;EAAAnB;EAAAkB;EAGpD,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAT,GAAAS,EAAA,KAAAU,KAAAA,IAAAV,EAAA;CAHD,IAAA,EAAAW,MAAAC,MAAkCrC,EAAmBmC,EAGnD,EAEFxC,IAAoBI,GAAW,EAE/BuC,IAAa3C,GACb4C,IAAiBrB,GACbsB;CAEJ,IAAIV,GAEFU,IAActB;MACT,IAAIW,KAAAQ,GAA0C;EAAA,IAAAI;EAAA,AAAAhB,EAAA,OAAAT,KAAAS,EAAA,OAAAY,KAOtCI,KAAAC,OAET/B,EACE,CAAC+B,GAAO1B,WAAa0B,EAAO1B,YAAaA,GACzC,mBACD,EACMqB,IACRZ,EAAA,KAAAT,GAAAS,EAAA,KAAAY,GAAAZ,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA;EAAA,IAAAkB;EAVHL,AAUGb,EAAA,OAAAgB,KAAAhB,EAAA,OAAA9B,KAVMgD,IAAA;GAAA,GACJhD;GAAWiD,WAEHH;GAQZ,EAAAhB,EAAA,KAAAgB,GAAAhB,EAAA,KAAA9B,GAAA8B,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAXDa,IAASA;;CAeX,IAAAO,IACE,OAAO1B,GAAK2B,WAAc,YAAY3B,EAAK2B,UAA3C,IAA2DL;CAAA,AAAAhB,EAAA,OAAAoB,IAM1DJ,IAAAhB,EAAA,OAFMgB,IAAA,EAAAK,SACID,GACV,EAAApB,EAAA,KAAAoB,GAAApB,EAAA,MAAAgB;CAAA,IAAAE;CAAA,AAAAlB,EAAA,QAAAe,KAAAf,EAAA,QAAAgB,KAJqEE,IAAA;EAAAI,IAClEP;EAAWrB,OACRsB;EAGR,EAAAhB,EAAA,MAAAe,GAAAf,EAAA,MAAAgB,GAAAhB,EAAA,MAAAkB,KAAAA,IAAAlB,EAAA;CALD,IAAA,EAAAW,MAAAY,GAAAC,OAAAC,MAA0DrC,EAAc8B,EAKtE,EAEFQ,IACEH,GAAgBI,WAAaJ,EAAgBI,SAASC,SAAU,IAC7CC;CACrB,AAAIxB,MACFS,IAAaY,GAGT,CAACZ,KAADW,MAGFX,IAAarB;CAEhB,IAAAqC;CAAA,AAAA9B,EAAA,QAAAP,KAAAO,EAAA,QAAAE,KAaa4B,KAAAnB,MAAA;EAKVT,EAAM6B,IAAK,iBAAiBtC,GAAMkB,EAAK;IACxCX,EAAA,MAAAP,GAAAO,EAAA,MAAAE,GAAAF,EAAA,MAAA8B,KAAAA,IAAA9B,EAAA;CAAA,IAAAgC;CACA,OADAhC,EAAA,QAAAT,KAAAS,EAAA,QAAAa,KAAAb,EAAA,QAAAR,KAAAQ,EAAA,QAAAN,KAAAM,EAAA,QAAAc,KAAAd,EAAA,QAAA8B,KAAA9B,EAAA,QAAAM,KAbD0B,IAAA;EAAAnB;EAAAtB;EAAAC;EAAAc;EAAAb,MAKMqB;EAAUpB;EAAAuC,YAEJH;EAOb,EAAA9B,EAAA,MAAAT,GAAAS,EAAA,MAAAa,GAAAb,EAAA,MAAAR,GAAAQ,EAAA,MAAAN,GAAAM,EAAA,MAAAc,GAAAd,EAAA,MAAA8B,GAAA9B,EAAA,MAAAM,GAAAN,EAAA,MAAAgC,KAAAA,IAAAhC,EAAA,KAlBmBxB,EAIlBwD,EAgBKE;;AAGT,SAAOC,IAAA;CAAA,IAAAnC,IAAAC,EAAA,EAAA,EACLmC,IAAoBhE,GAAgB,EACpCF,IAAoBI,GAAW,EAC/B6B,IAAepB,GAAkB,EAACgB;CAEiC,OAFjCC,EAAA,OAAAG,KAAAH,EAAA,OAAAoC,KAAApC,EAAA,OAAA9B,KAE3B6B,IAAAlB,EAAuB;EAAAuD;EAAAlE;EAAAiC;EAAoC,CAAC,EAAAH,EAAA,KAAAG,GAAAH,EAAA,KAAAoC,GAAApC,EAAA,KAAA9B,GAAA8B,EAAA,KAAAD,KAAAA,IAAAC,EAAA,IAA5DD"}
|