@0xsquid/react-hooks 6.7.0-rollup-beta.0 → 6.7.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/abis/ics20.json +128 -0
- package/dist/core/connectors/bitcoin/errors/index.js +22 -0
- package/dist/core/connectors/bitcoin/errors/index.js.map +1 -0
- package/dist/core/connectors/bitcoin/helpers.js +86 -0
- package/dist/core/connectors/bitcoin/helpers.js.map +1 -0
- package/dist/core/connectors/bitcoin/index.js +2 -0
- package/dist/core/connectors/bitcoin/index.js.map +1 -0
- package/dist/core/connectors/bitcoin/wallets/index.js +4 -0
- package/dist/core/connectors/bitcoin/wallets/index.js.map +1 -0
- package/dist/core/connectors/bitcoin/wallets/keplr.js +28 -0
- package/dist/core/connectors/bitcoin/wallets/keplr.js.map +1 -0
- package/dist/core/connectors/bitcoin/wallets/phantom.js +56 -0
- package/dist/core/connectors/bitcoin/wallets/phantom.js.map +1 -0
- package/dist/core/connectors/bitcoin/wallets/unisat.js +28 -0
- package/dist/core/connectors/bitcoin/wallets/unisat.js.map +1 -0
- package/dist/core/constants.js +144 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/externalLinks.js +21 -0
- package/dist/core/externalLinks.js.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/multicall3.js +442 -0
- package/dist/core/multicall3.js.map +1 -0
- package/dist/core/providers/CosmosProvider.js +13 -0
- package/dist/core/providers/CosmosProvider.js.map +1 -0
- package/dist/core/providers/SolanaProvider.js +15 -0
- package/dist/core/providers/SolanaProvider.js.map +1 -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 +2 -2
- package/dist/core/queries/queries-keys.js +206 -0
- package/dist/core/queries/queries-keys.js.map +1 -0
- package/dist/core/queries/react-query-config.js +11 -0
- package/dist/core/queries/react-query-config.js.map +1 -0
- package/dist/core/types/config.d.ts +2 -0
- package/dist/core/types/config.js +2 -0
- package/dist/core/types/config.js.map +1 -0
- package/dist/core/types/dex.js +33 -0
- package/dist/core/types/dex.js.map +1 -0
- package/dist/core/types/error.js +12 -0
- package/dist/core/types/error.js.map +1 -0
- package/dist/core/types/event.d.ts +5 -0
- package/dist/core/types/event.js +2 -0
- package/dist/core/types/event.js.map +1 -0
- package/dist/core/types/index.js +2 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/rpc.js +2 -0
- package/dist/core/types/rpc.js.map +1 -0
- package/dist/core/types/sui.js +2 -0
- package/dist/core/types/sui.js.map +1 -0
- package/dist/core/types/swap.js +2 -0
- package/dist/core/types/swap.js.map +1 -0
- package/dist/core/types/tokens.js +2 -0
- package/dist/core/types/tokens.js.map +1 -0
- package/dist/core/types/transaction.js +41 -0
- package/dist/core/types/transaction.js.map +1 -0
- package/dist/core/types/wallet.js +26 -0
- package/dist/core/types/wallet.js.map +1 -0
- package/dist/core/wagmiConfig.js +60 -0
- package/dist/core/wagmiConfig.js.map +1 -0
- package/dist/core/wallets.js +549 -0
- package/dist/core/wallets.js.map +1 -0
- package/dist/hooks/analytics/useTrackSearchEmpty.d.ts +12 -0
- package/dist/hooks/analytics/useTrackSearchEmpty.js +22 -0
- package/dist/hooks/analytics/useTrackSearchEmpty.js.map +1 -0
- package/dist/hooks/chains/useSquidChains.js +107 -0
- package/dist/hooks/chains/useSquidChains.js.map +1 -0
- package/dist/hooks/client/useClient.js +6 -0
- package/dist/hooks/client/useClient.js.map +1 -0
- package/dist/hooks/cosmos/useCosmos.js +172 -0
- package/dist/hooks/cosmos/useCosmos.js.map +1 -0
- package/dist/hooks/cosmos/useCosmosForChain.js +33 -0
- package/dist/hooks/cosmos/useCosmosForChain.js.map +1 -0
- package/dist/hooks/index.d.ts +5 -5
- package/dist/hooks/index.js +45 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/navigation/useKeyboardNavigation.js +67 -0
- package/dist/hooks/navigation/useKeyboardNavigation.js.map +1 -0
- package/dist/hooks/query/useSquidQueryClient.js +23 -0
- package/dist/hooks/query/useSquidQueryClient.js.map +1 -0
- package/dist/hooks/solana/useSolana.js +104 -0
- package/dist/hooks/solana/useSolana.js.map +1 -0
- package/dist/hooks/squid/useSquid.js +55 -0
- package/dist/hooks/squid/useSquid.js.map +1 -0
- package/dist/hooks/store/useAddressBookStore.js +26 -0
- package/dist/hooks/store/useAddressBookStore.js.map +1 -0
- package/dist/hooks/store/useAssetsColorsStore.js +7 -0
- package/dist/hooks/store/useAssetsColorsStore.js.map +1 -0
- package/dist/hooks/store/useDepositAddressStore.js +12 -0
- package/dist/hooks/store/useDepositAddressStore.js.map +1 -0
- package/dist/hooks/store/useFavoriteTokensStore.js +28 -0
- package/dist/hooks/store/useFavoriteTokensStore.js.map +1 -0
- package/dist/hooks/store/useHistoryStore.js +41 -0
- package/dist/hooks/store/useHistoryStore.js.map +1 -0
- package/dist/hooks/store/useSquidStore.js +56 -0
- package/dist/hooks/store/useSquidStore.js.map +1 -0
- package/dist/hooks/store/useWalletStore.js +42 -0
- package/dist/hooks/store/useWalletStore.js.map +1 -0
- package/dist/hooks/sui/useSui.js +28 -0
- package/dist/hooks/sui/useSui.js.map +1 -0
- package/dist/hooks/sui/useSuiClient.js +16 -0
- package/dist/hooks/sui/useSuiClient.js.map +1 -0
- package/dist/hooks/sui/useSuiWallets.js +42 -0
- package/dist/hooks/sui/useSuiWallets.js.map +1 -0
- package/dist/hooks/swap/useDepositAddress.js +63 -0
- package/dist/hooks/swap/useDepositAddress.js.map +1 -0
- package/dist/hooks/swap/useSwap.js +209 -0
- package/dist/hooks/swap/useSwap.js.map +1 -0
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +103 -0
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +1 -0
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +119 -0
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +1 -0
- package/dist/hooks/tokens/useBalance.js +136 -0
- package/dist/hooks/tokens/useBalance.js.map +1 -0
- package/dist/hooks/tokens/useMultiChainBalance.js +68 -0
- package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -0
- package/dist/hooks/tokens/useMultipleTokenPrices.js +46 -0
- package/dist/hooks/tokens/useMultipleTokenPrices.js.map +1 -0
- package/dist/hooks/tokens/useNativeBalance.js +217 -0
- package/dist/hooks/tokens/useNativeBalance.js.map +1 -0
- package/dist/hooks/tokens/useNativeTokenForChain.js +28 -0
- package/dist/hooks/tokens/useNativeTokenForChain.js.map +1 -0
- package/dist/hooks/tokens/useSingleTokenPrice.js +38 -0
- package/dist/hooks/tokens/useSingleTokenPrice.js.map +1 -0
- package/dist/hooks/tokens/useSquidTokens.js +80 -0
- package/dist/hooks/tokens/useSquidTokens.js.map +1 -0
- package/dist/hooks/tokens/useTokenHistoricalData.js +23 -0
- package/dist/hooks/tokens/useTokenHistoricalData.js.map +1 -0
- package/dist/hooks/transaction/useAllTransactionsStatus.js +68 -0
- package/dist/hooks/transaction/useAllTransactionsStatus.js.map +1 -0
- package/dist/hooks/transaction/useApproval.js +223 -0
- package/dist/hooks/transaction/useApproval.js.map +1 -0
- package/dist/hooks/transaction/useErc20Allowance.js +43 -0
- package/dist/hooks/transaction/useErc20Allowance.js.map +1 -0
- package/dist/hooks/transaction/useEstimate.js +118 -0
- package/dist/hooks/transaction/useEstimate.js.map +1 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.js +31 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.js.map +1 -0
- package/dist/hooks/transaction/useExecuteTransaction.js +605 -0
- package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -0
- package/dist/hooks/transaction/useGetRoute.d.ts +3 -0
- package/dist/hooks/transaction/useGetRoute.js +230 -0
- package/dist/hooks/transaction/useGetRoute.js.map +1 -0
- package/dist/hooks/transaction/useIcs20Allowance.js +40 -0
- package/dist/hooks/transaction/useIcs20Allowance.js.map +1 -0
- package/dist/hooks/transaction/useRouteWarnings.js +19 -0
- package/dist/hooks/transaction/useRouteWarnings.js.map +1 -0
- package/dist/hooks/transaction/useSingleTransaction.js +91 -0
- package/dist/hooks/transaction/useSingleTransaction.js.map +1 -0
- package/dist/hooks/user/useAvatar.js +34 -0
- package/dist/hooks/user/useAvatar.js.map +1 -0
- package/dist/hooks/user/useHistory.js +106 -0
- package/dist/hooks/user/useHistory.js.map +1 -0
- package/dist/hooks/user/useUserParams.js +33 -0
- package/dist/hooks/user/useUserParams.js.map +1 -0
- package/dist/hooks/wallet/useAddToken.js +49 -0
- package/dist/hooks/wallet/useAddToken.js.map +1 -0
- package/dist/hooks/wallet/useAutoConnect.js +74 -0
- package/dist/hooks/wallet/useAutoConnect.js.map +1 -0
- package/dist/hooks/wallet/useEns.js +69 -0
- package/dist/hooks/wallet/useEns.js.map +1 -0
- package/dist/hooks/wallet/useGnosisContext.js +78 -0
- package/dist/hooks/wallet/useGnosisContext.js.map +1 -0
- package/dist/hooks/wallet/useIntegratorContext.js +39 -0
- package/dist/hooks/wallet/useIntegratorContext.js.map +1 -0
- package/dist/hooks/wallet/useMultiChainWallet.js +175 -0
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -0
- package/dist/hooks/wallet/useSigner.js +76 -0
- package/dist/hooks/wallet/useSigner.js.map +1 -0
- package/dist/hooks/wallet/useWallet.js +206 -0
- package/dist/hooks/wallet/useWallet.js.map +1 -0
- package/dist/hooks/wallet/useWallets.js +36 -0
- package/dist/hooks/wallet/useWallets.js.map +1 -0
- package/dist/index.js +6 -17096
- package/dist/index.js.map +1 -1
- package/dist/provider/index.js +113 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/services/external/ens.js +66 -0
- package/dist/services/external/ens.js.map +1 -0
- package/dist/services/external/rpcService.js +421 -0
- package/dist/services/external/rpcService.js.map +1 -0
- package/dist/{secretService-SEqSyHG0.js → services/external/secretService.js} +8 -37
- package/dist/services/external/secretService.js.map +1 -0
- package/dist/services/external/suiRpcClient.js +80 -0
- package/dist/services/external/suiRpcClient.js.map +1 -0
- package/dist/services/external/tokenDataService.js +108 -0
- package/dist/services/external/tokenDataService.js.map +1 -0
- package/dist/services/index.js +16 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/internal/apiService.js +21 -0
- package/dist/services/internal/apiService.js.map +1 -0
- package/dist/services/internal/assetsService.js +586 -0
- package/dist/services/internal/assetsService.js.map +1 -0
- package/dist/services/internal/bitcoinService.js +51 -0
- package/dist/services/internal/bitcoinService.js.map +1 -0
- package/dist/services/internal/configService.js +218 -0
- package/dist/services/internal/configService.js.map +1 -0
- package/dist/services/internal/cosmosService.js +141 -0
- package/dist/services/internal/cosmosService.js.map +1 -0
- package/dist/services/internal/errorService.js +188 -0
- package/dist/services/internal/errorService.js.map +1 -0
- package/dist/services/internal/estimateService.js +221 -0
- package/dist/services/internal/estimateService.js.map +1 -0
- package/dist/services/internal/eventService.d.ts +5 -0
- package/dist/services/internal/eventService.js +163 -0
- package/dist/services/internal/eventService.js.map +1 -0
- package/dist/services/internal/evmService.js +42 -0
- package/dist/services/internal/evmService.js.map +1 -0
- package/dist/services/internal/numberService.js +171 -0
- package/dist/services/internal/numberService.js.map +1 -0
- package/dist/services/internal/priceService.js +53 -0
- package/dist/services/internal/priceService.js.map +1 -0
- package/dist/services/internal/searchService.js +98 -0
- package/dist/services/internal/searchService.js.map +1 -0
- package/dist/services/internal/solanaService.js +109 -0
- package/dist/services/internal/solanaService.js.map +1 -0
- package/dist/services/internal/suiService.js +119 -0
- package/dist/services/internal/suiService.js.map +1 -0
- package/dist/services/internal/transactionService.js +207 -0
- package/dist/services/internal/transactionService.js.map +1 -0
- package/dist/services/internal/transactionStatusService.js +315 -0
- package/dist/services/internal/transactionStatusService.js.map +1 -0
- package/dist/services/internal/walletService.js +464 -0
- package/dist/services/internal/walletService.js.map +1 -0
- package/dist/tests/apiService.test.js +40 -0
- package/dist/tests/apiService.test.js.map +1 -0
- package/dist/tests/assetsService.test.js +500 -0
- package/dist/tests/assetsService.test.js.map +1 -0
- package/dist/tests/configService.test.js +673 -0
- package/dist/tests/configService.test.js.map +1 -0
- package/dist/tests/estimateService.test.js +355 -0
- package/dist/tests/estimateService.test.js.map +1 -0
- package/dist/tests/fetchSquidData.js +36 -0
- package/dist/tests/fetchSquidData.js.map +1 -0
- package/dist/tests/jest-svg-transform.d.ts +0 -0
- package/dist/tests/jest-svg-transform.js +21 -0
- package/dist/tests/jest-svg-transform.js.map +1 -0
- package/dist/tests/numberService.test.js +135 -0
- package/dist/tests/numberService.test.js.map +1 -0
- package/dist/tests/priceService.test.js +38 -0
- package/dist/tests/priceService.test.js.map +1 -0
- package/dist/tests/sample.json +0 -0
- package/dist/tests/searchService.test.js +92 -0
- package/dist/tests/searchService.test.js.map +1 -0
- package/dist/tests/swapConfig.test.js +332 -0
- package/dist/tests/swapConfig.test.js.map +1 -0
- package/dist/tests/transactionService.test.js +53 -0
- package/dist/tests/transactionService.test.js.map +1 -0
- package/dist/tests/transactionStatusService.test.js +165 -0
- package/dist/tests/transactionStatusService.test.js.map +1 -0
- package/dist/tests/walletService.test.js +264 -0
- package/dist/tests/walletService.test.js.map +1 -0
- package/package.json +4 -18
- package/dist/index.esm.js +0 -16892
- package/dist/index.esm.js.map +0 -1
- package/dist/secretService-Cc7emxDy.js +0 -162
- package/dist/secretService-Cc7emxDy.js.map +0 -1
- package/dist/secretService-SEqSyHG0.js.map +0 -1
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
+
import get from "lodash/get";
|
|
3
|
+
import { chainTypeToNativeTokenAddressMap, defaultConfigValues, } from "../../core/constants";
|
|
4
|
+
import { keys } from "../../core/queries/queries-keys";
|
|
5
|
+
import { shareSubgraphId } from "./assetsService";
|
|
6
|
+
export const getConfigWithDefaults = (config) => {
|
|
7
|
+
return {
|
|
8
|
+
integratorId: get(config, "integratorId", defaultConfigValues.integratorId),
|
|
9
|
+
slippage: get(config, "slippage", defaultConfigValues.slippage),
|
|
10
|
+
collectFees: get(config, "collectFees", defaultConfigValues.collectFees),
|
|
11
|
+
enableGetGasOnDestination: get(config, "enableGetGasOnDestination", defaultConfigValues.enableGetGasOnDestination),
|
|
12
|
+
apiUrl: get(config, "apiUrl", defaultConfigValues.apiUrl),
|
|
13
|
+
priceImpactWarnings: get(config, "priceImpactWarnings", defaultConfigValues.priceImpactWarnings),
|
|
14
|
+
initialAssets: get(config, "initialAssets", defaultConfigValues.initialAssets),
|
|
15
|
+
defaultTokensPerChain: get(config, "defaultTokensPerChain", defaultConfigValues.defaultTokensPerChain),
|
|
16
|
+
loadPreviousStateFromLocalStorage: get(config, "loadPreviousStateFromLocalStorage", defaultConfigValues.loadPreviousStateFromLocalStorage),
|
|
17
|
+
preferDex: get(config, "preferDex", defaultConfigValues.preferDex),
|
|
18
|
+
availableChains: get(config, "availableChains", defaultConfigValues.availableChains),
|
|
19
|
+
disabledChains: get(config, "disabledChains", defaultConfigValues.disabledChains),
|
|
20
|
+
degenMode: get(config, "degenMode", defaultConfigValues.degenMode),
|
|
21
|
+
preHook: get(config, "preHook", defaultConfigValues.preHook),
|
|
22
|
+
postHook: get(config, "postHook", defaultConfigValues.postHook),
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export const randomIntFromInterval = (min, max) => {
|
|
26
|
+
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
27
|
+
};
|
|
28
|
+
export const getTokensForChain = (tokens, chainId) => {
|
|
29
|
+
return chainId ? tokens.filter((t) => t.chainId === chainId) : tokens;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Returns the first available chain ID for a specific direction based on config.
|
|
33
|
+
* If no initial chains are found in config, returns the first available chain ID.
|
|
34
|
+
* @returns The first available chain ID.
|
|
35
|
+
*/
|
|
36
|
+
export const getFirstAvailableChainId = (config, direction, chains = []) => {
|
|
37
|
+
// filter chains based on config
|
|
38
|
+
const unavailableChainIds = getUnavailableChainIdsForDirection({
|
|
39
|
+
config,
|
|
40
|
+
direction,
|
|
41
|
+
});
|
|
42
|
+
const availableChains = chains.filter((c) => !unavailableChainIds.has(c.chainId));
|
|
43
|
+
// get initial chain ID from config
|
|
44
|
+
const initialChainId = getInitialChainIdFromConfig({
|
|
45
|
+
chains: availableChains,
|
|
46
|
+
config,
|
|
47
|
+
direction,
|
|
48
|
+
});
|
|
49
|
+
if (initialChainId)
|
|
50
|
+
return initialChainId;
|
|
51
|
+
// if no initial chain ID is found in config, return the first available chain ID
|
|
52
|
+
return availableChains.length > 0 ? availableChains[0].chainId : undefined;
|
|
53
|
+
};
|
|
54
|
+
export const fetchHighestBalanceToken = (fetchCachedBalance, chainId) => {
|
|
55
|
+
let address = undefined;
|
|
56
|
+
if (fetchCachedBalance) {
|
|
57
|
+
const queryCache = fetchCachedBalance?.queryClient?.getQueryCache();
|
|
58
|
+
// get cached balance from key
|
|
59
|
+
const cache = queryCache?.find(keys().allTokensBalance(fetchCachedBalance?.address, !isNaN(Number(chainId)) ? ChainType.EVM : ChainType.COSMOS));
|
|
60
|
+
// Parse result to TokenWithBalance[]
|
|
61
|
+
const cacheResult = cache?.state.data ?? [];
|
|
62
|
+
if (cacheResult.length > 0) {
|
|
63
|
+
const tokensWithBalance = cacheResult.filter((t) => t.chainId === chainId && Number(t.balance) > 0);
|
|
64
|
+
if (tokensWithBalance.length > 0) {
|
|
65
|
+
// Return the token with the highest balance
|
|
66
|
+
// TODO: At the moment we're not taking into account usd price
|
|
67
|
+
const tokenWithHighestBalance = tokensWithBalance.reduce((prev, current) => Number(prev.balance) > Number(current.balance) ? prev : current);
|
|
68
|
+
if (tokenWithHighestBalance) {
|
|
69
|
+
address = tokenWithHighestBalance.address;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return address;
|
|
75
|
+
};
|
|
76
|
+
const findNativeTokenForChainType = (tokens) => {
|
|
77
|
+
return tokens.find((t) => t.address.toLowerCase() ===
|
|
78
|
+
chainTypeToNativeTokenAddressMap[t.type].toLowerCase());
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Returns the default token address for a specific chain and direction based on config.
|
|
82
|
+
* If no default tokens are set in config, returns the first token in the tokens array for the specified chain
|
|
83
|
+
*
|
|
84
|
+
* @param tokens The list of tokens.
|
|
85
|
+
* @param config App config
|
|
86
|
+
* @param chainId The chain ID of the token
|
|
87
|
+
* @param direction The direction of the swap
|
|
88
|
+
* @param unavailableTokenAddress The token that is unavailable. Can be useful when we don't want to show the same token in the opposite direction
|
|
89
|
+
* @returns
|
|
90
|
+
*/
|
|
91
|
+
export const getInitialOrDefaultTokenAddressForChain = ({ tokens, config, chainId, direction, excludeToken, fetchCachedBalance, }) => {
|
|
92
|
+
if (!chainId)
|
|
93
|
+
return;
|
|
94
|
+
const unavailableChainIds = getUnavailableChainIdsForDirection({
|
|
95
|
+
config,
|
|
96
|
+
direction,
|
|
97
|
+
});
|
|
98
|
+
// filter disabled chains
|
|
99
|
+
if (unavailableChainIds.has(chainId))
|
|
100
|
+
return;
|
|
101
|
+
const configDefaultTokenForChain = config.defaultTokensPerChain?.find((token) => token.chainId == chainId);
|
|
102
|
+
// get default token from config
|
|
103
|
+
if (configDefaultTokenForChain &&
|
|
104
|
+
configDefaultTokenForChain.address !== excludeToken?.address &&
|
|
105
|
+
configDefaultTokenForChain.chainId !== excludeToken?.chainId) {
|
|
106
|
+
return configDefaultTokenForChain.address;
|
|
107
|
+
}
|
|
108
|
+
// if no default token is found in config, try to get initial token
|
|
109
|
+
const initialToken = getInitialTokenAddressForChain({
|
|
110
|
+
chainId,
|
|
111
|
+
config,
|
|
112
|
+
direction,
|
|
113
|
+
tokens,
|
|
114
|
+
});
|
|
115
|
+
if (initialToken)
|
|
116
|
+
return initialToken;
|
|
117
|
+
// At this point all has been tried to return via config params
|
|
118
|
+
// But we can be smarter and see if a token has a balance and select that one
|
|
119
|
+
const highestBalance = fetchHighestBalanceToken(fetchCachedBalance, chainId);
|
|
120
|
+
if (highestBalance)
|
|
121
|
+
return highestBalance;
|
|
122
|
+
const filteredTokens = chainId
|
|
123
|
+
? tokens.filter((t) => t.chainId === chainId &&
|
|
124
|
+
!(t.address == excludeToken?.address &&
|
|
125
|
+
t.chainId === excludeToken?.chainId))
|
|
126
|
+
: tokens;
|
|
127
|
+
return (findNativeTokenForChainType(filteredTokens)?.address ||
|
|
128
|
+
filteredTokens[0]?.address);
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Retrieves the initial token address for a specific chain and direction.
|
|
132
|
+
* If no initial assets are set in config, returns undefined.
|
|
133
|
+
*
|
|
134
|
+
* @param tokens - The list of tokens.
|
|
135
|
+
* @param config - The application configuration.
|
|
136
|
+
* @param chainId - The ID of the chain.
|
|
137
|
+
* @param direction - The direction ("from" or "to").
|
|
138
|
+
* @returns The initial token address if found; otherwise, the default token address.
|
|
139
|
+
*/
|
|
140
|
+
export const getInitialTokenAddressForChain = ({ chainId, config, direction, tokens, unavailableTokenAddress, }) => {
|
|
141
|
+
if (config.initialAssets &&
|
|
142
|
+
config.initialAssets?.[direction] &&
|
|
143
|
+
config.initialAssets?.[direction]?.chainId === chainId &&
|
|
144
|
+
config.initialAssets?.[direction]?.address !== unavailableTokenAddress &&
|
|
145
|
+
// check if initial asset exists in tokens
|
|
146
|
+
tokens.some((t) => t.chainId === config.initialAssets?.[direction]?.chainId &&
|
|
147
|
+
t.address.toLowerCase() ===
|
|
148
|
+
config.initialAssets?.[direction]?.address?.toLowerCase())) {
|
|
149
|
+
return config.initialAssets?.[direction]?.address;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Filter tokens for destination chain
|
|
154
|
+
*
|
|
155
|
+
* Case 1: fromToken.bridgeOnly = true
|
|
156
|
+
* Destination token list shows only tokens with the same commonKey as fromToken
|
|
157
|
+
*
|
|
158
|
+
* Case 2: fromToken.bridgeOnly = false
|
|
159
|
+
* Destination token list shows all tokens with bridgeOnly = false
|
|
160
|
+
* OR Destination token list shows all tokens with the same commonKey as fromToken
|
|
161
|
+
* @param tokens
|
|
162
|
+
* @param selectedDestinationChain
|
|
163
|
+
* @param selectedSourceToken
|
|
164
|
+
* @param removeSourceToken
|
|
165
|
+
* @returns
|
|
166
|
+
*/
|
|
167
|
+
export const filterTokensForDestination = ({ tokens, selectedDestinationChain, selectedSourceToken, removeSourceToken = false, }) => {
|
|
168
|
+
let filteredTokens = [];
|
|
169
|
+
if (selectedSourceToken?.subGraphOnly) {
|
|
170
|
+
filteredTokens = tokens.filter((t) => shareSubgraphId(t, selectedSourceToken));
|
|
171
|
+
}
|
|
172
|
+
filteredTokens = tokens.filter((t) => !t.subGraphOnly || shareSubgraphId(t, selectedSourceToken));
|
|
173
|
+
return filteredTokens.filter((t) => {
|
|
174
|
+
const areSameToken = t.address === selectedSourceToken?.address &&
|
|
175
|
+
t.chainId === selectedSourceToken.chainId;
|
|
176
|
+
const isChainValid = !!selectedDestinationChain
|
|
177
|
+
? t.chainId === selectedDestinationChain?.chainId
|
|
178
|
+
: true;
|
|
179
|
+
if (removeSourceToken)
|
|
180
|
+
return !areSameToken && isChainValid;
|
|
181
|
+
// return all tokens if destination chain is not selected
|
|
182
|
+
return isChainValid;
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Returns the initial chain ID for a specific direction based on the provided chains and config.
|
|
187
|
+
* @returns The initial chain ID if found in config; otherwise, undefined.
|
|
188
|
+
*/
|
|
189
|
+
export const getInitialChainIdFromConfig = ({ config, direction, chains = [], }) => {
|
|
190
|
+
if (chains.length === 0)
|
|
191
|
+
return undefined;
|
|
192
|
+
const unavailableChains = getUnavailableChainIdsForDirection({
|
|
193
|
+
config,
|
|
194
|
+
direction,
|
|
195
|
+
});
|
|
196
|
+
const availableChains = chains.filter((c) => !unavailableChains.has(c.chainId));
|
|
197
|
+
if (direction === "from" &&
|
|
198
|
+
config.initialAssets?.from &&
|
|
199
|
+
availableChains.some((c) => c.chainId === String(config.initialAssets?.from?.chainId))) {
|
|
200
|
+
return String(config.initialAssets.from.chainId);
|
|
201
|
+
}
|
|
202
|
+
if (direction === "to" &&
|
|
203
|
+
config.initialAssets?.to &&
|
|
204
|
+
availableChains.some((c) => c.chainId === String(config.initialAssets?.to?.chainId))) {
|
|
205
|
+
return String(config.initialAssets.to.chainId);
|
|
206
|
+
}
|
|
207
|
+
return undefined;
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* Returns the unavailable chains for a specific direction based on the provided config,
|
|
211
|
+
* filtering config.disabledChains and config.comingSoonChains
|
|
212
|
+
* @returns The unavailable chains for the specified direction.
|
|
213
|
+
*/
|
|
214
|
+
export const getUnavailableChainIdsForDirection = ({ config, direction, }) => {
|
|
215
|
+
const disabledChainsForDirection = config.disabledChains?.[direction === "from" ? "source" : "destination"];
|
|
216
|
+
return new Set(disabledChainsForDirection ?? []);
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=configService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configService.js","sourceRoot":"","sources":["../../../src/services/internal/configService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
+
import { fromBech32 } from "@cosmjs/encoding";
|
|
3
|
+
import { CHAIN_IDS } from "../../core/constants";
|
|
4
|
+
import { isUserRejectionError, normalizeError } from "./errorService";
|
|
5
|
+
import { isXionSmartContractAddress } from "./walletService";
|
|
6
|
+
/**
|
|
7
|
+
* Get the cosmos address for a given chain
|
|
8
|
+
* This might pop up a keplr modal to approve the chain
|
|
9
|
+
* @param chainId
|
|
10
|
+
* @param keplrTypeWallet
|
|
11
|
+
* @returns Cosmos address
|
|
12
|
+
*/
|
|
13
|
+
export const getCosmosKey = async (chainId, keplrTypeWallet) => {
|
|
14
|
+
if (!chainId || !keplrTypeWallet)
|
|
15
|
+
return undefined;
|
|
16
|
+
const key = await keplrTypeWallet?.getKey(chainId);
|
|
17
|
+
return key.bech32Address;
|
|
18
|
+
};
|
|
19
|
+
export const getKeysSettled = async (chainIds, keplrTypeWallet) => {
|
|
20
|
+
if (!keplrTypeWallet)
|
|
21
|
+
return [];
|
|
22
|
+
const paramArray = chainIds.map((chainId) => getCosmosKey(chainId, keplrTypeWallet));
|
|
23
|
+
return Promise.allSettled(paramArray);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Get the cosmos address for a given chain
|
|
27
|
+
* This might pop up a keplr modal to approve the chain
|
|
28
|
+
* @param chainId
|
|
29
|
+
* @param keplrTypeWallet
|
|
30
|
+
* @returns Cosmos address
|
|
31
|
+
*/
|
|
32
|
+
export const getAllKeysForSupportedCosmosChains = async (chainIds, keplrTypeWallet) => {
|
|
33
|
+
if (!keplrTypeWallet)
|
|
34
|
+
return [];
|
|
35
|
+
const addresses = [];
|
|
36
|
+
for (const chainId of chainIds) {
|
|
37
|
+
try {
|
|
38
|
+
const keys = await getKeysSettled([chainId], keplrTypeWallet);
|
|
39
|
+
keys.forEach((key) => {
|
|
40
|
+
if (key.status === "fulfilled" && key.value) {
|
|
41
|
+
const bech32Address = key.value;
|
|
42
|
+
addresses.push({
|
|
43
|
+
address: bech32Address,
|
|
44
|
+
chainId,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.debug(`Failed to get keys for chain ${chainId}:`, error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return addresses;
|
|
54
|
+
};
|
|
55
|
+
export const isCosmosAddressValid = (chainPrefix, address) => {
|
|
56
|
+
try {
|
|
57
|
+
if (!address.toLowerCase().startsWith(chainPrefix)) {
|
|
58
|
+
throw new Error("Invalid address for this chain");
|
|
59
|
+
}
|
|
60
|
+
fromBech32(address);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export const getCosmosSigningClient = async ({ chainRpc, cosmosSigner, defaultSigningClient, }) => {
|
|
68
|
+
if (!cosmosSigner)
|
|
69
|
+
return null;
|
|
70
|
+
// const cosmosClient = (await isNomos())
|
|
71
|
+
// ? SigningNomosClient.connectWithSigner(chainRpc, cosmosSigner) // use Nomos provider
|
|
72
|
+
return defaultSigningClient.connectWithSigner(chainRpc, cosmosSigner); // use default cosmos provider
|
|
73
|
+
};
|
|
74
|
+
export const getCosmosChainInfosObject = (chain) => {
|
|
75
|
+
// Clone the chain to avoid mutating the original object
|
|
76
|
+
const cosmosChain = structuredClone(chain);
|
|
77
|
+
//
|
|
78
|
+
// TODO: In the future, it will be better to do this parsing on backend side.
|
|
79
|
+
//
|
|
80
|
+
// The `gasPriceStep` field of the `ChainInfo` has been moved under `feeCurrencies`.
|
|
81
|
+
// This is automatically handled as of right now, but the upcoming update would potentially cause errors.
|
|
82
|
+
delete cosmosChain.gasPriceStep;
|
|
83
|
+
// The `coinType` field of the `ChainInfo` is removed. This is automatically handled as of right now,
|
|
84
|
+
// but the upcoming update would potentially cause errors.
|
|
85
|
+
delete cosmosChain.coinType;
|
|
86
|
+
return {
|
|
87
|
+
...cosmosChain,
|
|
88
|
+
feeCurrencies: cosmosChain.feeCurrencies.map((feeCurrency) => ({
|
|
89
|
+
...feeCurrency,
|
|
90
|
+
// Gas price step is now under feeCurrencies
|
|
91
|
+
gasPriceStep: cosmosChain.gasPriceStep,
|
|
92
|
+
})),
|
|
93
|
+
chainName: cosmosChain.networkName,
|
|
94
|
+
chainId: cosmosChain.chainId.toString(),
|
|
95
|
+
rpc: cosmosChain.rpc.split("?chain")[0],
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
export const connectCosmosWallet = async (wallet, defaultChain, { connectCosmos, cosmosConnectedWallet, }) => {
|
|
99
|
+
if (wallet.connectorId === cosmosConnectedWallet?.connectorId ||
|
|
100
|
+
defaultChain === undefined) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const address = await connectCosmos?.mutateAsync({
|
|
104
|
+
chain: defaultChain,
|
|
105
|
+
wallet: wallet,
|
|
106
|
+
});
|
|
107
|
+
if (address) {
|
|
108
|
+
return { wallet, address };
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
};
|
|
112
|
+
export const isFallbackAddressNeeded = ({ currentFallbackAddress, address, chain, }) => {
|
|
113
|
+
// If fallback address is already set or chain is not Cosmos
|
|
114
|
+
// fallback address is not needed
|
|
115
|
+
if (currentFallbackAddress || chain?.chainType !== ChainType.COSMOS) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
// For Xion, check if address is 63 chars (smart contract account abstraction)
|
|
119
|
+
if (chain.chainId === CHAIN_IDS.XION) {
|
|
120
|
+
return isXionSmartContractAddress(address);
|
|
121
|
+
}
|
|
122
|
+
// For other Cosmos chains, check coinType
|
|
123
|
+
return chain.coinType !== 118;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Cosmos wallets may throw an error if the chain the user is trying to use is not added to the wallet.
|
|
127
|
+
* For those cases, some wallets expose a method for adding new chains to the user wallet.
|
|
128
|
+
*
|
|
129
|
+
* This method will try to add the provided chain, throwing an error if the request fails
|
|
130
|
+
* or if the original error indicates that the user rejected the request.
|
|
131
|
+
*/
|
|
132
|
+
export async function suggestChainOrThrow({ keplrTypeWallet, chain, error, }) {
|
|
133
|
+
if (isUserRejectionError(normalizeError(error))) {
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
if (typeof keplrTypeWallet.experimentalSuggestChain !== "function") {
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
await keplrTypeWallet.experimentalSuggestChain(getCosmosChainInfosObject(chain));
|
|
140
|
+
}
|
|
141
|
+
//# 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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"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { TransactionErrorType } from "../../core/types/error";
|
|
2
|
+
import { WidgetEvents } from "./eventService";
|
|
3
|
+
/**
|
|
4
|
+
* Normalizes different error structures into a consistent format
|
|
5
|
+
* This helps handle different wallet error formats uniformly
|
|
6
|
+
*/
|
|
7
|
+
export const normalizeError = (error) => {
|
|
8
|
+
// Handle nested error objects (like Rainbow's error.error structure)
|
|
9
|
+
if (error?.error && typeof error.error === "object") {
|
|
10
|
+
return {
|
|
11
|
+
code: error.error.code,
|
|
12
|
+
message: error.error.message,
|
|
13
|
+
reason: error.error.reason,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
// Handle direct error properties
|
|
17
|
+
return {
|
|
18
|
+
code: error?.code,
|
|
19
|
+
message: error?.message,
|
|
20
|
+
reason: error?.reason,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export const transactionErrorCode = {
|
|
24
|
+
// Metamask
|
|
25
|
+
ACTION_REJECTED: {
|
|
26
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
27
|
+
internalLabel: "EVM: ACTION_REJECTED",
|
|
28
|
+
message: "Return to the swap page and try again.",
|
|
29
|
+
},
|
|
30
|
+
// Keplr
|
|
31
|
+
"Request rejected": {
|
|
32
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
33
|
+
internalLabel: "Request rejected",
|
|
34
|
+
message: "Return to the swap page and try again.",
|
|
35
|
+
},
|
|
36
|
+
// Phantom Solana, Cosmostation, Sui Wallet
|
|
37
|
+
"User rejected the request.": {
|
|
38
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
39
|
+
internalLabel: "SOL: User rejected the request",
|
|
40
|
+
message: "Return to the swap page and try again.",
|
|
41
|
+
},
|
|
42
|
+
// Leap
|
|
43
|
+
"Chain approval rejected": {
|
|
44
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
45
|
+
internalLabel: "Request rejected",
|
|
46
|
+
message: "Return to the swap page and try again.",
|
|
47
|
+
},
|
|
48
|
+
// Gnosis Safe
|
|
49
|
+
"Transaction was rejected": {
|
|
50
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
51
|
+
internalLabel: "GNOSIS: Transaction was rejected",
|
|
52
|
+
message: "Return to the swap page and try again.",
|
|
53
|
+
},
|
|
54
|
+
// Metamask, Surf (Sui), OKX (Sui)
|
|
55
|
+
4001: {
|
|
56
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
57
|
+
internalLabel: "EVM: REJECTED: CODE 4001",
|
|
58
|
+
message: "Return to the swap page and try again.",
|
|
59
|
+
},
|
|
60
|
+
// Rainbow
|
|
61
|
+
"-32603": {
|
|
62
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
63
|
+
internalLabel: "EVM: REJECTED: CODE -32603",
|
|
64
|
+
message: "Return to the swap page and try again.",
|
|
65
|
+
},
|
|
66
|
+
// Slush web (Sui)
|
|
67
|
+
"User rejected the request": {
|
|
68
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
69
|
+
internalLabel: "SUI: User rejected the request",
|
|
70
|
+
message: "Return to the swap page and try again.",
|
|
71
|
+
},
|
|
72
|
+
// Slush web (Sui)
|
|
73
|
+
"User closed the wallet window": {
|
|
74
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
75
|
+
internalLabel: "SUI: User closed the wallet window",
|
|
76
|
+
message: "Return to the swap page and try again.",
|
|
77
|
+
},
|
|
78
|
+
// Nightly (Sui)
|
|
79
|
+
"User rejected approval": {
|
|
80
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
81
|
+
internalLabel: "SUI: User rejected approval",
|
|
82
|
+
message: "Return to the swap page and try again.",
|
|
83
|
+
},
|
|
84
|
+
// Backpack (Sui)
|
|
85
|
+
"Approval Denied": {
|
|
86
|
+
type: TransactionErrorType.REJECTED_BY_USER,
|
|
87
|
+
internalLabel: "SUI: Approval Denied",
|
|
88
|
+
message: "Return to the swap page and try again.",
|
|
89
|
+
},
|
|
90
|
+
CALL_EXCEPTION: {
|
|
91
|
+
type: TransactionErrorType.CALL_EXCEPTION,
|
|
92
|
+
internalLabel: "EVM: CALL_EXCEPTION",
|
|
93
|
+
message: "Swap failed on the source chain. Please let us know by submitting a ticket here.",
|
|
94
|
+
},
|
|
95
|
+
UNKNOWN: {
|
|
96
|
+
type: TransactionErrorType.UNKNOWN,
|
|
97
|
+
internalLabel: "UNKNOWN ERROR: Transaction failed",
|
|
98
|
+
message: "The transaction could not be initiated.",
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Detects if an error is a user rejection based on normalized error structure
|
|
103
|
+
*/
|
|
104
|
+
export const isUserRejectionError = (normalizedError) => {
|
|
105
|
+
const { code, message } = normalizedError;
|
|
106
|
+
// Check if the error matches any known rejection patterns from transactionErrorCode
|
|
107
|
+
return Object.entries(transactionErrorCode).some(([key, value]) => {
|
|
108
|
+
if (value.type !== TransactionErrorType.REJECTED_BY_USER)
|
|
109
|
+
return false;
|
|
110
|
+
// Check if code matches (converting to string for comparison)
|
|
111
|
+
if (code != undefined && key === code.toString())
|
|
112
|
+
return true;
|
|
113
|
+
// Check if message matches
|
|
114
|
+
if (message && key === message)
|
|
115
|
+
return true;
|
|
116
|
+
return false;
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Converts any transaction error into a standardized TransactionErrorWithMessage format
|
|
121
|
+
* @param error The error to convert
|
|
122
|
+
* @returns A standardized error object
|
|
123
|
+
*/
|
|
124
|
+
export const getTransactionError = (error) => {
|
|
125
|
+
const normalizedError = normalizeError(error);
|
|
126
|
+
if (isUserRejectionError(normalizedError)) {
|
|
127
|
+
// Return the specific rejection error if we can find it
|
|
128
|
+
if (normalizedError.code) {
|
|
129
|
+
const codeError = transactionErrorCode[normalizedError.code.toString()];
|
|
130
|
+
if (codeError?.type === TransactionErrorType.REJECTED_BY_USER)
|
|
131
|
+
return codeError;
|
|
132
|
+
}
|
|
133
|
+
if (normalizedError.message) {
|
|
134
|
+
const messageError = transactionErrorCode[normalizedError.message];
|
|
135
|
+
if (messageError?.type === TransactionErrorType.REJECTED_BY_USER)
|
|
136
|
+
return messageError;
|
|
137
|
+
}
|
|
138
|
+
return transactionErrorCode.ACTION_REJECTED;
|
|
139
|
+
}
|
|
140
|
+
if (normalizedError.code) {
|
|
141
|
+
return (transactionErrorCode[normalizedError.code.toString()] ||
|
|
142
|
+
transactionErrorCode.UNKNOWN);
|
|
143
|
+
}
|
|
144
|
+
if (normalizedError.message) {
|
|
145
|
+
return (transactionErrorCode[normalizedError.message] ||
|
|
146
|
+
transactionErrorCode.UNKNOWN);
|
|
147
|
+
}
|
|
148
|
+
return transactionErrorCode.UNKNOWN;
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Handles dispatching appropriate events based on the error type
|
|
152
|
+
*/
|
|
153
|
+
export const handleTransactionErrorEvents = ({ error, transactionParams, walletProviderName, squidRoute, }) => {
|
|
154
|
+
// Handle wallet rejection events
|
|
155
|
+
if (error.type === TransactionErrorType.REJECTED_BY_USER) {
|
|
156
|
+
// At this point, we don't have transactionParams so we should use the squidRoute
|
|
157
|
+
WidgetEvents.getInstance().dispatchWalletReject({
|
|
158
|
+
chainId: squidRoute?.params.fromChain || "",
|
|
159
|
+
provider: walletProviderName || "",
|
|
160
|
+
reason: error.internalLabel,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else if (error.type === TransactionErrorType.CALL_EXCEPTION) {
|
|
164
|
+
// Handle on-chain transaction errors
|
|
165
|
+
WidgetEvents.getInstance().dispatchOnchainReject({
|
|
166
|
+
walletAddress: transactionParams?.fromAddress || "",
|
|
167
|
+
chainId: transactionParams?.fromChain?.chainId || "",
|
|
168
|
+
reason: error.internalLabel,
|
|
169
|
+
txHash: transactionParams?.transactionId,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
// Always dispatch the swap route execution error
|
|
173
|
+
WidgetEvents.getInstance().dispatchSwapRouteExecutionError({
|
|
174
|
+
error,
|
|
175
|
+
});
|
|
176
|
+
return error;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Check if the error is a Squid route error
|
|
180
|
+
*/
|
|
181
|
+
export const isSwapRouteError = (error) => {
|
|
182
|
+
return (error &&
|
|
183
|
+
(typeof error.code === "string" || typeof error.errorType === "string"));
|
|
184
|
+
};
|
|
185
|
+
export const isStatusError = (error) => {
|
|
186
|
+
return error && typeof error.errorType === "string";
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=errorService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorService.js","sourceRoot":"","sources":["../../../src/services/internal/errorService.ts"],"names":[],"mappings":"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"}
|