@0xsquid/react-hooks 3.0.29 → 3.0.30-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/constants.d.ts +4 -8
- package/dist/core/constants.js +4 -419
- package/dist/core/constants.js.map +1 -1
- package/dist/core/providers/CosmosProvider.d.ts +1 -2
- package/dist/core/queries/queries-keys.d.ts +10 -1
- package/dist/core/queries/queries-keys.js +26 -0
- package/dist/core/queries/queries-keys.js.map +1 -1
- package/dist/core/types/event.d.ts +7 -0
- package/dist/core/wallets.d.ts +9 -0
- package/dist/core/wallets.js +421 -0
- package/dist/core/wallets.js.map +1 -0
- package/dist/hooks/cosmos/useCosmos.d.ts +1 -3
- package/dist/hooks/cosmos/useCosmos.js +21 -27
- package/dist/hooks/cosmos/useCosmos.js.map +1 -1
- package/dist/hooks/index.d.ts +3 -2
- package/dist/hooks/index.js +3 -2
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/store/useWalletStore.d.ts +15 -0
- package/dist/hooks/store/useWalletStore.js +27 -0
- package/dist/hooks/store/useWalletStore.js.map +1 -0
- package/dist/hooks/tokens/useAllConnectedWalletBalances.d.ts +89 -0
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +52 -0
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +1 -0
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +41 -38
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +1 -1
- package/dist/hooks/tokens/useBalance.d.ts +109 -8
- package/dist/hooks/tokens/useBalance.js +29 -78
- package/dist/hooks/tokens/useBalance.js.map +1 -1
- package/dist/hooks/tokens/useMultiChainBalance.d.ts +1 -1
- package/dist/hooks/tokens/useMultiChainBalance.js +19 -6
- package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -1
- package/dist/hooks/tokens/useNativeBalance.d.ts +14 -0
- package/dist/hooks/tokens/useNativeBalance.js +80 -0
- package/dist/hooks/tokens/useNativeBalance.js.map +1 -0
- package/dist/hooks/tokens/useSquidTokens.js +6 -5
- package/dist/hooks/tokens/useSquidTokens.js.map +1 -1
- package/dist/hooks/tokens/useTokenHistoricalData.js +4 -3
- package/dist/hooks/tokens/useTokenHistoricalData.js.map +1 -1
- package/dist/hooks/transaction/useEstimate.js +2 -2
- package/dist/hooks/transaction/useEstimate.js.map +1 -1
- package/dist/hooks/transaction/useExecuteTransaction.js +10 -1
- package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -1
- package/dist/hooks/transaction/useSingleTransaction.d.ts +1 -1
- package/dist/hooks/wallet/useMultiChainWallet.d.ts +18 -4
- package/dist/hooks/wallet/useMultiChainWallet.js +48 -34
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -1
- package/dist/hooks/wallet/useWallet.d.ts +14 -6
- package/dist/hooks/wallet/useWallet.js +108 -61
- package/dist/hooks/wallet/useWallet.js.map +1 -1
- package/dist/provider/index.js +9 -1
- package/dist/provider/index.js.map +1 -1
- package/dist/services/external/rpcService.js +22 -12
- package/dist/services/external/rpcService.js.map +1 -1
- package/dist/services/external/secretService.js +2 -2
- package/dist/services/external/secretService.js.map +1 -1
- package/dist/services/internal/assetsService.d.ts +1 -0
- package/dist/services/internal/assetsService.js +6 -1
- package/dist/services/internal/assetsService.js.map +1 -1
- package/dist/services/internal/eventService.d.ts +10 -0
- package/dist/services/internal/eventService.js +14 -0
- package/dist/services/internal/eventService.js.map +1 -1
- package/dist/services/internal/transactionService.d.ts +1 -1
- package/dist/services/internal/walletService.d.ts +36 -7
- package/dist/services/internal/walletService.js +82 -21
- package/dist/services/internal/walletService.js.map +1 -1
- package/dist/tests/assetsService.test.js +2 -2
- package/dist/tests/assetsService.test.js.map +1 -1
- package/dist/tests/configService.test.js +29 -17
- package/dist/tests/configService.test.js.map +1 -1
- package/dist/tests/fetchSquidData.js +1 -1
- package/dist/tests/fetchSquidData.js.map +1 -1
- package/dist/tests/walletService.test.js +76 -1
- package/dist/tests/walletService.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/hooks/tokens/useTokensWithBalance.d.ts +0 -7
- package/dist/hooks/tokens/useTokensWithBalance.js +0 -53
- package/dist/hooks/tokens/useTokensWithBalance.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
+
import { Wallet } from "../../core/types";
|
|
3
|
+
interface WalletState {
|
|
4
|
+
connectedWalletsByChainType: Record<ChainType, {
|
|
5
|
+
wallet: Wallet | undefined;
|
|
6
|
+
address: string | undefined;
|
|
7
|
+
}>;
|
|
8
|
+
connectingWallet: Wallet | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare const useWalletStore: import("zustand").UseBoundStore<import("zustand").StoreApi<WalletState & {
|
|
11
|
+
setConnectedWallet: (chainType: ChainType, wallet: Wallet | undefined, address: string | undefined) => void;
|
|
12
|
+
setConnectingWallet: (wallet: Wallet | undefined) => void;
|
|
13
|
+
disconnectWallet: (chainType: ChainType) => void;
|
|
14
|
+
}>>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
+
import { create } from "zustand";
|
|
3
|
+
const initialWalletState = {
|
|
4
|
+
connectedWalletsByChainType: {
|
|
5
|
+
[ChainType.EVM]: { wallet: undefined, address: undefined },
|
|
6
|
+
[ChainType.COSMOS]: { wallet: undefined, address: undefined },
|
|
7
|
+
[ChainType.BTC]: { wallet: undefined, address: undefined },
|
|
8
|
+
},
|
|
9
|
+
connectingWallet: undefined,
|
|
10
|
+
};
|
|
11
|
+
export const useWalletStore = create((set) => ({
|
|
12
|
+
...initialWalletState,
|
|
13
|
+
setConnectedWallet: (chainType, wallet, address) => set((state) => ({
|
|
14
|
+
connectedWalletsByChainType: {
|
|
15
|
+
...state.connectedWalletsByChainType,
|
|
16
|
+
[chainType]: { wallet, address },
|
|
17
|
+
},
|
|
18
|
+
})),
|
|
19
|
+
setConnectingWallet: (wallet) => set({ connectingWallet: wallet }),
|
|
20
|
+
disconnectWallet: (chainType) => set((state) => ({
|
|
21
|
+
connectedWalletsByChainType: {
|
|
22
|
+
...state.connectedWalletsByChainType,
|
|
23
|
+
[chainType]: { wallet: null, address: null },
|
|
24
|
+
},
|
|
25
|
+
})),
|
|
26
|
+
}));
|
|
27
|
+
//# sourceMappingURL=useWalletStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWalletStore.js","sourceRoot":"","sources":["../../../src/hooks/store/useWalletStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAWjC,MAAM,kBAAkB,GAAgB;IACtC,2BAA2B,EAAE;QAC3B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;QAC1D,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;QAC7D,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;KAC3D;IACD,gBAAgB,EAAE,SAAS;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAUlC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACV,GAAG,kBAAkB;IACrB,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CACjD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACd,2BAA2B,EAAE;YAC3B,GAAG,KAAK,CAAC,2BAA2B;YACpC,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;SACjC;KACF,CAAC,CAAC;IACL,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAClE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAC9B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACd,2BAA2B,EAAE;YAC3B,GAAG,KAAK,CAAC,2BAA2B;YACpC,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC7C;KACF,CAAC,CAAC;CACN,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
+
export declare const useAllConnectedWalletBalances: () => {
|
|
3
|
+
groupedBalances: {
|
|
4
|
+
evm: {
|
|
5
|
+
balance: string;
|
|
6
|
+
type: ChainType;
|
|
7
|
+
chainId: string;
|
|
8
|
+
address: string;
|
|
9
|
+
name: string;
|
|
10
|
+
symbol: string;
|
|
11
|
+
decimals: number;
|
|
12
|
+
logoURI?: string | undefined;
|
|
13
|
+
coingeckoId?: string | undefined;
|
|
14
|
+
interchainTokenId?: string | undefined;
|
|
15
|
+
volatility: import("@0xsquid/squid-types").Volatility;
|
|
16
|
+
usdPrice?: number | undefined;
|
|
17
|
+
axelarNetworkSymbol?: string | undefined;
|
|
18
|
+
subGraphOnly?: boolean | undefined;
|
|
19
|
+
subGraphIds?: string[] | undefined;
|
|
20
|
+
feeOnTransfer?: boolean | undefined;
|
|
21
|
+
isLpToken?: boolean | undefined;
|
|
22
|
+
disabled?: boolean | undefined;
|
|
23
|
+
}[];
|
|
24
|
+
cosmos: {
|
|
25
|
+
balance: string;
|
|
26
|
+
type: ChainType;
|
|
27
|
+
chainId: string;
|
|
28
|
+
address: string;
|
|
29
|
+
name: string;
|
|
30
|
+
symbol: string;
|
|
31
|
+
decimals: number;
|
|
32
|
+
logoURI?: string | undefined;
|
|
33
|
+
coingeckoId?: string | undefined;
|
|
34
|
+
interchainTokenId?: string | undefined;
|
|
35
|
+
volatility: import("@0xsquid/squid-types").Volatility;
|
|
36
|
+
usdPrice?: number | undefined;
|
|
37
|
+
axelarNetworkSymbol?: string | undefined;
|
|
38
|
+
subGraphOnly?: boolean | undefined;
|
|
39
|
+
subGraphIds?: string[] | undefined;
|
|
40
|
+
feeOnTransfer?: boolean | undefined;
|
|
41
|
+
isLpToken?: boolean | undefined;
|
|
42
|
+
disabled?: boolean | undefined;
|
|
43
|
+
}[];
|
|
44
|
+
bitcoin: {
|
|
45
|
+
balance: string;
|
|
46
|
+
type: ChainType;
|
|
47
|
+
chainId: string;
|
|
48
|
+
address: string;
|
|
49
|
+
name: string;
|
|
50
|
+
symbol: string;
|
|
51
|
+
decimals: number;
|
|
52
|
+
logoURI?: string | undefined;
|
|
53
|
+
coingeckoId?: string | undefined;
|
|
54
|
+
interchainTokenId?: string | undefined;
|
|
55
|
+
volatility: import("@0xsquid/squid-types").Volatility;
|
|
56
|
+
usdPrice?: number | undefined;
|
|
57
|
+
axelarNetworkSymbol?: string | undefined;
|
|
58
|
+
subGraphOnly?: boolean | undefined;
|
|
59
|
+
subGraphIds?: string[] | undefined;
|
|
60
|
+
feeOnTransfer?: boolean | undefined;
|
|
61
|
+
isLpToken?: boolean | undefined;
|
|
62
|
+
disabled?: boolean | undefined;
|
|
63
|
+
}[];
|
|
64
|
+
};
|
|
65
|
+
isInitialLoading: boolean;
|
|
66
|
+
isFetching: boolean;
|
|
67
|
+
isLoading: boolean;
|
|
68
|
+
tokens: {
|
|
69
|
+
balance: string;
|
|
70
|
+
type: ChainType;
|
|
71
|
+
chainId: string;
|
|
72
|
+
address: string;
|
|
73
|
+
name: string;
|
|
74
|
+
symbol: string;
|
|
75
|
+
decimals: number;
|
|
76
|
+
logoURI?: string | undefined;
|
|
77
|
+
coingeckoId?: string | undefined;
|
|
78
|
+
interchainTokenId?: string | undefined;
|
|
79
|
+
volatility: import("@0xsquid/squid-types").Volatility;
|
|
80
|
+
usdPrice?: number | undefined;
|
|
81
|
+
axelarNetworkSymbol?: string | undefined;
|
|
82
|
+
subGraphOnly?: boolean | undefined;
|
|
83
|
+
subGraphIds?: string[] | undefined;
|
|
84
|
+
feeOnTransfer?: boolean | undefined;
|
|
85
|
+
isLpToken?: boolean | undefined;
|
|
86
|
+
disabled?: boolean | undefined;
|
|
87
|
+
}[];
|
|
88
|
+
totalUsdBalance: number;
|
|
89
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useSquidChains } from "../chains/useSquidChains";
|
|
4
|
+
import { useWallet } from "../wallet/useWallet";
|
|
5
|
+
import { useAllTokensWithBalanceForChainType } from "./useAllTokensWithBalanceForChainType";
|
|
6
|
+
export const useAllConnectedWalletBalances = () => {
|
|
7
|
+
const { findChain } = useSquidChains();
|
|
8
|
+
const { connectedAddresses } = useWallet();
|
|
9
|
+
const evmBalances = useAllTokensWithBalanceForChainType({
|
|
10
|
+
chainType: ChainType.EVM,
|
|
11
|
+
address: connectedAddresses[ChainType.EVM] ?? undefined,
|
|
12
|
+
});
|
|
13
|
+
const cosmosBalances = useAllTokensWithBalanceForChainType({
|
|
14
|
+
chainType: ChainType.COSMOS,
|
|
15
|
+
address: connectedAddresses[ChainType.COSMOS] ?? undefined,
|
|
16
|
+
});
|
|
17
|
+
const allTokens = useMemo(() => [...evmBalances.tokens, ...cosmosBalances.tokens], [evmBalances.tokens, cosmosBalances.tokens]);
|
|
18
|
+
const groupedBalances = useMemo(() => {
|
|
19
|
+
const grouped = allTokens.reduce((acc, token) => {
|
|
20
|
+
const chainType = findChain(token.chainId)?.chainType;
|
|
21
|
+
if (chainType) {
|
|
22
|
+
if (!acc[chainType]) {
|
|
23
|
+
acc[chainType] = [];
|
|
24
|
+
}
|
|
25
|
+
acc[chainType].push(token);
|
|
26
|
+
}
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
return {
|
|
30
|
+
[ChainType.EVM]: grouped[ChainType.EVM] || [],
|
|
31
|
+
[ChainType.COSMOS]: grouped[ChainType.COSMOS] || [],
|
|
32
|
+
[ChainType.BTC]: grouped[ChainType.BTC] || [],
|
|
33
|
+
};
|
|
34
|
+
}, [allTokens, findChain]);
|
|
35
|
+
const totalUsdBalance = useMemo(() => Number(evmBalances.totalUsdBalance) +
|
|
36
|
+
Number(cosmosBalances.totalUsdBalance), [evmBalances.totalUsdBalance, cosmosBalances.totalUsdBalance]);
|
|
37
|
+
const isInitialLoading = evmBalances.tokensWithBalanceQuery.isInitialLoading ||
|
|
38
|
+
cosmosBalances.tokensWithBalanceQuery.isInitialLoading;
|
|
39
|
+
const isFetching = evmBalances.tokensWithBalanceQuery.isFetching ||
|
|
40
|
+
cosmosBalances.tokensWithBalanceQuery.isFetching;
|
|
41
|
+
const isLoading = evmBalances.tokensWithBalanceQuery.isLoading ||
|
|
42
|
+
cosmosBalances.tokensWithBalanceQuery.isLoading;
|
|
43
|
+
return {
|
|
44
|
+
groupedBalances,
|
|
45
|
+
isInitialLoading,
|
|
46
|
+
isFetching,
|
|
47
|
+
isLoading,
|
|
48
|
+
tokens: allTokens,
|
|
49
|
+
totalUsdBalance,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=useAllConnectedWalletBalances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAllConnectedWalletBalances.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllConnectedWalletBalances.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,21 +10,23 @@ import { useSquidTokens } from "./useSquidTokens";
|
|
|
10
10
|
export const useAllTokensWithBalanceForChainType = ({ chainType, address, direction, queryOptions, }) => {
|
|
11
11
|
const { cosmosChains, chains } = useSquidChains(direction);
|
|
12
12
|
const { evmTokens, cosmosTokens } = useSquidTokens(direction);
|
|
13
|
-
const { keplrTypeWallet
|
|
13
|
+
const { keplrTypeWallet } = useCosmosContext();
|
|
14
14
|
const tokensWithZeroBalance = useMemo(() => ({
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
[ChainType.EVM]: evmTokens.map((t) => ({ ...t, balance: "0" })),
|
|
16
|
+
[ChainType.COSMOS]: cosmosTokens.map((t) => ({ ...t, balance: "0" })),
|
|
17
|
+
[ChainType.BTC]: [],
|
|
17
18
|
}), [evmTokens, cosmosTokens]);
|
|
18
19
|
const evmTokensQuery = useQuery(keys().allTokensBalance(address, ChainType.EVM), async () => {
|
|
19
20
|
const evmTokensBalances = await getAllEvmTokensBalance(evmTokens, address, chains);
|
|
20
21
|
return evmTokensBalances;
|
|
21
22
|
}, {
|
|
22
23
|
...queryOptions,
|
|
23
|
-
enabled:
|
|
24
|
+
enabled: evmTokens.length > 0 &&
|
|
25
|
+
chainType === ChainType.EVM &&
|
|
24
26
|
!!address &&
|
|
25
|
-
|
|
27
|
+
queryOptions?.enabled !== false,
|
|
26
28
|
});
|
|
27
|
-
const cosmosTokensQuery = useQuery(keys().allTokensBalance(
|
|
29
|
+
const cosmosTokensQuery = useQuery(keys().allTokensBalance(address, ChainType.COSMOS), async () => {
|
|
28
30
|
const addresses = await getAllKeysForSupportedCosmosChains(cosmosChains.map((c) => c.chainId), keplrTypeWallet);
|
|
29
31
|
const cosmosBalances = await getAllCosmosBalancesForAddress({
|
|
30
32
|
addresses,
|
|
@@ -34,44 +36,45 @@ export const useAllTokensWithBalanceForChainType = ({ chainType, address, direct
|
|
|
34
36
|
return cosmosBalances;
|
|
35
37
|
}, {
|
|
36
38
|
...queryOptions,
|
|
37
|
-
enabled:
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
enabled: cosmosTokens.length > 0 &&
|
|
40
|
+
chainType === ChainType.COSMOS &&
|
|
41
|
+
!!address &&
|
|
42
|
+
queryOptions?.enabled !== false,
|
|
40
43
|
});
|
|
41
|
-
// We want tokens with balance for desired chainType and the other chainType with zero balance
|
|
42
|
-
// This way frontend can still display all tokens no matter the chainType
|
|
43
44
|
const tokensWithBalanceQuery = useMemo(() => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
...evmTokensQuery,
|
|
56
|
-
data: [
|
|
57
|
-
...(evmTokensQuery.data ?? tokensWithZeroBalance.evm),
|
|
58
|
-
...tokensWithZeroBalance.cosmos,
|
|
59
|
-
],
|
|
60
|
-
};
|
|
45
|
+
let baseQuery;
|
|
46
|
+
switch (chainType) {
|
|
47
|
+
case ChainType.COSMOS:
|
|
48
|
+
baseQuery = cosmosTokensQuery;
|
|
49
|
+
break;
|
|
50
|
+
case ChainType.EVM:
|
|
51
|
+
baseQuery = evmTokensQuery;
|
|
52
|
+
break;
|
|
53
|
+
default:
|
|
54
|
+
baseQuery = { data: tokensWithZeroBalance[ChainType.EVM] };
|
|
61
55
|
}
|
|
62
|
-
// Kind of a hack reusing evmTokensQuery just have the full type of react-query returned
|
|
63
|
-
// Putting tokens with zero balance for all chainTypes
|
|
64
56
|
return {
|
|
65
|
-
...
|
|
66
|
-
isLoading: false,
|
|
67
|
-
isSuccess: true,
|
|
68
|
-
data:
|
|
57
|
+
...baseQuery,
|
|
58
|
+
isLoading: chainType ? baseQuery.isLoading : false,
|
|
59
|
+
isSuccess: chainType ? baseQuery.isSuccess : true,
|
|
60
|
+
data: baseQuery.data ??
|
|
61
|
+
tokensWithZeroBalance[chainType ?? ChainType.EVM] ??
|
|
62
|
+
[],
|
|
69
63
|
};
|
|
70
64
|
}, [chainType, cosmosTokensQuery, evmTokensQuery, tokensWithZeroBalance]);
|
|
71
|
-
const tokens = useMemo(() =>
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
const tokens = useMemo(() => {
|
|
66
|
+
if (!chainType) {
|
|
67
|
+
return [
|
|
68
|
+
...tokensWithZeroBalance[ChainType.EVM],
|
|
69
|
+
...tokensWithZeroBalance[ChainType.COSMOS],
|
|
70
|
+
...tokensWithZeroBalance[ChainType.BTC],
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
const selectedChainTokens = tokensWithBalanceQuery.data ?? tokensWithZeroBalance[chainType];
|
|
74
|
+
const otherChainTypes = Object.values(ChainType).filter((type) => type !== chainType);
|
|
75
|
+
const otherChainTokens = otherChainTypes.flatMap((type) => tokensWithZeroBalance[type]);
|
|
76
|
+
return [...selectedChainTokens, ...otherChainTokens];
|
|
77
|
+
}, [tokensWithBalanceQuery.data, tokensWithZeroBalance, chainType]);
|
|
75
78
|
const totalUsdBalance = useMemo(() => calculateTotalUsdBalanceUSD(tokens), [tokens]);
|
|
76
79
|
return {
|
|
77
80
|
tokensWithBalanceQuery,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAllTokensWithBalanceForChainType.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllTokensWithBalanceForChainType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGL,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,EAClD,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,GAMb,EAAE,EAAE;IACH,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"useAllTokensWithBalanceForChainType.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllTokensWithBalanceForChainType.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,17 +8,118 @@ export declare const useEvmBalance: ({ chain, token, userAddress, enabled, refre
|
|
|
8
8
|
}) => {
|
|
9
9
|
balance: string;
|
|
10
10
|
};
|
|
11
|
-
export declare const useCosmosBalance: ({ chainData, token, userAddress, }: {
|
|
11
|
+
export declare const useCosmosBalance: ({ chainData, token, userAddress, enabled, refreshIntervalMs, }: {
|
|
12
12
|
chainData: CosmosChain | undefined;
|
|
13
13
|
token?: Token | undefined;
|
|
14
14
|
userAddress?: string | undefined;
|
|
15
|
+
enabled?: boolean | undefined;
|
|
16
|
+
refreshIntervalMs?: number | undefined;
|
|
15
17
|
}) => {
|
|
16
18
|
balance: string;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
data: string;
|
|
20
|
+
error: unknown;
|
|
21
|
+
isError: true;
|
|
22
|
+
isLoading: false;
|
|
23
|
+
isLoadingError: false;
|
|
24
|
+
isRefetchError: true;
|
|
25
|
+
isSuccess: false;
|
|
26
|
+
status: "error";
|
|
27
|
+
dataUpdatedAt: number;
|
|
28
|
+
errorUpdatedAt: number;
|
|
29
|
+
failureCount: number;
|
|
30
|
+
failureReason: unknown;
|
|
31
|
+
errorUpdateCount: number;
|
|
32
|
+
isFetched: boolean;
|
|
33
|
+
isFetchedAfterMount: boolean;
|
|
34
|
+
isFetching: boolean;
|
|
35
|
+
isInitialLoading: boolean;
|
|
36
|
+
isPaused: boolean;
|
|
37
|
+
isPlaceholderData: boolean;
|
|
38
|
+
isPreviousData: boolean;
|
|
39
|
+
isRefetching: boolean;
|
|
40
|
+
isStale: boolean;
|
|
41
|
+
refetch: <TPageData>(options?: (import("@tanstack/react-query").RefetchOptions & import("@tanstack/react-query").RefetchQueryFilters<TPageData>) | undefined) => Promise<import("@tanstack/react-query").QueryObserverResult<string, unknown>>;
|
|
42
|
+
remove: () => void;
|
|
43
|
+
fetchStatus: import("@tanstack/react-query").FetchStatus;
|
|
44
|
+
} | {
|
|
45
|
+
balance: string;
|
|
46
|
+
data: string;
|
|
47
|
+
error: null;
|
|
48
|
+
isError: false;
|
|
49
|
+
isLoading: false;
|
|
50
|
+
isLoadingError: false;
|
|
51
|
+
isRefetchError: false;
|
|
52
|
+
isSuccess: true;
|
|
53
|
+
status: "success";
|
|
54
|
+
dataUpdatedAt: number;
|
|
55
|
+
errorUpdatedAt: number;
|
|
56
|
+
failureCount: number;
|
|
57
|
+
failureReason: unknown;
|
|
58
|
+
errorUpdateCount: number;
|
|
59
|
+
isFetched: boolean;
|
|
60
|
+
isFetchedAfterMount: boolean;
|
|
61
|
+
isFetching: boolean;
|
|
62
|
+
isInitialLoading: boolean;
|
|
63
|
+
isPaused: boolean;
|
|
64
|
+
isPlaceholderData: boolean;
|
|
65
|
+
isPreviousData: boolean;
|
|
66
|
+
isRefetching: boolean;
|
|
67
|
+
isStale: boolean;
|
|
68
|
+
refetch: <TPageData>(options?: (import("@tanstack/react-query").RefetchOptions & import("@tanstack/react-query").RefetchQueryFilters<TPageData>) | undefined) => Promise<import("@tanstack/react-query").QueryObserverResult<string, unknown>>;
|
|
69
|
+
remove: () => void;
|
|
70
|
+
fetchStatus: import("@tanstack/react-query").FetchStatus;
|
|
71
|
+
} | {
|
|
72
|
+
balance: string;
|
|
73
|
+
data: undefined;
|
|
74
|
+
error: unknown;
|
|
75
|
+
isError: true;
|
|
76
|
+
isLoading: false;
|
|
77
|
+
isLoadingError: true;
|
|
78
|
+
isRefetchError: false;
|
|
79
|
+
isSuccess: false;
|
|
80
|
+
status: "error";
|
|
81
|
+
dataUpdatedAt: number;
|
|
82
|
+
errorUpdatedAt: number;
|
|
83
|
+
failureCount: number;
|
|
84
|
+
failureReason: unknown;
|
|
85
|
+
errorUpdateCount: number;
|
|
86
|
+
isFetched: boolean;
|
|
87
|
+
isFetchedAfterMount: boolean;
|
|
88
|
+
isFetching: boolean;
|
|
89
|
+
isInitialLoading: boolean;
|
|
90
|
+
isPaused: boolean;
|
|
91
|
+
isPlaceholderData: boolean;
|
|
92
|
+
isPreviousData: boolean;
|
|
93
|
+
isRefetching: boolean;
|
|
94
|
+
isStale: boolean;
|
|
95
|
+
refetch: <TPageData>(options?: (import("@tanstack/react-query").RefetchOptions & import("@tanstack/react-query").RefetchQueryFilters<TPageData>) | undefined) => Promise<import("@tanstack/react-query").QueryObserverResult<string, unknown>>;
|
|
96
|
+
remove: () => void;
|
|
97
|
+
fetchStatus: import("@tanstack/react-query").FetchStatus;
|
|
98
|
+
} | {
|
|
99
|
+
balance: string;
|
|
100
|
+
data: undefined;
|
|
101
|
+
error: null;
|
|
102
|
+
isError: false;
|
|
103
|
+
isLoading: true;
|
|
104
|
+
isLoadingError: false;
|
|
105
|
+
isRefetchError: false;
|
|
106
|
+
isSuccess: false;
|
|
107
|
+
status: "loading";
|
|
108
|
+
dataUpdatedAt: number;
|
|
109
|
+
errorUpdatedAt: number;
|
|
110
|
+
failureCount: number;
|
|
111
|
+
failureReason: unknown;
|
|
112
|
+
errorUpdateCount: number;
|
|
113
|
+
isFetched: boolean;
|
|
114
|
+
isFetchedAfterMount: boolean;
|
|
115
|
+
isFetching: boolean;
|
|
116
|
+
isInitialLoading: boolean;
|
|
117
|
+
isPaused: boolean;
|
|
118
|
+
isPlaceholderData: boolean;
|
|
119
|
+
isPreviousData: boolean;
|
|
120
|
+
isRefetching: boolean;
|
|
121
|
+
isStale: boolean;
|
|
122
|
+
refetch: <TPageData>(options?: (import("@tanstack/react-query").RefetchOptions & import("@tanstack/react-query").RefetchQueryFilters<TPageData>) | undefined) => Promise<import("@tanstack/react-query").QueryObserverResult<string, unknown>>;
|
|
123
|
+
remove: () => void;
|
|
124
|
+
fetchStatus: import("@tanstack/react-query").FetchStatus;
|
|
24
125
|
};
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { useAccount, useBalance, useReadContract } from "wagmi";
|
|
2
1
|
import { ChainType } from "@0xsquid/squid-types";
|
|
3
|
-
import {
|
|
2
|
+
import { useQuery } from "@tanstack/react-query";
|
|
3
|
+
import { useAccount, useBalance, useReadContract } from "wagmi";
|
|
4
4
|
import { erc20Abi } from "viem";
|
|
5
5
|
import { useCosmosContext } from "../../core";
|
|
6
6
|
import { nativeEvmTokenAddress } from "../../core/constants";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const defaultRefreshIntervalMs = 15000;
|
|
13
|
-
export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refreshIntervalMs = defaultRefreshIntervalMs, }) => {
|
|
7
|
+
import { keys } from "../../core/queries/queries-keys";
|
|
8
|
+
import { formatBNToReadable } from "../../services";
|
|
9
|
+
import { useAllTokensWithBalanceForChainType } from "./useAllTokensWithBalanceForChainType";
|
|
10
|
+
const DEFAULT_REFRESH_INTERVAL_MS = 15000;
|
|
11
|
+
export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS, }) => {
|
|
14
12
|
const { isConnected } = useAccount();
|
|
15
13
|
const isNativeToken = token?.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase();
|
|
16
14
|
const userAddressParsed = userAddress;
|
|
@@ -42,77 +40,30 @@ export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refre
|
|
|
42
40
|
const formattedBalance = formatBNToReadable(balance ?? BigInt(0), token?.decimals ?? 18);
|
|
43
41
|
return { balance: formattedBalance };
|
|
44
42
|
};
|
|
45
|
-
export const useCosmosBalance = ({ chainData, token, userAddress, }) => {
|
|
43
|
+
export const useCosmosBalance = ({ chainData, token, userAddress, enabled = true, refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS, }) => {
|
|
46
44
|
const { isConnected } = useCosmosContext();
|
|
47
|
-
const {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const balance = useMemo(() => {
|
|
51
|
-
if (walletAddressToFetch &&
|
|
52
|
-
chainData &&
|
|
53
|
-
chainData.chainType === ChainType.COSMOS &&
|
|
54
|
-
isConnected) {
|
|
55
|
-
return (cosmosBalances?.data?.find((b) => b.address === token?.address && b.chainId === chainData.chainId)?.balance ?? "0");
|
|
56
|
-
}
|
|
57
|
-
return "0";
|
|
58
|
-
}, [
|
|
59
|
-
cosmosBalances.data,
|
|
60
|
-
walletAddressToFetch,
|
|
61
|
-
chainData,
|
|
62
|
-
token,
|
|
63
|
-
isConnected,
|
|
64
|
-
]);
|
|
65
|
-
return { balance };
|
|
66
|
-
};
|
|
67
|
-
export const useNativeBalance = (direction) => {
|
|
68
|
-
const { address: evmAddress, isConnected: isEvmConnected } = useAccount();
|
|
69
|
-
const { isConnected: isCosmosConnected, cosmosAddress } = useCosmosContext();
|
|
70
|
-
const { toChain, fromChain } = useSwap();
|
|
71
|
-
const chain = direction === "from" ? fromChain : toChain;
|
|
72
|
-
const { data: nativeEvmBalance } = useBalance({
|
|
73
|
-
address: evmAddress,
|
|
74
|
-
chainId: Number(chain?.chainId),
|
|
75
|
-
query: {
|
|
76
|
-
enabled: isEvmConnected && chain?.chainType === ChainType.EVM,
|
|
77
|
-
refetchInterval: 10000,
|
|
78
|
-
staleTime: 5000,
|
|
79
|
-
refetchOnWindowFocus: true,
|
|
80
|
-
refetchOnMount: true,
|
|
81
|
-
},
|
|
45
|
+
const { tokens: cosmosBalances } = useAllTokensWithBalanceForChainType({
|
|
46
|
+
chainType: ChainType.COSMOS,
|
|
47
|
+
address: chainData?.chainType === ChainType.COSMOS ? userAddress : undefined,
|
|
82
48
|
});
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
49
|
+
const query = useQuery({
|
|
50
|
+
queryKey: keys().balance(chainData?.chainId, token?.address, userAddress),
|
|
51
|
+
queryFn: () => {
|
|
52
|
+
if (userAddress &&
|
|
53
|
+
chainData &&
|
|
54
|
+
chainData.chainType === ChainType.COSMOS &&
|
|
55
|
+
isConnected) {
|
|
56
|
+
return (cosmosBalances?.find((b) => b.address === token?.address && b.chainId === chainData.chainId)?.balance ?? "0");
|
|
57
|
+
}
|
|
58
|
+
return "0";
|
|
59
|
+
},
|
|
60
|
+
enabled: isConnected &&
|
|
61
|
+
enabled &&
|
|
62
|
+
!!userAddress &&
|
|
63
|
+
chainData?.chainType === ChainType.COSMOS,
|
|
64
|
+
refetchInterval: refreshIntervalMs,
|
|
65
|
+
retry: 2,
|
|
96
66
|
});
|
|
97
|
-
|
|
98
|
-
switch (chain?.chainType) {
|
|
99
|
-
case ChainType.EVM:
|
|
100
|
-
if (!nativeEvmBalance?.decimals || !nativeEvmBalance?.value)
|
|
101
|
-
return undefined;
|
|
102
|
-
return nativeEvmBalance;
|
|
103
|
-
case ChainType.COSMOS:
|
|
104
|
-
if (!nativeCosmosToken?.decimals || !nativeCosmosBalance)
|
|
105
|
-
return undefined;
|
|
106
|
-
return {
|
|
107
|
-
decimals: nativeCosmosToken.decimals,
|
|
108
|
-
value: parseToBigInt(nativeCosmosBalance, nativeCosmosToken.decimals),
|
|
109
|
-
};
|
|
110
|
-
default:
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
})();
|
|
114
|
-
const nativeBalanceFormatted = nativeBalance &&
|
|
115
|
-
formatBNToReadable(nativeBalance.value, nativeBalance.decimals);
|
|
116
|
-
return { nativeBalance, nativeBalanceFormatted };
|
|
67
|
+
return { ...query, balance: query.data ?? "0" };
|
|
117
68
|
};
|
|
118
69
|
//# sourceMappingURL=useBalance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"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"}
|