@0xsquid/react-hooks 1.0.4 → 1.0.5
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/assets/images/icons/wallets/index.d.ts +22 -0
- package/{src/assets/images/icons/wallets/index.ts → dist/assets/images/icons/wallets/index.js} +21 -21
- package/dist/assets/images/icons/wallets/index.js.map +1 -0
- package/dist/connectors/ExodusConnector.d.ts +4 -0
- package/{src/connectors/ExodusConnector.ts → dist/connectors/ExodusConnector.js} +3 -3
- package/dist/connectors/ExodusConnector.js.map +1 -0
- package/dist/connectors/LedgerLiveConnector.d.ts +40 -0
- package/dist/connectors/LedgerLiveConnector.js +177 -0
- package/dist/connectors/LedgerLiveConnector.js.map +1 -0
- package/dist/contracts/typechain/factories/ERC20__factory.js +324 -0
- package/dist/contracts/typechain/factories/ERC20__factory.js.map +1 -0
- package/dist/core/constants.d.ts +37 -0
- package/dist/core/constants.js +487 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/externalLinks.d.ts +18 -0
- package/{src/core/externalLinks.ts → dist/core/externalLinks.js} +5 -9
- package/dist/core/externalLinks.js.map +1 -0
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/multicall3.d.ts +16 -0
- package/dist/core/multicall3.js +23 -0
- package/dist/core/multicall3.js.map +1 -0
- package/dist/core/numbers.d.ts +3 -0
- package/dist/core/numbers.js +28 -0
- package/dist/core/numbers.js.map +1 -0
- package/dist/core/providers/CosmosProvider.d.ts +34 -0
- package/dist/core/providers/CosmosProvider.js +12 -0
- package/dist/core/providers/CosmosProvider.js.map +1 -0
- package/dist/core/queries/queries-keys.d.ts +34 -0
- package/dist/core/queries/queries-keys.js +120 -0
- package/dist/core/queries/queries-keys.js.map +1 -0
- package/dist/core/queries/react-query-config.d.ts +3 -0
- package/dist/core/queries/react-query-config.js +11 -0
- package/dist/core/queries/react-query-config.js.map +1 -0
- package/dist/core/types/components.d.ts +14 -0
- package/dist/core/types/components.js +2 -0
- package/dist/core/types/components.js.map +1 -0
- package/dist/core/types/config.d.ts +47 -0
- package/dist/core/types/config.js +2 -0
- package/dist/core/types/config.js.map +1 -0
- package/dist/core/types/dex.d.ts +28 -0
- package/dist/core/types/dex.js +33 -0
- package/dist/core/types/dex.js.map +1 -0
- package/dist/core/types/error.d.ts +44 -0
- package/dist/core/types/error.js +12 -0
- package/dist/core/types/error.js.map +1 -0
- package/dist/core/types/event.d.ts +17 -0
- package/dist/core/types/event.js +2 -0
- package/dist/core/types/event.js.map +1 -0
- package/dist/core/types/route.d.ts +9 -0
- package/dist/core/types/route.js +4 -0
- package/dist/core/types/route.js.map +1 -0
- package/dist/core/types/swap.d.ts +8 -0
- package/dist/core/types/swap.js +2 -0
- package/dist/core/types/swap.js.map +1 -0
- package/dist/core/types/tokens.d.ts +29 -0
- package/dist/core/types/tokens.js +2 -0
- package/dist/core/types/tokens.js.map +1 -0
- package/dist/core/types/transaction.d.ts +68 -0
- package/dist/core/types/transaction.js +38 -0
- package/dist/core/types/transaction.js.map +1 -0
- package/dist/core/types/types.d.ts +30 -0
- package/dist/core/types/types.js +7 -0
- package/dist/core/types/types.js.map +1 -0
- package/dist/core/types/wallet.d.ts +55 -0
- package/dist/core/types/wallet.js +26 -0
- package/dist/core/types/wallet.js.map +1 -0
- package/dist/hooks/chains/useSquidChains.d.ts +12 -0
- package/dist/hooks/chains/useSquidChains.js +45 -0
- package/dist/hooks/chains/useSquidChains.js.map +1 -0
- package/dist/hooks/cosmos/useCosmos.d.ts +33 -0
- package/dist/hooks/cosmos/useCosmos.js +194 -0
- package/dist/hooks/cosmos/useCosmos.js.map +1 -0
- package/dist/hooks/cosmos/useCosmosForChain.d.ts +4 -0
- package/dist/hooks/cosmos/useCosmosForChain.js +22 -0
- package/dist/hooks/cosmos/useCosmosForChain.js.map +1 -0
- package/{src/hooks/index.ts → dist/hooks/index.d.ts} +1 -7
- package/dist/hooks/index.js +27 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/navigation/useKeyboardNavigation.d.ts +7 -0
- package/dist/hooks/navigation/useKeyboardNavigation.js +69 -0
- package/dist/hooks/navigation/useKeyboardNavigation.js.map +1 -0
- package/dist/hooks/store/useSquidStore.d.ts +105 -0
- package/dist/hooks/store/useSquidStore.js +35 -0
- package/dist/hooks/store/useSquidStore.js.map +1 -0
- package/dist/hooks/swap/useSwap.d.ts +25 -0
- package/dist/hooks/swap/useSwap.js +229 -0
- package/dist/hooks/swap/useSwap.js.map +1 -0
- package/dist/hooks/tokens/useAllTokensWithBalance.d.ts +11 -0
- package/dist/hooks/tokens/useAllTokensWithBalance.js +97 -0
- package/dist/hooks/tokens/useAllTokensWithBalance.js.map +1 -0
- package/dist/hooks/tokens/useBalance.d.ts +34 -0
- package/dist/hooks/tokens/useBalance.js +112 -0
- package/dist/hooks/tokens/useBalance.js.map +1 -0
- package/dist/hooks/tokens/useMultiChainBalance.d.ts +17 -0
- package/dist/hooks/tokens/useMultiChainBalance.js +36 -0
- package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -0
- package/dist/hooks/tokens/usePrices.d.ts +6 -0
- package/dist/hooks/tokens/usePrices.js +42 -0
- package/dist/hooks/tokens/usePrices.js.map +1 -0
- package/dist/hooks/tokens/useSingleTokenPrice.d.ts +10 -0
- package/dist/hooks/tokens/useSingleTokenPrice.js +32 -0
- package/dist/hooks/tokens/useSingleTokenPrice.js.map +1 -0
- package/dist/hooks/tokens/useSquidTokens.d.ts +13 -0
- package/dist/hooks/tokens/useSquidTokens.js +35 -0
- package/dist/hooks/tokens/useSquidTokens.js.map +1 -0
- package/dist/hooks/tokens/useTokensWithBalance.d.ts +7 -0
- package/dist/hooks/tokens/useTokensWithBalance.js +111 -0
- package/dist/hooks/tokens/useTokensWithBalance.js.map +1 -0
- package/dist/hooks/transaction/useEstimate.d.ts +44 -0
- package/dist/hooks/transaction/useEstimate.js +274 -0
- package/dist/hooks/transaction/useEstimate.js.map +1 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.d.ts +7 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.js +26 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.js.map +1 -0
- package/dist/hooks/transaction/useExecuteTransaction.d.ts +20 -0
- package/dist/hooks/transaction/useExecuteTransaction.js +310 -0
- package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -0
- package/dist/hooks/transaction/useExpress.d.ts +5 -0
- package/dist/hooks/transaction/useExpress.js +31 -0
- package/dist/hooks/transaction/useExpress.js.map +1 -0
- package/dist/hooks/transaction/useGetRoute.d.ts +14 -0
- package/dist/hooks/transaction/useGetRoute.js +96 -0
- package/dist/hooks/transaction/useGetRoute.js.map +1 -0
- package/dist/hooks/transaction/useSingleTransaction.d.ts +8 -0
- package/dist/hooks/transaction/useSingleTransaction.js +99 -0
- package/dist/hooks/transaction/useSingleTransaction.js.map +1 -0
- package/dist/hooks/transaction/useTransaction.d.ts +25 -0
- package/dist/hooks/transaction/useTransaction.js +521 -0
- package/dist/hooks/transaction/useTransaction.js.map +1 -0
- package/dist/hooks/user/useUserParams.d.ts +6 -0
- package/dist/hooks/user/useUserParams.js +41 -0
- package/dist/hooks/user/useUserParams.js.map +1 -0
- package/dist/hooks/wallet/useAddToken.d.ts +4 -0
- package/dist/hooks/wallet/useAddToken.js +45 -0
- package/dist/hooks/wallet/useAddToken.js.map +1 -0
- package/dist/hooks/wallet/useAutoConnect.d.ts +6 -0
- package/dist/hooks/wallet/useAutoConnect.js +44 -0
- package/dist/hooks/wallet/useAutoConnect.js.map +1 -0
- package/dist/hooks/wallet/useGnosisContext.d.ts +7 -0
- package/dist/hooks/wallet/useGnosisContext.js +70 -0
- package/dist/hooks/wallet/useGnosisContext.js.map +1 -0
- package/dist/hooks/wallet/useIntegratorContext.d.ts +5 -0
- package/dist/hooks/wallet/useIntegratorContext.js +39 -0
- package/dist/hooks/wallet/useIntegratorContext.js.map +1 -0
- package/dist/hooks/wallet/useMultiChainWallet.d.ts +8 -0
- package/dist/hooks/wallet/useMultiChainWallet.js +113 -0
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -0
- package/dist/hooks/wallet/useWallet.d.ts +6 -0
- package/dist/hooks/wallet/useWallet.js +65 -0
- package/dist/hooks/wallet/useWallet.js.map +1 -0
- package/dist/hooks/webapp-router/useSquidRouter.d.ts +11 -0
- package/dist/hooks/webapp-router/useSquidRouter.js +33 -0
- package/dist/hooks/webapp-router/useSquidRouter.js.map +1 -0
- package/{src/index.ts → dist/index.d.ts} +0 -1
- package/dist/index.js.map +1 -0
- package/dist/provider/index.d.ts +10 -0
- package/dist/provider/index.js +71 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/services/external/analyticsService.d.ts +18 -0
- package/dist/services/external/analyticsService.js +30 -0
- package/dist/services/external/analyticsService.js.map +1 -0
- package/dist/services/external/coingeckoService.d.ts +8 -0
- package/dist/services/external/coingeckoService.js +20 -0
- package/dist/services/external/coingeckoService.js.map +1 -0
- package/dist/services/external/rpcService.d.ts +4 -0
- package/dist/services/external/rpcService.js +145 -0
- package/dist/services/external/rpcService.js.map +1 -0
- package/dist/services/external/secretService.d.ts +28 -0
- package/dist/services/external/secretService.js +129 -0
- package/dist/services/external/secretService.js.map +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/internal/apiService.d.ts +4 -0
- package/dist/services/internal/apiService.js +7 -0
- package/dist/services/internal/apiService.js.map +1 -0
- package/dist/services/internal/assetsService.d.ts +28 -0
- package/dist/services/internal/assetsService.js +46 -0
- package/dist/services/internal/assetsService.js.map +1 -0
- package/dist/services/internal/configService.d.ts +40 -0
- package/dist/services/internal/configService.js +119 -0
- package/dist/services/internal/configService.js.map +1 -0
- package/dist/services/internal/errorService.d.ts +30 -0
- package/{src/services/internal/errorService.ts → dist/services/internal/errorService.js} +35 -54
- package/dist/services/internal/errorService.js.map +1 -0
- package/dist/services/internal/eventService.d.ts +52 -0
- package/dist/services/internal/eventService.js +66 -0
- package/dist/services/internal/eventService.js.map +1 -0
- package/dist/services/internal/priceService.d.ts +1 -0
- package/dist/services/internal/priceService.js +7 -0
- package/dist/services/internal/priceService.js.map +1 -0
- package/dist/services/internal/transactionService.d.ts +43 -0
- package/dist/services/internal/transactionService.js +172 -0
- package/dist/services/internal/transactionService.js.map +1 -0
- package/dist/services/internal/transactionStatusService.d.ts +28 -0
- package/dist/services/internal/transactionStatusService.js +225 -0
- package/dist/services/internal/transactionStatusService.js.map +1 -0
- package/dist/services/internal/walletService.d.ts +28 -0
- package/dist/services/internal/walletService.js +123 -0
- package/dist/services/internal/walletService.js.map +1 -0
- package/dist/tests/assetsService.test.d.ts +1 -0
- package/dist/tests/assetsService.test.js +130 -0
- package/dist/tests/assetsService.test.js.map +1 -0
- package/dist/tests/configService.test.d.ts +1 -0
- package/dist/tests/configService.test.js +295 -0
- package/dist/tests/configService.test.js.map +1 -0
- package/dist/tests/fetchSquidData.d.ts +6 -0
- package/dist/tests/fetchSquidData.js +27 -0
- package/dist/tests/fetchSquidData.js.map +1 -0
- package/{src/tests/jest-svg-transform.ts → dist/tests/jest-svg-transform.js} +11 -9
- package/dist/tests/jest-svg-transform.js.map +1 -0
- package/dist/tests/sample.json +0 -0
- package/dist/tests/walletService.test.d.ts +1 -0
- package/dist/tests/walletService.test.js +74 -0
- package/dist/tests/walletService.test.js.map +1 -0
- package/package.json +5 -1
- package/.babelrc +0 -7
- package/.eslintignore +0 -1
- package/.eslintrc.json +0 -44
- package/CHANGELOG.md +0 -9
- package/jest.config.ts +0 -28
- package/scripts/copyAssets.js +0 -27
- package/scripts/removeBuildTestFolder.js +0 -28
- package/scripts/replacePaths.js +0 -37
- package/src/connectors/LedgerLiveConnector.ts +0 -226
- package/src/contracts/typechain/ERC20.d.ts +0 -441
- package/src/contracts/typechain/factories/ERC20__factory.ts +0 -340
- package/src/core/constants.ts +0 -549
- package/src/core/multicall3.ts +0 -22
- package/src/core/numbers.ts +0 -44
- package/src/core/providers/CosmosProvider.tsx +0 -55
- package/src/core/queries/queries-keys.ts +0 -156
- package/src/core/queries/react-query-config.ts +0 -13
- package/src/core/types/components.ts +0 -16
- package/src/core/types/config.ts +0 -52
- package/src/core/types/dex.ts +0 -31
- package/src/core/types/error.ts +0 -52
- package/src/core/types/event.ts +0 -16
- package/src/core/types/route.ts +0 -21
- package/src/core/types/swap.ts +0 -8
- package/src/core/types/tokens.ts +0 -30
- package/src/core/types/transaction.ts +0 -84
- package/src/core/types/types.ts +0 -37
- package/src/core/types/wallet.ts +0 -83
- package/src/hooks/chains/useSquidChains.ts +0 -66
- package/src/hooks/cosmos/useCosmos.ts +0 -279
- package/src/hooks/cosmos/useCosmosForChain.ts +0 -33
- package/src/hooks/navigation/useKeyboardNavigation.ts +0 -88
- package/src/hooks/store/useSquidStore.ts +0 -80
- package/src/hooks/swap/useSwap.ts +0 -359
- package/src/hooks/tokens/useAllTokensWithBalance.ts +0 -157
- package/src/hooks/tokens/useBalance.ts +0 -180
- package/src/hooks/tokens/useMultiChainBalance.ts +0 -59
- package/src/hooks/tokens/usePrices.ts +0 -52
- package/src/hooks/tokens/useSingleTokenPrice.ts +0 -45
- package/src/hooks/tokens/useSquidTokens.ts +0 -48
- package/src/hooks/tokens/useTokensWithBalance.ts +0 -169
- package/src/hooks/transaction/useEstimate.ts +0 -397
- package/src/hooks/transaction/useEstimatePriceImpact.ts +0 -39
- package/src/hooks/transaction/useExecuteTransaction.ts +0 -440
- package/src/hooks/transaction/useExpress.ts +0 -46
- package/src/hooks/transaction/useGetRoute.ts +0 -145
- package/src/hooks/transaction/useSingleTransaction.ts +0 -155
- package/src/hooks/transaction/useTransaction.ts +0 -734
- package/src/hooks/user/useUserParams.ts +0 -63
- package/src/hooks/wallet/useAddToken.ts +0 -53
- package/src/hooks/wallet/useAutoConnect.ts +0 -56
- package/src/hooks/wallet/useGnosisContext.ts +0 -84
- package/src/hooks/wallet/useIntegratorContext.ts +0 -44
- package/src/hooks/wallet/useMultiChainWallet.ts +0 -146
- package/src/hooks/wallet/useWallet.ts +0 -86
- package/src/hooks/webapp-router/useSquidRouter.ts +0 -42
- package/src/provider/index.tsx +0 -105
- package/src/react-app-env.d.ts +0 -2
- package/src/services/external/analyticsService.ts +0 -46
- package/src/services/external/coingeckoService.ts +0 -35
- package/src/services/external/rpcService.ts +0 -196
- package/src/services/external/secretService.ts +0 -178
- package/src/services/internal/apiService.ts +0 -6
- package/src/services/internal/assetsService.ts +0 -84
- package/src/services/internal/configService.ts +0 -261
- package/src/services/internal/eventService.ts +0 -93
- package/src/services/internal/priceService.ts +0 -10
- package/src/services/internal/transactionService.ts +0 -255
- package/src/services/internal/transactionStatusService.ts +0 -293
- package/src/services/internal/walletService.ts +0 -158
- package/src/tests/assetsService.test.ts +0 -176
- package/src/tests/configService.test.ts +0 -486
- package/src/tests/fetchSquidData.ts +0 -43
- package/src/tests/walletService.test.ts +0 -178
- package/tsconfig.cjs.json +0 -8
- package/tsconfig.json +0 -31
- /package/{src → dist}/assets/images/icons/wallets/binance.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/bitget.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/bitkeep.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/blockchaindotcom.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/brave.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/c98.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/coinbase.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/cosmostation.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/defiConnect.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/exodus.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/fetchai.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/keplr.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/leap.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/metamask.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/okx.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/rabby.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/trustwallet.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/walletConnect.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/wallet_icon.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/xdefi.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/zerion.svg +0 -0
- /package/{src → dist}/contracts/typechain/factories/ERC20__factory.d.ts +0 -0
- /package/{src/core/index.ts → dist/core/index.d.ts} +0 -0
- /package/{src/services/index.ts → dist/services/index.d.ts} +0 -0
- /package/{src/tests/sample.json → dist/tests/jest-svg-transform.d.ts} +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { getProvider } from "@wagmi/core";
|
|
3
|
+
import { ethers, utils } from "ethers";
|
|
4
|
+
import { useAccount } from "wagmi";
|
|
5
|
+
import { ERC20__factory } from "./../../contracts/typechain/factories/ERC20__factory";
|
|
6
|
+
import { nativeEvmTokenAddress } from "./../../core/constants";
|
|
7
|
+
import { useCosmosContext } from "./../../core/providers/CosmosProvider";
|
|
8
|
+
import { keys } from "./../../core/queries/queries-keys";
|
|
9
|
+
import { useCosmosForChain } from "./../../hooks/cosmos/useCosmosForChain";
|
|
10
|
+
import { useSquidStore } from "./../../hooks/store/useSquidStore";
|
|
11
|
+
import { useSwap } from "./../../hooks/swap/useSwap";
|
|
12
|
+
import { useSquidTokens } from "./../../hooks/tokens/useSquidTokens";
|
|
13
|
+
import { useAllTokensWithBalanceForChain } from "./../../hooks/tokens/useTokensWithBalance";
|
|
14
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
15
|
+
import { useMemo } from "react";
|
|
16
|
+
const defaultRefreshIntervalMs = 15000;
|
|
17
|
+
/**
|
|
18
|
+
* Fetches the balance of a user on an EVM chain.
|
|
19
|
+
* The balance fetching only happens if the chain and token data are available, the user is connected, and the chain type is EVM.
|
|
20
|
+
*
|
|
21
|
+
* @param {boolean} enabled A flag indicating whether the balance fetching is enabled or not. Defaults to true.
|
|
22
|
+
* @param {boolean} refreshIntervalMs The interval in milliseconds at which the balance is fetched. Defaults to 15000 ms.
|
|
23
|
+
*
|
|
24
|
+
* @returns {Object} The react query object containing the balance data (defaults to "0").
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
27
|
+
export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refreshIntervalMs = defaultRefreshIntervalMs, }) => {
|
|
28
|
+
const { isConnected } = useAccount();
|
|
29
|
+
const { config } = useSquidStore();
|
|
30
|
+
const balance = useQuery(keys({ address: userAddress, apiUrl: config.apiUrl }).balance(chain?.chainId, token?.address, userAddress), async () => {
|
|
31
|
+
if (!!chain &&
|
|
32
|
+
isConnected &&
|
|
33
|
+
!!token?.address &&
|
|
34
|
+
chain.chainType === ChainType.EVM) {
|
|
35
|
+
const srcProvider = getProvider({ chainId: +(chain.chainId ?? 1) });
|
|
36
|
+
const srcTokenContract = new ethers.Contract(token?.address, ERC20__factory.abi, srcProvider);
|
|
37
|
+
if (token.address.toLowerCase() === nativeEvmTokenAddress) {
|
|
38
|
+
const nativeCurrencyBalance = await srcProvider.getBalance(userAddress);
|
|
39
|
+
return utils.formatUnits(nativeCurrencyBalance, token?.decimals);
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const tokenBalance = await srcTokenContract.balanceOf(userAddress);
|
|
43
|
+
return utils.formatUnits(tokenBalance, token?.decimals);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return "0";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return "0";
|
|
51
|
+
}
|
|
52
|
+
}, {
|
|
53
|
+
enabled: isConnected && enabled,
|
|
54
|
+
refetchInterval: 0 ? false : refreshIntervalMs,
|
|
55
|
+
retry: 2,
|
|
56
|
+
});
|
|
57
|
+
return { balance };
|
|
58
|
+
};
|
|
59
|
+
export const useNativeTokenBalanceFromChain = () => {
|
|
60
|
+
const { isConnected, address } = useAccount();
|
|
61
|
+
const { config } = useSquidStore();
|
|
62
|
+
const { fromChain } = useSwap();
|
|
63
|
+
const chainId = fromChain?.chainId;
|
|
64
|
+
const balance = useQuery(keys({ address, apiUrl: config.apiUrl }).nativeBalanceBigNumber(chainId), async () => {
|
|
65
|
+
const srcProvider = getProvider({ chainId: +(chainId ?? 1) });
|
|
66
|
+
const nativeCurrencyBalance = await srcProvider.getBalance(address);
|
|
67
|
+
return nativeCurrencyBalance;
|
|
68
|
+
}, {
|
|
69
|
+
enabled: isConnected,
|
|
70
|
+
});
|
|
71
|
+
return { balance };
|
|
72
|
+
};
|
|
73
|
+
export const useNativeTokenBalanceDestinationChain = () => {
|
|
74
|
+
const { isConnected, address } = useAccount();
|
|
75
|
+
const { config } = useSquidStore();
|
|
76
|
+
const { toChain } = useSwap();
|
|
77
|
+
const { tokens } = useSquidTokens();
|
|
78
|
+
const chainId = toChain?.chainId;
|
|
79
|
+
const nativeToken = tokens.find((t) => t.symbol.toLowerCase() === toChain?.nativeCurrency.symbol.toLowerCase() &&
|
|
80
|
+
t.chainId === chainId);
|
|
81
|
+
const balance = useQuery(keys({ address, apiUrl: config.apiUrl }).nativeBalanceBigNumber(chainId, nativeToken?.address), async () => {
|
|
82
|
+
const srcProvider = getProvider({ chainId: +(chainId ?? 1) });
|
|
83
|
+
const nativeCurrencyBalance = await srcProvider.getBalance(address);
|
|
84
|
+
return nativeCurrencyBalance;
|
|
85
|
+
}, {
|
|
86
|
+
enabled: isConnected && !!nativeToken,
|
|
87
|
+
});
|
|
88
|
+
return { balance };
|
|
89
|
+
};
|
|
90
|
+
export const useCosmosBalance = ({ chainData, token, userAddress, }) => {
|
|
91
|
+
const { isConnected } = useCosmosContext();
|
|
92
|
+
const { cosmosAddress } = useCosmosForChain(chainData);
|
|
93
|
+
const { cosmosBalances } = useAllTokensWithBalanceForChain(chainData);
|
|
94
|
+
const walletAddressToFetch = userAddress ?? cosmosAddress;
|
|
95
|
+
const balance = useMemo(() => {
|
|
96
|
+
if (walletAddressToFetch &&
|
|
97
|
+
chainData &&
|
|
98
|
+
chainData.chainType === ChainType.COSMOS &&
|
|
99
|
+
isConnected) {
|
|
100
|
+
return (cosmosBalances?.data?.find((b) => b.address === token?.address && b.chainId === chainData.chainId)?.balance ?? "0");
|
|
101
|
+
}
|
|
102
|
+
return "0";
|
|
103
|
+
}, [
|
|
104
|
+
cosmosBalances.data,
|
|
105
|
+
walletAddressToFetch,
|
|
106
|
+
chainData,
|
|
107
|
+
token,
|
|
108
|
+
isConnected,
|
|
109
|
+
]);
|
|
110
|
+
return { balance };
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=useBalance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChainData, Token } from "@0xsquid/sdk/dist/types";
|
|
2
|
+
/**
|
|
3
|
+
* Exposes a hook to get balance depending on the chain type (EVM or Cosmos)
|
|
4
|
+
* @param {ChainData} chain
|
|
5
|
+
* @param {Token} token
|
|
6
|
+
* @param {string} userAddress
|
|
7
|
+
* @param {boolean} enabled
|
|
8
|
+
* @returns balance as string
|
|
9
|
+
*/
|
|
10
|
+
export declare const useMultiChainBalance: ({ chain, token, userAddress, enabled, }: {
|
|
11
|
+
chain?: ChainData;
|
|
12
|
+
token?: Token;
|
|
13
|
+
userAddress?: string;
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
}) => {
|
|
16
|
+
balance: string | undefined;
|
|
17
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useCosmosBalance, useEvmBalance } from "./../../hooks/tokens/useBalance";
|
|
2
|
+
import { ChainType } from "@0xsquid/sdk/dist/types";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
/**
|
|
5
|
+
* Exposes a hook to get balance depending on the chain type (EVM or Cosmos)
|
|
6
|
+
* @param {ChainData} chain
|
|
7
|
+
* @param {Token} token
|
|
8
|
+
* @param {string} userAddress
|
|
9
|
+
* @param {boolean} enabled
|
|
10
|
+
* @returns balance as string
|
|
11
|
+
*/
|
|
12
|
+
export const useMultiChainBalance = ({ chain, token, userAddress, enabled = true, }) => {
|
|
13
|
+
/**
|
|
14
|
+
* Get balance for EVM chain types
|
|
15
|
+
*/
|
|
16
|
+
const { balance: evmBalance } = useEvmBalance({
|
|
17
|
+
chain: chain,
|
|
18
|
+
token,
|
|
19
|
+
userAddress: userAddress ?? "",
|
|
20
|
+
enabled: chain?.chainType === ChainType.EVM && enabled,
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Get balance for Cosmos chain types
|
|
24
|
+
*/
|
|
25
|
+
const { balance: cosmosBalance } = useCosmosBalance({
|
|
26
|
+
chainData: chain,
|
|
27
|
+
token,
|
|
28
|
+
userAddress,
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Get either EVM or cosmos Balance
|
|
32
|
+
*/
|
|
33
|
+
const balance = useMemo(() => chain?.chainType === ChainType.EVM ? evmBalance.data : cosmosBalance, [evmBalance.data, chain, cosmosBalance]);
|
|
34
|
+
return { balance };
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=useMultiChainBalance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMultiChainBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useMultiChainBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO5E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,GAAG,IAAI,GAMf,EAAE,EAAE;IACH;;OAEG;IACH,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;QAC5C,KAAK,EAAE,KAAiB;QACxB,KAAK;QACL,WAAW,EAAE,WAAW,IAAI,EAAE;QAC9B,OAAO,EAAE,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,IAAI,OAAO;KACvD,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC;QAClD,SAAS,EAAE,KAAoB;QAC/B,KAAK;QACL,WAAW;KACZ,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EACtE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CACxC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { keys } from "./../../core/queries/queries-keys";
|
|
2
|
+
import { useSquidStore, useSwapRoutePersistStore, } from "./../../hooks/store/useSquidStore";
|
|
3
|
+
import { fetchPriceForToken } from "./../../services/external/coingeckoService";
|
|
4
|
+
import { useQuery } from "@tanstack/react-query";
|
|
5
|
+
export const usePrices = () => {
|
|
6
|
+
const { squid, config } = useSquidStore();
|
|
7
|
+
const { swapRoute } = useSwapRoutePersistStore();
|
|
8
|
+
/**
|
|
9
|
+
* Get token prices from Squid API
|
|
10
|
+
*/
|
|
11
|
+
const tokenPrices = useQuery(keys({ apiUrl: config.apiUrl }).tokensPrice(swapRoute), async () => {
|
|
12
|
+
const result = await Promise.all([
|
|
13
|
+
// From
|
|
14
|
+
fetchPriceForToken({
|
|
15
|
+
apiUrl: config.apiUrl,
|
|
16
|
+
chainId: swapRoute?.fromChainId?.toString(),
|
|
17
|
+
tokenAddress: swapRoute?.fromTokenAddress,
|
|
18
|
+
integratorId: config.integratorId,
|
|
19
|
+
}),
|
|
20
|
+
// To
|
|
21
|
+
fetchPriceForToken({
|
|
22
|
+
apiUrl: config.apiUrl,
|
|
23
|
+
chainId: swapRoute?.toChainId?.toString(),
|
|
24
|
+
tokenAddress: swapRoute?.toTokenAddress,
|
|
25
|
+
integratorId: config.integratorId,
|
|
26
|
+
}),
|
|
27
|
+
]);
|
|
28
|
+
return {
|
|
29
|
+
sourceTokenUsdPrice: result[0],
|
|
30
|
+
destinationTokenUsdPrice: result[1],
|
|
31
|
+
};
|
|
32
|
+
}, {
|
|
33
|
+
enabled: swapRoute &&
|
|
34
|
+
!!squid &&
|
|
35
|
+
!!swapRoute?.fromChainId &&
|
|
36
|
+
!!swapRoute?.toChainId &&
|
|
37
|
+
!!swapRoute?.toTokenAddress &&
|
|
38
|
+
!!swapRoute?.fromTokenAddress,
|
|
39
|
+
});
|
|
40
|
+
return { tokenPrices };
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=usePrices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePrices.js","sourceRoot":"","sources":["../../../src/hooks/tokens/usePrices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EACL,aAAa,EACb,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;IAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAEjD;;OAEG;IACH,MAAM,WAAW,GAAG,QAAQ,CAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EACtD,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/B,OAAO;YACP,kBAAkB,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE;gBAC3C,YAAY,EAAE,SAAS,EAAE,gBAAgB;gBACzC,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC;YACF,KAAK;YACL,kBAAkB,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE;gBACzC,YAAY,EAAE,SAAS,EAAE,cAAc;gBACvC,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC;SACH,CAAC,CAAC;QAEH,OAAO;YACL,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAW;YACxC,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAW;SAC9C,CAAC;IACJ,CAAC,EACD;QACE,OAAO,EACL,SAAS;YACT,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,SAAS,EAAE,WAAW;YACxB,CAAC,CAAC,SAAS,EAAE,SAAS;YACtB,CAAC,CAAC,SAAS,EAAE,cAAc;YAC3B,CAAC,CAAC,SAAS,EAAE,gBAAgB;KAChC,CACF,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Token } from "@0xsquid/sdk/dist/types";
|
|
2
|
+
/**
|
|
3
|
+
* If a component need to display price of a single token
|
|
4
|
+
* @param tokenData
|
|
5
|
+
* @returns
|
|
6
|
+
*/
|
|
7
|
+
export declare const useSingleTokenPrice: (tokenData: Pick<Token, "address" | "chainId"> | undefined) => {
|
|
8
|
+
tokenPrice: import("@tanstack/react-query").UseQueryResult<number, unknown>;
|
|
9
|
+
getUSDValue: (balance: string) => number;
|
|
10
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { keys } from "./../../core/queries/queries-keys";
|
|
2
|
+
import { useSquidStore } from "./../../hooks/store/useSquidStore";
|
|
3
|
+
import { fetchPriceForToken } from "./../../services/external/coingeckoService";
|
|
4
|
+
import { useQuery } from "@tanstack/react-query";
|
|
5
|
+
import { useAccount } from "wagmi";
|
|
6
|
+
/**
|
|
7
|
+
* If a component need to display price of a single token
|
|
8
|
+
* @param tokenData
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export const useSingleTokenPrice = (tokenData) => {
|
|
12
|
+
const { config } = useSquidStore();
|
|
13
|
+
const { address } = useAccount();
|
|
14
|
+
/**
|
|
15
|
+
* Get token price from Squid api
|
|
16
|
+
* Using coingecko under the hood
|
|
17
|
+
*/
|
|
18
|
+
const tokenPrice = useQuery(keys({ address, apiUrl: config.apiUrl }).singleTokenPrice(tokenData?.address, tokenData?.chainId), async () => {
|
|
19
|
+
const price = await fetchPriceForToken({
|
|
20
|
+
apiUrl: config.apiUrl,
|
|
21
|
+
chainId: tokenData?.chainId.toString(),
|
|
22
|
+
tokenAddress: tokenData?.address,
|
|
23
|
+
integratorId: config.integratorId,
|
|
24
|
+
});
|
|
25
|
+
return price;
|
|
26
|
+
});
|
|
27
|
+
const getUSDValue = (balance) => {
|
|
28
|
+
return parseFloat(tokenPrice.data?.toString() ?? "0") * parseFloat(balance);
|
|
29
|
+
};
|
|
30
|
+
return { tokenPrice, getUSDValue };
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=useSingleTokenPrice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSingleTokenPrice.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useSingleTokenPrice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,SAAyD,EACzD,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IAEjC;;;OAGG;IACH,MAAM,UAAU,GAAG,QAAQ,CACzB,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,gBAAgB,CACvD,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,CACnB,EACD,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE;YACtC,YAAY,EAAE,SAAS,EAAE,OAAO;YAChC,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE;QACtC,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC,CAAC;IAEF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACrC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const useSquidTokens: () => {
|
|
2
|
+
tokens: import("@0xsquid/squid-types").Token[];
|
|
3
|
+
fuseSearchOptions: {
|
|
4
|
+
isCaseSensitive: boolean;
|
|
5
|
+
threshold: number;
|
|
6
|
+
findAllMatches: boolean;
|
|
7
|
+
includeMatches: boolean;
|
|
8
|
+
keys: {
|
|
9
|
+
name: string;
|
|
10
|
+
weight: number;
|
|
11
|
+
}[];
|
|
12
|
+
};
|
|
13
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useSquidStore } from "./../../hooks/store/useSquidStore";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
export const useSquidTokens = () => {
|
|
4
|
+
const { squid, config } = useSquidStore();
|
|
5
|
+
const fuseSearchOptions = {
|
|
6
|
+
isCaseSensitive: false,
|
|
7
|
+
threshold: 0.1,
|
|
8
|
+
findAllMatches: false,
|
|
9
|
+
includeMatches: true,
|
|
10
|
+
keys: [
|
|
11
|
+
{
|
|
12
|
+
name: "symbol",
|
|
13
|
+
weight: 1, // highest relevance
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: "name",
|
|
17
|
+
weight: 0.8, // slightly less relevance than symbol
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
const tokens = useMemo(() => {
|
|
22
|
+
const unavailableChainIds = config.comingSoonChainIds?.map(String) ?? [];
|
|
23
|
+
// Remove tokens with same chainId and address
|
|
24
|
+
// and those from unavailable chains
|
|
25
|
+
const filteredTokens = squid?.tokens.filter((token, index, self) => {
|
|
26
|
+
const isTokenUnique = index ===
|
|
27
|
+
self.findIndex((t) => t.chainId === token.chainId && t.address === token.address);
|
|
28
|
+
const isUnavailableChainId = unavailableChainIds.includes(String(token.chainId));
|
|
29
|
+
return isTokenUnique && !isUnavailableChainId;
|
|
30
|
+
});
|
|
31
|
+
return filteredTokens ?? [];
|
|
32
|
+
}, [squid?.tokens]);
|
|
33
|
+
return { tokens, fuseSearchOptions };
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=useSquidTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSquidTokens.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useSquidTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;IAE1C,MAAM,iBAAiB,GAAG;QACxB,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,GAAG;QACd,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,IAAI;QAEpB,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,CAAC,EAAE,oBAAoB;aAChC;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,GAAG,EAAE,sCAAsC;aACpD;SACF;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,MAAM,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEzE,8CAA8C;QAC9C,oCAAoC;QACpC,MAAM,cAAc,GAAG,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACjE,MAAM,aAAa,GACjB,KAAK;gBACL,IAAI,CAAC,SAAS,CACZ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAClE,CAAC;YAEJ,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,QAAQ,CACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CACtB,CAAC;YAEF,OAAO,aAAa,IAAI,CAAC,oBAAoB,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,IAAI,EAAE,CAAC;IAC9B,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TokenWithBalance } from "@/core/types/tokens";
|
|
2
|
+
import type { ChainData, Token } from "@0xsquid/squid-types";
|
|
3
|
+
export declare const useAllTokensWithBalanceForChain: (chainData?: ChainData, address?: string) => {
|
|
4
|
+
evmBalances: import("@tanstack/react-query").UseQueryResult<TokenWithBalance[], unknown>;
|
|
5
|
+
cosmosBalances: import("@tanstack/react-query").UseQueryResult<TokenWithBalance[], unknown>;
|
|
6
|
+
tokens: Token[];
|
|
7
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { useCosmosContext } from "./../../core/providers/CosmosProvider";
|
|
2
|
+
import { keys } from "./../../core/queries/queries-keys";
|
|
3
|
+
import { useCosmosForChain } from "./../../hooks/cosmos/useCosmosForChain";
|
|
4
|
+
import { useSquidStore } from "./../../hooks/store/useSquidStore";
|
|
5
|
+
import { useSquidTokens } from "./../../hooks/tokens/useSquidTokens";
|
|
6
|
+
import { fetchPriceForToken } from "./../../services/external/coingeckoService";
|
|
7
|
+
import { getAllEvmTokensBalance, getWorkingCosmosRpcUrl, } from "./../../services/external/rpcService";
|
|
8
|
+
import { SECRET_CHAIN_ID, fetchAllSecretBalances, } from "./../../services/external/secretService";
|
|
9
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
10
|
+
import { StargateClient } from "@cosmjs/stargate";
|
|
11
|
+
import { useQuery } from "@tanstack/react-query";
|
|
12
|
+
import { formatUnits } from "ethers/lib/utils";
|
|
13
|
+
// TODO: Move this to a service
|
|
14
|
+
const getAllCosmosBalances = async ({ rpc, address, tokens, }) => {
|
|
15
|
+
const client = await StargateClient.connect(rpc);
|
|
16
|
+
const balanceAsCoin = await client.getAllBalances(address);
|
|
17
|
+
// Need to map tokens and put balance, based on denom
|
|
18
|
+
const tokensWithBalance = tokens.map((t) => {
|
|
19
|
+
const balanceCoin = balanceAsCoin?.find((c) => c.denom === t.address);
|
|
20
|
+
return {
|
|
21
|
+
...t,
|
|
22
|
+
balance: balanceCoin
|
|
23
|
+
? formatUnits(balanceCoin?.amount, t?.decimals)
|
|
24
|
+
: "0",
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
return tokensWithBalance;
|
|
28
|
+
};
|
|
29
|
+
export const useAllTokensWithBalanceForChain = (chainData, address = "") => {
|
|
30
|
+
const { config } = useSquidStore();
|
|
31
|
+
const { tokens: squidTokens } = useSquidTokens();
|
|
32
|
+
const { keplrTypeWallet, isConnected: isCosmosConnected } = useCosmosContext();
|
|
33
|
+
const { cosmosAddress } = useCosmosForChain(chainData);
|
|
34
|
+
const tokens = (squidTokens.filter((t) => t.chainId === chainData?.chainId) ??
|
|
35
|
+
[]);
|
|
36
|
+
const evmBalances = useQuery(keys({
|
|
37
|
+
apiUrl: config.apiUrl,
|
|
38
|
+
address,
|
|
39
|
+
}).tokensBalanceForChain(chainData?.chainType, chainData?.chainId), async () => {
|
|
40
|
+
if (chainData && tokens) {
|
|
41
|
+
const tokensBalance = await getAllEvmTokensBalance(tokens, address);
|
|
42
|
+
// Get Token usd price only for tokens which have balance > 0
|
|
43
|
+
const tokenUSDPrices = await Promise.all(tokensBalance?.map((t, _) => {
|
|
44
|
+
if (+t.balance !== 0) {
|
|
45
|
+
return fetchPriceForToken({
|
|
46
|
+
apiUrl: config.apiUrl,
|
|
47
|
+
chainId: t?.chainId.toString(),
|
|
48
|
+
tokenAddress: t?.address,
|
|
49
|
+
integratorId: config.integratorId,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return 0;
|
|
53
|
+
}) ?? []);
|
|
54
|
+
return (tokensBalance?.map((token, index) => {
|
|
55
|
+
return {
|
|
56
|
+
...token,
|
|
57
|
+
balance: token.balance,
|
|
58
|
+
priceUSD: tokenUSDPrices[index].toString(),
|
|
59
|
+
};
|
|
60
|
+
}) ?? []);
|
|
61
|
+
}
|
|
62
|
+
return tokens?.map((s) => ({ ...s, balance: "" })) ?? [];
|
|
63
|
+
}, {
|
|
64
|
+
enabled: chainData?.chainType === ChainType.EVM && !!tokens,
|
|
65
|
+
});
|
|
66
|
+
const cosmosBalances = useQuery(keys({
|
|
67
|
+
apiUrl: config.apiUrl,
|
|
68
|
+
address,
|
|
69
|
+
}).tokensBalanceForChain(chainData?.chainType, chainData?.chainId), async () => {
|
|
70
|
+
if (chainData) {
|
|
71
|
+
if (chainData.chainId === SECRET_CHAIN_ID && isCosmosConnected) {
|
|
72
|
+
const squidSecretTokens = squidTokens.filter((t) => t.chainId === SECRET_CHAIN_ID);
|
|
73
|
+
const secretTokens = await fetchAllSecretBalances(chainData, cosmosAddress, squidSecretTokens, keplrTypeWallet);
|
|
74
|
+
return secretTokens;
|
|
75
|
+
}
|
|
76
|
+
const rpc = await getWorkingCosmosRpcUrl(chainData);
|
|
77
|
+
const balances = await getAllCosmosBalances({
|
|
78
|
+
address,
|
|
79
|
+
rpc,
|
|
80
|
+
tokens,
|
|
81
|
+
});
|
|
82
|
+
// Get Token usd price only for tokens which have balance > 0
|
|
83
|
+
const tokenUSDPrices = await Promise.all(balances?.map((t, _) => {
|
|
84
|
+
if (+t.balance !== 0) {
|
|
85
|
+
return fetchPriceForToken({
|
|
86
|
+
apiUrl: config.apiUrl,
|
|
87
|
+
chainId: t?.chainId.toString(),
|
|
88
|
+
tokenAddress: t?.address,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return 0;
|
|
92
|
+
}) ?? []);
|
|
93
|
+
return (balances?.map((token, index) => {
|
|
94
|
+
return {
|
|
95
|
+
...token,
|
|
96
|
+
balance: token.balance,
|
|
97
|
+
priceUSD: tokenUSDPrices[index].toString(),
|
|
98
|
+
};
|
|
99
|
+
}) ?? []);
|
|
100
|
+
}
|
|
101
|
+
return [];
|
|
102
|
+
}, {
|
|
103
|
+
retry: false,
|
|
104
|
+
enabled: chainData?.chainType === ChainType.COSMOS &&
|
|
105
|
+
!!tokens &&
|
|
106
|
+
!!address &&
|
|
107
|
+
address.length > 0,
|
|
108
|
+
});
|
|
109
|
+
return { evmBalances, cosmosBalances, tokens };
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=useTokensWithBalance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTokensWithBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useTokensWithBalance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { FeeCost, GasCost } from "@0xsquid/squid-types";
|
|
2
|
+
import { BigNumber } from "ethers";
|
|
3
|
+
import { useGetRoute } from "./useGetRoute";
|
|
4
|
+
export declare const useEstimate: ({ squidRoute, }: {
|
|
5
|
+
squidRoute: ReturnType<typeof useGetRoute>;
|
|
6
|
+
}) => {
|
|
7
|
+
allFeeCosts: FeeCost[];
|
|
8
|
+
allGasCosts: GasCost[];
|
|
9
|
+
crossChainGasFee: FeeCost | undefined;
|
|
10
|
+
exchangeRate: string;
|
|
11
|
+
toAmountMin: string;
|
|
12
|
+
toAmount: string;
|
|
13
|
+
fromToken: import("@0xsquid/squid-types").Token | undefined;
|
|
14
|
+
toAmountUSD: string | undefined;
|
|
15
|
+
toAmountUSDFloat: number;
|
|
16
|
+
isFetching: boolean;
|
|
17
|
+
squidRouteError: unknown;
|
|
18
|
+
fromAmount: string | undefined;
|
|
19
|
+
fromAmountFormatted: string;
|
|
20
|
+
estimatedRouteDuration: number | undefined;
|
|
21
|
+
minAmountValueWarnMsg: string | undefined;
|
|
22
|
+
fromBalanceEnoughToSwap: boolean;
|
|
23
|
+
isFromTokenNative: boolean;
|
|
24
|
+
firstFeeCost: FeeCost | undefined;
|
|
25
|
+
firstGasCost: GasCost | undefined;
|
|
26
|
+
sameTokenBetweenFees: boolean;
|
|
27
|
+
totalFeesInNativeTokenPlusRatio: BigNumber;
|
|
28
|
+
totalNativeFees: BigNumber;
|
|
29
|
+
sourceChainNativeToken: import("@0xsquid/squid-types").Token | undefined;
|
|
30
|
+
expressFeeCost: FeeCost | undefined;
|
|
31
|
+
proposedGasDestinationAmount: {
|
|
32
|
+
value: number;
|
|
33
|
+
currency: string | undefined;
|
|
34
|
+
};
|
|
35
|
+
expectedGasRefundCost: BigNumber;
|
|
36
|
+
totalWithRefundEstimate: {
|
|
37
|
+
totalAmount: string;
|
|
38
|
+
totalAmountUSD: number;
|
|
39
|
+
feeToken: import("@0xsquid/squid-types").Token | undefined;
|
|
40
|
+
};
|
|
41
|
+
destChainNativeToken: import("@0xsquid/squid-types").Token | undefined;
|
|
42
|
+
integratorFeeCost: FeeCost | undefined;
|
|
43
|
+
enoughBalanceToSwap: boolean;
|
|
44
|
+
};
|