@0xsquid/react-hooks 7.7.0 → 8.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/constants.d.ts +0 -2
- package/dist/core/queries/queries-keys.d.ts +2 -1
- package/dist/core/types/config.d.ts +27 -4
- package/dist/core/types/swap.d.ts +1 -0
- package/dist/hooks/chains/useSquidChains.d.ts +5 -8
- package/dist/hooks/swap/useSwap.d.ts +1 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.d.ts +2 -1
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.d.ts +2 -1
- package/dist/hooks/tokens/useSquidTokens.d.ts +5 -1
- package/dist/hooks/transaction/useEstimate.d.ts +0 -2
- package/dist/index-B3FG6tRj.js +6021 -0
- package/dist/index-B3FG6tRj.js.map +1 -0
- package/dist/index-CeIwio11.js +41015 -0
- package/dist/index-CeIwio11.js.map +1 -0
- package/dist/index-CjYMwYuT.js +41267 -0
- package/dist/index-CjYMwYuT.js.map +1 -0
- package/dist/index-CoxuUJzG.js +6021 -0
- package/dist/index-CoxuUJzG.js.map +1 -0
- package/dist/index.esm.js +36 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +292 -6
- package/dist/index.js.map +1 -1
- package/dist/secretService-C6ack504.js +168 -0
- package/dist/secretService-C6ack504.js.map +1 -0
- package/dist/{services/external/secretService.js → secretService-CgLleYSR.js} +43 -8
- package/dist/secretService-CgLleYSR.js.map +1 -0
- package/dist/services/internal/assetsService.d.ts +18 -19
- package/dist/services/internal/configService.d.ts +8 -16
- package/dist/services/internal/estimateService.d.ts +0 -1
- package/package.json +18 -4
- package/dist/core/abis/ics20.json +0 -128
- package/dist/core/client/index.js +0 -38
- package/dist/core/client/index.js.map +0 -1
- package/dist/core/connectors/bitcoin/errors/index.js +0 -22
- package/dist/core/connectors/bitcoin/errors/index.js.map +0 -1
- package/dist/core/connectors/bitcoin/helpers.js +0 -91
- package/dist/core/connectors/bitcoin/helpers.js.map +0 -1
- package/dist/core/connectors/bitcoin/index.js +0 -2
- package/dist/core/connectors/bitcoin/index.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/index.js +0 -4
- package/dist/core/connectors/bitcoin/wallets/index.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/keplr.js +0 -28
- package/dist/core/connectors/bitcoin/wallets/keplr.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/phantom.js +0 -56
- package/dist/core/connectors/bitcoin/wallets/phantom.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/unisat.js +0 -28
- package/dist/core/connectors/bitcoin/wallets/unisat.js.map +0 -1
- package/dist/core/connectors/xrpl/CrossMark.js +0 -76
- package/dist/core/connectors/xrpl/CrossMark.js.map +0 -1
- package/dist/core/connectors/xrpl/WalletConnect.js +0 -194
- package/dist/core/connectors/xrpl/WalletConnect.js.map +0 -1
- package/dist/core/connectors/xrpl/Xaman.js +0 -71
- package/dist/core/connectors/xrpl/Xaman.js.map +0 -1
- package/dist/core/connectors/xrpl/XamanQr.js +0 -95
- package/dist/core/connectors/xrpl/XamanQr.js.map +0 -1
- package/dist/core/connectors/xrpl/XrplMetamaskSnap.js +0 -176
- package/dist/core/connectors/xrpl/XrplMetamaskSnap.js.map +0 -1
- package/dist/core/constants.js +0 -159
- package/dist/core/constants.js.map +0 -1
- package/dist/core/externalLinks.js +0 -21
- package/dist/core/externalLinks.js.map +0 -1
- package/dist/core/index.js +0 -4
- package/dist/core/index.js.map +0 -1
- package/dist/core/multicall3.js +0 -462
- package/dist/core/multicall3.js.map +0 -1
- package/dist/core/providers/BitcoinProvider.js +0 -15
- package/dist/core/providers/BitcoinProvider.js.map +0 -1
- package/dist/core/providers/CosmosProvider.js +0 -13
- package/dist/core/providers/CosmosProvider.js.map +0 -1
- package/dist/core/providers/EvmProvider.js +0 -15
- package/dist/core/providers/EvmProvider.js.map +0 -1
- package/dist/core/providers/SolanaProvider.js +0 -15
- package/dist/core/providers/SolanaProvider.js.map +0 -1
- package/dist/core/providers/SuiProvider.js +0 -15
- package/dist/core/providers/SuiProvider.js.map +0 -1
- package/dist/core/providers/XrplProvider.js +0 -15
- package/dist/core/providers/XrplProvider.js.map +0 -1
- package/dist/core/queries/queries-keys.js +0 -226
- package/dist/core/queries/queries-keys.js.map +0 -1
- package/dist/core/queries/react-query-config.js +0 -11
- package/dist/core/queries/react-query-config.js.map +0 -1
- package/dist/core/types/bitcoin.js +0 -2
- package/dist/core/types/bitcoin.js.map +0 -1
- package/dist/core/types/config.js +0 -2
- package/dist/core/types/config.js.map +0 -1
- package/dist/core/types/dex.d.ts +0 -28
- package/dist/core/types/dex.js +0 -33
- package/dist/core/types/dex.js.map +0 -1
- package/dist/core/types/error.js +0 -18
- package/dist/core/types/error.js.map +0 -1
- package/dist/core/types/event.js +0 -2
- package/dist/core/types/event.js.map +0 -1
- package/dist/core/types/evm.js +0 -2
- package/dist/core/types/evm.js.map +0 -1
- package/dist/core/types/history.js +0 -7
- package/dist/core/types/history.js.map +0 -1
- package/dist/core/types/index.js +0 -4
- package/dist/core/types/index.js.map +0 -1
- package/dist/core/types/onramps/index.js +0 -3
- package/dist/core/types/onramps/index.js.map +0 -1
- package/dist/core/types/onramps/onramp.js +0 -2
- package/dist/core/types/onramps/onramp.js.map +0 -1
- package/dist/core/types/onramps/revolut.js +0 -2
- package/dist/core/types/onramps/revolut.js.map +0 -1
- package/dist/core/types/rpc.js +0 -2
- package/dist/core/types/rpc.js.map +0 -1
- package/dist/core/types/solana.js +0 -2
- package/dist/core/types/solana.js.map +0 -1
- package/dist/core/types/sui.js +0 -2
- package/dist/core/types/sui.js.map +0 -1
- package/dist/core/types/swap.js +0 -2
- package/dist/core/types/swap.js.map +0 -1
- package/dist/core/types/tokens.js +0 -2
- package/dist/core/types/tokens.js.map +0 -1
- package/dist/core/types/transaction.js +0 -47
- package/dist/core/types/transaction.js.map +0 -1
- package/dist/core/types/wallet.js +0 -19
- package/dist/core/types/wallet.js.map +0 -1
- package/dist/core/types/xrpl.js +0 -32
- package/dist/core/types/xrpl.js.map +0 -1
- package/dist/core/wagmiConfig.js +0 -81
- package/dist/core/wagmiConfig.js.map +0 -1
- package/dist/core/wallets.js +0 -357
- package/dist/core/wallets.js.map +0 -1
- package/dist/hooks/analytics/useTrackSearchEmpty.js +0 -22
- package/dist/hooks/analytics/useTrackSearchEmpty.js.map +0 -1
- package/dist/hooks/bitcoin/useBitcoin.js +0 -18
- package/dist/hooks/bitcoin/useBitcoin.js.map +0 -1
- package/dist/hooks/chains/useSquidChains.js +0 -107
- package/dist/hooks/chains/useSquidChains.js.map +0 -1
- package/dist/hooks/client/useClient.js +0 -63
- package/dist/hooks/client/useClient.js.map +0 -1
- package/dist/hooks/cosmos/useCosmos.js +0 -167
- package/dist/hooks/cosmos/useCosmos.js.map +0 -1
- package/dist/hooks/cosmos/useCosmosForChain.js +0 -29
- package/dist/hooks/cosmos/useCosmosForChain.js.map +0 -1
- package/dist/hooks/evm/useEvm.js +0 -68
- package/dist/hooks/evm/useEvm.js.map +0 -1
- package/dist/hooks/evm/useEvmWallets.js +0 -13
- package/dist/hooks/evm/useEvmWallets.js.map +0 -1
- package/dist/hooks/index.js +0 -54
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/navigation/useKeyboardNavigation.js +0 -67
- package/dist/hooks/navigation/useKeyboardNavigation.js.map +0 -1
- package/dist/hooks/onramp/useFiatToCrypto.js +0 -298
- package/dist/hooks/onramp/useFiatToCrypto.js.map +0 -1
- package/dist/hooks/query/useSquidQueryClient.js +0 -23
- package/dist/hooks/query/useSquidQueryClient.js.map +0 -1
- package/dist/hooks/solana/useSolana.js +0 -81
- package/dist/hooks/solana/useSolana.js.map +0 -1
- package/dist/hooks/solana/useSolanaWallets.js +0 -8
- package/dist/hooks/solana/useSolanaWallets.js.map +0 -1
- package/dist/hooks/squid/useSquid.js +0 -55
- package/dist/hooks/squid/useSquid.js.map +0 -1
- package/dist/hooks/store/useAddressBookStore.js +0 -30
- package/dist/hooks/store/useAddressBookStore.js.map +0 -1
- package/dist/hooks/store/useAssetsColorsStore.js +0 -7
- package/dist/hooks/store/useAssetsColorsStore.js.map +0 -1
- package/dist/hooks/store/useDepositAddressStore.js +0 -12
- package/dist/hooks/store/useDepositAddressStore.js.map +0 -1
- package/dist/hooks/store/useFavoriteTokensStore.js +0 -28
- package/dist/hooks/store/useFavoriteTokensStore.js.map +0 -1
- package/dist/hooks/store/useHistoryStore.js +0 -129
- package/dist/hooks/store/useHistoryStore.js.map +0 -1
- package/dist/hooks/store/useSendTransactionStore.js +0 -21
- package/dist/hooks/store/useSendTransactionStore.js.map +0 -1
- package/dist/hooks/store/useSquidStore.js +0 -53
- package/dist/hooks/store/useSquidStore.js.map +0 -1
- package/dist/hooks/store/useWalletStore.js +0 -61
- package/dist/hooks/store/useWalletStore.js.map +0 -1
- package/dist/hooks/sui/useSui.js +0 -81
- package/dist/hooks/sui/useSui.js.map +0 -1
- package/dist/hooks/sui/useSuiWallets.js +0 -23
- package/dist/hooks/sui/useSuiWallets.js.map +0 -1
- package/dist/hooks/swap/useDepositAddress.js +0 -63
- package/dist/hooks/swap/useDepositAddress.js.map +0 -1
- package/dist/hooks/swap/useSwap.js +0 -203
- package/dist/hooks/swap/useSwap.js.map +0 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +0 -114
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +0 -1
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +0 -130
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +0 -1
- package/dist/hooks/tokens/useBalance.js +0 -157
- package/dist/hooks/tokens/useBalance.js.map +0 -1
- package/dist/hooks/tokens/useMultiChainBalance.js +0 -77
- package/dist/hooks/tokens/useMultiChainBalance.js.map +0 -1
- package/dist/hooks/tokens/useMultipleTokenPrices.js +0 -46
- package/dist/hooks/tokens/useMultipleTokenPrices.js.map +0 -1
- package/dist/hooks/tokens/useNativeBalance.js +0 -249
- package/dist/hooks/tokens/useNativeBalance.js.map +0 -1
- package/dist/hooks/tokens/useNativeTokenForChain.js +0 -30
- package/dist/hooks/tokens/useNativeTokenForChain.js.map +0 -1
- package/dist/hooks/tokens/useSingleTokenPrice.js +0 -38
- package/dist/hooks/tokens/useSingleTokenPrice.js.map +0 -1
- package/dist/hooks/tokens/useSquidTokens.js +0 -85
- package/dist/hooks/tokens/useSquidTokens.js.map +0 -1
- package/dist/hooks/tokens/useTokenHistoricalData.js +0 -23
- package/dist/hooks/tokens/useTokenHistoricalData.js.map +0 -1
- package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js +0 -58
- package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js.map +0 -1
- package/dist/hooks/transaction/send/useSendTransaction.js +0 -245
- package/dist/hooks/transaction/send/useSendTransaction.js.map +0 -1
- package/dist/hooks/transaction/send/useSendTransactionGas.js +0 -73
- package/dist/hooks/transaction/send/useSendTransactionGas.js.map +0 -1
- package/dist/hooks/transaction/useAllTransactionsStatus.js +0 -127
- package/dist/hooks/transaction/useAllTransactionsStatus.js.map +0 -1
- package/dist/hooks/transaction/useApproval.js +0 -246
- package/dist/hooks/transaction/useApproval.js.map +0 -1
- package/dist/hooks/transaction/useErc20Allowance.js +0 -43
- package/dist/hooks/transaction/useErc20Allowance.js.map +0 -1
- package/dist/hooks/transaction/useEstimate.js +0 -118
- package/dist/hooks/transaction/useEstimate.js.map +0 -1
- package/dist/hooks/transaction/useEstimatePriceImpact.js +0 -31
- package/dist/hooks/transaction/useEstimatePriceImpact.js.map +0 -1
- package/dist/hooks/transaction/useExecuteTransaction.js +0 -678
- package/dist/hooks/transaction/useExecuteTransaction.js.map +0 -1
- package/dist/hooks/transaction/useGetRoute.js +0 -207
- package/dist/hooks/transaction/useGetRoute.js.map +0 -1
- package/dist/hooks/transaction/useIcs20Allowance.js +0 -46
- package/dist/hooks/transaction/useIcs20Allowance.js.map +0 -1
- package/dist/hooks/transaction/useRouteWarnings.js +0 -19
- package/dist/hooks/transaction/useRouteWarnings.js.map +0 -1
- package/dist/hooks/transaction/useSendTransactionStatus.js +0 -63
- package/dist/hooks/transaction/useSendTransactionStatus.js.map +0 -1
- package/dist/hooks/transaction/useSwapTransactionStatus.js +0 -114
- package/dist/hooks/transaction/useSwapTransactionStatus.js.map +0 -1
- package/dist/hooks/user/useAvatar.js +0 -40
- package/dist/hooks/user/useAvatar.js.map +0 -1
- package/dist/hooks/user/useHistory.js +0 -103
- package/dist/hooks/user/useHistory.js.map +0 -1
- package/dist/hooks/user/useUserParams.js +0 -33
- package/dist/hooks/user/useUserParams.js.map +0 -1
- package/dist/hooks/utils/useUtils.js +0 -20
- package/dist/hooks/utils/useUtils.js.map +0 -1
- package/dist/hooks/wallet/useAddToken.js +0 -49
- package/dist/hooks/wallet/useAddToken.js.map +0 -1
- package/dist/hooks/wallet/useAutoConnect.js +0 -92
- package/dist/hooks/wallet/useAutoConnect.js.map +0 -1
- package/dist/hooks/wallet/useEns.js +0 -57
- package/dist/hooks/wallet/useEns.js.map +0 -1
- package/dist/hooks/wallet/useGnosisContext.js +0 -74
- package/dist/hooks/wallet/useGnosisContext.js.map +0 -1
- package/dist/hooks/wallet/useIntegratorContext.js +0 -39
- package/dist/hooks/wallet/useIntegratorContext.js.map +0 -1
- package/dist/hooks/wallet/useMultiChainWallet.js +0 -210
- package/dist/hooks/wallet/useMultiChainWallet.js.map +0 -1
- package/dist/hooks/wallet/useSigner.js +0 -68
- package/dist/hooks/wallet/useSigner.js.map +0 -1
- package/dist/hooks/wallet/useStandardWallets.js +0 -26
- package/dist/hooks/wallet/useStandardWallets.js.map +0 -1
- package/dist/hooks/wallet/useWallet.js +0 -199
- package/dist/hooks/wallet/useWallet.js.map +0 -1
- package/dist/hooks/wallet/useWallets.js +0 -33
- package/dist/hooks/wallet/useWallets.js.map +0 -1
- package/dist/hooks/xrpl/useXrpl.js +0 -55
- package/dist/hooks/xrpl/useXrpl.js.map +0 -1
- package/dist/hooks/xrpl/useXrplTrustLine.js +0 -159
- package/dist/hooks/xrpl/useXrplTrustLine.js.map +0 -1
- package/dist/hooks/xrpl/useXrplWallets.js +0 -51
- package/dist/hooks/xrpl/useXrplWallets.js.map +0 -1
- package/dist/provider/index.js +0 -118
- package/dist/provider/index.js.map +0 -1
- package/dist/services/external/cosmosRestClient.js +0 -45
- package/dist/services/external/cosmosRestClient.js.map +0 -1
- package/dist/services/external/ens.js +0 -66
- package/dist/services/external/ens.js.map +0 -1
- package/dist/services/external/index.js +0 -3
- package/dist/services/external/index.js.map +0 -1
- package/dist/services/external/onrampAdapter.js +0 -52
- package/dist/services/external/onrampAdapter.js.map +0 -1
- package/dist/services/external/rpcService.js +0 -411
- package/dist/services/external/rpcService.js.map +0 -1
- package/dist/services/external/secretService.js.map +0 -1
- package/dist/services/external/suiRpcClient.js +0 -80
- package/dist/services/external/suiRpcClient.js.map +0 -1
- package/dist/services/external/tokenDataService.js +0 -108
- package/dist/services/external/tokenDataService.js.map +0 -1
- package/dist/services/external/websocket.js +0 -34
- package/dist/services/external/websocket.js.map +0 -1
- package/dist/services/external/xaman.js +0 -78
- package/dist/services/external/xaman.js.map +0 -1
- package/dist/services/external/xrplRpcClient.js +0 -167
- package/dist/services/external/xrplRpcClient.js.map +0 -1
- package/dist/services/index.js +0 -19
- package/dist/services/index.js.map +0 -1
- package/dist/services/internal/apiService.js +0 -21
- package/dist/services/internal/apiService.js.map +0 -1
- package/dist/services/internal/assetsService.js +0 -569
- package/dist/services/internal/assetsService.js.map +0 -1
- package/dist/services/internal/bitcoinService.js +0 -20
- package/dist/services/internal/bitcoinService.js.map +0 -1
- package/dist/services/internal/configService.js +0 -218
- package/dist/services/internal/configService.js.map +0 -1
- package/dist/services/internal/cosmosService.js +0 -141
- package/dist/services/internal/cosmosService.js.map +0 -1
- package/dist/services/internal/countryCurrencyMap.js +0 -1102
- package/dist/services/internal/countryCurrencyMap.js.map +0 -1
- package/dist/services/internal/errorService.js +0 -190
- package/dist/services/internal/errorService.js.map +0 -1
- package/dist/services/internal/estimateService.js +0 -227
- package/dist/services/internal/estimateService.js.map +0 -1
- package/dist/services/internal/eventService.js +0 -219
- package/dist/services/internal/eventService.js.map +0 -1
- package/dist/services/internal/evmService.js +0 -67
- package/dist/services/internal/evmService.js.map +0 -1
- package/dist/services/internal/fiatToCryptoService.js +0 -84
- package/dist/services/internal/fiatToCryptoService.js.map +0 -1
- package/dist/services/internal/fiatToCryptoService.test.js +0 -45
- package/dist/services/internal/fiatToCryptoService.test.js.map +0 -1
- package/dist/services/internal/numberService.js +0 -199
- package/dist/services/internal/numberService.js.map +0 -1
- package/dist/services/internal/priceService.js +0 -53
- package/dist/services/internal/priceService.js.map +0 -1
- package/dist/services/internal/searchService.js +0 -98
- package/dist/services/internal/searchService.js.map +0 -1
- package/dist/services/internal/sendTransaction.js +0 -191
- package/dist/services/internal/sendTransaction.js.map +0 -1
- package/dist/services/internal/sendTransactionStatus.js +0 -134
- package/dist/services/internal/sendTransactionStatus.js.map +0 -1
- package/dist/services/internal/solanaService.js +0 -142
- package/dist/services/internal/solanaService.js.map +0 -1
- package/dist/services/internal/suiService.js +0 -81
- package/dist/services/internal/suiService.js.map +0 -1
- package/dist/services/internal/transactionService.js +0 -210
- package/dist/services/internal/transactionService.js.map +0 -1
- package/dist/services/internal/transactionStatusService.js +0 -390
- package/dist/services/internal/transactionStatusService.js.map +0 -1
- package/dist/services/internal/walletService.js +0 -546
- package/dist/services/internal/walletService.js.map +0 -1
- package/dist/services/internal/walletStandardService.js +0 -128
- package/dist/services/internal/walletStandardService.js.map +0 -1
- package/dist/services/internal/xionService.js +0 -6
- package/dist/services/internal/xionService.js.map +0 -1
- package/dist/services/internal/xrplService.js +0 -52
- package/dist/services/internal/xrplService.js.map +0 -1
- package/dist/tests/apiService.test.js +0 -40
- package/dist/tests/apiService.test.js.map +0 -1
- package/dist/tests/assetsService.test.js +0 -487
- package/dist/tests/assetsService.test.js.map +0 -1
- package/dist/tests/configService.test.js +0 -673
- package/dist/tests/configService.test.js.map +0 -1
- package/dist/tests/estimateService.test.js +0 -429
- package/dist/tests/estimateService.test.js.map +0 -1
- package/dist/tests/fetchSquidData.js +0 -36
- package/dist/tests/fetchSquidData.js.map +0 -1
- package/dist/tests/jest-svg-transform.d.ts +0 -0
- package/dist/tests/jest-svg-transform.js +0 -21
- package/dist/tests/jest-svg-transform.js.map +0 -1
- package/dist/tests/numberService.test.js +0 -166
- package/dist/tests/numberService.test.js.map +0 -1
- package/dist/tests/priceService.test.js +0 -38
- package/dist/tests/priceService.test.js.map +0 -1
- package/dist/tests/sample.json +0 -0
- package/dist/tests/searchService.test.js +0 -86
- package/dist/tests/searchService.test.js.map +0 -1
- package/dist/tests/swapConfig.test.js +0 -332
- package/dist/tests/swapConfig.test.js.map +0 -1
- package/dist/tests/transactionService.test.js +0 -53
- package/dist/tests/transactionService.test.js.map +0 -1
- package/dist/tests/transactionStatusService.test.js +0 -165
- package/dist/tests/transactionStatusService.test.js.map +0 -1
- package/dist/tests/walletService.test.js +0 -488
- package/dist/tests/walletService.test.js.map +0 -1
|
@@ -1,569 +0,0 @@
|
|
|
1
|
-
import { ChainType, } from "@0xsquid/squid-types";
|
|
2
|
-
import BigNumber from "bignumber.js";
|
|
3
|
-
import { CHAIN_IDS, destinationAddressResetValue, fallbackAddressResetValue, nativeEvmTokenAddress, } from "../../core/constants";
|
|
4
|
-
import { filterTokensForDestination, getInitialOrDefaultTokenAddressForChain, getTokensForChain, } from "./configService";
|
|
5
|
-
import { convertTokenAmountToUSD } from "./priceService";
|
|
6
|
-
import { isWalletAddressValid } from "./walletService";
|
|
7
|
-
export const assetsBaseUrl = "https://raw.githubusercontent.com/0xsquid/assets/main";
|
|
8
|
-
export const shareSubgraphId = (token1, token2) => {
|
|
9
|
-
return Boolean(token1?.subGraphIds?.some((sgi) => !!token2?.subGraphIds?.includes(sgi)) ||
|
|
10
|
-
token2?.subGraphIds?.some((sgi) => !!token1?.subGraphIds?.includes(sgi)));
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Check if `tokenToCheck` shares any subgraph id with the tokens being compared
|
|
14
|
-
* If any of the tokens being compared shares a subgraph id with `tokenToCheck`, it will be sorted first
|
|
15
|
-
* @param a first token being compared
|
|
16
|
-
* @param b second token being compared
|
|
17
|
-
* @param tokenToCheck the token to check subgraph ids against
|
|
18
|
-
*/
|
|
19
|
-
export const sortTokensBySharedSubgraphIds = ({ a, b, tokenToCheck, }) => {
|
|
20
|
-
const tokenToCheckSharesIdsWithA = shareSubgraphId(a, tokenToCheck);
|
|
21
|
-
const tokenToCheckSharesIdsWithB = shareSubgraphId(b, tokenToCheck);
|
|
22
|
-
if (tokenToCheckSharesIdsWithA && !tokenToCheckSharesIdsWithB) {
|
|
23
|
-
return -1;
|
|
24
|
-
}
|
|
25
|
-
if (!tokenToCheckSharesIdsWithA && tokenToCheckSharesIdsWithB) {
|
|
26
|
-
return 1;
|
|
27
|
-
}
|
|
28
|
-
return 0;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Filter chains based on provided config
|
|
32
|
-
* - removes disabled chains
|
|
33
|
-
*/
|
|
34
|
-
export const filterChains = ({ chains, config, direction, }) => {
|
|
35
|
-
const disabledChainsOnDirection = getDisabledChainsIds({
|
|
36
|
-
config,
|
|
37
|
-
direction,
|
|
38
|
-
});
|
|
39
|
-
if (disabledChainsOnDirection.length === 0)
|
|
40
|
-
return chains;
|
|
41
|
-
// filter chains that are not disabled
|
|
42
|
-
const availableChains = chains.filter((c) => !disabledChainsOnDirection?.includes(c.chainId));
|
|
43
|
-
return availableChains;
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Filter tokens based on provided config
|
|
47
|
-
* - removes tokens from disabled chains
|
|
48
|
-
*/
|
|
49
|
-
export const filterTokens = ({ tokens, config, direction, }) => {
|
|
50
|
-
const disabledChainsOnDirection = getDisabledChainsIds({
|
|
51
|
-
config,
|
|
52
|
-
direction,
|
|
53
|
-
});
|
|
54
|
-
if (disabledChainsOnDirection.length === 0)
|
|
55
|
-
return tokens;
|
|
56
|
-
// filter tokens that are not disabled
|
|
57
|
-
const availableTokens = tokens.filter((t) => !disabledChainsOnDirection?.includes(t.chainId));
|
|
58
|
-
return availableTokens;
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Get disabled chains based on the provided config
|
|
62
|
-
* @returns array of disabled chain ids
|
|
63
|
-
*/
|
|
64
|
-
export function getDisabledChainsIds({ config, direction, }) {
|
|
65
|
-
if (!direction)
|
|
66
|
-
return [];
|
|
67
|
-
const parsedDirection = direction === "from" ? "source" : "destination";
|
|
68
|
-
// If we don't have a direction, assume that we won't care about "config.disabledChains"
|
|
69
|
-
const disabledChainsOnDirection = direction
|
|
70
|
-
? config.disabledChains?.[parsedDirection] ?? []
|
|
71
|
-
: [];
|
|
72
|
-
return Array.from(new Set(disabledChainsOnDirection));
|
|
73
|
-
}
|
|
74
|
-
export function getTokenImage(token) {
|
|
75
|
-
return `${assetsBaseUrl}/images/migration/webp/${getTokenAssetsKey(token)}.webp`;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Destination token address has different logic
|
|
79
|
-
* Some tokens are not available based on the source chain/token
|
|
80
|
-
*/
|
|
81
|
-
const handleDestinationAddressOnSwapChange = ({ fromChainId, fromTokenAddress, toTokenAddress, toChainId, swapRoute, chains, tokens, config, }) => {
|
|
82
|
-
const srcToken = tokens.find((t) => t.address === (fromTokenAddress ?? swapRoute?.fromTokenAddress) &&
|
|
83
|
-
t.chainId === fromChainId);
|
|
84
|
-
const destChain = chains.find((c) => c.chainId === (toChainId ?? swapRoute?.toChainId));
|
|
85
|
-
const removeSourceToken = fromChainId === toChainId;
|
|
86
|
-
const destinationTokensFiltered = filterTokensForDestination({
|
|
87
|
-
tokens: getTokensForChain(tokens, toChainId ?? swapRoute?.toChainId),
|
|
88
|
-
selectedDestinationChain: destChain,
|
|
89
|
-
selectedSourceToken: srcToken,
|
|
90
|
-
removeSourceToken,
|
|
91
|
-
});
|
|
92
|
-
const defaultToAddress = getInitialOrDefaultTokenAddressForChain({
|
|
93
|
-
tokens: destinationTokensFiltered,
|
|
94
|
-
config,
|
|
95
|
-
chainId: toChainId ?? swapRoute?.toChainId,
|
|
96
|
-
direction: "to",
|
|
97
|
-
});
|
|
98
|
-
let destinationTokenAddress = toChainId && !toTokenAddress
|
|
99
|
-
? defaultToAddress
|
|
100
|
-
: toTokenAddress ?? swapRoute?.toTokenAddress;
|
|
101
|
-
const lowerCaseDestinationTokenAddress = destinationTokenAddress?.toLowerCase();
|
|
102
|
-
if (destinationTokensFiltered.find((t) => t.address === lowerCaseDestinationTokenAddress) === undefined) {
|
|
103
|
-
destinationTokenAddress = defaultToAddress;
|
|
104
|
-
}
|
|
105
|
-
return lowerCaseDestinationTokenAddress;
|
|
106
|
-
};
|
|
107
|
-
/**
|
|
108
|
-
* When user changes something from the SwapView
|
|
109
|
-
* param changed can be chains, tokens, or destination address
|
|
110
|
-
*
|
|
111
|
-
* If source chain is changed but source token is undefined, need to find a default token
|
|
112
|
-
* If destination chain is changed but destination token is undefined, need to find a default token
|
|
113
|
-
* If only source token is changed, and destination token is not, and they were the same, then destination token becomes undefined
|
|
114
|
-
* If only destination token is changed but source is not, and they were the same, then source token updates to something else
|
|
115
|
-
*
|
|
116
|
-
*/
|
|
117
|
-
export const getNewSwapParamsFromInput = ({ inputParams, initialSwapRoute, tokens, chains, config, queryClient, connectedSourceAddress, }) => {
|
|
118
|
-
const { fromChainId, fromTokenAddress, toChainId, toTokenAddress, destinationAddress, fallbackAddress, depositRefundAddress, } = inputParams;
|
|
119
|
-
const srcChainId = fromChainId ?? initialSwapRoute?.fromChainId;
|
|
120
|
-
const destinationChainId = toChainId ?? initialSwapRoute?.toChainId;
|
|
121
|
-
const defaultFromAddress = getInitialOrDefaultTokenAddressForChain({
|
|
122
|
-
tokens,
|
|
123
|
-
config,
|
|
124
|
-
chainId: srcChainId,
|
|
125
|
-
direction: "from",
|
|
126
|
-
excludeToken: toTokenAddress
|
|
127
|
-
? {
|
|
128
|
-
address: toTokenAddress,
|
|
129
|
-
chainId: destinationChainId ?? "",
|
|
130
|
-
}
|
|
131
|
-
: undefined,
|
|
132
|
-
fetchCachedBalance: {
|
|
133
|
-
address: connectedSourceAddress,
|
|
134
|
-
queryClient,
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
// Source token has been changed but not destination
|
|
138
|
-
const onlySourceChanged = (!!fromChainId || !!fromTokenAddress) && !toChainId && !toTokenAddress;
|
|
139
|
-
const onlySourceChainIdChanged = onlySourceChanged && !fromTokenAddress;
|
|
140
|
-
// Source is set to the same token as previous destination
|
|
141
|
-
const sameNewSourceAndInitialDest = onlySourceChanged &&
|
|
142
|
-
srcChainId === initialSwapRoute?.toChainId &&
|
|
143
|
-
fromTokenAddress === initialSwapRoute?.toTokenAddress;
|
|
144
|
-
// Destination token has been changed but not source
|
|
145
|
-
const onlyDestChanged = (!!toChainId || !!toTokenAddress) && !fromChainId && !fromTokenAddress;
|
|
146
|
-
// Destination is set to the same token as previous source
|
|
147
|
-
const sameNewDestAndInitialSource = onlyDestChanged &&
|
|
148
|
-
destinationChainId === initialSwapRoute?.fromChainId &&
|
|
149
|
-
toTokenAddress === initialSwapRoute?.fromTokenAddress;
|
|
150
|
-
const sourceTokenAddress = sameNewDestAndInitialSource || onlySourceChainIdChanged
|
|
151
|
-
? defaultFromAddress
|
|
152
|
-
: fromTokenAddress ?? initialSwapRoute?.fromTokenAddress;
|
|
153
|
-
let destinationTokenAddress = undefined;
|
|
154
|
-
if (!sameNewSourceAndInitialDest) {
|
|
155
|
-
if (onlySourceChainIdChanged) {
|
|
156
|
-
// Preserve the destination token when only the source chain is changed
|
|
157
|
-
destinationTokenAddress =
|
|
158
|
-
toTokenAddress ?? initialSwapRoute?.toTokenAddress;
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
destinationTokenAddress = handleDestinationAddressOnSwapChange({
|
|
162
|
-
fromChainId,
|
|
163
|
-
fromTokenAddress,
|
|
164
|
-
toTokenAddress,
|
|
165
|
-
toChainId,
|
|
166
|
-
swapRoute: initialSwapRoute,
|
|
167
|
-
chains,
|
|
168
|
-
tokens,
|
|
169
|
-
config,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
let newDestinationAddress;
|
|
174
|
-
if (destinationAddress?.address === destinationAddressResetValue) {
|
|
175
|
-
newDestinationAddress = undefined;
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
const destAddress = destinationAddress ?? initialSwapRoute?.destinationAddress;
|
|
179
|
-
const isNewDestAddressValid = isWalletAddressValid(chains.find((c) => c.chainId === destinationChainId), destAddress?.address);
|
|
180
|
-
if (isNewDestAddressValid) {
|
|
181
|
-
newDestinationAddress = destAddress;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
let newFallbackAddress;
|
|
185
|
-
if (destinationAddress?.address === destinationAddressResetValue ||
|
|
186
|
-
fallbackAddress === fallbackAddressResetValue) {
|
|
187
|
-
newFallbackAddress = undefined;
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
newFallbackAddress = fallbackAddress ?? initialSwapRoute?.fallbackAddress;
|
|
191
|
-
}
|
|
192
|
-
const newDepositRefundAddress = depositRefundAddress || initialSwapRoute?.depositRefundAddress;
|
|
193
|
-
return {
|
|
194
|
-
fromChainId: srcChainId,
|
|
195
|
-
fromTokenAddress: sourceTokenAddress,
|
|
196
|
-
toChainId: destinationChainId,
|
|
197
|
-
toTokenAddress: destinationTokenAddress,
|
|
198
|
-
destinationAddress: newDestinationAddress,
|
|
199
|
-
fallbackAddress: newFallbackAddress,
|
|
200
|
-
depositRefundAddress: newDepositRefundAddress,
|
|
201
|
-
};
|
|
202
|
-
};
|
|
203
|
-
/* Sorts tokens based on the following order:
|
|
204
|
-
* 1. Native token on chain ID "1" (Ethereum) comes first.
|
|
205
|
-
* 2. Other native tokens are sorted by their chain ID priority based on market cap:
|
|
206
|
-
* - Ethereum (1)
|
|
207
|
-
* - BNB (56)
|
|
208
|
-
* - AVAX (43114)
|
|
209
|
-
* - Polygon (137)
|
|
210
|
-
* - Filecoin (314)
|
|
211
|
-
* - Arbitrum (42161)
|
|
212
|
-
* - Optimism (10)
|
|
213
|
-
* - Fantom (250)
|
|
214
|
-
* 3. Tokens with symbols "USDC", "USDT", and "axlUSDC" are sorted in that order.
|
|
215
|
-
* 4. If none of the above conditions are met, tokens are sorted by their symbol names.
|
|
216
|
-
*/
|
|
217
|
-
export const sortAllTokens = (tokenA, tokenB) => {
|
|
218
|
-
const chainIdMcapPriority = [
|
|
219
|
-
"1",
|
|
220
|
-
"56",
|
|
221
|
-
"43114",
|
|
222
|
-
"137",
|
|
223
|
-
"314",
|
|
224
|
-
"42161",
|
|
225
|
-
"10",
|
|
226
|
-
"250", // Fantom
|
|
227
|
-
];
|
|
228
|
-
const getChainIdPriority = (chainId) => {
|
|
229
|
-
const index = chainIdMcapPriority.indexOf(chainId);
|
|
230
|
-
return index === -1 ? Number.MAX_SAFE_INTEGER : index;
|
|
231
|
-
};
|
|
232
|
-
const isNative = (token) => {
|
|
233
|
-
return token.address.toLowerCase() === nativeEvmTokenAddress;
|
|
234
|
-
};
|
|
235
|
-
if (isNative(tokenA) && isNative(tokenB)) {
|
|
236
|
-
return (getChainIdPriority(tokenA.chainId) - getChainIdPriority(tokenB.chainId));
|
|
237
|
-
}
|
|
238
|
-
if (isNative(tokenA)) {
|
|
239
|
-
return -1;
|
|
240
|
-
}
|
|
241
|
-
if (isNative(tokenB)) {
|
|
242
|
-
return 1;
|
|
243
|
-
}
|
|
244
|
-
const tokenPriority = ["USDC", "USDT", "axlUSDC"];
|
|
245
|
-
const indexA = tokenPriority.indexOf(tokenA.symbol);
|
|
246
|
-
const indexB = tokenPriority.indexOf(tokenB.symbol);
|
|
247
|
-
if (indexA !== -1 && indexB !== -1) {
|
|
248
|
-
return indexA - indexB;
|
|
249
|
-
}
|
|
250
|
-
if (indexA !== -1) {
|
|
251
|
-
return -1;
|
|
252
|
-
}
|
|
253
|
-
if (indexB !== -1) {
|
|
254
|
-
return 1;
|
|
255
|
-
}
|
|
256
|
-
return 0;
|
|
257
|
-
};
|
|
258
|
-
export const findToken = (tokens, chainId, address) => tokens.find((t) => t.chainId === chainId && t.address === address);
|
|
259
|
-
export const findNativeToken = (tokens, chain) => tokens.find((t) => t.symbol.toUpperCase() === chain?.nativeCurrency.symbol.toUpperCase() &&
|
|
260
|
-
t.chainId == chain?.chainId);
|
|
261
|
-
export const normalizeIbcAddress = (address) => {
|
|
262
|
-
if (!address.toLowerCase().startsWith("ibc/")) {
|
|
263
|
-
return address;
|
|
264
|
-
}
|
|
265
|
-
const [prefix, denom] = address.split("/");
|
|
266
|
-
return `${prefix.toLowerCase()}/${denom.toUpperCase()}`;
|
|
267
|
-
};
|
|
268
|
-
export const areSameCosmosAddress = (addressA, addressB) => {
|
|
269
|
-
const normalizedAddressA = normalizeIbcAddress(addressA);
|
|
270
|
-
const normalizedAddressB = normalizeIbcAddress(addressB);
|
|
271
|
-
return normalizedAddressA === normalizedAddressB;
|
|
272
|
-
};
|
|
273
|
-
// Native tokens that can have wrapped versions
|
|
274
|
-
const nativeWrappedPairs = [
|
|
275
|
-
"ETH",
|
|
276
|
-
"BTC",
|
|
277
|
-
"FIL",
|
|
278
|
-
"BNB",
|
|
279
|
-
"AVAX",
|
|
280
|
-
"POL",
|
|
281
|
-
"FTM",
|
|
282
|
-
"IMX",
|
|
283
|
-
"KAVA",
|
|
284
|
-
"GLMR",
|
|
285
|
-
"CELO",
|
|
286
|
-
];
|
|
287
|
-
/**
|
|
288
|
-
* Selects the default information for a group of tokens.
|
|
289
|
-
* Prioritizes native tokens (EVM or Cosmos), then falls back to the first unique token symbol.
|
|
290
|
-
*/
|
|
291
|
-
function selectGroupDefaultInfo(tokens) {
|
|
292
|
-
// Check for native EVM token
|
|
293
|
-
const nativeToken = tokens.find((token) => token.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase());
|
|
294
|
-
if (nativeToken) {
|
|
295
|
-
return {
|
|
296
|
-
symbol: nativeToken.symbol.split(".")[0],
|
|
297
|
-
logoURI: getTokenImage(nativeToken) || "",
|
|
298
|
-
name: nativeToken.name.split(".")[0],
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
// Check for native Cosmos token
|
|
302
|
-
// Example ATOM address is "uatom"
|
|
303
|
-
const cosmosNativeToken = tokens.find((token) => !token.address.startsWith("0x") && !token.address.startsWith("ibc/"));
|
|
304
|
-
if (cosmosNativeToken) {
|
|
305
|
-
return {
|
|
306
|
-
symbol: cosmosNativeToken.symbol.split(".")[0],
|
|
307
|
-
logoURI: getTokenImage(cosmosNativeToken) || "",
|
|
308
|
-
name: cosmosNativeToken.name.split(".")[0],
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
// Sanitize token symbols by removing everything after the first dot
|
|
312
|
-
const sanitizedTokens = tokens.map((token) => ({
|
|
313
|
-
...token,
|
|
314
|
-
symbol: token.symbol.split(".")[0],
|
|
315
|
-
}));
|
|
316
|
-
// Find the first token with a unique sanitized symbol
|
|
317
|
-
const firstUniqueToken = sanitizedTokens.find((token, index, self) => self.findIndex((t) => t.symbol === token.symbol) === index);
|
|
318
|
-
return {
|
|
319
|
-
symbol: firstUniqueToken?.symbol || "",
|
|
320
|
-
logoURI: getTokenImage(firstUniqueToken) || "",
|
|
321
|
-
name: firstUniqueToken?.name.split(".")[0] || "",
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Groups tokens based on their properties (symbol, coingeckoId)
|
|
326
|
-
* Some custom logic to handle native/wrapped pairs
|
|
327
|
-
*
|
|
328
|
-
* @param tokens - Array of TokenWithBalance objects to be grouped
|
|
329
|
-
* @param chainType - Optional parameter to filter tokens by chain type ('evm' or 'cosmos')
|
|
330
|
-
* @returns Object containing grouped tokens and ungrouped tokens
|
|
331
|
-
*/
|
|
332
|
-
export const groupTokensBySymbol = (tokens, chainType) => {
|
|
333
|
-
const groups = {};
|
|
334
|
-
// Filter tokens by chain type if specified
|
|
335
|
-
const filteredTokens = chainType
|
|
336
|
-
? tokens.filter((token) => token.type === chainType)
|
|
337
|
-
: tokens;
|
|
338
|
-
// First pass: group by coingeckoId or symbol
|
|
339
|
-
filteredTokens.forEach((token) => {
|
|
340
|
-
const groupKey = token.coingeckoId || token.symbol.split(".")[0];
|
|
341
|
-
if (!groups[groupKey]) {
|
|
342
|
-
groups[groupKey] = {
|
|
343
|
-
symbol: "",
|
|
344
|
-
logoURI: "",
|
|
345
|
-
name: "",
|
|
346
|
-
tokens: [],
|
|
347
|
-
totalBalance: "0",
|
|
348
|
-
totalBalanceUsd: "0",
|
|
349
|
-
balance: "0",
|
|
350
|
-
chainId: "",
|
|
351
|
-
chainLogoURI: "",
|
|
352
|
-
};
|
|
353
|
-
}
|
|
354
|
-
groups[groupKey].tokens.push(token);
|
|
355
|
-
groups[groupKey].totalBalance = new BigNumber(groups[groupKey].totalBalance)
|
|
356
|
-
.plus(token.balance)
|
|
357
|
-
.toString();
|
|
358
|
-
const tokenUsdValue = convertTokenAmountToUSD(token.balance, token.usdPrice || 0);
|
|
359
|
-
groups[groupKey].totalBalanceUsd = new BigNumber(groups[groupKey].totalBalanceUsd ?? "0")
|
|
360
|
-
.plus(tokenUsdValue)
|
|
361
|
-
.toString();
|
|
362
|
-
});
|
|
363
|
-
// Second pass: merge groups based on native/wrapped pairs
|
|
364
|
-
const mergedGroups = {};
|
|
365
|
-
Object.entries(groups).forEach(([key, group]) => {
|
|
366
|
-
const baseSymbol = group.tokens[0].symbol.split(".")[0];
|
|
367
|
-
let mergeKey = key;
|
|
368
|
-
// Handle native/wrapped pairs
|
|
369
|
-
if (nativeWrappedPairs.includes(baseSymbol) ||
|
|
370
|
-
(baseSymbol.startsWith("W") &&
|
|
371
|
-
nativeWrappedPairs.includes(baseSymbol.slice(1)))) {
|
|
372
|
-
mergeKey = baseSymbol.replace(/^W/, "");
|
|
373
|
-
}
|
|
374
|
-
// Merge groups or create a new one if it doesn't exist
|
|
375
|
-
if (!mergedGroups[mergeKey]) {
|
|
376
|
-
mergedGroups[mergeKey] = { ...group };
|
|
377
|
-
}
|
|
378
|
-
else {
|
|
379
|
-
// Combine tokens and sum up total balance for existing groups
|
|
380
|
-
mergedGroups[mergeKey].tokens.push(...group.tokens);
|
|
381
|
-
mergedGroups[mergeKey].totalBalance = new BigNumber(mergedGroups[mergeKey].totalBalance)
|
|
382
|
-
.plus(group.totalBalance)
|
|
383
|
-
.toString();
|
|
384
|
-
// Add this line to properly merge USD values
|
|
385
|
-
mergedGroups[mergeKey].totalBalanceUsd = new BigNumber(mergedGroups[mergeKey].totalBalanceUsd ?? "0")
|
|
386
|
-
.plus(group.totalBalanceUsd ?? "0")
|
|
387
|
-
.toString();
|
|
388
|
-
}
|
|
389
|
-
});
|
|
390
|
-
// Final pass: set group info and separate single-token groups
|
|
391
|
-
const finalGroups = [];
|
|
392
|
-
const ungrouped = [];
|
|
393
|
-
Object.values(mergedGroups).forEach((group) => {
|
|
394
|
-
if (group.tokens.length === 1) {
|
|
395
|
-
ungrouped.push(group.tokens[0]);
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
const defaultInfo = selectGroupDefaultInfo(group.tokens);
|
|
399
|
-
finalGroups.push({ ...group, ...defaultInfo });
|
|
400
|
-
}
|
|
401
|
-
});
|
|
402
|
-
return { grouped: finalGroups, ungrouped };
|
|
403
|
-
};
|
|
404
|
-
/**
|
|
405
|
-
* Groups tokens based on their chainId
|
|
406
|
-
*
|
|
407
|
-
* @param tokens - Array of TokenWithBalance objects to be grouped
|
|
408
|
-
* @param chains - Array of ChainData objects to find chain information
|
|
409
|
-
* @returns Array of TokenGroup objects
|
|
410
|
-
*/
|
|
411
|
-
export const groupTokensByChainId = (tokens, chains) => {
|
|
412
|
-
const groups = {};
|
|
413
|
-
tokens.forEach((token) => {
|
|
414
|
-
const chainData = chains.find((chain) => chain.chainId === token.chainId);
|
|
415
|
-
const groupKey = token.chainId;
|
|
416
|
-
if (!groups[groupKey]) {
|
|
417
|
-
groups[groupKey] = {
|
|
418
|
-
symbol: chainData?.nativeCurrency.symbol || "",
|
|
419
|
-
logoURI: chainData?.chainIconURI || "",
|
|
420
|
-
name: chainData?.networkName || "",
|
|
421
|
-
tokens: [],
|
|
422
|
-
totalBalance: "0",
|
|
423
|
-
totalBalanceUsd: "0",
|
|
424
|
-
balance: "0",
|
|
425
|
-
chainId: token.chainId,
|
|
426
|
-
chainLogoURI: chainData?.chainIconURI || "",
|
|
427
|
-
};
|
|
428
|
-
}
|
|
429
|
-
groups[groupKey].tokens.push(token);
|
|
430
|
-
groups[groupKey].totalBalance = new BigNumber(groups[groupKey].totalBalance)
|
|
431
|
-
.plus(token.balance)
|
|
432
|
-
.toString();
|
|
433
|
-
// Only add to USD total if token has a valid price
|
|
434
|
-
if (token.usdPrice && token.usdPrice > 0) {
|
|
435
|
-
const tokenUsdValue = convertTokenAmountToUSD(token.balance, token.usdPrice);
|
|
436
|
-
groups[groupKey].totalBalanceUsd = new BigNumber(groups[groupKey].totalBalanceUsd ?? "0")
|
|
437
|
-
.plus(tokenUsdValue)
|
|
438
|
-
.toString();
|
|
439
|
-
}
|
|
440
|
-
});
|
|
441
|
-
return Object.values(groups);
|
|
442
|
-
};
|
|
443
|
-
/**
|
|
444
|
-
* Removes some tokens based on address and chain ID.
|
|
445
|
-
* Some tokens will be returned by backend but should be hidden.
|
|
446
|
-
*
|
|
447
|
-
* TODO: in the future we might want to have this as a token attribute instead.
|
|
448
|
-
*/
|
|
449
|
-
export const filterViewableTokens = (tokens) => {
|
|
450
|
-
const disabledTokens = [
|
|
451
|
-
// On Celo, native token & custom address tokens are returned
|
|
452
|
-
// so we should hide the native one but keep receiving it to use gas balance
|
|
453
|
-
{ chainId: CHAIN_IDS.CELO, address: nativeEvmTokenAddress },
|
|
454
|
-
// SagaEVM is gasless, so the native token is not used
|
|
455
|
-
{ chainId: CHAIN_IDS.SAGA_EVM, address: nativeEvmTokenAddress },
|
|
456
|
-
];
|
|
457
|
-
return (tokens.filter((token) => !disabledTokens.some((disabledToken) => disabledToken.chainId === token.chainId &&
|
|
458
|
-
disabledToken.address.toLowerCase() === token.address.toLowerCase())) ?? []);
|
|
459
|
-
};
|
|
460
|
-
export const getSecretNetworkBalances = async (chainData, cosmosAddress, squidTokens, keplrTypeWallet) => {
|
|
461
|
-
const squidSecretTokens = squidTokens.filter((t) => t.chainId === CHAIN_IDS.SECRET);
|
|
462
|
-
const { fetchAllSecretBalances } = await import("../external/secretService");
|
|
463
|
-
return fetchAllSecretBalances(chainData, cosmosAddress, squidSecretTokens, keplrTypeWallet);
|
|
464
|
-
};
|
|
465
|
-
export function getTokenAssetsKey(token) {
|
|
466
|
-
// Remove slashes and colons and lowercase token address
|
|
467
|
-
return `${token?.chainId}_${token?.address?.replace(/[/\:]/g, "").toLowerCase()}`;
|
|
468
|
-
}
|
|
469
|
-
export async function fetchAssetsColors() {
|
|
470
|
-
try {
|
|
471
|
-
const response = await fetch(`${assetsBaseUrl}/scripts/update-tokens/colors.json`);
|
|
472
|
-
const assetsColors = await response.json();
|
|
473
|
-
const isValidResponse = typeof assetsColors === "object" &&
|
|
474
|
-
typeof assetsColors.chains === "object" &&
|
|
475
|
-
typeof assetsColors.tokens === "object";
|
|
476
|
-
if (!isValidResponse) {
|
|
477
|
-
throw new Error("Invalid assets colors response");
|
|
478
|
-
}
|
|
479
|
-
return assetsColors;
|
|
480
|
-
}
|
|
481
|
-
catch (error) {
|
|
482
|
-
console.error("Error fetching colors file:", error);
|
|
483
|
-
return {
|
|
484
|
-
chains: {},
|
|
485
|
-
tokens: {},
|
|
486
|
-
};
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
export function initializeSquidWithAssetsColors(squid, assetsColors) {
|
|
490
|
-
const evmosChainIds = squid.chains.filter(isEvmosChain).map((c) => c.chainId);
|
|
491
|
-
squid.tokens = squid.tokens.map((token) => {
|
|
492
|
-
const isEvmosToken = evmosChainIds.includes(token.chainId);
|
|
493
|
-
return {
|
|
494
|
-
...token,
|
|
495
|
-
type: isEvmosToken ? ChainType.EVM : token.type,
|
|
496
|
-
bgColor: assetsColors.tokens[getTokenAssetsKey(token)]?.bgColor,
|
|
497
|
-
textColor: assetsColors.tokens[getTokenAssetsKey(token)]?.textColor,
|
|
498
|
-
};
|
|
499
|
-
});
|
|
500
|
-
squid.chains = squid.chains.map((chain) => {
|
|
501
|
-
const bgColor = assetsColors.chains[chain.chainId]?.bgColor;
|
|
502
|
-
// convert evmos cosmos chains to evm chains
|
|
503
|
-
// TODO: this will be fixed in the backend
|
|
504
|
-
if (isEvmosChain(chain)) {
|
|
505
|
-
const evmChain = convertEvmosToEvmChain(chain);
|
|
506
|
-
return {
|
|
507
|
-
...evmChain,
|
|
508
|
-
bgColor,
|
|
509
|
-
};
|
|
510
|
-
}
|
|
511
|
-
return {
|
|
512
|
-
...chain,
|
|
513
|
-
bgColor,
|
|
514
|
-
};
|
|
515
|
-
});
|
|
516
|
-
}
|
|
517
|
-
export function isEmptyObject(obj) {
|
|
518
|
-
if (!obj)
|
|
519
|
-
return true;
|
|
520
|
-
return Object.values(obj).every((value) => value === undefined);
|
|
521
|
-
}
|
|
522
|
-
export const normalizeTokenSymbol = (symbol) => {
|
|
523
|
-
return symbol.toUpperCase();
|
|
524
|
-
};
|
|
525
|
-
export const areTokenSymbolsCompatible = (symbol1, symbol2) => {
|
|
526
|
-
return normalizeTokenSymbol(symbol1) === normalizeTokenSymbol(symbol2);
|
|
527
|
-
};
|
|
528
|
-
export function isEvmosChain(chain) {
|
|
529
|
-
return chain?.isEvmos || false;
|
|
530
|
-
}
|
|
531
|
-
function convertEvmosToEvmChain(cosmosChain) {
|
|
532
|
-
return {
|
|
533
|
-
// @ts-expect-error - isEvmos is not a property on EvmChain
|
|
534
|
-
// We still need this attribute in evmos chains
|
|
535
|
-
// even after they are converted to evm chains, to perform certain checks
|
|
536
|
-
// e.g checking ics20 allowance instead of erc20 allowance
|
|
537
|
-
isEvmos: true,
|
|
538
|
-
chainType: ChainType.EVM,
|
|
539
|
-
axelarChainName: cosmosChain.axelarChainName,
|
|
540
|
-
blockExplorerUrls: cosmosChain.blockExplorerUrls,
|
|
541
|
-
chainId: cosmosChain.chainId,
|
|
542
|
-
bridges: cosmosChain.bridges,
|
|
543
|
-
chainIconURI: cosmosChain.chainIconURI,
|
|
544
|
-
enableBoostByDefault: cosmosChain.enableBoostByDefault,
|
|
545
|
-
chainNativeContracts: {
|
|
546
|
-
ensRegistry: "",
|
|
547
|
-
multicall: "",
|
|
548
|
-
usdcToken: "",
|
|
549
|
-
wrappedNativeToken: "",
|
|
550
|
-
},
|
|
551
|
-
internalRpc: cosmosChain.internalRpc,
|
|
552
|
-
nativeCurrency: {
|
|
553
|
-
decimals: cosmosChain.nativeCurrency.decimals,
|
|
554
|
-
name: cosmosChain.nativeCurrency.name,
|
|
555
|
-
symbol: cosmosChain.nativeCurrency.symbol,
|
|
556
|
-
icon: cosmosChain.nativeCurrency.icon,
|
|
557
|
-
},
|
|
558
|
-
networkName: cosmosChain.networkName,
|
|
559
|
-
rpc: cosmosChain.rpc,
|
|
560
|
-
networkIdentifier: cosmosChain.networkIdentifier,
|
|
561
|
-
sameChainSwapsSupported: cosmosChain.sameChainSwapsSupported,
|
|
562
|
-
squidContracts: cosmosChain.squidContracts,
|
|
563
|
-
swapAmountForGas: cosmosChain.swapAmountForGas,
|
|
564
|
-
boostSupported: cosmosChain.boostSupported,
|
|
565
|
-
compliance: cosmosChain.compliance,
|
|
566
|
-
interchainService: cosmosChain.interchainService,
|
|
567
|
-
};
|
|
568
|
-
}
|
|
569
|
-
//# sourceMappingURL=assetsService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assetsService.js","sourceRoot":"","sources":["../../../src/services/internal/assetsService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { address as btcAddressLib } from "bitcoinjs-lib";
|
|
2
|
-
// Validation taken from Squid API repo
|
|
3
|
-
export const isBitcoinAddressValid = (address) => {
|
|
4
|
-
try {
|
|
5
|
-
if (address.startsWith("bc1p")) {
|
|
6
|
-
// this is a bitcoin taproot address type, it has different encoding than other 3 address types
|
|
7
|
-
// and requires different validation logic
|
|
8
|
-
const decoded = btcAddressLib.fromBech32(address);
|
|
9
|
-
return decoded.prefix === "bc" && decoded.version === 1;
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
btcAddressLib.toOutputScript(address);
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
catch (e) {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=bitcoinService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoinService.js","sourceRoot":"","sources":["../../../src/services/internal/bitcoinService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAEzD,uCAAuC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAW,EAAE;IAChE,IAAI;QACF,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC9B,+FAA+F;YAC/F,0CAA0C;YAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC;SACzD;aAAM;YACL,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;SACb;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAC"}
|