@0xsquid/react-hooks 7.8.0 → 8.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/types/index.d.ts +2 -2
- package/dist/index-BVNZiGCx.js +6021 -0
- package/dist/index-BVNZiGCx.js.map +1 -0
- package/dist/index-BeLuO1uo.js +6021 -0
- package/dist/index-BeLuO1uo.js.map +1 -0
- package/dist/index-CGkGzcT3.js +41015 -0
- package/dist/index-CGkGzcT3.js.map +1 -0
- package/dist/index-DDz-C-VC.js +41267 -0
- package/dist/index-DDz-C-VC.js.map +1 -0
- package/dist/index.esm.js +36 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +296 -6
- package/dist/index.js.map +1 -1
- package/dist/{services/external/secretService.js → secretService-D49fXkda.js} +43 -8
- package/dist/secretService-D49fXkda.js.map +1 -0
- package/dist/secretService-DeXE4j0J.js +168 -0
- package/dist/secretService-DeXE4j0J.js.map +1 -0
- 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 -157
- 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 -232
- 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/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 -96
- 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 -54
- 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 -228
- 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 -75
- 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 -115
- 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 -575
- 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 -198
- 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 -225
- 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 -614
- package/dist/tests/assetsService.test.js.map +0 -1
- package/dist/tests/configService.test.js +0 -641
- 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,53 +0,0 @@
|
|
|
1
|
-
import { BigNumber } from "bignumber.js";
|
|
2
|
-
/**
|
|
3
|
-
* Cleans numeric string by removing thousand separators
|
|
4
|
-
* @param amount - The amount to clean (string or number)
|
|
5
|
-
*/
|
|
6
|
-
export function cleanAmount(amount) {
|
|
7
|
-
if (typeof amount === "number")
|
|
8
|
-
return amount.toString();
|
|
9
|
-
return amount.replace(/,/g, "");
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Convert token amount to USD
|
|
13
|
-
* @param {string|number} tokenAmount - The amount of tokens
|
|
14
|
-
* @param {string|number} tokenPrice - The price of one token in USD
|
|
15
|
-
* @returns {BigNumber} - The equivalent amount in USD
|
|
16
|
-
*/
|
|
17
|
-
export function convertTokenAmountToUSD(tokenAmount, tokenPrice, maxDecimals = 4) {
|
|
18
|
-
if (!tokenAmount || !tokenPrice)
|
|
19
|
-
return "";
|
|
20
|
-
try {
|
|
21
|
-
const amount = new BigNumber(cleanAmount(tokenAmount));
|
|
22
|
-
const price = new BigNumber(cleanAmount(tokenPrice));
|
|
23
|
-
return amount.multipliedBy(price).decimalPlaces(maxDecimals).toString();
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return "";
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Convert USD to token amount
|
|
31
|
-
* @param {string|number} usdAmount - The amount in USD
|
|
32
|
-
* @param {string|number} tokenPrice - The price of one token in USD
|
|
33
|
-
* @param {number} maxDecimals - The maximum number of decimals
|
|
34
|
-
* @returns {BigNumber} - The equivalent amount of tokens
|
|
35
|
-
*/
|
|
36
|
-
export function convertUSDToTokenAmount(usdAmount, tokenPrice, maxDecimals) {
|
|
37
|
-
if (!usdAmount || !tokenPrice || !maxDecimals)
|
|
38
|
-
return "0";
|
|
39
|
-
const amount = new BigNumber(cleanAmount(usdAmount));
|
|
40
|
-
const price = new BigNumber(cleanAmount(tokenPrice));
|
|
41
|
-
return amount.dividedBy(price).decimalPlaces(maxDecimals).toString();
|
|
42
|
-
}
|
|
43
|
-
export const calculateTotal24hChange = (tokensWithBalance, totalUSDAmount) => {
|
|
44
|
-
let weightedChangeSum = 0;
|
|
45
|
-
for (const token of tokensWithBalance) {
|
|
46
|
-
const tokenBalance = parseFloat(token.balance);
|
|
47
|
-
const tokenValueUSD = tokenBalance * token.usdPrice;
|
|
48
|
-
const weightedChange = (tokenValueUSD / Number(totalUSDAmount)) * token.price24hChange;
|
|
49
|
-
weightedChangeSum += weightedChange;
|
|
50
|
-
}
|
|
51
|
-
return weightedChangeSum;
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=priceService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"priceService.js","sourceRoot":"","sources":["../../../src/services/internal/priceService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAA4B,EAC5B,UAA2B,EAC3B,cAAsB,CAAC;IAEvB,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3C,IAAI;QACF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;KACzE;IAAC,MAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA0B,EAC1B,UAA2B,EAC3B,WAAmB;IAEnB,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;QAAE,OAAO,GAAG,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAErD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvE,CAAC;AAQD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,iBAAqC,EACrC,cAA+B,EACvB,EAAE;IACV,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE;QACrC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QACpD,MAAM,cAAc,GAClB,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;QAClE,iBAAiB,IAAI,cAAc,CAAC;KACrC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import Fuse from "fuse.js";
|
|
2
|
-
import { nativeEvmTokenAddress } from "../../core/constants";
|
|
3
|
-
/**
|
|
4
|
-
* Minimum length of a search query to search by address
|
|
5
|
-
* Some tokens can have very short addresses (e.g. "uosmo", "uixo", "satoshi", etc...)
|
|
6
|
-
* We don't want to search by address for these short queries
|
|
7
|
-
* as they can conflict with other tokens' symbols
|
|
8
|
-
*
|
|
9
|
-
* This value is arbitrary and can be adjusted as needed
|
|
10
|
-
* but most blockchains should have longer addresses than this
|
|
11
|
-
*/
|
|
12
|
-
const minAddressLength = 7;
|
|
13
|
-
const fuseSearchOptions = {
|
|
14
|
-
isCaseSensitive: false,
|
|
15
|
-
threshold: 0.1,
|
|
16
|
-
findAllMatches: false,
|
|
17
|
-
includeMatches: true,
|
|
18
|
-
keys: [
|
|
19
|
-
{ name: "symbol", weight: 1 },
|
|
20
|
-
{ name: "name", weight: 0.8 },
|
|
21
|
-
],
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Searches for tokens based on a query string, prioritizing results in the following order:
|
|
25
|
-
* 1. Exact address
|
|
26
|
-
* 2. ETH on Ethereum mainnet (chainId 1)
|
|
27
|
-
* 3. Native tokens of chains matching the query (e.g., BNB when searching for "binance")
|
|
28
|
-
* 4. Exact matches for native tokens (e.g., native FTM when searching for "FTM")
|
|
29
|
-
* 5. Other exact matches for token names or symbols
|
|
30
|
-
* 6. Other native tokens that partially match the query
|
|
31
|
-
* 7. Remaining tokens that partially match the query
|
|
32
|
-
*
|
|
33
|
-
* @param query - The search query string
|
|
34
|
-
* @param tokens - Array of all available tokens
|
|
35
|
-
* @param chains - Array of chain data
|
|
36
|
-
* @returns An array of tokens sorted according to the priority described above
|
|
37
|
-
*/
|
|
38
|
-
export const searchTokens = (query, tokens, chains) => {
|
|
39
|
-
// Query must at least be 2 characters long
|
|
40
|
-
if (query.length <= 1)
|
|
41
|
-
return tokens;
|
|
42
|
-
// Check for exact address match first, only if query is long enough
|
|
43
|
-
const exactAddressMatches = query.length >= minAddressLength
|
|
44
|
-
? tokens.filter((token) => token.address.toLowerCase() === query.toLowerCase())
|
|
45
|
-
: [];
|
|
46
|
-
// There can be multiple matches for the same address,
|
|
47
|
-
// e.g. ITS tokens share address across chains
|
|
48
|
-
if (exactAddressMatches.length > 0) {
|
|
49
|
-
return exactAddressMatches;
|
|
50
|
-
}
|
|
51
|
-
// Init fuse.js
|
|
52
|
-
const fuse = new Fuse(tokens, fuseSearchOptions);
|
|
53
|
-
// Perform the search with fuse
|
|
54
|
-
const searchResults = fuse.search(query);
|
|
55
|
-
// Find native tokens that match the query or related chain names
|
|
56
|
-
const nativeTokens = chains
|
|
57
|
-
.filter((chain) => chain.nativeCurrency.symbol.toLowerCase() === query.toLowerCase() ||
|
|
58
|
-
chain.nativeCurrency.name.toLowerCase().includes(query.toLowerCase()) ||
|
|
59
|
-
chain.networkName.toLowerCase().includes(query.toLowerCase()) ||
|
|
60
|
-
chain.axelarChainName.toLowerCase().includes(query.toLowerCase()))
|
|
61
|
-
.map((chain) => tokens.find((token) => token.chainId === chain.chainId &&
|
|
62
|
-
token.address.toLowerCase() === nativeEvmTokenAddress))
|
|
63
|
-
.filter((token) => token !== undefined);
|
|
64
|
-
// Separate ETH on Ethereum mainnet (chainId 1) for top priority
|
|
65
|
-
const ethMainnet = nativeTokens.find((token) => token.symbol === "ETH" && token.chainId === "1");
|
|
66
|
-
const otherNativeTokens = nativeTokens.filter((token) => !(token.symbol === "ETH" && token.chainId === "1"));
|
|
67
|
-
// Find exact matches for token name or symbol
|
|
68
|
-
const exactMatches = searchResults
|
|
69
|
-
.map((result) => result.item)
|
|
70
|
-
.filter((token) => token.name.toLowerCase() === query.toLowerCase() ||
|
|
71
|
-
token.symbol.toLowerCase() === query.toLowerCase());
|
|
72
|
-
// Prioritize native tokens within exact matches
|
|
73
|
-
const prioritizedExactMatches = exactMatches.sort((a, b) => {
|
|
74
|
-
const aIsNative = a.address.toLowerCase() === nativeEvmTokenAddress;
|
|
75
|
-
const bIsNative = b.address.toLowerCase() === nativeEvmTokenAddress;
|
|
76
|
-
if (aIsNative && !bIsNative)
|
|
77
|
-
return -1;
|
|
78
|
-
if (!aIsNative && bIsNative)
|
|
79
|
-
return 1;
|
|
80
|
-
return 0;
|
|
81
|
-
});
|
|
82
|
-
// Collect remaining search results that aren't exact matches
|
|
83
|
-
const otherResults = searchResults
|
|
84
|
-
.map((result) => result.item)
|
|
85
|
-
.filter((token) => !(token.name.toLowerCase() === query.toLowerCase() ||
|
|
86
|
-
token.symbol.toLowerCase() === query.toLowerCase()));
|
|
87
|
-
// Combine all results in the desired priority order
|
|
88
|
-
const combinedResults = [
|
|
89
|
-
...(ethMainnet ? [ethMainnet] : []),
|
|
90
|
-
...otherNativeTokens,
|
|
91
|
-
...prioritizedExactMatches,
|
|
92
|
-
...otherResults,
|
|
93
|
-
];
|
|
94
|
-
// Remove any duplicate tokens from the results
|
|
95
|
-
const uniqueResults = Array.from(new Set(combinedResults));
|
|
96
|
-
return uniqueResults;
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=searchService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"searchService.js","sourceRoot":"","sources":["../../../src/services/internal/searchService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
-
import { coin as cosmJsCoin } from "@cosmjs/proto-signing";
|
|
3
|
-
import { SigningStargateClient, } from "@cosmjs/stargate";
|
|
4
|
-
import { Transaction } from "@mysten/sui/transactions";
|
|
5
|
-
import { Contract, JsonRpcProvider } from "ethers";
|
|
6
|
-
import { erc20Abi } from "viem";
|
|
7
|
-
import { getClient } from "../../core/client";
|
|
8
|
-
import { nativeEvmTokenAddress, nativeSuiTokenAddress, nativeXrplTokenAddress, } from "../../core/constants";
|
|
9
|
-
import { formatBNToReadable } from "./numberService";
|
|
10
|
-
import { executeSolanaTransfer } from "./solanaService";
|
|
11
|
-
import { getSuiChain } from "./suiService";
|
|
12
|
-
import { getXrplNetwork, isXrplAddressValid } from "./xrplService";
|
|
13
|
-
export async function sendTransactionEvm({ to, amount, token, signer, rpcUrl, }) {
|
|
14
|
-
const isNativeToken = token.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase();
|
|
15
|
-
if (isNativeToken) {
|
|
16
|
-
const tx = await signer.sendTransaction({
|
|
17
|
-
to,
|
|
18
|
-
value: amount,
|
|
19
|
-
chainId: Number(token.chainId),
|
|
20
|
-
});
|
|
21
|
-
return {
|
|
22
|
-
txHash: tx.hash,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
const provider = new JsonRpcProvider(rpcUrl);
|
|
26
|
-
const erc20Contract = new Contract(token.address, erc20Abi, provider);
|
|
27
|
-
const encodedTransferCall = erc20Contract.interface.encodeFunctionData("transfer", [to, amount]);
|
|
28
|
-
const tx = await signer.sendTransaction({
|
|
29
|
-
to: token.address,
|
|
30
|
-
data: encodedTransferCall,
|
|
31
|
-
chainId: Number(token.chainId),
|
|
32
|
-
});
|
|
33
|
-
return {
|
|
34
|
-
txHash: tx.hash,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export async function sendTransactionCosmos({ amount, rpcUrl, signer, to, token, nativeToken, }) {
|
|
38
|
-
const accounts = await signer.getAccounts();
|
|
39
|
-
const signingClient = await SigningStargateClient.connectWithSigner(rpcUrl, signer);
|
|
40
|
-
const senderAddress = accounts[0].address;
|
|
41
|
-
const coins = [cosmJsCoin(amount, token.address)];
|
|
42
|
-
const fee = {
|
|
43
|
-
amount: [cosmJsCoin("500", nativeToken.address)],
|
|
44
|
-
gas: "150000",
|
|
45
|
-
};
|
|
46
|
-
const sendMsg = {
|
|
47
|
-
typeUrl: "/cosmos.bank.v1beta1.MsgSend",
|
|
48
|
-
value: {
|
|
49
|
-
fromAddress: senderAddress,
|
|
50
|
-
toAddress: to,
|
|
51
|
-
amount: coins,
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
const txHash = await signingClient.signAndBroadcastSync(senderAddress, [sendMsg], fee);
|
|
55
|
-
return { txHash };
|
|
56
|
-
}
|
|
57
|
-
export async function sendTransactionSolana({ signer, amount, to, token, connection, }) {
|
|
58
|
-
const amountBn = BigInt(amount);
|
|
59
|
-
const txHash = await executeSolanaTransfer({
|
|
60
|
-
amount: amountBn,
|
|
61
|
-
connection,
|
|
62
|
-
signer,
|
|
63
|
-
target: to,
|
|
64
|
-
sourceToken: token,
|
|
65
|
-
});
|
|
66
|
-
return { txHash };
|
|
67
|
-
}
|
|
68
|
-
export async function sendTransactionBitcoin({ amount, signer, to, }) {
|
|
69
|
-
const { txHash } = await signer.sendBTC(to, Number(amount));
|
|
70
|
-
return { txHash };
|
|
71
|
-
}
|
|
72
|
-
export async function sendTransactionSui({ account, amount, chain, signer, to, token, }) {
|
|
73
|
-
if (chain.chainType !== ChainType.SUI) {
|
|
74
|
-
throw new Error(`Invalid chain type, expected ${ChainType.SUI}, got ${chain.chainType}`);
|
|
75
|
-
}
|
|
76
|
-
const suiChain = getSuiChain(chain.chainId);
|
|
77
|
-
if (!suiChain) {
|
|
78
|
-
throw new Error(`Sui chain not found for chainId: ${chain.chainId}`);
|
|
79
|
-
}
|
|
80
|
-
const suiClient = await getClient(chain);
|
|
81
|
-
const isNativeToken = token.address.toLowerCase() === nativeSuiTokenAddress.toLowerCase();
|
|
82
|
-
const tx = new Transaction();
|
|
83
|
-
if (isNativeToken) {
|
|
84
|
-
const [coin] = tx.splitCoins(tx.gas, [amount]);
|
|
85
|
-
tx.transferObjects([coin], to);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const coinType = token.address;
|
|
89
|
-
const coinObjects = await suiClient.getCoins({
|
|
90
|
-
owner: account.address,
|
|
91
|
-
coinType,
|
|
92
|
-
});
|
|
93
|
-
const coinObject = coinObjects.data.find((coin) => BigInt(coin.balance) >= BigInt(amount));
|
|
94
|
-
// if a coin with enough balance is found, use it
|
|
95
|
-
// as it's more efficient than merging multiple coins
|
|
96
|
-
if (coinObject) {
|
|
97
|
-
const [coin] = tx.splitCoins(coinObject.coinObjectId, [amount]);
|
|
98
|
-
tx.transferObjects([coin], to);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
// otherwise merge coins up to the required amount
|
|
102
|
-
// first, sort the coins by balance in descending order for efficiency
|
|
103
|
-
const sortedCoins = coinObjects.data.sort((a, b) => {
|
|
104
|
-
const diff = BigInt(b.balance) - BigInt(a.balance);
|
|
105
|
-
if (diff === BigInt(0)) {
|
|
106
|
-
return 0;
|
|
107
|
-
}
|
|
108
|
-
else if (diff > BigInt(0)) {
|
|
109
|
-
return 1;
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
return -1;
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
// gather coins until the required amount is reached
|
|
116
|
-
const selectedCoinObjects = [];
|
|
117
|
-
let amountGathered = BigInt(0);
|
|
118
|
-
for (const coin of sortedCoins) {
|
|
119
|
-
if (amountGathered >= BigInt(amount)) {
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
selectedCoinObjects.push(coin);
|
|
123
|
-
amountGathered += BigInt(coin.balance);
|
|
124
|
-
}
|
|
125
|
-
if (amountGathered < BigInt(amount)) {
|
|
126
|
-
throw new Error(`Insufficient balance of ${coinType}`);
|
|
127
|
-
}
|
|
128
|
-
const [targetCoin, ...otherCoins] = selectedCoinObjects.map((c) => c.coinObjectId);
|
|
129
|
-
// merge the selected coins into a single coin
|
|
130
|
-
tx.mergeCoins(targetCoin, otherCoins);
|
|
131
|
-
// create a new coin with the required amount
|
|
132
|
-
const [coin] = tx.splitCoins(targetCoin, [amount]);
|
|
133
|
-
tx.transferObjects([coin], to);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
const signedTx = await signer.signTransaction({
|
|
137
|
-
transaction: tx,
|
|
138
|
-
account,
|
|
139
|
-
chain: suiChain,
|
|
140
|
-
});
|
|
141
|
-
// execute transaction without waiting for confirmation
|
|
142
|
-
const txResponse = await suiClient.executeTransactionBlock({
|
|
143
|
-
signature: signedTx.signature,
|
|
144
|
-
transactionBlock: signedTx.bytes,
|
|
145
|
-
});
|
|
146
|
-
return { txHash: txResponse.digest };
|
|
147
|
-
}
|
|
148
|
-
export async function sendTransactionXrpl({ amount, signer, to, token, from, }) {
|
|
149
|
-
const xrplNetwork = getXrplNetwork(token.chainId);
|
|
150
|
-
if (xrplNetwork == null) {
|
|
151
|
-
throw new Error(`No XRPL network found for chainId '${token.chainId}'`);
|
|
152
|
-
}
|
|
153
|
-
if (!isXrplAddressValid(from) || !isXrplAddressValid(to)) {
|
|
154
|
-
throw new Error("Invalid from or to address");
|
|
155
|
-
}
|
|
156
|
-
const baseTransaction = {
|
|
157
|
-
TransactionType: "Payment",
|
|
158
|
-
Account: from,
|
|
159
|
-
Destination: to,
|
|
160
|
-
};
|
|
161
|
-
const isNativeToken = token.address.toLowerCase() === nativeXrplTokenAddress.toLowerCase();
|
|
162
|
-
if (isNativeToken) {
|
|
163
|
-
const { hash } = await signer.signAndSubmit({
|
|
164
|
-
network: xrplNetwork,
|
|
165
|
-
tx: {
|
|
166
|
-
...baseTransaction,
|
|
167
|
-
Amount: amount,
|
|
168
|
-
},
|
|
169
|
-
});
|
|
170
|
-
return {
|
|
171
|
-
txHash: hash,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
const [currency, issuer] = token.address.split(".");
|
|
175
|
-
const amountFormatted = formatBNToReadable(amount, token.decimals);
|
|
176
|
-
const { hash } = await signer.signAndSubmit({
|
|
177
|
-
network: xrplNetwork,
|
|
178
|
-
tx: {
|
|
179
|
-
...baseTransaction,
|
|
180
|
-
Amount: {
|
|
181
|
-
currency,
|
|
182
|
-
issuer,
|
|
183
|
-
value: amountFormatted,
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
});
|
|
187
|
-
return {
|
|
188
|
-
txHash: hash,
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=sendTransaction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sendTransaction.js","sourceRoot":"","sources":["../../../src/services/internal/sendTransaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
-
import { AxiosError } from "axios";
|
|
3
|
-
import { getClient } from "../../core/client";
|
|
4
|
-
import { getTransactionStatus as getBtcTxStatus } from "../../core/connectors/bitcoin/helpers";
|
|
5
|
-
import { SendTransactionStatus } from "../../core/types/transaction";
|
|
6
|
-
import { XrplTxStatus } from "../../core/types/xrpl";
|
|
7
|
-
async function getTxStatusEvm({ chain, txHash, }) {
|
|
8
|
-
const client = await getClient(chain);
|
|
9
|
-
const receipt = await client.getTransactionReceipt(txHash);
|
|
10
|
-
if (!receipt)
|
|
11
|
-
return SendTransactionStatus.ONGOING;
|
|
12
|
-
switch (receipt.status) {
|
|
13
|
-
case 0:
|
|
14
|
-
return SendTransactionStatus.ERROR;
|
|
15
|
-
case 1:
|
|
16
|
-
return SendTransactionStatus.SUCCESS;
|
|
17
|
-
}
|
|
18
|
-
return SendTransactionStatus.ONGOING;
|
|
19
|
-
}
|
|
20
|
-
async function getTxStatusCosmos({ txHash, chain, }) {
|
|
21
|
-
const client = await getClient(chain);
|
|
22
|
-
const tx = await client.getTx(txHash);
|
|
23
|
-
if (!tx) {
|
|
24
|
-
return SendTransactionStatus.ONGOING;
|
|
25
|
-
}
|
|
26
|
-
if (tx.code === 0) {
|
|
27
|
-
return SendTransactionStatus.SUCCESS;
|
|
28
|
-
}
|
|
29
|
-
return SendTransactionStatus.ERROR;
|
|
30
|
-
}
|
|
31
|
-
async function getTxStatusSolana({ txHash, chain, }) {
|
|
32
|
-
const client = await getClient(chain);
|
|
33
|
-
const txStatus = await client.getSignatureStatus(txHash, {
|
|
34
|
-
searchTransactionHistory: true,
|
|
35
|
-
});
|
|
36
|
-
if (!txStatus.value) {
|
|
37
|
-
return SendTransactionStatus.ONGOING;
|
|
38
|
-
}
|
|
39
|
-
if (txStatus.value.err) {
|
|
40
|
-
return SendTransactionStatus.ERROR;
|
|
41
|
-
}
|
|
42
|
-
switch (txStatus.value.confirmationStatus) {
|
|
43
|
-
case "processed":
|
|
44
|
-
case "confirmed":
|
|
45
|
-
return SendTransactionStatus.ONGOING;
|
|
46
|
-
case "finalized":
|
|
47
|
-
return SendTransactionStatus.SUCCESS;
|
|
48
|
-
}
|
|
49
|
-
return SendTransactionStatus.ONGOING;
|
|
50
|
-
}
|
|
51
|
-
async function getTxStatusBitcoin({ txHash, }) {
|
|
52
|
-
try {
|
|
53
|
-
const response = await getBtcTxStatus(txHash);
|
|
54
|
-
if (response.status.confirmed) {
|
|
55
|
-
return SendTransactionStatus.SUCCESS;
|
|
56
|
-
}
|
|
57
|
-
return SendTransactionStatus.ONGOING;
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
if (error instanceof AxiosError) {
|
|
61
|
-
if (/transaction not found/i.test(error.message)) {
|
|
62
|
-
return SendTransactionStatus.ONGOING;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
throw error;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async function getTxStatusSui({ chain, txHash, }) {
|
|
69
|
-
if (chain.chainType !== ChainType.SUI) {
|
|
70
|
-
throw new Error(`Invalid chain type, expected ${ChainType.SUI}, got ${chain.chainType}`);
|
|
71
|
-
}
|
|
72
|
-
const suiClient = await getClient(chain);
|
|
73
|
-
const txResponse = await suiClient.waitForTransaction({
|
|
74
|
-
digest: txHash,
|
|
75
|
-
options: {
|
|
76
|
-
showEffects: true,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
if (txResponse.effects?.status.error) {
|
|
80
|
-
return SendTransactionStatus.ERROR;
|
|
81
|
-
}
|
|
82
|
-
switch (txResponse.effects?.status.status) {
|
|
83
|
-
case "success":
|
|
84
|
-
return SendTransactionStatus.SUCCESS;
|
|
85
|
-
case "failure":
|
|
86
|
-
return SendTransactionStatus.ERROR;
|
|
87
|
-
default:
|
|
88
|
-
return SendTransactionStatus.ONGOING;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
async function getTxStatusXrpl({ chain, txHash, }) {
|
|
92
|
-
const xrplClient = await getClient(chain);
|
|
93
|
-
const status = await xrplClient.waitForTransaction(txHash, {
|
|
94
|
-
interval: 1_000,
|
|
95
|
-
});
|
|
96
|
-
if (status === XrplTxStatus.SUCCESS) {
|
|
97
|
-
return SendTransactionStatus.SUCCESS;
|
|
98
|
-
}
|
|
99
|
-
return SendTransactionStatus.ERROR;
|
|
100
|
-
}
|
|
101
|
-
export async function getSendTransactionStatus({ chain, txHash, }) {
|
|
102
|
-
switch (chain.chainType) {
|
|
103
|
-
case ChainType.EVM:
|
|
104
|
-
return getTxStatusEvm({
|
|
105
|
-
txHash,
|
|
106
|
-
chain,
|
|
107
|
-
});
|
|
108
|
-
case ChainType.COSMOS:
|
|
109
|
-
return getTxStatusCosmos({
|
|
110
|
-
txHash,
|
|
111
|
-
chain,
|
|
112
|
-
});
|
|
113
|
-
case ChainType.SOLANA:
|
|
114
|
-
return getTxStatusSolana({
|
|
115
|
-
txHash,
|
|
116
|
-
chain,
|
|
117
|
-
});
|
|
118
|
-
case ChainType.BTC:
|
|
119
|
-
return getTxStatusBitcoin({
|
|
120
|
-
txHash,
|
|
121
|
-
});
|
|
122
|
-
case ChainType.SUI:
|
|
123
|
-
return getTxStatusSui({
|
|
124
|
-
txHash,
|
|
125
|
-
chain,
|
|
126
|
-
});
|
|
127
|
-
case ChainType.XRPL:
|
|
128
|
-
return getTxStatusXrpl({
|
|
129
|
-
txHash,
|
|
130
|
-
chain,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=sendTransactionStatus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sendTransactionStatus.js","sourceRoot":"","sources":["../../../src/services/internal/sendTransactionStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { ChainType, } from "@0xsquid/squid-types";
|
|
2
|
-
import { createAssociatedTokenAccountInstruction, createTransferInstruction, getAssociatedTokenAddress, } from "@solana/spl-token";
|
|
3
|
-
import { StandardWalletAdapter } from "@solana/wallet-standard-wallet-adapter-base";
|
|
4
|
-
import { PublicKey, SystemProgram, Transaction, VersionedTransaction, } from "@solana/web3.js";
|
|
5
|
-
import { nativeSolanaTokenAddress } from "../../core/constants";
|
|
6
|
-
import { isStandardWalletWithCustomFeatures, standardWalletOverrides, } from "./walletStandardService";
|
|
7
|
-
const SOLANA_FEATURES = ["solana:signTransaction"];
|
|
8
|
-
/**
|
|
9
|
-
* Validates that a given standard wallet has all the required features for a Solana wallet
|
|
10
|
-
*/
|
|
11
|
-
function isSolanaStandardWallet(wallet) {
|
|
12
|
-
return isStandardWalletWithCustomFeatures(wallet, SOLANA_FEATURES);
|
|
13
|
-
}
|
|
14
|
-
export function filterSolanaWallets(standardWallets) {
|
|
15
|
-
// Filter out all non-Solana standard wallets
|
|
16
|
-
return standardWallets.filter(isSolanaStandardWallet).map(formatSolanaWallet);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Format a Solana standard wallet into a Squid Wallet
|
|
20
|
-
*/
|
|
21
|
-
function formatSolanaWallet(wallet) {
|
|
22
|
-
const { icon, name: defaultName, id } = wallet;
|
|
23
|
-
const standardWalletId = id || defaultName;
|
|
24
|
-
const walletOverrides = standardWalletOverrides[standardWalletId];
|
|
25
|
-
const walletIcon = walletOverrides?.icon || icon;
|
|
26
|
-
const name = walletOverrides?.name || defaultName;
|
|
27
|
-
const connectorId = walletOverrides?.connectorId || standardWalletId;
|
|
28
|
-
return {
|
|
29
|
-
connectorId,
|
|
30
|
-
name,
|
|
31
|
-
connectorName: name,
|
|
32
|
-
type: ChainType.SOLANA,
|
|
33
|
-
icon: walletIcon,
|
|
34
|
-
windowFlag: name,
|
|
35
|
-
isMobile: false,
|
|
36
|
-
isInstalled() {
|
|
37
|
-
return true;
|
|
38
|
-
},
|
|
39
|
-
connector: new StandardWalletAdapter({ wallet }),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export const isSolanaAddressValid = (address) => {
|
|
43
|
-
try {
|
|
44
|
-
new PublicKey(address);
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Execute a Solana swap transaction
|
|
53
|
-
* This will be used for the swap flow - Using Jupiter Dex under the hood
|
|
54
|
-
*/
|
|
55
|
-
export const executeSolanaSwap = async ({ route, signer, connection, onSigned, }) => {
|
|
56
|
-
if (!route?.transactionRequest?.data) {
|
|
57
|
-
throw new Error("Invalid parameters");
|
|
58
|
-
}
|
|
59
|
-
const swapRequest = route.transactionRequest.data;
|
|
60
|
-
const swapTransactionBuf = Buffer.from(swapRequest, "base64");
|
|
61
|
-
// TODO: fix types
|
|
62
|
-
// const transaction = VersionedTransaction.deserialize(
|
|
63
|
-
// Uint8Array.from(swapTransactionBuf)
|
|
64
|
-
// );
|
|
65
|
-
const transaction = VersionedTransaction.deserialize(swapTransactionBuf);
|
|
66
|
-
try {
|
|
67
|
-
const latestBlockhash = await connection.getLatestBlockhash();
|
|
68
|
-
const signature = await signer.sendTransaction(transaction, connection);
|
|
69
|
-
onSigned?.(signature);
|
|
70
|
-
await connection.confirmTransaction({
|
|
71
|
-
signature,
|
|
72
|
-
blockhash: latestBlockhash.blockhash,
|
|
73
|
-
lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,
|
|
74
|
-
});
|
|
75
|
-
return signature;
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
console.error("Solana swap failed:", error);
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* Execute a Solana transfer transaction for both native SOL and SPL tokens
|
|
84
|
-
* @param amount - Amount to transfer in raw units (lamports for SOL, raw token units for SPL)
|
|
85
|
-
* @param target - Target wallet address
|
|
86
|
-
* @param signer - Solana wallet adapter instance
|
|
87
|
-
* @param connection - Solana RPC connection
|
|
88
|
-
* @param sourceToken - Token information (undefined for native SOL)
|
|
89
|
-
* @param onSigned - Optional callback triggered when transaction is signed
|
|
90
|
-
* @returns Transaction signature
|
|
91
|
-
*/
|
|
92
|
-
export const executeSolanaTransfer = async ({ amount, target, signer, connection, sourceToken, onSigned, }) => {
|
|
93
|
-
// Validate signer and target address
|
|
94
|
-
if (!signer.publicKey) {
|
|
95
|
-
throw new Error("Signer public key not found");
|
|
96
|
-
}
|
|
97
|
-
if (!isSolanaAddressValid(target)) {
|
|
98
|
-
throw new Error("Invalid target address");
|
|
99
|
-
}
|
|
100
|
-
const targetPubKey = new PublicKey(target);
|
|
101
|
-
const transaction = new Transaction();
|
|
102
|
-
const isNativeToken = !sourceToken ||
|
|
103
|
-
sourceToken.address.toLowerCase() ===
|
|
104
|
-
nativeSolanaTokenAddress.toLowerCase();
|
|
105
|
-
if (isNativeToken) {
|
|
106
|
-
// Handle native SOL transfer
|
|
107
|
-
transaction.add(SystemProgram.transfer({
|
|
108
|
-
fromPubkey: signer.publicKey,
|
|
109
|
-
toPubkey: targetPubKey,
|
|
110
|
-
lamports: amount,
|
|
111
|
-
}));
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
// Handle SPL token transfer
|
|
115
|
-
const mint = new PublicKey(sourceToken.address);
|
|
116
|
-
// Get Associated Token Accounts (ATAs) for both source and target
|
|
117
|
-
const sourceATA = await getAssociatedTokenAddress(mint, signer.publicKey, true);
|
|
118
|
-
const targetATA = await getAssociatedTokenAddress(mint, targetPubKey, true);
|
|
119
|
-
// Check if target ATA exists and create if needed
|
|
120
|
-
const targetAccount = await connection.getAccountInfo(targetATA);
|
|
121
|
-
if (!targetAccount) {
|
|
122
|
-
transaction.add(createAssociatedTokenAccountInstruction(signer.publicKey, targetATA, targetPubKey, mint));
|
|
123
|
-
}
|
|
124
|
-
// Add the token transfer instruction
|
|
125
|
-
transaction.add(createTransferInstruction(sourceATA, targetATA, signer.publicKey, amount));
|
|
126
|
-
}
|
|
127
|
-
// Get latest blockhash and sign transaction
|
|
128
|
-
const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
|
|
129
|
-
transaction.recentBlockhash = blockhash;
|
|
130
|
-
transaction.feePayer = signer.publicKey;
|
|
131
|
-
const signature = await signer.sendTransaction(transaction, connection);
|
|
132
|
-
// Trigger callback for UI purposes (show loading state)
|
|
133
|
-
onSigned?.(signature);
|
|
134
|
-
// Wait for transaction confirmation
|
|
135
|
-
await connection.confirmTransaction({
|
|
136
|
-
signature,
|
|
137
|
-
blockhash,
|
|
138
|
-
lastValidBlockHeight,
|
|
139
|
-
});
|
|
140
|
-
return signature;
|
|
141
|
-
};
|
|
142
|
-
//# sourceMappingURL=solanaService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solanaService.js","sourceRoot":"","sources":["../../../src/services/internal/solanaService.ts"],"names":[],"mappings":"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"}
|