@0xsquid/react-hooks 7.8.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/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/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,219 +0,0 @@
|
|
|
1
|
-
import { formatUnitsRounded } from "./numberService";
|
|
2
|
-
/**
|
|
3
|
-
* Creates a hash string from quote request parameters to track changes
|
|
4
|
-
*/
|
|
5
|
-
export const createQuoteRequestParamsHash = (params) => {
|
|
6
|
-
return [
|
|
7
|
-
params.fromAddress || "",
|
|
8
|
-
params.toAddress || "",
|
|
9
|
-
params.fromChain,
|
|
10
|
-
params.toChain,
|
|
11
|
-
`${params.fromToken}_${params.fromChain}`,
|
|
12
|
-
`${params.toToken}_${params.toChain}`,
|
|
13
|
-
params.fromAmount,
|
|
14
|
-
].join("|");
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Formats the amount based on token details
|
|
18
|
-
* @param data Event parameters containing fromToken, fromChain, and fromAmount
|
|
19
|
-
* @param findToken Function to find token details
|
|
20
|
-
* @returns Original data with formatted amount
|
|
21
|
-
*/
|
|
22
|
-
const formatTokenAmountForEvent = (data, findToken) => {
|
|
23
|
-
const fromToken = findToken(data.fromToken, data.fromChain);
|
|
24
|
-
const formattedFromAmount = formatUnitsRounded((data.fromAmount ?? "0").toString(), fromToken?.decimals, 10);
|
|
25
|
-
// Rewrite the fromAmount with the formatted amount
|
|
26
|
-
// Example: 1000000000000000000 -> 1 with decimals 18
|
|
27
|
-
// For readability of the event data
|
|
28
|
-
return {
|
|
29
|
-
...data,
|
|
30
|
-
fromAmount: formattedFromAmount,
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
export class WidgetEvents extends EventTarget {
|
|
34
|
-
static instance;
|
|
35
|
-
constructor() {
|
|
36
|
-
super();
|
|
37
|
-
}
|
|
38
|
-
// Singleton, because we need to access this service outside the widget
|
|
39
|
-
static getInstance() {
|
|
40
|
-
if (!WidgetEvents.instance) {
|
|
41
|
-
WidgetEvents.instance = new WidgetEvents();
|
|
42
|
-
}
|
|
43
|
-
return WidgetEvents.instance;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Overriding the addEventListener method to make it easier to use with typescript
|
|
47
|
-
* @param type
|
|
48
|
-
* @param listener
|
|
49
|
-
* @param options
|
|
50
|
-
*/
|
|
51
|
-
listenToWidget(type, listener, options) {
|
|
52
|
-
super.addEventListener(type, listener, options);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Overriding the removeEventListener method to make it easier to use with typescript
|
|
56
|
-
* @param type
|
|
57
|
-
* @param listener
|
|
58
|
-
* @param options
|
|
59
|
-
*/
|
|
60
|
-
removeWidgetListener(type, listener, options) {
|
|
61
|
-
super.removeEventListener(type, listener, options);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Dispatch an event of the widget
|
|
65
|
-
* To be listened from an integrator website
|
|
66
|
-
* For example to display a success message when transaction is done
|
|
67
|
-
* @param name
|
|
68
|
-
* @param data
|
|
69
|
-
*/
|
|
70
|
-
dispatch(name, data) {
|
|
71
|
-
this.dispatchEvent(new CustomEvent(name, { detail: data }));
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Will dispatch the main axelar status of transaction
|
|
75
|
-
* This will be called every time the status is received by backend
|
|
76
|
-
* (Using interval to check status)
|
|
77
|
-
* @param status
|
|
78
|
-
*/
|
|
79
|
-
dispatchSwapStatus(status) {
|
|
80
|
-
this.dispatch("swapStatus", { status });
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Dispatch event when user executes a swap
|
|
84
|
-
* Only when we have the tx hash received
|
|
85
|
-
* @param route
|
|
86
|
-
*/
|
|
87
|
-
dispatchSwapExecuteCall(route, txHash) {
|
|
88
|
-
this.dispatch("swap", { route, txHash });
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Dispatch event when user changes chain/token
|
|
92
|
-
* @param swapParams
|
|
93
|
-
*/
|
|
94
|
-
dispatchSwapParamsChanged(swapParams) {
|
|
95
|
-
this.dispatch("swapParamsChanged", { ...swapParams });
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Dispatch event when we are waiting for the user to sign the swap transaction
|
|
99
|
-
* @param data
|
|
100
|
-
*/
|
|
101
|
-
dispatchSwapTxSignatureRequested(data) {
|
|
102
|
-
this.dispatch("swapTxSignatureRequested", data);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Dispatch event when there's an error while executing the swap route
|
|
106
|
-
* @param data
|
|
107
|
-
*/
|
|
108
|
-
dispatchSwapRouteExecutionError(data) {
|
|
109
|
-
this.dispatch("swapRouteExecutionError", data);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Dispatch event when requesting a quote for swap
|
|
113
|
-
* @param data Quote request parameters
|
|
114
|
-
*/
|
|
115
|
-
dispatchRequestQuote(data) {
|
|
116
|
-
this.dispatch("requestQuote", data);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Dispatch event before swap execution
|
|
120
|
-
* @param data Pre-swap parameters
|
|
121
|
-
* @param findToken Function to find token details
|
|
122
|
-
*/
|
|
123
|
-
dispatchPreSwap(data, findToken) {
|
|
124
|
-
this.dispatch("preSwap", formatTokenAmountForEvent(data, findToken));
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Dispatch event after swap execution
|
|
128
|
-
* @param data Post-swap parameters including transaction hash
|
|
129
|
-
* @param findToken Function to find token details
|
|
130
|
-
*/
|
|
131
|
-
dispatchPostSwap(data, findToken) {
|
|
132
|
-
this.dispatch("postSwap", formatTokenAmountForEvent(data, findToken));
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Dispatch event when wallet is successfully connected
|
|
136
|
-
* @param data Wallet connection details
|
|
137
|
-
*/
|
|
138
|
-
dispatchWalletConnect(data) {
|
|
139
|
-
this.dispatch("walletConnect", data);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Dispatch event when wallet connection is rejected
|
|
143
|
-
* @param data Wallet rejection details
|
|
144
|
-
*/
|
|
145
|
-
dispatchWalletReject(data) {
|
|
146
|
-
this.dispatch("walletReject", data);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Dispatch event when onchain transaction is rejected
|
|
150
|
-
* @param data Onchain rejection details
|
|
151
|
-
*/
|
|
152
|
-
dispatchOnchainReject(data) {
|
|
153
|
-
this.dispatch("onchainReject", data);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Dispatch event when requesting an onramp quote
|
|
157
|
-
* @param data Quote request parameters
|
|
158
|
-
*/
|
|
159
|
-
dispatchOnrampQuoteRequest(data) {
|
|
160
|
-
this.dispatch("onrampQuoteRequest", data);
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Dispatch event when executing an onramp quote
|
|
164
|
-
* @param data Quote execution parameters
|
|
165
|
-
*/
|
|
166
|
-
dispatchOnrampQuoteExecute(data) {
|
|
167
|
-
this.dispatch("onrampQuoteExecute", data);
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Dispatch event when the search query has no results
|
|
171
|
-
* @param data Empty search details
|
|
172
|
-
*/
|
|
173
|
-
dispatchSearchEmpty(data) {
|
|
174
|
-
this.dispatch("searchEmpty", data);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Dispatch event before Send transaction execution
|
|
178
|
-
* @param data Pre-send parameters
|
|
179
|
-
*/
|
|
180
|
-
dispatchPreSend(data) {
|
|
181
|
-
this.dispatch("preSend", data);
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Dispatch event after Send transaction execution
|
|
185
|
-
* @param data Post-send parameters
|
|
186
|
-
*/
|
|
187
|
-
dispatchPostSend(data) {
|
|
188
|
-
this.dispatch("postSend", data);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Dispatch event when QR code is generated for wallet connection.
|
|
192
|
-
* @param data QR code data
|
|
193
|
-
*/
|
|
194
|
-
dispatchQrCodeGeneratedForConnect(data) {
|
|
195
|
-
this.dispatch("qrCodeGeneratedForConnect", data);
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Dispatch event when QR code is generated for signing a transaction.
|
|
199
|
-
* @param data QR code data
|
|
200
|
-
*/
|
|
201
|
-
dispatchQrCodeGeneratedForSign(data) {
|
|
202
|
-
this.dispatch("qrCodeGeneratedForSign", data);
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Dispatch event when QR code generation for signing a transaction fails.
|
|
206
|
-
* @param data Error information
|
|
207
|
-
*/
|
|
208
|
-
dispatchQrCodeGenerationFailedForSign(data) {
|
|
209
|
-
this.dispatch("qrCodeGenerationFailedForSign", data);
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Dispatches event after the QR code for signing a transaction is scanned
|
|
213
|
-
* and we're waiting for the user to approve or reject it.
|
|
214
|
-
*/
|
|
215
|
-
dispatchQrTxScannedAwaitingApproval(data) {
|
|
216
|
-
this.dispatch("qrTxScannedAwaitingUserApproval", data);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
//# sourceMappingURL=eventService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventService.js","sourceRoot":"","sources":["../../../src/services/internal/eventService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
-
import { isAddress as isEvmAddress, } from "viem";
|
|
3
|
-
import { standardWalletOverrides } from "./walletStandardService";
|
|
4
|
-
export const EvmNetworkNotSupportedErrorCode = 4902;
|
|
5
|
-
export async function addEthereumChain({ chain, provider, }) {
|
|
6
|
-
const chainName = chain.rpc.includes("tenderly")
|
|
7
|
-
? `${chain.networkName} Tenderly fork`
|
|
8
|
-
: chain.networkName;
|
|
9
|
-
const chainParameters = {
|
|
10
|
-
chainId: `0x${parseInt(chain.chainId, 10).toString(16)}`,
|
|
11
|
-
chainName,
|
|
12
|
-
nativeCurrency: chain.nativeCurrency,
|
|
13
|
-
rpcUrls: [chain.rpc],
|
|
14
|
-
blockExplorerUrls: chain.blockExplorerUrls,
|
|
15
|
-
iconUrls: [chain.chainIconURI],
|
|
16
|
-
};
|
|
17
|
-
try {
|
|
18
|
-
return provider.request({
|
|
19
|
-
method: "wallet_addEthereumChain",
|
|
20
|
-
params: [chainParameters],
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
console.debug("Error adding chain:", error);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export const parseEvmAddress = (address) => {
|
|
28
|
-
if (address && isEvmAddress(address)) {
|
|
29
|
-
return address;
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Formats a Wagmi connector into a Squid Wallet
|
|
34
|
-
*/
|
|
35
|
-
export function formatEvmWallet(connector) {
|
|
36
|
-
const { icon, name: defaultName, id: wagmiConnectorId } = connector;
|
|
37
|
-
const walletOverrides = standardWalletOverrides[wagmiConnectorId];
|
|
38
|
-
const walletIcon = walletOverrides?.icon || icon;
|
|
39
|
-
const name = walletOverrides?.name || defaultName;
|
|
40
|
-
const connectorId = walletOverrides?.connectorId || wagmiConnectorId;
|
|
41
|
-
const isNonInstallableWallet = [
|
|
42
|
-
"injected",
|
|
43
|
-
"walletConnect",
|
|
44
|
-
"metaMaskSDK",
|
|
45
|
-
"coinbaseWalletSDK",
|
|
46
|
-
].includes(wagmiConnectorId);
|
|
47
|
-
return {
|
|
48
|
-
connectorId,
|
|
49
|
-
name,
|
|
50
|
-
connectorName: name,
|
|
51
|
-
type: ChainType.EVM,
|
|
52
|
-
icon: walletIcon,
|
|
53
|
-
rdns: wagmiConnectorId,
|
|
54
|
-
windowFlag: name,
|
|
55
|
-
// For non-installable wallets, we don't want to show the "Installed" label
|
|
56
|
-
// but still want to allow the user to connect
|
|
57
|
-
skipInstallCheck: isNonInstallableWallet,
|
|
58
|
-
isInstalled: isNonInstallableWallet ? undefined : () => true,
|
|
59
|
-
connector,
|
|
60
|
-
isMobile: true,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
export function filterWagmiConnector(connector) {
|
|
64
|
-
// Safe is auto-connected when available, should not be listed as an available wallet
|
|
65
|
-
return connector.id !== "safe";
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=evmService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evmService.js","sourceRoot":"","sources":["../../../src/services/internal/evmService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAGL,SAAS,IAAI,YAAY,GAC1B,MAAM,MAAM,CAAC;AAOd,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,KAAK,EACL,QAAQ,GAIT;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,gBAAgB;QACtC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACtB,MAAM,eAAe,GAA8B;QACjD,OAAO,EAAE,KAAK,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACxD,SAAS;QACT,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,QAAQ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;KAC/B,CAAC;IAEF,IAAI;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC;YACtB,MAAM,EAAE,yBAAyB;YACjC,MAAM,EAAE,CAAC,eAAe,CAAC;SAC1B,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;KAC7C;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAA2B,EACH,EAAE;IAC1B,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;QACpC,OAAO,OAAqB,CAAC;KAC9B;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAEpE,MAAM,eAAe,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,eAAe,EAAE,IAAI,IAAI,IAAI,CAAC;IACjD,MAAM,IAAI,GAAG,eAAe,EAAE,IAAI,IAAI,WAAW,CAAC;IAClD,MAAM,WAAW,GACf,eAAe,EAAE,WAAW,IAAK,gBAAgC,CAAC;IACpE,MAAM,sBAAsB,GAAG;QAC7B,UAAU;QACV,eAAe;QACf,aAAa;QACb,mBAAmB;KACpB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAE7B,OAAO;QACL,WAAW;QACX,IAAI;QACJ,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,SAAS,CAAC,GAAG;QACnB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,IAAwB;QACpC,2EAA2E;QAC3E,8CAA8C;QAC9C,gBAAgB,EAAE,sBAAsB;QACxC,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI;QAC5D,SAAS;QACT,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAoB;IACvD,qFAAqF;IACrF,OAAO,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC;AACjC,CAAC"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import axios from "axios";
|
|
2
|
-
import { countries } from "countries-list";
|
|
3
|
-
import getSymbolFromCurrency from "currency-symbol-map";
|
|
4
|
-
import { DEFAULT_COUNTRY_CODE, internalSquidApiBaseUrl, } from "../../core/constants";
|
|
5
|
-
import { countryCurrencyMap } from "./countryCurrencyMap";
|
|
6
|
-
export const getUserCountry = async () => {
|
|
7
|
-
try {
|
|
8
|
-
const { data } = await axios.get(`${internalSquidApiBaseUrl}/country`);
|
|
9
|
-
return data;
|
|
10
|
-
}
|
|
11
|
-
catch (error) {
|
|
12
|
-
return {
|
|
13
|
-
countryName: "United Kingdom",
|
|
14
|
-
countryCode: DEFAULT_COUNTRY_CODE,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Get country data from country code
|
|
20
|
-
* TODO: Host the flags on our own CDN
|
|
21
|
-
* @param countryCode - The country code (e.g., "US", "GB")
|
|
22
|
-
* @returns Country details including name, flag URL, and other information
|
|
23
|
-
*/
|
|
24
|
-
export function getCountryData(countryCode) {
|
|
25
|
-
const countryCodeUpper = countryCode.toUpperCase();
|
|
26
|
-
const countryCodeLower = countryCode.toLowerCase();
|
|
27
|
-
return {
|
|
28
|
-
...countries[countryCodeUpper],
|
|
29
|
-
code: countryCodeUpper,
|
|
30
|
-
flagUrl: countryCodeLower
|
|
31
|
-
? `https://flagcdn.com/w80/${countryCodeLower}.png`
|
|
32
|
-
: "",
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Get currency data from currency code
|
|
37
|
-
*/
|
|
38
|
-
export function getCurrencyData(currencyCode) {
|
|
39
|
-
const symbol = getSymbolFromCurrency(currencyCode);
|
|
40
|
-
if (!symbol)
|
|
41
|
-
return undefined;
|
|
42
|
-
const currencyInfo = countryCurrencyMap.find((c) => c.currencyCode === currencyCode);
|
|
43
|
-
const countryData = getCountryData(currencyInfo?.countryCode ?? "");
|
|
44
|
-
return {
|
|
45
|
-
denomination: currencyCode,
|
|
46
|
-
symbol,
|
|
47
|
-
name: currencyInfo?.name,
|
|
48
|
-
flagUrl: countryData.flagUrl,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Adaptive rounding: rounds value up to a nice number based on its magnitude
|
|
53
|
-
* e.g. 3840 -> 4000, 38400 -> 40000, 384000 -> 400000
|
|
54
|
-
* For values >= 100, round up to the nearest power-of-ten
|
|
55
|
-
*/
|
|
56
|
-
export const adaptiveRound = (value) => {
|
|
57
|
-
if (value < 10)
|
|
58
|
-
return Math.round(value * 100) / 100;
|
|
59
|
-
if (value < 100)
|
|
60
|
-
return Math.round(value);
|
|
61
|
-
if (value < 100)
|
|
62
|
-
return Math.round(value);
|
|
63
|
-
// For 100 and above, round up to the nearest power of ten
|
|
64
|
-
const magnitude = Math.pow(10, Math.floor(Math.log10(value)));
|
|
65
|
-
return Math.ceil(value / magnitude) * magnitude;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Get suggested amounts for a given currency code, based on rateAgainstUSD
|
|
69
|
-
* Returns 3 amounts (low, medium, high) roughly equivalent to $100, $500, $1000 in local currency
|
|
70
|
-
*/
|
|
71
|
-
export function getSuggestedAmountsForCurrency(currencyCode) {
|
|
72
|
-
const baseUsdAmounts = [100, 500, 1000];
|
|
73
|
-
const currencyInfo = countryCurrencyMap.find((c) => c.currencyCode === currencyCode);
|
|
74
|
-
if (!currencyInfo?.rateAgainstUSD || currencyInfo.rateAgainstUSD <= 0) {
|
|
75
|
-
return baseUsdAmounts;
|
|
76
|
-
}
|
|
77
|
-
if (currencyInfo.rateAgainstUSD >= 0.7 &&
|
|
78
|
-
currencyInfo.rateAgainstUSD <= 1.3) {
|
|
79
|
-
return baseUsdAmounts;
|
|
80
|
-
}
|
|
81
|
-
const amounts = baseUsdAmounts.map((usd) => usd * currencyInfo.rateAgainstUSD);
|
|
82
|
-
return amounts.map(adaptiveRound);
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=fiatToCryptoService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fiatToCryptoService.js","sourceRoot":"","sources":["../../../src/services/internal/fiatToCryptoService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { adaptiveRound, getSuggestedAmountsForCurrency, } from "./fiatToCryptoService";
|
|
2
|
-
describe("adaptiveRound", () => {
|
|
3
|
-
it("rounds up to the nearest power of ten for values >= 100", () => {
|
|
4
|
-
expect(adaptiveRound(3840)).toBe(4000);
|
|
5
|
-
expect(adaptiveRound(38400)).toBe(40000);
|
|
6
|
-
expect(adaptiveRound(384000)).toBe(400000);
|
|
7
|
-
expect(adaptiveRound(19000)).toBe(20000);
|
|
8
|
-
expect(adaptiveRound(999)).toBe(1000);
|
|
9
|
-
expect(adaptiveRound(100)).toBe(100);
|
|
10
|
-
expect(adaptiveRound(101)).toBe(200);
|
|
11
|
-
expect(adaptiveRound(9999)).toBe(10000);
|
|
12
|
-
expect(adaptiveRound(99999)).toBe(100000);
|
|
13
|
-
expect(adaptiveRound(100000)).toBe(100000);
|
|
14
|
-
});
|
|
15
|
-
it("rounds correctly for values < 100", () => {
|
|
16
|
-
expect(adaptiveRound(99.99)).toBe(100);
|
|
17
|
-
expect(adaptiveRound(50)).toBe(50);
|
|
18
|
-
expect(adaptiveRound(10)).toBe(10);
|
|
19
|
-
expect(adaptiveRound(9.99)).toBeCloseTo(9.99, 2);
|
|
20
|
-
expect(adaptiveRound(1.234)).toBeCloseTo(1.23, 2);
|
|
21
|
-
expect(adaptiveRound(0.1234)).toBeCloseTo(0.12, 2);
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
describe("getSuggestedAmountsForCurrency", () => {
|
|
25
|
-
it("returns USD defaults for USD and similar rates", () => {
|
|
26
|
-
expect(getSuggestedAmountsForCurrency("USD")).toEqual([100, 500, 1000]);
|
|
27
|
-
expect(getSuggestedAmountsForCurrency("BMD")).toEqual([100, 500, 1000]);
|
|
28
|
-
expect(getSuggestedAmountsForCurrency("CAD")).toEqual([200, 700, 2000]);
|
|
29
|
-
});
|
|
30
|
-
it("returns local equivalents for other rates", () => {
|
|
31
|
-
expect(getSuggestedAmountsForCurrency("EUR")).toEqual([100, 500, 1000]);
|
|
32
|
-
expect(getSuggestedAmountsForCurrency("JPY")).toEqual([
|
|
33
|
-
20000, 80000, 200000,
|
|
34
|
-
]);
|
|
35
|
-
expect(getSuggestedAmountsForCurrency("INR")).toEqual([9000, 50000, 90000]);
|
|
36
|
-
expect(getSuggestedAmountsForCurrency("NGN")).toEqual([
|
|
37
|
-
200000, 900000, 2000000,
|
|
38
|
-
]);
|
|
39
|
-
});
|
|
40
|
-
it("returns USD defaults for unknown or invalid codes", () => {
|
|
41
|
-
expect(getSuggestedAmountsForCurrency("XXX")).toEqual([100, 500, 1000]);
|
|
42
|
-
expect(getSuggestedAmountsForCurrency("")).toEqual([100, 500, 1000]);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
//# sourceMappingURL=fiatToCryptoService.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fiatToCryptoService.test.js","sourceRoot":"","sources":["../../../src/services/internal/fiatToCryptoService.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/* eslint-disable prefer-const */
|
|
2
|
-
import take from "lodash/take";
|
|
3
|
-
import takeWhile from "lodash/takeWhile";
|
|
4
|
-
import { formatUnits, parseUnits } from "viem";
|
|
5
|
-
import { DEFAULT_LOCALE } from "../../core/constants";
|
|
6
|
-
// =====================================================
|
|
7
|
-
// NOTE: We wrap viem utility method here
|
|
8
|
-
// So that in the future we can change the implementation
|
|
9
|
-
// if we want to use something else than viem formatters
|
|
10
|
-
// =====================================================
|
|
11
|
-
/**
|
|
12
|
-
* Parses a value to a bigint
|
|
13
|
-
* @param value - The value to parse
|
|
14
|
-
* @param decimals - The number of decimals
|
|
15
|
-
* @returns The parsed bigint
|
|
16
|
-
* @throws Error if parsing fails
|
|
17
|
-
*/
|
|
18
|
-
export const parseToBigInt = (value, decimals = 18) => {
|
|
19
|
-
try {
|
|
20
|
-
return parseUnits(value.toString(), decimals);
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
24
|
-
throw new Error(`Failed to parse value to BigInt: ${errorMessage}`);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Formats a value to a readable string
|
|
29
|
-
* @param value - The value to format (bigint or string)
|
|
30
|
-
* @param decimals - The number of decimals
|
|
31
|
-
* @returns The formatted string
|
|
32
|
-
* @throws Error if formatting fails
|
|
33
|
-
*/
|
|
34
|
-
export const formatBNToReadable = (value, decimals = 18) => {
|
|
35
|
-
try {
|
|
36
|
-
return formatUnits(BigInt(value), decimals);
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
40
|
-
throw new Error(`Failed to format value: ${errorMessage}`);
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
export const roundNumericValue = (value = "0", precision = 2, useComaEvery3Digits = true, significantFigures = 0) => {
|
|
44
|
-
let newValue = value;
|
|
45
|
-
const temp = newValue?.toString() ?? "";
|
|
46
|
-
let [integers, decimals] = temp.split(".");
|
|
47
|
-
// toLocaleString is supported on all modern browsers
|
|
48
|
-
// We might monitor and have a polyfill if some people are not
|
|
49
|
-
// Seeing the comas.
|
|
50
|
-
if (useComaEvery3Digits && integers !== "0") {
|
|
51
|
-
integers = parseInt(integers, 10).toLocaleString(DEFAULT_LOCALE).toString();
|
|
52
|
-
}
|
|
53
|
-
if (significantFigures && decimals) {
|
|
54
|
-
const zeros = takeWhile(decimals?.toString(), (c) => c === "0").length;
|
|
55
|
-
return `${integers}.${take(decimals, zeros + significantFigures).join("")}`;
|
|
56
|
-
}
|
|
57
|
-
return decimals
|
|
58
|
-
? `${integers}.${take(decimals, precision).join("")}`
|
|
59
|
-
: integers;
|
|
60
|
-
};
|
|
61
|
-
export function formatUnitsRounded(value, decimals, maxDecimalDigits) {
|
|
62
|
-
const dc = decimals ?? 0;
|
|
63
|
-
try {
|
|
64
|
-
const formatted = formatBNToReadable(BigInt(value), Number(dc));
|
|
65
|
-
const [integerPart, fractionalPart] = formatted.split(".");
|
|
66
|
-
if (fractionalPart && maxDecimalDigits !== undefined) {
|
|
67
|
-
const roundedFractional = Math.round(Number(`0.${fractionalPart}`) * Math.pow(10, maxDecimalDigits)) / Math.pow(10, maxDecimalDigits);
|
|
68
|
-
return (Number(integerPart) + roundedFractional).toFixed(maxDecimalDigits);
|
|
69
|
-
}
|
|
70
|
-
return formatted;
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
return value;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
const MAX_TOKEN_DECIMALS = 8;
|
|
77
|
-
const MAX_COMPACT_SIGNIFICANT_DIGITS = 5;
|
|
78
|
-
const TOKEN_EXACT_AMOUNT_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
79
|
-
minimumFractionDigits: 0,
|
|
80
|
-
maximumFractionDigits: MAX_TOKEN_DECIMALS,
|
|
81
|
-
});
|
|
82
|
-
const TOKEN_ROUNDED_AMOUNT_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
83
|
-
minimumFractionDigits: 0,
|
|
84
|
-
maximumFractionDigits: MAX_TOKEN_DECIMALS,
|
|
85
|
-
minimumSignificantDigits: 2,
|
|
86
|
-
maximumSignificantDigits: 4,
|
|
87
|
-
});
|
|
88
|
-
const TOKEN_SIMPLIFIED_AMOUNT_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
89
|
-
maximumSignificantDigits: 2,
|
|
90
|
-
});
|
|
91
|
-
const TOKEN_COMPACT_AMOUNT_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
92
|
-
notation: "compact",
|
|
93
|
-
compactDisplay: "short",
|
|
94
|
-
maximumSignificantDigits: MAX_COMPACT_SIGNIFICANT_DIGITS,
|
|
95
|
-
maximumFractionDigits: MAX_COMPACT_SIGNIFICANT_DIGITS,
|
|
96
|
-
});
|
|
97
|
-
export function formatTokenAmount(amount, { exact = true, simplified = false, compact = false, } = {}) {
|
|
98
|
-
const numericAmount = parseFloat(amount || "0");
|
|
99
|
-
if (numericAmount <= 0) {
|
|
100
|
-
return "0";
|
|
101
|
-
}
|
|
102
|
-
// Check if numericAmount is less than the smallest displayable amount
|
|
103
|
-
const maxDecimals = compact
|
|
104
|
-
? MAX_COMPACT_SIGNIFICANT_DIGITS
|
|
105
|
-
: MAX_TOKEN_DECIMALS;
|
|
106
|
-
if (numericAmount < Math.pow(10, -maxDecimals)) {
|
|
107
|
-
return `<${Math.pow(10, -maxDecimals).toFixed(maxDecimals)}`;
|
|
108
|
-
}
|
|
109
|
-
if (compact) {
|
|
110
|
-
return TOKEN_COMPACT_AMOUNT_FORMATTER.format(numericAmount);
|
|
111
|
-
}
|
|
112
|
-
if (simplified) {
|
|
113
|
-
return TOKEN_SIMPLIFIED_AMOUNT_FORMATTER.format(numericAmount);
|
|
114
|
-
}
|
|
115
|
-
if (exact) {
|
|
116
|
-
return TOKEN_EXACT_AMOUNT_FORMATTER.format(numericAmount);
|
|
117
|
-
}
|
|
118
|
-
return TOKEN_ROUNDED_AMOUNT_FORMATTER.format(numericAmount);
|
|
119
|
-
}
|
|
120
|
-
// For values below 100,000, use exact integer precision
|
|
121
|
-
// e.g 1,234.56, 98,765.43
|
|
122
|
-
const STANDARD_USD_INTL_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
123
|
-
style: "currency",
|
|
124
|
-
currency: "USD",
|
|
125
|
-
minimumFractionDigits: 2,
|
|
126
|
-
maximumFractionDigits: 2,
|
|
127
|
-
});
|
|
128
|
-
// For values above 100,000, use compact notation
|
|
129
|
-
// e.g $12,34K, $98,765.43M
|
|
130
|
-
const COMPACT_USD_INTL_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
131
|
-
style: "currency",
|
|
132
|
-
currency: "USD",
|
|
133
|
-
notation: "compact",
|
|
134
|
-
compactDisplay: "short",
|
|
135
|
-
minimumFractionDigits: 2,
|
|
136
|
-
maximumFractionDigits: 2,
|
|
137
|
-
});
|
|
138
|
-
// For small amounts where decimal precision is important
|
|
139
|
-
// e.g $0.00045, $1,231.3209, $57.00002
|
|
140
|
-
const PRECISE_USD_INTL_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
141
|
-
style: "currency",
|
|
142
|
-
currency: "USD",
|
|
143
|
-
minimumFractionDigits: 2,
|
|
144
|
-
maximumFractionDigits: 5,
|
|
145
|
-
});
|
|
146
|
-
const DECIMAL_PRECISION_THRESHOLD = 1;
|
|
147
|
-
export function formatUsdAmount(amount = "0", { includeSign = true, decimalPrecision = false } = {}) {
|
|
148
|
-
const parsedAmount = Number(amount);
|
|
149
|
-
if (parsedAmount < 0.01 && parsedAmount > 0 && !decimalPrecision) {
|
|
150
|
-
return includeSign ? "<$0.01" : "<0.01";
|
|
151
|
-
}
|
|
152
|
-
// Handle amounts 100,000 or above using compact notation
|
|
153
|
-
if (parsedAmount >= 100_000) {
|
|
154
|
-
return COMPACT_USD_INTL_FORMATTER.format(parsedAmount).replace(/^\$/, includeSign ? "$" : "");
|
|
155
|
-
}
|
|
156
|
-
// Handle small amounts with decimal precision
|
|
157
|
-
// We don't care about decimal precision for big amounts
|
|
158
|
-
if (decimalPrecision && parsedAmount < DECIMAL_PRECISION_THRESHOLD) {
|
|
159
|
-
return PRECISE_USD_INTL_FORMATTER.format(parsedAmount).replace(/^\$/, includeSign ? "$" : "");
|
|
160
|
-
}
|
|
161
|
-
// Handle amounts less than 100,000 with exact integer precision
|
|
162
|
-
return STANDARD_USD_INTL_FORMATTER.format(parsedAmount).replace(/^\$/, includeSign ? "$" : "");
|
|
163
|
-
}
|
|
164
|
-
export function trimExtraDecimals(value, maxDecimals) {
|
|
165
|
-
const [integerPart, decimalPart] = value.split(".");
|
|
166
|
-
// Return just the integer part if maxDecimals is zero
|
|
167
|
-
if (maxDecimals === 0) {
|
|
168
|
-
return integerPart;
|
|
169
|
-
}
|
|
170
|
-
// Process decimals if present and maxDecimals is not zero
|
|
171
|
-
if (decimalPart &&
|
|
172
|
-
maxDecimals !== undefined &&
|
|
173
|
-
decimalPart.length > maxDecimals) {
|
|
174
|
-
return `${integerPart}.${decimalPart.slice(0, maxDecimals)}`;
|
|
175
|
-
}
|
|
176
|
-
// Return the original value if there are no excess decimals or maxDecimals is undefined
|
|
177
|
-
return value;
|
|
178
|
-
}
|
|
179
|
-
export const getNumericValue = ({ value, precision, useComaEvery3Digits = true, hideIfZero = false, currency, significantFigures, formatIfVerySmall, wrapInParens = false, isNegative = false, }) => {
|
|
180
|
-
const roundedValue = value !== undefined && value !== ""
|
|
181
|
-
? roundNumericValue(value, precision, useComaEvery3Digits, significantFigures)
|
|
182
|
-
: undefined;
|
|
183
|
-
if (hideIfZero && (value === "0" || value === "0.0")) {
|
|
184
|
-
return null;
|
|
185
|
-
}
|
|
186
|
-
const isVerySmall = formatIfVerySmall !== undefined &&
|
|
187
|
-
+(value ?? "0") !== 0 &&
|
|
188
|
-
+(value ?? "0") < formatIfVerySmall;
|
|
189
|
-
const prefix = `${isVerySmall ? "<" : ""}${currency && currency.symbol && currency.symbolPosition === "before"
|
|
190
|
-
? currency.symbol
|
|
191
|
-
: ""}`;
|
|
192
|
-
const suffix = `${currency && currency.symbol && currency.symbolPosition === "after"
|
|
193
|
-
? currency.symbol
|
|
194
|
-
: ""}`;
|
|
195
|
-
const formattedIfVerySmall = roundedValue && isVerySmall ? formatIfVerySmall?.toString() : roundedValue;
|
|
196
|
-
const finalValue = `${isNegative ? "-" : ""}${prefix}${formattedIfVerySmall}${suffix ? ` ${suffix}` : ""}`;
|
|
197
|
-
return wrapInParens ? `(${finalValue})` : finalValue;
|
|
198
|
-
};
|
|
199
|
-
//# sourceMappingURL=numberService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"numberService.js","sourceRoot":"","sources":["../../../src/services/internal/numberService.ts"],"names":[],"mappings":"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"}
|