@0xsquid/react-hooks 3.0.30-beta.26 → 3.0.30-beta.28
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 +7 -0
- package/dist/core/constants.js +16 -0
- 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/externalLinks.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/queries/queries-keys.d.ts +1 -1
- package/dist/core/queries/queries-keys.js +3 -1
- package/dist/core/queries/queries-keys.js.map +1 -1
- package/dist/core/types/wallet.d.ts +11 -2
- package/dist/core/types/wallet.js +3 -0
- package/dist/core/types/wallet.js.map +1 -1
- package/dist/core/wallets.js +50 -1
- package/dist/core/wallets.js.map +1 -1
- package/dist/hooks/cosmos/useCosmos.js +2 -1
- package/dist/hooks/cosmos/useCosmos.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/store/useHistoryStore.d.ts +1 -1
- package/dist/hooks/store/useWalletStore.js +1 -0
- package/dist/hooks/store/useWalletStore.js.map +1 -1
- package/dist/hooks/swap/useDepositAddress.d.ts +10 -0
- package/dist/hooks/swap/useDepositAddress.js +49 -0
- package/dist/hooks/swap/useDepositAddress.js.map +1 -0
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +11 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +16 -5
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +1 -1
- package/dist/hooks/tokens/useBalance.d.ts +7 -1
- package/dist/hooks/tokens/useBalance.js +6 -0
- package/dist/hooks/tokens/useBalance.js.map +1 -1
- package/dist/hooks/tokens/useMultiChainBalance.js +6 -2
- package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -1
- package/dist/hooks/tokens/useNativeBalance.d.ts +6 -1
- package/dist/hooks/tokens/useNativeBalance.js +41 -10
- package/dist/hooks/tokens/useNativeBalance.js.map +1 -1
- package/dist/hooks/tokens/useNativeTokenForChain.d.ts +4 -0
- package/dist/hooks/tokens/useNativeTokenForChain.js +26 -0
- package/dist/hooks/tokens/useNativeTokenForChain.js.map +1 -0
- package/dist/hooks/tokens/useSquidTokens.d.ts +2 -0
- package/dist/hooks/tokens/useSquidTokens.js +5 -1
- package/dist/hooks/tokens/useSquidTokens.js.map +1 -1
- package/dist/hooks/transaction/useEstimate.d.ts +2 -2
- package/dist/hooks/transaction/useGetRoute.d.ts +11 -8
- package/dist/hooks/transaction/useGetRoute.js +20 -7
- package/dist/hooks/transaction/useGetRoute.js.map +1 -1
- package/dist/hooks/transaction/useSingleTransaction.d.ts +1 -1
- package/dist/hooks/user/useHistory.js +2 -2
- package/dist/hooks/user/useHistory.js.map +1 -1
- package/dist/hooks/wallet/useMultiChainWallet.js +15 -10
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -1
- package/dist/hooks/wallet/useWallet.js +35 -12
- package/dist/hooks/wallet/useWallet.js.map +1 -1
- package/dist/services/external/rpcService.d.ts +4 -1
- package/dist/services/external/rpcService.js +87 -0
- package/dist/services/external/rpcService.js.map +1 -1
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/internal/assetsService.d.ts +3 -1
- package/dist/services/internal/assetsService.js.map +1 -1
- package/dist/services/internal/bitcoinService.d.ts +20 -0
- package/dist/services/internal/bitcoinService.js +53 -0
- package/dist/services/internal/bitcoinService.js.map +1 -0
- package/dist/services/internal/cosmosService.d.ts +37 -0
- package/dist/services/internal/cosmosService.js +97 -0
- package/dist/services/internal/cosmosService.js.map +1 -0
- package/dist/services/internal/estimateService.d.ts +2 -2
- package/dist/services/internal/evmService.d.ts +16 -0
- package/dist/services/internal/evmService.js +40 -0
- package/dist/services/internal/evmService.js.map +1 -0
- package/dist/services/internal/solanaService.d.ts +5 -0
- package/dist/services/internal/solanaService.js +18 -0
- package/dist/services/internal/solanaService.js.map +1 -0
- package/dist/services/internal/transactionService.d.ts +5 -5
- package/dist/services/internal/transactionService.js +15 -6
- package/dist/services/internal/transactionService.js.map +1 -1
- package/dist/services/internal/walletService.d.ts +3 -55
- package/dist/services/internal/walletService.js +16 -151
- package/dist/services/internal/walletService.js.map +1 -1
- package/dist/tests/estimateService.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { fromBech32 } from "@cosmjs/encoding";
|
|
2
|
+
/**
|
|
3
|
+
* Get the cosmos address for a given chain
|
|
4
|
+
* This might pop up a keplr modal to approve the chain
|
|
5
|
+
* @param chainId
|
|
6
|
+
* @param keplrTypeWallet
|
|
7
|
+
* @returns Cosmos address
|
|
8
|
+
*/
|
|
9
|
+
export const getAllKeysForSupportedCosmosChains = async (chainIds, keplrTypeWallet) => {
|
|
10
|
+
const addresses = [];
|
|
11
|
+
if (!keplrTypeWallet)
|
|
12
|
+
return addresses;
|
|
13
|
+
for (const chainId of chainIds) {
|
|
14
|
+
try {
|
|
15
|
+
const keys = await keplrTypeWallet.getKeysSettled([chainId]);
|
|
16
|
+
keys.forEach((key) => {
|
|
17
|
+
if (key.status === "fulfilled" && key.value?.bech32Address) {
|
|
18
|
+
addresses.push({
|
|
19
|
+
address: key.value.bech32Address,
|
|
20
|
+
chainId,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.debug(`Failed to get keys for chain ${chainId}:`, error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return addresses;
|
|
30
|
+
};
|
|
31
|
+
export const isCosmosAddressValid = (chainPrefix, address) => {
|
|
32
|
+
try {
|
|
33
|
+
if (!address.toLowerCase().startsWith(chainPrefix)) {
|
|
34
|
+
throw new Error("Invalid address for this chain");
|
|
35
|
+
}
|
|
36
|
+
fromBech32(address);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export const getCosmosSigningClient = async ({ chainRpc, cosmosSigner, defaultSigningClient, }) => {
|
|
44
|
+
if (!cosmosSigner)
|
|
45
|
+
return null;
|
|
46
|
+
// const cosmosClient = (await isNomos())
|
|
47
|
+
// ? SigningNomosClient.connectWithSigner(chainRpc, cosmosSigner) // use Nomos provider
|
|
48
|
+
return defaultSigningClient.connectWithSigner(chainRpc, cosmosSigner); // use default cosmos provider
|
|
49
|
+
};
|
|
50
|
+
export const getCosmosChainInfosObject = (chain) => {
|
|
51
|
+
const cosmosChain = chain;
|
|
52
|
+
//
|
|
53
|
+
// TODO: In the future, it will be better to do this parsing on backend side.
|
|
54
|
+
//
|
|
55
|
+
// The `gasPriceStep` field of the `ChainInfo` has been moved under `feeCurrencies`.
|
|
56
|
+
// This is automatically handled as of right now, but the upcoming update would potentially cause errors.
|
|
57
|
+
delete cosmosChain.gasPriceStep;
|
|
58
|
+
// The `coinType` field of the `ChainInfo` is removed. This is automatically handled as of right now,
|
|
59
|
+
// but the upcoming update would potentially cause errors.
|
|
60
|
+
delete cosmosChain.coinType;
|
|
61
|
+
return {
|
|
62
|
+
...cosmosChain,
|
|
63
|
+
feeCurrencies: cosmosChain.feeCurrencies.map((feeCurrency) => ({
|
|
64
|
+
...feeCurrency,
|
|
65
|
+
// Gas price step is now under feeCurrencies
|
|
66
|
+
gasPriceStep: cosmosChain.gasPriceStep,
|
|
67
|
+
})),
|
|
68
|
+
chainName: cosmosChain.networkName,
|
|
69
|
+
chainId: cosmosChain.chainId.toString(),
|
|
70
|
+
rpc: cosmosChain.rpc.split("?chain")[0],
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export const connectCosmosWallet = async (wallet, baseChain, { connectCosmos, cosmosConnectedWallet }) => {
|
|
74
|
+
// No need to connect to the same wallet
|
|
75
|
+
if (wallet.connectorId === cosmosConnectedWallet?.connectorId ||
|
|
76
|
+
baseChain === undefined) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const address = await connectCosmos?.mutateAsync({
|
|
80
|
+
chain: baseChain,
|
|
81
|
+
wallet: wallet,
|
|
82
|
+
});
|
|
83
|
+
if (address) {
|
|
84
|
+
//TODO: Careful here, commented here because not needed for Wallet component, but might be needed for Widget component
|
|
85
|
+
// This setState could be implemented on the Widget side, instead of hooks here
|
|
86
|
+
//
|
|
87
|
+
// useSwapRoutePersistStore.setState({
|
|
88
|
+
// swapRoute: {
|
|
89
|
+
// ...useSwapRoutePersistStore.getState().swapRoute,
|
|
90
|
+
// destinationAddress: { address },
|
|
91
|
+
// },
|
|
92
|
+
// });
|
|
93
|
+
return { wallet, address };
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=cosmosService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosmosService.js","sourceRoot":"","sources":["../../../src/services/internal/cosmosService.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,8 +71,8 @@ export declare const calculateEstimateResults: ({ squidRoute, tokens, fromChain,
|
|
|
71
71
|
fromToken: any;
|
|
72
72
|
fromAmount: string | undefined;
|
|
73
73
|
fromAmountFormatted: string;
|
|
74
|
-
sourceChainNativeToken:
|
|
75
|
-
destChainNativeToken:
|
|
74
|
+
sourceChainNativeToken: Token | undefined;
|
|
75
|
+
destChainNativeToken: Token | undefined;
|
|
76
76
|
toAmountUSD: string | undefined;
|
|
77
77
|
toAmountUSDFloat: number;
|
|
78
78
|
exchangeRate: string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChainData } from "@0xsquid/squid-types";
|
|
2
|
+
import { Config, Connector } from "wagmi";
|
|
3
|
+
import { ConnectMutateAsync } from "wagmi/query";
|
|
4
|
+
import { EvmWallet } from "../../core/types/wallet";
|
|
5
|
+
export declare const EvmNetworkNotSupportedErrorCode = 4902;
|
|
6
|
+
export declare function addEthereumChain({ chain, provider, }: {
|
|
7
|
+
chain: ChainData;
|
|
8
|
+
provider: any;
|
|
9
|
+
}): Promise<any>;
|
|
10
|
+
export declare const connectEvmWallet: (wallet: EvmWallet, { connectEvmAsync, activeEvmConnector, }: {
|
|
11
|
+
connectEvmAsync: ConnectMutateAsync<Config, unknown>;
|
|
12
|
+
activeEvmConnector: Connector | undefined;
|
|
13
|
+
}) => Promise<{
|
|
14
|
+
wallet: EvmWallet;
|
|
15
|
+
address: `0x${string}`;
|
|
16
|
+
} | null>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const EvmNetworkNotSupportedErrorCode = 4902;
|
|
2
|
+
export async function addEthereumChain({ chain, provider, }) {
|
|
3
|
+
const chainName = chain.rpc.includes("tenderly")
|
|
4
|
+
? `${chain.networkName} Tenderly fork`
|
|
5
|
+
: chain.networkName;
|
|
6
|
+
const chainParameters = {
|
|
7
|
+
chainId: `0x${parseInt(chain.chainId, 10).toString(16)}`,
|
|
8
|
+
chainName,
|
|
9
|
+
nativeCurrency: chain.nativeCurrency,
|
|
10
|
+
rpcUrls: [chain.rpc],
|
|
11
|
+
blockExplorerUrls: chain.blockExplorerUrls,
|
|
12
|
+
iconUrls: [chain.chainIconURI],
|
|
13
|
+
};
|
|
14
|
+
try {
|
|
15
|
+
return provider.request({
|
|
16
|
+
method: "wallet_addEthereumChain",
|
|
17
|
+
params: [chainParameters],
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.debug("Error adding chain:", error);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export const connectEvmWallet = async (wallet, { connectEvmAsync, activeEvmConnector, }) => {
|
|
25
|
+
if (!wallet.connector) {
|
|
26
|
+
throw new Error("Wallet connector is undefined");
|
|
27
|
+
}
|
|
28
|
+
// No need to connect to the same wallet
|
|
29
|
+
if (wallet.connectorId === activeEvmConnector?.id) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const evmConnectionResult = await connectEvmAsync({
|
|
33
|
+
connector: wallet.connector(),
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
wallet,
|
|
37
|
+
address: evmConnectionResult.accounts?.[0] ?? "",
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=evmService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evmService.js","sourceRoot":"","sources":["../../../src/services/internal/evmService.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,KAAK,EACL,QAAQ,GAIT;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,gBAAgB;QACtC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACtB,MAAM,eAAe,GAA8B;QACjD,OAAO,EAAE,KAAK,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACxD,SAAS;QACT,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,QAAQ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;KAC/B,CAAC;IAEF,IAAI;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC;YACtB,MAAM,EAAE,yBAAyB;YACjC,MAAM,EAAE,CAAC,eAAe,CAAC;SAC1B,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;KAC7C;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,MAAiB,EACjB,EACE,eAAe,EACf,kBAAkB,GAInB,EACD,EAAE;IACF,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,wCAAwC;IACxC,IAAI,MAAM,CAAC,WAAW,KAAK,kBAAkB,EAAE,EAAE,EAAE;QACjD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,mBAAmB,GAAG,MAAM,eAAe,CAAC;QAChD,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;KAC9B,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;KACjD,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const connectSolanaWallet = async (wallet) => {
|
|
2
|
+
const provider = window?.phantom?.solana;
|
|
3
|
+
if (!provider) {
|
|
4
|
+
throw new Error("Phantom wallet not found");
|
|
5
|
+
}
|
|
6
|
+
try {
|
|
7
|
+
const response = await provider.connect();
|
|
8
|
+
return {
|
|
9
|
+
wallet,
|
|
10
|
+
address: response.publicKey.toString(),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
console.error("Failed to connect Phantom wallet:", error);
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=solanaService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solanaService.js","sourceRoot":"","sources":["../../../src/services/internal/solanaService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAI,MAAc,EAAE,OAAO,EAAE,MAAM,CAAC;IAElD,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC7C;IAED,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC1C,OAAO;YACL,MAAM;YACN,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE;SACvC,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAC"}
|
|
@@ -9,12 +9,12 @@ export declare const getAxelarExplorerTxUrl: (urlPrefix: string | undefined, rou
|
|
|
9
9
|
export declare const getSourceExplorerTxUrl: (chain: ChainData | undefined, txID: string) => string | undefined;
|
|
10
10
|
export declare const getMainExplorerUrl: (transaction?: TransactionParams) => any;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
* Squid API is using a different status endpoint to track status of
|
|
12
|
+
* Some routes have special bridges, like CCTP or Chainflip
|
|
13
|
+
* Squid API is using a different status endpoint to track status of these bridges
|
|
14
14
|
* @param transaction
|
|
15
15
|
* @returns
|
|
16
16
|
*/
|
|
17
|
-
export declare const
|
|
17
|
+
export declare const getBridgeType: (estimate?: Estimate) => string | undefined;
|
|
18
18
|
export declare const formatDistance: (date: number | Date, baseDate: number | Date, options?: {
|
|
19
19
|
includeSeconds?: boolean | undefined;
|
|
20
20
|
addSuffix?: boolean | undefined;
|
|
@@ -51,10 +51,10 @@ export declare const formatTxForStorage: (tx: SimplifiedTransactionHistory) => {
|
|
|
51
51
|
nonce?: number | undefined;
|
|
52
52
|
routeType: string | undefined;
|
|
53
53
|
sourceTxExplorerUrl?: string | undefined;
|
|
54
|
-
|
|
54
|
+
bridgeType?: string | undefined;
|
|
55
55
|
};
|
|
56
56
|
export declare const fetchTransactionStatus: ({ transaction, integratorId, currentRequestId, apiUrl, }: {
|
|
57
|
-
transaction?: Pick<SimplifiedTransactionHistory, "transactionId" | "status" | "fromChain" | "toChain" | "
|
|
57
|
+
transaction?: Pick<SimplifiedTransactionHistory, "transactionId" | "status" | "fromChain" | "toChain" | "bridgeType"> | undefined;
|
|
58
58
|
integratorId: string;
|
|
59
59
|
currentRequestId?: string | undefined;
|
|
60
60
|
apiUrl: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BridgeProvider } from "@0xsquid/squid-types";
|
|
1
2
|
import axios from "axios";
|
|
2
3
|
import { TransactionType } from "../../core/types/transaction";
|
|
3
4
|
import { getQueryHeaders } from "./apiService";
|
|
@@ -62,14 +63,22 @@ export const getMainExplorerUrl = (transaction) => {
|
|
|
62
63
|
return undefined;
|
|
63
64
|
};
|
|
64
65
|
/**
|
|
65
|
-
*
|
|
66
|
-
* Squid API is using a different status endpoint to track status of
|
|
66
|
+
* Some routes have special bridges, like CCTP or Chainflip
|
|
67
|
+
* Squid API is using a different status endpoint to track status of these bridges
|
|
67
68
|
* @param transaction
|
|
68
69
|
* @returns
|
|
69
70
|
*/
|
|
70
|
-
export const
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
export const getBridgeType = (estimate) => {
|
|
72
|
+
if (!estimate?.actions)
|
|
73
|
+
return;
|
|
74
|
+
const allProviders = Object.values(BridgeProvider);
|
|
75
|
+
for (const action of estimate.actions) {
|
|
76
|
+
const provider = action.provider;
|
|
77
|
+
if (allProviders.includes(provider)) {
|
|
78
|
+
return provider.toLowerCase();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return;
|
|
73
82
|
};
|
|
74
83
|
export const formatDistance = (date, baseDate, options) => {
|
|
75
84
|
const { includeSeconds = false, addSuffix = false, locale = { locale: "en-US" }, } = options || {};
|
|
@@ -166,7 +175,7 @@ export const fetchTransactionStatus = async ({ transaction, integratorId, curren
|
|
|
166
175
|
transactionId: transaction?.transactionId,
|
|
167
176
|
fromChainId: transaction?.fromChain,
|
|
168
177
|
toChainId: transaction?.toChain,
|
|
169
|
-
|
|
178
|
+
bridgeType: transaction?.bridgeType,
|
|
170
179
|
},
|
|
171
180
|
headers: getQueryHeaders(integratorId, currentRequestId ?? ""),
|
|
172
181
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionService.js","sourceRoot":"","sources":["../../../src/services/internal/transactionService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transactionService.js","sourceRoot":"","sources":["../../../src/services/internal/transactionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,16 @@
|
|
|
1
1
|
import type { ChainData, Token } from "@0xsquid/squid-types";
|
|
2
2
|
import { ChainType } from "@0xsquid/squid-types";
|
|
3
|
-
import type {
|
|
4
|
-
import { Chain } from "@wagmi/core/chains";
|
|
5
|
-
import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate";
|
|
6
|
-
import { OfflineSigner } from "@cosmjs/proto-signing";
|
|
7
|
-
import { SigningStargateClient } from "@cosmjs/stargate";
|
|
3
|
+
import type { Keplr } from "@keplr-wallet/types";
|
|
8
4
|
import { Connector } from "@wagmi/core";
|
|
5
|
+
import { Chain } from "@wagmi/core/chains";
|
|
9
6
|
import { TokenWithBalance } from "../../core/types/tokens";
|
|
10
|
-
import type {
|
|
7
|
+
import type { EnsSearchResult, Wallet } from "../../core/types/wallet";
|
|
11
8
|
type FormatHashParams = {
|
|
12
9
|
hash?: string;
|
|
13
10
|
chainType?: ChainType;
|
|
14
11
|
};
|
|
15
12
|
export declare const formatHash: ({ chainType, hash }: FormatHashParams) => string;
|
|
16
|
-
export declare const isCosmosAddressValid: (chainPrefix: string, address: string) => boolean;
|
|
17
13
|
export declare const isWalletAddressValid: (chainData?: ChainData, address?: string) => boolean;
|
|
18
|
-
export declare const getCosmosSigningClient: ({ chainRpc, cosmosSigner, defaultSigningClient, }: {
|
|
19
|
-
chainRpc: string;
|
|
20
|
-
cosmosSigner: OfflineSigner | null;
|
|
21
|
-
defaultSigningClient: typeof SigningStargateClient | typeof SigningCosmWasmClient;
|
|
22
|
-
}) => Promise<SigningCosmWasmClient | SigningStargateClient | null>;
|
|
23
|
-
export declare const getCosmosChainInfosObject: (chain: ChainData) => ChainInfo;
|
|
24
14
|
export declare const redirectExtensionStoreIfNotInstalled: (wallet: Wallet) => void;
|
|
25
15
|
/**
|
|
26
16
|
* Get the value of an object property using a string path
|
|
@@ -45,20 +35,8 @@ export declare const accessProperty: (object: Record<string, any>, path: string)
|
|
|
45
35
|
* @returns Cosmos address
|
|
46
36
|
*/
|
|
47
37
|
export declare const getCosmosKey: (chainId?: string, keplrTypeWallet?: Keplr) => Promise<string | undefined>;
|
|
48
|
-
/**
|
|
49
|
-
* Get the cosmos address for a given chain
|
|
50
|
-
* This might pop up a keplr modal to approve the chain
|
|
51
|
-
* @param chainId
|
|
52
|
-
* @param keplrTypeWallet
|
|
53
|
-
* @returns Cosmos address
|
|
54
|
-
*/
|
|
55
|
-
export declare const getAllKeysForSupportedCosmosChains: (chainIds: string[], keplrTypeWallet: Keplr | undefined) => Promise<{
|
|
56
|
-
address: string;
|
|
57
|
-
chainId: string;
|
|
58
|
-
}[]>;
|
|
59
38
|
export declare const getWallets: (window: Window | undefined) => Wallet[];
|
|
60
39
|
export declare const metamaskIcon: string | undefined;
|
|
61
|
-
export declare const EvmNetworkNotSupportedErrorCode = 4902;
|
|
62
40
|
/**
|
|
63
41
|
* Sort order:
|
|
64
42
|
* 1. Connected wallets
|
|
@@ -79,10 +57,6 @@ export declare function sortWallets(a: Pick<Wallet, "connectorId" | "isInstalled
|
|
|
79
57
|
export declare function areSameAddress(address1?: string, address2?: string): boolean;
|
|
80
58
|
export declare function sortAddressBook(a: EnsSearchResult, b: EnsSearchResult, selectedAddress?: string): 1 | 0 | -1;
|
|
81
59
|
export declare const calculateTotalUsdBalanceUSD: (tokens: Pick<TokenWithBalance, "balance" | "usdPrice">[]) => string;
|
|
82
|
-
export declare function addEthereumChain({ chain, provider, }: {
|
|
83
|
-
chain: ChainData;
|
|
84
|
-
provider: any;
|
|
85
|
-
}): Promise<any>;
|
|
86
60
|
export declare function addTokenToWallet({ token: { address, decimals, symbol, logoURI }, provider, }: {
|
|
87
61
|
token: Pick<Token, "address" | "symbol" | "decimals" | "logoURI">;
|
|
88
62
|
provider: any;
|
|
@@ -104,30 +78,4 @@ export declare const findWalletByWagmiConnector: (wallets: Wallet[], connector:
|
|
|
104
78
|
* @returns
|
|
105
79
|
*/
|
|
106
80
|
export declare const findWalletByLabel: (wallets: Wallet[], label: string) => Wallet | undefined;
|
|
107
|
-
export declare const connectEvmWallet: (wallet: EvmWallet, { connectEvmAsync, activeEvmConnector, }: {
|
|
108
|
-
connectEvmAsync: any;
|
|
109
|
-
activeEvmConnector: any;
|
|
110
|
-
}) => Promise<{
|
|
111
|
-
wallet: EvmWallet;
|
|
112
|
-
address: any;
|
|
113
|
-
} | null>;
|
|
114
|
-
export declare const connectCosmosWallet: (wallet: CosmosWallet, baseChain: ChainData, { connectCosmos, cosmosConnectedWallet, }: {
|
|
115
|
-
connectCosmos: any;
|
|
116
|
-
cosmosConnectedWallet: any;
|
|
117
|
-
}) => Promise<{
|
|
118
|
-
wallet: CosmosWallet;
|
|
119
|
-
address: any;
|
|
120
|
-
} | null>;
|
|
121
|
-
export declare const connectWalletByType: (wallet: Wallet, baseChain: ChainData, context: {
|
|
122
|
-
connectEvmAsync: any;
|
|
123
|
-
activeEvmConnector: any;
|
|
124
|
-
connectCosmos: any;
|
|
125
|
-
cosmosConnectedWallet: any;
|
|
126
|
-
}) => Promise<{
|
|
127
|
-
wallet: EvmWallet;
|
|
128
|
-
address: any;
|
|
129
|
-
} | {
|
|
130
|
-
wallet: CosmosWallet;
|
|
131
|
-
address: any;
|
|
132
|
-
} | null>;
|
|
133
81
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
-
import {
|
|
2
|
+
import { ChainNotConfiguredError } from "@wagmi/core";
|
|
3
3
|
import getProperty from "lodash/get";
|
|
4
4
|
import { isAddress, SwitchChainError } from "viem";
|
|
5
|
-
import { ChainNotConfiguredError } from "@wagmi/core";
|
|
6
5
|
import { CHAIN_RPC_MAPPING } from "../../core/constants";
|
|
7
6
|
import { formattedWallets, walletStoreLinks } from "../../core/wallets";
|
|
7
|
+
import { isBitcoinAddressValid } from "./bitcoinService";
|
|
8
|
+
import { isCosmosAddressValid } from "./cosmosService";
|
|
8
9
|
const chainTypeToTrimLength = {
|
|
9
10
|
// 0x1234...5678
|
|
10
11
|
[ChainType.EVM]: {
|
|
@@ -21,6 +22,10 @@ const chainTypeToTrimLength = {
|
|
|
21
22
|
start: 8,
|
|
22
23
|
end: 4,
|
|
23
24
|
},
|
|
25
|
+
[ChainType.SOLANA]: {
|
|
26
|
+
start: 4,
|
|
27
|
+
end: 4,
|
|
28
|
+
},
|
|
24
29
|
};
|
|
25
30
|
export const formatHash = ({ chainType, hash }) => {
|
|
26
31
|
if (!hash)
|
|
@@ -43,58 +48,19 @@ export const formatHash = ({ chainType, hash }) => {
|
|
|
43
48
|
"..." +
|
|
44
49
|
hash.slice(hash.length - trimLengthEnd, hash.length));
|
|
45
50
|
};
|
|
46
|
-
export const isCosmosAddressValid = (chainPrefix, address) => {
|
|
47
|
-
try {
|
|
48
|
-
if (!address.toLowerCase().startsWith(chainPrefix)) {
|
|
49
|
-
throw new Error("Invalid address for this chain");
|
|
50
|
-
}
|
|
51
|
-
fromBech32(address);
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
51
|
export const isWalletAddressValid = (chainData, address) => {
|
|
59
|
-
if (address)
|
|
60
|
-
|
|
52
|
+
if (!address || !chainData?.chainType)
|
|
53
|
+
return false;
|
|
54
|
+
switch (chainData.chainType) {
|
|
55
|
+
case ChainType.EVM:
|
|
61
56
|
return isAddress(address);
|
|
62
|
-
|
|
63
|
-
if (chainData?.chainType === ChainType.COSMOS) {
|
|
57
|
+
case ChainType.COSMOS:
|
|
64
58
|
return isCosmosAddressValid(chainData.bech32Config.bech32PrefixAccAddr, address);
|
|
65
|
-
|
|
59
|
+
case ChainType.BTC:
|
|
60
|
+
return isBitcoinAddressValid(address);
|
|
61
|
+
default:
|
|
62
|
+
return false;
|
|
66
63
|
}
|
|
67
|
-
return false;
|
|
68
|
-
};
|
|
69
|
-
export const getCosmosSigningClient = async ({ chainRpc, cosmosSigner, defaultSigningClient, }) => {
|
|
70
|
-
if (!cosmosSigner)
|
|
71
|
-
return null;
|
|
72
|
-
// const cosmosClient = (await isNomos())
|
|
73
|
-
// ? SigningNomosClient.connectWithSigner(chainRpc, cosmosSigner) // use Nomos provider
|
|
74
|
-
return defaultSigningClient.connectWithSigner(chainRpc, cosmosSigner); // use default cosmos provider
|
|
75
|
-
};
|
|
76
|
-
export const getCosmosChainInfosObject = (chain) => {
|
|
77
|
-
const cosmosChain = chain;
|
|
78
|
-
//
|
|
79
|
-
// TODO: In the future, it will be better to do this parsing on backend side.
|
|
80
|
-
//
|
|
81
|
-
// The `gasPriceStep` field of the `ChainInfo` has been moved under `feeCurrencies`.
|
|
82
|
-
// This is automatically handled as of right now, but the upcoming update would potentially cause errors.
|
|
83
|
-
delete cosmosChain.gasPriceStep;
|
|
84
|
-
// The `coinType` field of the `ChainInfo` is removed. This is automatically handled as of right now,
|
|
85
|
-
// but the upcoming update would potentially cause errors.
|
|
86
|
-
delete cosmosChain.coinType;
|
|
87
|
-
return {
|
|
88
|
-
...cosmosChain,
|
|
89
|
-
feeCurrencies: cosmosChain.feeCurrencies.map((feeCurrency) => ({
|
|
90
|
-
...feeCurrency,
|
|
91
|
-
// Gas price step is now under feeCurrencies
|
|
92
|
-
gasPriceStep: cosmosChain.gasPriceStep,
|
|
93
|
-
})),
|
|
94
|
-
chainName: cosmosChain.networkName,
|
|
95
|
-
chainId: cosmosChain.chainId.toString(),
|
|
96
|
-
rpc: cosmosChain.rpc.split("?chain")[0],
|
|
97
|
-
};
|
|
98
64
|
};
|
|
99
65
|
export const redirectExtensionStoreIfNotInstalled = (wallet) => {
|
|
100
66
|
const { userAgent } = navigator;
|
|
@@ -169,35 +135,6 @@ export const getCosmosKey = async (chainId, keplrTypeWallet) => {
|
|
|
169
135
|
const key = await keplrTypeWallet?.getKey(chainId);
|
|
170
136
|
return key.bech32Address;
|
|
171
137
|
};
|
|
172
|
-
/**
|
|
173
|
-
* Get the cosmos address for a given chain
|
|
174
|
-
* This might pop up a keplr modal to approve the chain
|
|
175
|
-
* @param chainId
|
|
176
|
-
* @param keplrTypeWallet
|
|
177
|
-
* @returns Cosmos address
|
|
178
|
-
*/
|
|
179
|
-
export const getAllKeysForSupportedCosmosChains = async (chainIds, keplrTypeWallet) => {
|
|
180
|
-
const addresses = [];
|
|
181
|
-
if (!keplrTypeWallet)
|
|
182
|
-
return addresses;
|
|
183
|
-
for (const chainId of chainIds) {
|
|
184
|
-
try {
|
|
185
|
-
const keys = await keplrTypeWallet.getKeysSettled([chainId]);
|
|
186
|
-
keys.forEach((key) => {
|
|
187
|
-
if (key.status === "fulfilled" && key.value?.bech32Address) {
|
|
188
|
-
addresses.push({
|
|
189
|
-
address: key.value.bech32Address,
|
|
190
|
-
chainId,
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
console.debug(`Failed to get keys for chain ${chainId}:`, error);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return addresses;
|
|
200
|
-
};
|
|
201
138
|
const definedInWindow = (path, clientWindow) => {
|
|
202
139
|
if (!path || !clientWindow)
|
|
203
140
|
return false;
|
|
@@ -227,7 +164,6 @@ export const getWallets = (window) => {
|
|
|
227
164
|
});
|
|
228
165
|
};
|
|
229
166
|
export const metamaskIcon = formattedWallets.find((w) => w.connectorId === "metaMaskSDK")?.icon;
|
|
230
|
-
export const EvmNetworkNotSupportedErrorCode = 4902;
|
|
231
167
|
/**
|
|
232
168
|
* Sort order:
|
|
233
169
|
* 1. Connected wallets
|
|
@@ -307,28 +243,6 @@ export const calculateTotalUsdBalanceUSD = (tokens) => {
|
|
|
307
243
|
const trimmedTotal = preciseTotal.replace(/\.?0+$/, "");
|
|
308
244
|
return trimmedTotal;
|
|
309
245
|
};
|
|
310
|
-
export async function addEthereumChain({ chain, provider, }) {
|
|
311
|
-
const chainName = chain.rpc.includes("tenderly")
|
|
312
|
-
? `${chain.networkName} Tenderly fork`
|
|
313
|
-
: chain.networkName;
|
|
314
|
-
const chainParameters = {
|
|
315
|
-
chainId: `0x${parseInt(chain.chainId, 10).toString(16)}`,
|
|
316
|
-
chainName,
|
|
317
|
-
nativeCurrency: chain.nativeCurrency,
|
|
318
|
-
rpcUrls: [chain.rpc],
|
|
319
|
-
blockExplorerUrls: chain.blockExplorerUrls,
|
|
320
|
-
iconUrls: [chain.chainIconURI],
|
|
321
|
-
};
|
|
322
|
-
try {
|
|
323
|
-
return provider.request({
|
|
324
|
-
method: "wallet_addEthereumChain",
|
|
325
|
-
params: [chainParameters],
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
catch (error) {
|
|
329
|
-
console.debug("Error adding chain:", error);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
246
|
export function addTokenToWallet({ token: { address, decimals, symbol, logoURI }, provider, }) {
|
|
333
247
|
if (!address || !symbol || !decimals || !logoURI)
|
|
334
248
|
return;
|
|
@@ -380,53 +294,4 @@ export const findWalletByLabel = (wallets, label) => {
|
|
|
380
294
|
w.connectorName.toLowerCase() === label.toLowerCase() ||
|
|
381
295
|
w.rdns?.toLowerCase() === label.toLowerCase());
|
|
382
296
|
};
|
|
383
|
-
export const connectEvmWallet = async (wallet, { connectEvmAsync, activeEvmConnector, }) => {
|
|
384
|
-
if (!wallet.connector) {
|
|
385
|
-
throw new Error("Wallet connector is undefined");
|
|
386
|
-
}
|
|
387
|
-
// No need to connect to the same wallet
|
|
388
|
-
if (wallet.connectorId === activeEvmConnector?.id) {
|
|
389
|
-
return null;
|
|
390
|
-
}
|
|
391
|
-
const evmConnectionResult = await connectEvmAsync({
|
|
392
|
-
connector: wallet.connector(),
|
|
393
|
-
});
|
|
394
|
-
return {
|
|
395
|
-
wallet,
|
|
396
|
-
address: evmConnectionResult.accounts?.[0] ?? "",
|
|
397
|
-
};
|
|
398
|
-
};
|
|
399
|
-
export const connectCosmosWallet = async (wallet, baseChain, { connectCosmos, cosmosConnectedWallet, }) => {
|
|
400
|
-
// No need to connect to the same wallet
|
|
401
|
-
if (wallet.connectorId === cosmosConnectedWallet?.connectorId) {
|
|
402
|
-
return null;
|
|
403
|
-
}
|
|
404
|
-
const address = await connectCosmos?.mutateAsync({
|
|
405
|
-
chain: baseChain,
|
|
406
|
-
wallet: wallet,
|
|
407
|
-
});
|
|
408
|
-
if (address) {
|
|
409
|
-
//TODO: Careful here, commented here because not needed for Wallet component, but might be needed for Widget component
|
|
410
|
-
// This setState could be implemented on the Widget side, instead of hooks here
|
|
411
|
-
//
|
|
412
|
-
// useSwapRoutePersistStore.setState({
|
|
413
|
-
// swapRoute: {
|
|
414
|
-
// ...useSwapRoutePersistStore.getState().swapRoute,
|
|
415
|
-
// destinationAddress: { address },
|
|
416
|
-
// },
|
|
417
|
-
// });
|
|
418
|
-
return { wallet, address };
|
|
419
|
-
}
|
|
420
|
-
return null;
|
|
421
|
-
};
|
|
422
|
-
export const connectWalletByType = async (wallet, baseChain, context) => {
|
|
423
|
-
switch (wallet.type) {
|
|
424
|
-
case ChainType.EVM:
|
|
425
|
-
return connectEvmWallet(wallet, context);
|
|
426
|
-
case ChainType.COSMOS:
|
|
427
|
-
return connectCosmosWallet(wallet, baseChain, context);
|
|
428
|
-
default:
|
|
429
|
-
throw new Error(`Unsupported wallet type: ${wallet.type}`);
|
|
430
|
-
}
|
|
431
|
-
};
|
|
432
297
|
//# sourceMappingURL=walletService.js.map
|