@0xsquid/react-hooks 6.4.6 → 6.4.7-beta.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/core/connectors/bitcoin/errors/index.d.ts +2 -1
- package/dist/core/connectors/bitcoin/errors/index.js +1 -1
- package/dist/core/connectors/bitcoin/errors/index.js.map +1 -1
- package/dist/core/constants.d.ts +7 -4
- package/dist/core/constants.js +21 -4
- package/dist/core/constants.js.map +1 -1
- package/dist/core/externalLinks.d.ts +1 -1
- package/dist/core/externalLinks.js +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/providers/CosmosProvider.d.ts +1 -1
- package/dist/core/providers/CosmosProvider.js.map +1 -1
- package/dist/core/providers/SuiProvider.d.ts +19 -0
- package/dist/core/providers/SuiProvider.js +15 -0
- package/dist/core/providers/SuiProvider.js.map +1 -0
- package/dist/core/queries/queries-keys.d.ts +4 -4
- package/dist/core/types/error.d.ts +0 -1
- package/dist/core/types/error.js.map +1 -1
- package/dist/core/types/rpc.d.ts +10 -0
- package/dist/core/types/rpc.js +2 -0
- package/dist/core/types/rpc.js.map +1 -0
- package/dist/core/types/sui.d.ts +14 -0
- package/dist/core/types/sui.js +2 -0
- package/dist/core/types/sui.js.map +1 -0
- package/dist/core/types/transaction.d.ts +0 -1
- package/dist/core/types/wallet.d.ts +19 -2
- package/dist/core/types/wallet.js.map +1 -1
- package/dist/core/wallets.d.ts +1 -0
- package/dist/core/wallets.js +1 -1
- package/dist/core/wallets.js.map +1 -1
- package/dist/hooks/chains/useSquidChains.d.ts +1 -0
- package/dist/hooks/chains/useSquidChains.js +23 -4
- package/dist/hooks/chains/useSquidChains.js.map +1 -1
- package/dist/hooks/cosmos/useCosmos.js +15 -20
- package/dist/hooks/cosmos/useCosmos.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/solana/useSolana.js +8 -2
- package/dist/hooks/solana/useSolana.js.map +1 -1
- package/dist/hooks/store/useWalletStore.d.ts +5 -5
- package/dist/hooks/store/useWalletStore.js +13 -20
- package/dist/hooks/store/useWalletStore.js.map +1 -1
- package/dist/hooks/sui/useSui.d.ts +2 -0
- package/dist/hooks/sui/useSui.js +28 -0
- package/dist/hooks/sui/useSui.js.map +1 -0
- package/dist/hooks/sui/useSuiClient.d.ts +9 -0
- package/dist/hooks/sui/useSuiClient.js +16 -0
- package/dist/hooks/sui/useSuiClient.js.map +1 -0
- package/dist/hooks/sui/useSuiWallets.d.ts +7 -0
- package/dist/hooks/sui/useSuiWallets.js +36 -0
- package/dist/hooks/sui/useSuiWallets.js.map +1 -0
- package/dist/hooks/swap/useSwap.js +3 -3
- package/dist/hooks/swap/useSwap.js.map +1 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +12 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.d.ts +4 -5
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +30 -17
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +1 -1
- package/dist/hooks/tokens/useBalance.d.ts +18 -246
- package/dist/hooks/tokens/useBalance.js +66 -25
- package/dist/hooks/tokens/useBalance.js.map +1 -1
- package/dist/hooks/tokens/useMultiChainBalance.d.ts +2 -2
- package/dist/hooks/tokens/useMultiChainBalance.js +38 -35
- package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -1
- package/dist/hooks/tokens/useNativeBalance.d.ts +16 -18
- package/dist/hooks/tokens/useNativeBalance.js +121 -56
- package/dist/hooks/tokens/useNativeBalance.js.map +1 -1
- package/dist/hooks/tokens/useNativeTokenForChain.js +6 -4
- package/dist/hooks/tokens/useNativeTokenForChain.js.map +1 -1
- package/dist/hooks/tokens/useSquidTokens.d.ts +2 -11
- package/dist/hooks/tokens/useSquidTokens.js +8 -16
- package/dist/hooks/tokens/useSquidTokens.js.map +1 -1
- package/dist/hooks/transaction/useEstimate.js +1 -1
- package/dist/hooks/transaction/useEstimate.js.map +1 -1
- package/dist/hooks/transaction/useExecuteTransaction.d.ts +0 -2
- package/dist/hooks/transaction/useExecuteTransaction.js +81 -39
- package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -1
- package/dist/hooks/transaction/useGetRoute.d.ts +1 -2
- package/dist/hooks/transaction/useGetRoute.js +2 -2
- package/dist/hooks/transaction/useGetRoute.js.map +1 -1
- package/dist/hooks/transaction/useSingleTransaction.js +1 -1
- package/dist/hooks/transaction/useSingleTransaction.js.map +1 -1
- package/dist/hooks/user/useUserParams.js +1 -1
- package/dist/hooks/user/useUserParams.js.map +1 -1
- package/dist/hooks/wallet/useIntegratorContext.js +1 -1
- package/dist/hooks/wallet/useIntegratorContext.js.map +1 -1
- package/dist/hooks/wallet/useMultiChainWallet.d.ts +1 -3
- package/dist/hooks/wallet/useMultiChainWallet.js +32 -25
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -1
- package/dist/hooks/wallet/useSigner.d.ts +2 -2
- package/dist/hooks/wallet/useSigner.js +32 -3
- package/dist/hooks/wallet/useSigner.js.map +1 -1
- package/dist/hooks/wallet/useWallet.d.ts +53 -7
- package/dist/hooks/wallet/useWallet.js +25 -11
- package/dist/hooks/wallet/useWallet.js.map +1 -1
- package/dist/hooks/wallet/useWallets.d.ts +29 -1
- package/dist/hooks/wallet/useWallets.js +5 -1
- package/dist/hooks/wallet/useWallets.js.map +1 -1
- package/dist/provider/index.d.ts +1 -1
- package/dist/provider/index.js +10 -8
- package/dist/provider/index.js.map +1 -1
- package/dist/services/external/rpcService.d.ts +8 -4
- package/dist/services/external/rpcService.js +38 -14
- package/dist/services/external/rpcService.js.map +1 -1
- package/dist/services/external/suiRpcClient.d.ts +32 -0
- package/dist/services/external/suiRpcClient.js +80 -0
- package/dist/services/external/suiRpcClient.js.map +1 -0
- package/dist/services/internal/assetsService.d.ts +2 -2
- package/dist/services/internal/assetsService.js +8 -4
- package/dist/services/internal/assetsService.js.map +1 -1
- package/dist/services/internal/bitcoinService.d.ts +3 -5
- package/dist/services/internal/bitcoinService.js.map +1 -1
- package/dist/services/internal/configService.js +7 -2
- package/dist/services/internal/configService.js.map +1 -1
- package/dist/services/internal/cosmosService.d.ts +4 -14
- package/dist/services/internal/cosmosService.js +1 -1
- package/dist/services/internal/cosmosService.js.map +1 -1
- package/dist/services/internal/errorService.d.ts +15 -0
- package/dist/services/internal/errorService.js +34 -4
- package/dist/services/internal/errorService.js.map +1 -1
- package/dist/services/internal/evmService.d.ts +3 -6
- package/dist/services/internal/evmService.js.map +1 -1
- package/dist/services/internal/solanaService.d.ts +3 -6
- package/dist/services/internal/solanaService.js.map +1 -1
- package/dist/services/internal/suiService.d.ts +9 -0
- package/dist/services/internal/suiService.js +88 -0
- package/dist/services/internal/suiService.js.map +1 -0
- package/dist/services/internal/transactionService.d.ts +0 -1
- package/dist/services/internal/walletService.d.ts +20 -14
- package/dist/services/internal/walletService.js +32 -25
- package/dist/services/internal/walletService.js.map +1 -1
- package/dist/tests/swapConfig.test.js +72 -7
- package/dist/tests/swapConfig.test.js.map +1 -1
- package/package.json +11 -7
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
1
2
|
import { useMemo } from "react";
|
|
2
3
|
import { useAccount, useWalletClient } from "wagmi";
|
|
3
4
|
import { PhantomConnector, UnisatConnector, } from "../../core/connectors/bitcoin";
|
|
4
5
|
import { useCosmosContext } from "../../core/providers/CosmosProvider";
|
|
5
6
|
import { useSolanaContext } from "../../core/providers/SolanaProvider";
|
|
7
|
+
import { useSuiContext } from "../../core/providers/SuiProvider";
|
|
6
8
|
import { clientToSigner } from "../../core/wagmiConfig";
|
|
7
9
|
import { useSwap } from "../swap/useSwap";
|
|
8
10
|
import { useWallet } from "./useWallet";
|
|
@@ -16,8 +18,7 @@ export const useSigner = () => {
|
|
|
16
18
|
const evmSigner = useEthersSigner({ chainId: Number(fromChain?.chainId) });
|
|
17
19
|
const { cosmosSigner } = useCosmosContext();
|
|
18
20
|
const { signer: solanaSigner } = useSolanaContext();
|
|
19
|
-
const
|
|
20
|
-
const isSolanaSignerReady = !!solanaSigner;
|
|
21
|
+
const { signer: suiSigner } = useSuiContext();
|
|
21
22
|
const { connectedWalletsByChainType } = useWallet();
|
|
22
23
|
const connectedSourceWallet = fromChain?.chainType
|
|
23
24
|
? connectedWalletsByChainType[fromChain.chainType]
|
|
@@ -32,13 +33,41 @@ export const useSigner = () => {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
}, [connectedSourceWallet?.wallet?.connectorId]);
|
|
35
|
-
|
|
36
|
+
const isEvmSignerReady = !!evmSigner;
|
|
37
|
+
const isCosmosSignerReady = !!cosmosSigner;
|
|
38
|
+
const isSolanaSignerReady = !!solanaSigner;
|
|
39
|
+
const isBitcoinSignerReady = !!bitcoinSigner;
|
|
40
|
+
const isSuiSignerReady = !!suiSigner;
|
|
41
|
+
const isSignerReady = useMemo(() => {
|
|
42
|
+
if (!fromChain?.chainType)
|
|
43
|
+
return false;
|
|
44
|
+
switch (fromChain.chainType) {
|
|
45
|
+
case ChainType.EVM:
|
|
46
|
+
return isEvmSignerReady;
|
|
47
|
+
case ChainType.COSMOS:
|
|
48
|
+
return isCosmosSignerReady;
|
|
49
|
+
case ChainType.BTC:
|
|
50
|
+
return isBitcoinSignerReady;
|
|
51
|
+
case ChainType.SOLANA:
|
|
52
|
+
return isSolanaSignerReady;
|
|
53
|
+
case ChainType.SUI:
|
|
54
|
+
return isSuiSignerReady;
|
|
55
|
+
}
|
|
56
|
+
}, [
|
|
57
|
+
fromChain?.chainType,
|
|
36
58
|
isEvmSignerReady,
|
|
59
|
+
isCosmosSignerReady,
|
|
60
|
+
isBitcoinSignerReady,
|
|
37
61
|
isSolanaSignerReady,
|
|
62
|
+
isSuiSignerReady,
|
|
63
|
+
]);
|
|
64
|
+
return {
|
|
65
|
+
isSignerReady,
|
|
38
66
|
evmSigner,
|
|
39
67
|
cosmosSigner,
|
|
40
68
|
bitcoinSigner,
|
|
41
69
|
solanaSigner,
|
|
70
|
+
suiSigner,
|
|
42
71
|
};
|
|
43
72
|
};
|
|
44
73
|
//# sourceMappingURL=useSigner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSigner.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAEL,gBAAgB,EAChB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,KAA2B,EAAE;IACpE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3E,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useSigner.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,59 @@
|
|
|
1
1
|
import type { ChainData } from "@0xsquid/squid-types";
|
|
2
2
|
import { ChainType } from "@0xsquid/squid-types";
|
|
3
|
-
import type { Wallet } from "../../core/types/wallet";
|
|
3
|
+
import type { EvmWallet, Wallet } from "../../core/types/wallet";
|
|
4
4
|
export declare const useWallet: () => {
|
|
5
|
-
wallets:
|
|
5
|
+
wallets: (({
|
|
6
|
+
name: string;
|
|
7
|
+
connectorId: import("../../core/types/wallet").ConnectorID;
|
|
8
|
+
connectorName: string;
|
|
9
|
+
icon: string | undefined;
|
|
10
|
+
windowFlag: import("../../core/types/wallet").WindowWalletFlag;
|
|
11
|
+
canSwitchWallets?: boolean | undefined;
|
|
12
|
+
isMobile?: boolean | undefined;
|
|
13
|
+
isInstalled?: (() => boolean) | undefined;
|
|
14
|
+
skipInstallCheck?: boolean | undefined;
|
|
15
|
+
rdns?: string | undefined;
|
|
16
|
+
} & {
|
|
17
|
+
isMultiChain: true;
|
|
18
|
+
supportedNetworks: import("../../core/types/wallet").NetworkConfig[];
|
|
19
|
+
}) | ({
|
|
20
|
+
name: string;
|
|
21
|
+
connectorId: import("../../core/types/wallet").ConnectorID;
|
|
22
|
+
connectorName: string;
|
|
23
|
+
icon: string | undefined;
|
|
24
|
+
windowFlag: import("../../core/types/wallet").WindowWalletFlag;
|
|
25
|
+
canSwitchWallets?: boolean | undefined;
|
|
26
|
+
isMobile?: boolean | undefined;
|
|
27
|
+
isInstalled?: (() => boolean) | undefined;
|
|
28
|
+
skipInstallCheck?: boolean | undefined;
|
|
29
|
+
rdns?: string | undefined;
|
|
30
|
+
} & {
|
|
31
|
+
isMultiChain?: false | undefined;
|
|
32
|
+
type: ChainType;
|
|
33
|
+
}))[];
|
|
6
34
|
connectedWallets: Wallet[];
|
|
7
|
-
connectedWalletsByChainType:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
35
|
+
connectedWalletsByChainType: {
|
|
36
|
+
evm: Partial<{
|
|
37
|
+
wallet: EvmWallet;
|
|
38
|
+
address: string;
|
|
39
|
+
}>;
|
|
40
|
+
cosmos: Partial<{
|
|
41
|
+
wallet: import("../../core/types/wallet").CosmosWallet;
|
|
42
|
+
address: string;
|
|
43
|
+
}>;
|
|
44
|
+
solana: Partial<{
|
|
45
|
+
wallet: import("../../core/types/wallet").SolanaWallet;
|
|
46
|
+
address: string;
|
|
47
|
+
}>;
|
|
48
|
+
bitcoin: Partial<{
|
|
49
|
+
wallet: import("../../core/types/wallet").BitcoinWallet;
|
|
50
|
+
address: string;
|
|
51
|
+
}>;
|
|
52
|
+
sui: Partial<{
|
|
53
|
+
wallet: import("../../core/types/wallet").SuiWallet;
|
|
54
|
+
address: string;
|
|
55
|
+
} & import("../../core/types/sui").SuiAccount>;
|
|
56
|
+
};
|
|
11
57
|
connectedAddresses: Record<ChainType, string | undefined>;
|
|
12
58
|
connectingWalletState: import("../store/useWalletStore").ConnectingWalletState;
|
|
13
59
|
changeWallet: () => Promise<void>;
|
|
@@ -18,6 +64,6 @@ export declare const useWallet: () => {
|
|
|
18
64
|
selectedChainTypes?: ChainType[] | undefined;
|
|
19
65
|
}, unknown>;
|
|
20
66
|
isWalletConnected: (wallet: Wallet) => boolean;
|
|
21
|
-
|
|
67
|
+
isChainTypeConnected: (chainType: ChainType | undefined) => boolean;
|
|
22
68
|
};
|
|
23
69
|
export declare const useEvmWalletListener: () => void;
|
|
@@ -4,6 +4,7 @@ import { useCallback, useEffect, useMemo } from "react";
|
|
|
4
4
|
import { useAccount, useConnect, useDisconnect, useWalletClient } from "wagmi";
|
|
5
5
|
import { useCosmosContext } from "../../core/providers/CosmosProvider";
|
|
6
6
|
import { useSolanaContext } from "../../core/providers/SolanaProvider";
|
|
7
|
+
import { useSuiContext } from "../../core/providers/SuiProvider";
|
|
7
8
|
import { connectWallet as connectWalletServiceMethod, findWalletByWagmiConnector, getWalletSupportedChainTypes, redirectToExtensionsStore, } from "../../services/internal/walletService";
|
|
8
9
|
import { useSquidChains } from "../chains/useSquidChains";
|
|
9
10
|
import { useConfigStore } from "../store/useSquidStore";
|
|
@@ -14,10 +15,11 @@ export const useWallet = () => {
|
|
|
14
15
|
const { wallets } = useWallets();
|
|
15
16
|
const { disconnectAsync: disconnectEvm } = useDisconnect();
|
|
16
17
|
const { connectCosmos, cosmosConnectedWallet } = useCosmosContext();
|
|
18
|
+
const { connectSolana } = useSolanaContext();
|
|
19
|
+
const { connectSui, disconnectSui } = useSuiContext();
|
|
17
20
|
const { connectAsync: connectEvmAsync } = useConnect();
|
|
18
21
|
const { findChain } = useSquidChains();
|
|
19
22
|
const { isGnosisConnected, gnosisAddress } = useGnosisContext();
|
|
20
|
-
const { connectSolana } = useSolanaContext();
|
|
21
23
|
const { connectedWalletsByChainType, connectingWalletState, setConnectedWallet, setConnectingWallet, disconnectWallet: storeDisconnectWallet, } = useWalletStore();
|
|
22
24
|
const walletConnectionRejected = (wallet) => {
|
|
23
25
|
setConnectingWallet({
|
|
@@ -44,13 +46,13 @@ export const useWallet = () => {
|
|
|
44
46
|
connectCosmos,
|
|
45
47
|
cosmosConnectedWallet,
|
|
46
48
|
connectSolana,
|
|
49
|
+
connectSui,
|
|
47
50
|
selectedChainTypes,
|
|
48
51
|
findChain,
|
|
49
52
|
});
|
|
50
53
|
if (result) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
setConnectedWallet(result.wallet, address, chainType);
|
|
54
|
+
result.addresses.forEach(({ chainType, data }) => {
|
|
55
|
+
setConnectedWallet(chainType, data);
|
|
54
56
|
});
|
|
55
57
|
setConnectingWallet({
|
|
56
58
|
status: ConnectingWalletStatus.IDLE,
|
|
@@ -77,6 +79,9 @@ export const useWallet = () => {
|
|
|
77
79
|
case ChainType.SOLANA:
|
|
78
80
|
// Solana disconnect is handled by the wallet adapter events
|
|
79
81
|
break;
|
|
82
|
+
case ChainType.SUI:
|
|
83
|
+
disconnectSui();
|
|
84
|
+
break;
|
|
80
85
|
default:
|
|
81
86
|
// TODO: Implement disconnect for other chains
|
|
82
87
|
break;
|
|
@@ -133,9 +138,15 @@ export const useWallet = () => {
|
|
|
133
138
|
.map((c) => c.wallet)
|
|
134
139
|
.filter((w) => w !== null && w !== undefined);
|
|
135
140
|
}, [connectedWalletsByChainType]);
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
141
|
+
const isChainTypeConnected = useCallback((chainType) => {
|
|
142
|
+
if (!chainType)
|
|
143
|
+
return false;
|
|
144
|
+
if (isGnosisConnected && chainType === ChainType.EVM) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
const connectedWallet = connectedWalletsByChainType[chainType];
|
|
148
|
+
return !!connectedWallet?.wallet && !!connectedWallet?.address;
|
|
149
|
+
}, [connectedWalletsByChainType, isGnosisConnected]);
|
|
139
150
|
return {
|
|
140
151
|
wallets,
|
|
141
152
|
connectedWallets,
|
|
@@ -146,7 +157,7 @@ export const useWallet = () => {
|
|
|
146
157
|
disconnectWallet,
|
|
147
158
|
connectWallet: connectWalletMutation.mutateAsync,
|
|
148
159
|
isWalletConnected,
|
|
149
|
-
|
|
160
|
+
isChainTypeConnected,
|
|
150
161
|
};
|
|
151
162
|
};
|
|
152
163
|
export const useEvmWalletListener = () => {
|
|
@@ -163,14 +174,17 @@ export const useEvmWalletListener = () => {
|
|
|
163
174
|
address &&
|
|
164
175
|
connector &&
|
|
165
176
|
!isConnecting &&
|
|
166
|
-
!evmConnectedWallet
|
|
177
|
+
!evmConnectedWallet?.wallet &&
|
|
167
178
|
!isDisconnected) {
|
|
168
179
|
const wallet = findWalletByWagmiConnector(wallets, connector);
|
|
169
180
|
// TODO: implement evm listener for multichain wallets
|
|
170
181
|
if (!wallet || wallet.isMultiChain)
|
|
171
182
|
return;
|
|
172
183
|
if (wallet.type === ChainType.EVM) {
|
|
173
|
-
setConnectedWallet(
|
|
184
|
+
setConnectedWallet(ChainType.EVM, {
|
|
185
|
+
wallet: wallet,
|
|
186
|
+
address,
|
|
187
|
+
});
|
|
174
188
|
}
|
|
175
189
|
}
|
|
176
190
|
else if (isDisconnected && evmConnectedWallet.wallet) {
|
|
@@ -180,7 +194,7 @@ export const useEvmWalletListener = () => {
|
|
|
180
194
|
address,
|
|
181
195
|
connector,
|
|
182
196
|
disconnectWallet,
|
|
183
|
-
evmConnectedWallet
|
|
197
|
+
evmConnectedWallet?.wallet,
|
|
184
198
|
isConnected,
|
|
185
199
|
isConnecting,
|
|
186
200
|
isDisconnected,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,31 @@
|
|
|
1
1
|
export declare const useWallets: () => {
|
|
2
|
-
wallets:
|
|
2
|
+
wallets: (({
|
|
3
|
+
name: string;
|
|
4
|
+
connectorId: import("../..").ConnectorID;
|
|
5
|
+
connectorName: string;
|
|
6
|
+
icon: string | undefined;
|
|
7
|
+
windowFlag: import("../../core/types/wallet").WindowWalletFlag;
|
|
8
|
+
canSwitchWallets?: boolean | undefined;
|
|
9
|
+
isMobile?: boolean | undefined;
|
|
10
|
+
isInstalled?: (() => boolean) | undefined;
|
|
11
|
+
skipInstallCheck?: boolean | undefined;
|
|
12
|
+
rdns?: string | undefined;
|
|
13
|
+
} & {
|
|
14
|
+
isMultiChain: true;
|
|
15
|
+
supportedNetworks: import("../..").NetworkConfig[];
|
|
16
|
+
}) | ({
|
|
17
|
+
name: string;
|
|
18
|
+
connectorId: import("../..").ConnectorID;
|
|
19
|
+
connectorName: string;
|
|
20
|
+
icon: string | undefined;
|
|
21
|
+
windowFlag: import("../../core/types/wallet").WindowWalletFlag;
|
|
22
|
+
canSwitchWallets?: boolean | undefined;
|
|
23
|
+
isMobile?: boolean | undefined;
|
|
24
|
+
isInstalled?: (() => boolean) | undefined;
|
|
25
|
+
skipInstallCheck?: boolean | undefined;
|
|
26
|
+
rdns?: string | undefined;
|
|
27
|
+
} & {
|
|
28
|
+
isMultiChain?: false | undefined;
|
|
29
|
+
type: import("@0xsquid/squid-types").ChainType;
|
|
30
|
+
}))[];
|
|
3
31
|
};
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
|
+
import { useSuiContext } from "../../core/providers/SuiProvider";
|
|
2
3
|
import { getWallets } from "../../services/internal/walletService";
|
|
3
4
|
import { useClient } from "../client/useClient";
|
|
4
5
|
export const useWallets = () => {
|
|
5
6
|
const { clientWindow } = useClient();
|
|
6
|
-
const wallets
|
|
7
|
+
const { wallets: suiWallets } = useSuiContext();
|
|
8
|
+
const wallets = useMemo(() => {
|
|
9
|
+
return [...getWallets(clientWindow), ...suiWallets];
|
|
10
|
+
}, [clientWindow, suiWallets]);
|
|
7
11
|
return {
|
|
8
12
|
wallets,
|
|
9
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWallets.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useWallets.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;IACrC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IAEhD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,OAAO,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IACtD,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,OAAO;QACL,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/provider/index.d.ts
CHANGED
package/dist/provider/index.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { Squid } from "@0xsquid/sdk";
|
|
2
2
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
3
|
-
import { squidApiBaseUrl } from "../core/externalLinks";
|
|
4
|
-
import { CosmosProvider } from "../core/providers/CosmosProvider";
|
|
5
|
-
import { defaultOptions } from "../core/queries/react-query-config";
|
|
6
|
-
import { createWagmiConfig } from "../core/wagmiConfig";
|
|
7
|
-
import { useConfigStore, useSquidStore, useSwapRoutePersistStore, } from "../hooks/store/useSquidStore";
|
|
8
|
-
import { getConfigWithDefaults } from "../services/internal/configService";
|
|
9
3
|
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
10
4
|
import { mainnet } from "viem/chains";
|
|
11
5
|
import { createConfig, http, WagmiProvider } from "wagmi";
|
|
12
6
|
import { injected } from "wagmi/connectors";
|
|
7
|
+
import { squidApiBaseUrl } from "../core/externalLinks";
|
|
8
|
+
import { CosmosProvider } from "../core/providers/CosmosProvider";
|
|
13
9
|
import { SolanaProvider } from "../core/providers/SolanaProvider";
|
|
10
|
+
import { SuiProvider } from "../core/providers/SuiProvider";
|
|
11
|
+
import { defaultOptions } from "../core/queries/react-query-config";
|
|
12
|
+
import { createWagmiConfig } from "../core/wagmiConfig";
|
|
14
13
|
import { useAssetsColorsStore } from "../hooks/store/useAssetsColorsStore";
|
|
14
|
+
import { useConfigStore, useSquidStore, useSwapRoutePersistStore, } from "../hooks/store/useSquidStore";
|
|
15
15
|
import { fetchAssetsColors, initializeSquidWithAssetsColors, isEmptyObject, } from "../services";
|
|
16
|
+
import { getConfigWithDefaults } from "../services/internal/configService";
|
|
16
17
|
const queryClient = new QueryClient({ defaultOptions });
|
|
17
18
|
const verifyIntegratorIdValidity = (integratorId) => {
|
|
18
19
|
if (!integratorId) {
|
|
@@ -105,7 +106,8 @@ export const SquidProvider = ({ children, config, placeholder, }) => {
|
|
|
105
106
|
}, [initializeSdk]);
|
|
106
107
|
return wagmiConfig ? (React.createElement(WagmiProvider, { config: wagmiConfig },
|
|
107
108
|
React.createElement(QueryClientProvider, { client: queryClient },
|
|
108
|
-
React.createElement(
|
|
109
|
-
React.createElement(
|
|
109
|
+
React.createElement(SuiProvider, null,
|
|
110
|
+
React.createElement(SolanaProvider, null,
|
|
111
|
+
React.createElement(CosmosProvider, null, children)))))) : (placeholder);
|
|
110
112
|
};
|
|
111
113
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type ChainData, type CosmosChain, type Token } from "@0xsquid/squid-types";
|
|
2
2
|
import type { TokenWithBalance } from "../../core/types/tokens";
|
|
3
|
-
declare const getTokensSupportingMultiCall: (tokens: Token[], userAddress: string, chains: ChainData[]) => Promise<TokenWithBalance[]>;
|
|
4
|
-
export { getTokensSupportingMultiCall };
|
|
3
|
+
export declare const getTokensSupportingMultiCall: (tokens: Token[], userAddress: string, chains: ChainData[]) => Promise<TokenWithBalance[]>;
|
|
5
4
|
export declare const getAllEvmTokensBalance: (evmTokens: Token[], userAddress: string, chains: ChainData[]) => Promise<TokenWithBalance[]>;
|
|
6
5
|
export declare const getWorkingCosmosRpcUrl: (chainData: ChainData) => Promise<string>;
|
|
7
6
|
/**
|
|
@@ -33,7 +32,7 @@ export declare const getAllCosmosBalancesForChain: ({ rpc, address, tokens, }: {
|
|
|
33
32
|
* @param {CosmosChain[]} params.cosmosChains
|
|
34
33
|
* @returns {Promise<TokenWithBalance[]>} All tokens with their balances.
|
|
35
34
|
*/
|
|
36
|
-
export declare const
|
|
35
|
+
export declare const getAllCosmosBalances: ({ addresses, cosmosTokens, cosmosChains, }: {
|
|
37
36
|
addresses: {
|
|
38
37
|
chainId: string;
|
|
39
38
|
address: string;
|
|
@@ -46,9 +45,14 @@ export declare const getSolanaTokenBalance: (userAddress: string, tokenAddress:
|
|
|
46
45
|
export declare const getSolanaTokensBalance: (userAddress: string, tokenAddresses: string[]) => Promise<{
|
|
47
46
|
[address: string]: bigint;
|
|
48
47
|
}>;
|
|
49
|
-
export declare const getAllSolanaTokensBalance: (solanaTokens: Token[], userAddress: string
|
|
48
|
+
export declare const getAllSolanaTokensBalance: (solanaTokens: Token[], userAddress: string) => Promise<TokenWithBalance[]>;
|
|
50
49
|
export declare function getBitcoinNativeBalance(address: string): Promise<string>;
|
|
51
50
|
export declare const getAllBitcoinTokensBalance: (userAddress: string, bitcoinTokens: Token[]) => Promise<TokenWithBalance[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Returns the balance of a single Sui coin for a given address
|
|
53
|
+
*/
|
|
54
|
+
export declare const getSuiTokenBalance: (userAddress: string, tokenAddress: string, rpcUrl: string) => Promise<bigint>;
|
|
55
|
+
export declare const getAllSuiTokensBalance: (userAddress: string, suiTokens: Token[], suiChains: ChainData[]) => Promise<TokenWithBalance[]>;
|
|
52
56
|
/**
|
|
53
57
|
* Returns a promise that resolves when the given promise resolves or after the given timeout
|
|
54
58
|
* @param ms - timeout in milliseconds
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ChainType, } from "@0xsquid/squid-types";
|
|
2
2
|
import { StargateClient } from "@cosmjs/stargate";
|
|
3
|
-
import { CHAIN_IDS, nativeEvmTokenAddress, SOLANA_RPC_URL, } from "../../core/constants";
|
|
3
|
+
import { CHAIN_IDS, nativeEvmTokenAddress, nativeSolanaTokenAddress, SOLANA_RPC_URL, } from "../../core/constants";
|
|
4
4
|
import { multicallAbi, multicallAddress } from "../../core/multicall3";
|
|
5
5
|
import { ethers, Interface, JsonRpcProvider } from "ethers";
|
|
6
6
|
import { erc20Abi } from "viem";
|
|
7
7
|
import { normalizeIbcAddress } from "../internal/assetsService";
|
|
8
8
|
import { isBitcoinAddressValid } from "../internal/bitcoinService";
|
|
9
9
|
import { formatBNToReadable } from "../internal/numberService";
|
|
10
|
+
import { SuiRpcClient } from "./suiRpcClient";
|
|
10
11
|
const isTokenNative = (token) => token.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase();
|
|
11
12
|
const getTokenAddressForMultiCall = (t) => {
|
|
12
13
|
return isTokenNative(t)
|
|
@@ -63,7 +64,7 @@ const formatBalanceForTokens = (results) => {
|
|
|
63
64
|
balance: formatBNToReadable(BigInt(result.returnData), token.decimals),
|
|
64
65
|
};
|
|
65
66
|
}
|
|
66
|
-
catch
|
|
67
|
+
catch {
|
|
67
68
|
return {
|
|
68
69
|
...token,
|
|
69
70
|
balance: "0",
|
|
@@ -71,7 +72,7 @@ const formatBalanceForTokens = (results) => {
|
|
|
71
72
|
}
|
|
72
73
|
});
|
|
73
74
|
};
|
|
74
|
-
const getTokensSupportingMultiCall = async (tokens, userAddress, chains) => {
|
|
75
|
+
export const getTokensSupportingMultiCall = async (tokens, userAddress, chains) => {
|
|
75
76
|
// Create providers for each chain
|
|
76
77
|
const providers = {};
|
|
77
78
|
chains.forEach((chain) => {
|
|
@@ -98,7 +99,6 @@ const getTokensSupportingMultiCall = async (tokens, userAddress, chains) => {
|
|
|
98
99
|
const allResults = await Promise.all(chains.map((chain) => fetchBalancesForChain(chain)));
|
|
99
100
|
return allResults.flat();
|
|
100
101
|
};
|
|
101
|
-
export { getTokensSupportingMultiCall };
|
|
102
102
|
export const getAllEvmTokensBalance = async (evmTokens, userAddress, chains) => {
|
|
103
103
|
const tokensMulticall = await getTokensSupportingMultiCall(evmTokens, userAddress, chains);
|
|
104
104
|
return tokensMulticall;
|
|
@@ -142,7 +142,7 @@ export const getWorkingCosmosRpcUrl = async (chainData) => {
|
|
|
142
142
|
for (const rpc of rpcList) {
|
|
143
143
|
try {
|
|
144
144
|
// eslint-disable-next-line no-await-in-loop
|
|
145
|
-
const isValid = await testCosmosRpc(rpc);
|
|
145
|
+
const isValid = await timeout(5_000, testCosmosRpc(rpc));
|
|
146
146
|
if (isValid) {
|
|
147
147
|
return rpc;
|
|
148
148
|
}
|
|
@@ -162,7 +162,7 @@ export const getWorkingCosmosRpcUrl = async (chainData) => {
|
|
|
162
162
|
* @returns balance as formatted string
|
|
163
163
|
*/
|
|
164
164
|
export const getCosmosTokenBalance = async (chain, address, tokenAddress) => {
|
|
165
|
-
const validRpc = await
|
|
165
|
+
const validRpc = await getWorkingCosmosRpcUrl(chain);
|
|
166
166
|
if (!validRpc)
|
|
167
167
|
return "0";
|
|
168
168
|
const client = await StargateClient.connect(validRpc);
|
|
@@ -200,7 +200,7 @@ export const getAllCosmosBalancesForChain = async ({ rpc, address, tokens, }) =>
|
|
|
200
200
|
* @param {CosmosChain[]} params.cosmosChains
|
|
201
201
|
* @returns {Promise<TokenWithBalance[]>} All tokens with their balances.
|
|
202
202
|
*/
|
|
203
|
-
export const
|
|
203
|
+
export const getAllCosmosBalances = async ({ addresses, cosmosTokens, cosmosChains, }) => {
|
|
204
204
|
const tokensWithBalance = [];
|
|
205
205
|
await Promise.all(cosmosChains.map(async (cosmosChain) => {
|
|
206
206
|
const userAddress = addresses.find((a) => a.chainId === cosmosChain.chainId)?.address;
|
|
@@ -279,7 +279,7 @@ export const getSolanaNativeBalance = async (userAddress) => {
|
|
|
279
279
|
return BigInt(data.result?.value || 0);
|
|
280
280
|
};
|
|
281
281
|
export const getSolanaTokenBalance = async (userAddress, tokenAddress) => {
|
|
282
|
-
if (tokenAddress.toLowerCase() ===
|
|
282
|
+
if (tokenAddress.toLowerCase() === nativeSolanaTokenAddress.toLowerCase()) {
|
|
283
283
|
return getSolanaNativeBalance(userAddress);
|
|
284
284
|
}
|
|
285
285
|
const response = await fetch(SOLANA_RPC_URL, {
|
|
@@ -318,17 +318,13 @@ export const getSolanaTokensBalance = async (userAddress, tokenAddresses) => {
|
|
|
318
318
|
});
|
|
319
319
|
const data = await response.json();
|
|
320
320
|
return tokenAddresses.reduce((acc, address) => {
|
|
321
|
-
const tokenAccount = data.result?.value?.find((
|
|
321
|
+
const tokenAccount = data.result?.value?.find((accountInfo) => accountInfo.account.data.parsed.info.mint.toLowerCase() ===
|
|
322
322
|
address.toLowerCase());
|
|
323
323
|
acc[address] = BigInt(tokenAccount?.account.data.parsed.info.tokenAmount.amount || 0);
|
|
324
324
|
return acc;
|
|
325
325
|
}, {});
|
|
326
326
|
};
|
|
327
|
-
export const getAllSolanaTokensBalance = async (solanaTokens, userAddress
|
|
328
|
-
const solanaChain = chains.find((c) => c.chainId === "solana-mainnet-beta");
|
|
329
|
-
if (!solanaChain || !solanaTokens.length) {
|
|
330
|
-
return solanaTokens.map((t) => ({ ...t, balance: "0" }));
|
|
331
|
-
}
|
|
327
|
+
export const getAllSolanaTokensBalance = async (solanaTokens, userAddress) => {
|
|
332
328
|
try {
|
|
333
329
|
const nativeToken = solanaTokens.find((t) => t.address === nativeEvmTokenAddress);
|
|
334
330
|
const otherTokens = solanaTokens.filter((t) => t.address !== nativeEvmTokenAddress);
|
|
@@ -381,6 +377,34 @@ export const getAllBitcoinTokensBalance = async (userAddress, bitcoinTokens) =>
|
|
|
381
377
|
};
|
|
382
378
|
}));
|
|
383
379
|
};
|
|
380
|
+
/**
|
|
381
|
+
* Returns the balance of a single Sui coin for a given address
|
|
382
|
+
*/
|
|
383
|
+
export const getSuiTokenBalance = async (userAddress, tokenAddress, rpcUrl) => {
|
|
384
|
+
const suiClient = new SuiRpcClient(rpcUrl);
|
|
385
|
+
const { totalBalance } = await suiClient.getBalance(userAddress, tokenAddress);
|
|
386
|
+
return BigInt(totalBalance || 0);
|
|
387
|
+
};
|
|
388
|
+
export const getAllSuiTokensBalance = async (userAddress, suiTokens, suiChains) => {
|
|
389
|
+
const getBalancesForChain = async (chain) => {
|
|
390
|
+
const tokensForChain = suiTokens.filter((t) => t.chainId === chain.chainId);
|
|
391
|
+
const suiClient = new SuiRpcClient(chain.rpc);
|
|
392
|
+
const foundBalances = await suiClient.getAllBalances(userAddress);
|
|
393
|
+
const balanceMap = foundBalances.reduce((acc, balance) => {
|
|
394
|
+
acc[balance.coinType] = balance.totalBalance;
|
|
395
|
+
return acc;
|
|
396
|
+
}, {});
|
|
397
|
+
return tokensForChain.map((token) => {
|
|
398
|
+
const balanceBn = BigInt(balanceMap[token.address] || 0);
|
|
399
|
+
return {
|
|
400
|
+
...token,
|
|
401
|
+
balance: formatBNToReadable(balanceBn, token.decimals),
|
|
402
|
+
};
|
|
403
|
+
});
|
|
404
|
+
};
|
|
405
|
+
const allResults = await Promise.all(suiChains.map(getBalancesForChain));
|
|
406
|
+
return allResults.flat();
|
|
407
|
+
};
|
|
384
408
|
/**
|
|
385
409
|
* Returns a promise that resolves when the given promise resolves or after the given timeout
|
|
386
410
|
* @param ms - timeout in milliseconds
|