@0xsquid/react-hooks 6.7.0-pre-post-hooks-beta.0 → 6.7.0-rollup-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/queries/queries-keys.d.ts +2 -2
- package/dist/core/types/config.d.ts +0 -2
- package/dist/core/types/event.d.ts +0 -5
- package/dist/hooks/index.d.ts +5 -5
- package/dist/hooks/transaction/useGetRoute.d.ts +0 -3
- package/dist/index.esm.js +16892 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +17096 -6
- package/dist/index.js.map +1 -1
- package/dist/{services/external/secretService.js → secretService-Cnn1_HQT.js} +37 -8
- package/dist/secretService-Cnn1_HQT.js.map +1 -0
- package/dist/secretService-DW4QetNp.js +162 -0
- package/dist/secretService-DW4QetNp.js.map +1 -0
- package/dist/services/internal/eventService.d.ts +0 -5
- package/package.json +18 -4
- package/dist/core/abis/ics20.json +0 -128
- 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 -86
- 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/constants.js +0 -144
- 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 -442
- package/dist/core/multicall3.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/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/queries/queries-keys.js +0 -206
- 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/config.js +0 -2
- package/dist/core/types/config.js.map +0 -1
- package/dist/core/types/dex.js +0 -33
- package/dist/core/types/dex.js.map +0 -1
- package/dist/core/types/error.js +0 -12
- 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/index.js +0 -2
- package/dist/core/types/index.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/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 -41
- package/dist/core/types/transaction.js.map +0 -1
- package/dist/core/types/wallet.js +0 -26
- package/dist/core/types/wallet.js.map +0 -1
- package/dist/core/wagmiConfig.js +0 -60
- package/dist/core/wagmiConfig.js.map +0 -1
- package/dist/core/wallets.js +0 -549
- package/dist/core/wallets.js.map +0 -1
- package/dist/hooks/analytics/useTrackSearchEmpty.d.ts +0 -12
- package/dist/hooks/analytics/useTrackSearchEmpty.js +0 -22
- package/dist/hooks/analytics/useTrackSearchEmpty.js.map +0 -1
- package/dist/hooks/chains/useSquidChains.js +0 -107
- package/dist/hooks/chains/useSquidChains.js.map +0 -1
- package/dist/hooks/client/useClient.js +0 -6
- package/dist/hooks/client/useClient.js.map +0 -1
- package/dist/hooks/cosmos/useCosmos.js +0 -172
- package/dist/hooks/cosmos/useCosmos.js.map +0 -1
- package/dist/hooks/cosmos/useCosmosForChain.js +0 -33
- package/dist/hooks/cosmos/useCosmosForChain.js.map +0 -1
- package/dist/hooks/index.js +0 -45
- 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/query/useSquidQueryClient.js +0 -23
- package/dist/hooks/query/useSquidQueryClient.js.map +0 -1
- package/dist/hooks/solana/useSolana.js +0 -104
- package/dist/hooks/solana/useSolana.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 -26
- 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 -41
- package/dist/hooks/store/useHistoryStore.js.map +0 -1
- package/dist/hooks/store/useSquidStore.js +0 -56
- package/dist/hooks/store/useSquidStore.js.map +0 -1
- package/dist/hooks/store/useWalletStore.js +0 -42
- package/dist/hooks/store/useWalletStore.js.map +0 -1
- package/dist/hooks/sui/useSui.js +0 -28
- package/dist/hooks/sui/useSui.js.map +0 -1
- package/dist/hooks/sui/useSuiClient.js +0 -16
- package/dist/hooks/sui/useSuiClient.js.map +0 -1
- package/dist/hooks/sui/useSuiWallets.js +0 -42
- 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 -209
- package/dist/hooks/swap/useSwap.js.map +0 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +0 -103
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +0 -1
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +0 -119
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +0 -1
- package/dist/hooks/tokens/useBalance.js +0 -136
- package/dist/hooks/tokens/useBalance.js.map +0 -1
- package/dist/hooks/tokens/useMultiChainBalance.js +0 -68
- 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 -217
- package/dist/hooks/tokens/useNativeBalance.js.map +0 -1
- package/dist/hooks/tokens/useNativeTokenForChain.js +0 -28
- 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 -80
- 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/useAllTransactionsStatus.js +0 -68
- package/dist/hooks/transaction/useAllTransactionsStatus.js.map +0 -1
- package/dist/hooks/transaction/useApproval.js +0 -223
- package/dist/hooks/transaction/useApproval.js.map +0 -1
- package/dist/hooks/transaction/useErc20Allowance.js +0 -43
- package/dist/hooks/transaction/useErc20Allowance.js.map +0 -1
- package/dist/hooks/transaction/useEstimate.js +0 -118
- package/dist/hooks/transaction/useEstimate.js.map +0 -1
- package/dist/hooks/transaction/useEstimatePriceImpact.js +0 -31
- package/dist/hooks/transaction/useEstimatePriceImpact.js.map +0 -1
- package/dist/hooks/transaction/useExecuteTransaction.js +0 -605
- package/dist/hooks/transaction/useExecuteTransaction.js.map +0 -1
- package/dist/hooks/transaction/useGetRoute.js +0 -230
- package/dist/hooks/transaction/useGetRoute.js.map +0 -1
- package/dist/hooks/transaction/useIcs20Allowance.js +0 -40
- 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/useSingleTransaction.js +0 -91
- package/dist/hooks/transaction/useSingleTransaction.js.map +0 -1
- package/dist/hooks/user/useAvatar.js +0 -34
- package/dist/hooks/user/useAvatar.js.map +0 -1
- package/dist/hooks/user/useHistory.js +0 -106
- 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/wallet/useAddToken.js +0 -49
- package/dist/hooks/wallet/useAddToken.js.map +0 -1
- package/dist/hooks/wallet/useAutoConnect.js +0 -74
- package/dist/hooks/wallet/useAutoConnect.js.map +0 -1
- package/dist/hooks/wallet/useEns.js +0 -69
- package/dist/hooks/wallet/useEns.js.map +0 -1
- package/dist/hooks/wallet/useGnosisContext.js +0 -78
- 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 -175
- package/dist/hooks/wallet/useMultiChainWallet.js.map +0 -1
- package/dist/hooks/wallet/useSigner.js +0 -76
- package/dist/hooks/wallet/useSigner.js.map +0 -1
- package/dist/hooks/wallet/useWallet.js +0 -206
- package/dist/hooks/wallet/useWallet.js.map +0 -1
- package/dist/hooks/wallet/useWallets.js +0 -36
- package/dist/hooks/wallet/useWallets.js.map +0 -1
- package/dist/provider/index.js +0 -113
- package/dist/provider/index.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/rpcService.js +0 -421
- 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/index.js +0 -16
- 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 -586
- package/dist/services/internal/assetsService.js.map +0 -1
- package/dist/services/internal/bitcoinService.js +0 -51
- package/dist/services/internal/bitcoinService.js.map +0 -1
- package/dist/services/internal/configService.js +0 -218
- package/dist/services/internal/configService.js.map +0 -1
- package/dist/services/internal/cosmosService.js +0 -141
- package/dist/services/internal/cosmosService.js.map +0 -1
- package/dist/services/internal/errorService.js +0 -188
- package/dist/services/internal/errorService.js.map +0 -1
- package/dist/services/internal/estimateService.js +0 -221
- package/dist/services/internal/estimateService.js.map +0 -1
- package/dist/services/internal/eventService.js +0 -163
- package/dist/services/internal/eventService.js.map +0 -1
- package/dist/services/internal/evmService.js +0 -42
- package/dist/services/internal/evmService.js.map +0 -1
- package/dist/services/internal/numberService.js +0 -171
- 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/solanaService.js +0 -109
- package/dist/services/internal/solanaService.js.map +0 -1
- package/dist/services/internal/suiService.js +0 -119
- package/dist/services/internal/suiService.js.map +0 -1
- package/dist/services/internal/transactionService.js +0 -207
- package/dist/services/internal/transactionService.js.map +0 -1
- package/dist/services/internal/transactionStatusService.js +0 -315
- package/dist/services/internal/transactionStatusService.js.map +0 -1
- package/dist/services/internal/walletService.js +0 -464
- package/dist/services/internal/walletService.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 -500
- package/dist/tests/assetsService.test.js.map +0 -1
- package/dist/tests/configService.test.js +0 -673
- package/dist/tests/configService.test.js.map +0 -1
- package/dist/tests/estimateService.test.js +0 -355
- 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 -135
- 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 -92
- 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 -264
- package/dist/tests/walletService.test.js.map +0 -1
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
-
import { convertTokenAmountToUSD, findNativeToken, findToken, formatSeconds, isCoralBridgeAction, } from "..";
|
|
3
|
-
import { gasRefundMultiplier } from "../../core/constants";
|
|
4
|
-
import { formatBNToReadable } from "./numberService";
|
|
5
|
-
export const formatAmount = (amountInWei, decimals) => (amountInWei ? formatBNToReadable(amountInWei, decimals) : "");
|
|
6
|
-
export const parseToAmountUSD = (toAmountUSD) => toAmountUSD ? parseFloat(toAmountUSD.replace(/,/g, "")) : 0;
|
|
7
|
-
/**
|
|
8
|
-
* Calculates the expected gas refund
|
|
9
|
-
*
|
|
10
|
-
* Currently we only refund when source chain is EVM
|
|
11
|
-
* There's no refund for Cosmos or Coral routes
|
|
12
|
-
*/
|
|
13
|
-
export const calculateExpectedGasRefundCost = (firstFeeCost, fromChainType, actions) => {
|
|
14
|
-
if (fromChainType !== ChainType.EVM) {
|
|
15
|
-
return BigInt(0);
|
|
16
|
-
}
|
|
17
|
-
const isCoralRoute = actions?.some((action) => isCoralBridgeAction(action));
|
|
18
|
-
if (isCoralRoute) {
|
|
19
|
-
return BigInt(0);
|
|
20
|
-
}
|
|
21
|
-
const amount = BigInt(firstFeeCost?.amount ?? "0");
|
|
22
|
-
const refundMultiplier = BigInt(gasRefundMultiplier);
|
|
23
|
-
return (amount * refundMultiplier) / BigInt(100);
|
|
24
|
-
};
|
|
25
|
-
export const calculateTotalNativeFees = ({ expressFeeCost, firstFeeCost, firstGasCost, sameTokenBetweenFees, }) => BigInt(expressFeeCost?.amount ?? "0") +
|
|
26
|
-
(sameTokenBetweenFees
|
|
27
|
-
? BigInt(firstFeeCost?.amount ?? "0") + BigInt(firstGasCost?.amount ?? "0")
|
|
28
|
-
: BigInt(firstGasCost?.amount ?? "0"));
|
|
29
|
-
export const isFromBalanceEnoughToSwap = ({ isFromTokenNative, fromAmount, totalFeesInNativeTokenPlusRatio, nativeTokenBalanceFromChainWei, }) => {
|
|
30
|
-
const fromAmountBigInt = BigInt(fromAmount ?? "0");
|
|
31
|
-
const totalFeesInNativeTokenPlusRatioBigInt = totalFeesInNativeTokenPlusRatio;
|
|
32
|
-
const nativeTokenBalanceFromChainWeiBigInt = nativeTokenBalanceFromChainWei;
|
|
33
|
-
return isFromTokenNative
|
|
34
|
-
? fromAmountBigInt + totalFeesInNativeTokenPlusRatioBigInt <=
|
|
35
|
-
nativeTokenBalanceFromChainWeiBigInt
|
|
36
|
-
: totalFeesInNativeTokenPlusRatioBigInt <=
|
|
37
|
-
nativeTokenBalanceFromChainWeiBigInt;
|
|
38
|
-
};
|
|
39
|
-
export const calculateMinAmountValueWarnMsg = ({ isFromTokenNative, nativeTokenBalanceFromChainWei, sourceChainNativeTokenDecimals, totalFeesInNativeTokenPlusRatio, }) => isFromTokenNative
|
|
40
|
-
? (() => {
|
|
41
|
-
const minAmount = nativeTokenBalanceFromChainWei - totalFeesInNativeTokenPlusRatio;
|
|
42
|
-
return minAmount > BigInt(0)
|
|
43
|
-
? formatBNToReadable(minAmount, sourceChainNativeTokenDecimals)
|
|
44
|
-
: "0";
|
|
45
|
-
})()
|
|
46
|
-
: undefined;
|
|
47
|
-
/**
|
|
48
|
-
* Calculates the estimated duration of a route
|
|
49
|
-
*
|
|
50
|
-
* @param {number} estimatedRouteDuration - The estimated route duration in seconds
|
|
51
|
-
* @param {boolean} isSingleChainRoute - Flag indicating whether the route is single chain
|
|
52
|
-
*
|
|
53
|
-
* @returns {Object} An object containing the estimated duration and a formatter function
|
|
54
|
-
*/
|
|
55
|
-
export const formatEstimatedRouteDuration = ({ estimatedRouteDuration, isSingleChainRoute, }) => {
|
|
56
|
-
const fallbackDuration = 20;
|
|
57
|
-
let durationInSeconds = fallbackDuration;
|
|
58
|
-
if (estimatedRouteDuration) {
|
|
59
|
-
durationInSeconds = Math.round(estimatedRouteDuration);
|
|
60
|
-
}
|
|
61
|
-
else if (isSingleChainRoute) {
|
|
62
|
-
durationInSeconds = 1;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
durationInSeconds = fallbackDuration;
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
seconds: durationInSeconds,
|
|
69
|
-
format: (sTemplate = "s", mTemplate = "m", hTemplate = "h") => formatSeconds(durationInSeconds, sTemplate, mTemplate, hTemplate),
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* Calculates and formats various estimate results based on the provided Squid route and additional parameters.
|
|
74
|
-
*
|
|
75
|
-
* @param {RouteResponse["route"]} squidRoute - The Squid route containing estimate information.
|
|
76
|
-
* @param {Token[]} tokens - An array of token objects.
|
|
77
|
-
* @param {ChainData} fromChain - The source chain object.
|
|
78
|
-
* @param {ChainData} toChain - The destination chain object.
|
|
79
|
-
* @param {boolean} collectFees - Flag indicating whether to collect fees.
|
|
80
|
-
* @param {string} nativeTokenBalanceFromChain - The native token balance on the source chain.
|
|
81
|
-
* @param {boolean} expressActivatedUI - Flag indicating whether express mode is activated in the UI.
|
|
82
|
-
* @returns {Object} An object containing various estimate results and calculations, including token information,
|
|
83
|
-
* amounts, fees, gas costs, and other relevant data for the transaction.
|
|
84
|
-
*/
|
|
85
|
-
export const calculateEstimateResults = ({ squidRoute, tokens, fromChain, toChain, collectFees, nativeTokenBalanceFromChainWei, }) => {
|
|
86
|
-
const fromToken = findToken(tokens, squidRoute?.params.fromChain, squidRoute?.params.fromToken);
|
|
87
|
-
const fromAmount = squidRoute?.estimate?.fromAmount;
|
|
88
|
-
const fromAmountFormatted = formatAmount(fromAmount, fromToken?.decimals);
|
|
89
|
-
const sourceChainNativeToken = findNativeToken(tokens, fromChain);
|
|
90
|
-
const destChainNativeToken = findNativeToken(tokens, toChain);
|
|
91
|
-
const toAmountUSD = squidRoute?.estimate?.toAmountUSD;
|
|
92
|
-
const toAmountUSDFloat = parseToAmountUSD(toAmountUSD);
|
|
93
|
-
const exchangeRate = squidRoute?.estimate.exchangeRate ?? "0";
|
|
94
|
-
const toAmountMinUSD = squidRoute?.estimate.toAmountMinUSD ?? "0";
|
|
95
|
-
const toAmountMin = formatBNToReadable(squidRoute?.estimate.toAmountMin ?? "0", squidRoute?.estimate.toToken.decimals);
|
|
96
|
-
const toAmount = formatBNToReadable(squidRoute?.estimate.toAmount ?? "0", squidRoute?.estimate.toToken.decimals);
|
|
97
|
-
const estimate = squidRoute?.estimate;
|
|
98
|
-
const allFeeCosts = estimate?.feeCosts ?? [];
|
|
99
|
-
const allGasCosts = estimate?.gasCosts ?? [];
|
|
100
|
-
const firstFeeCost = allFeeCosts.length > 0 ? allFeeCosts[0] : undefined;
|
|
101
|
-
const firstGasCost = allGasCosts.length > 0 ? allGasCosts[0] : undefined;
|
|
102
|
-
const expressFeeCost = allFeeCosts.find((f) => f.name === "Boost fee");
|
|
103
|
-
const integratorFeeCost = allFeeCosts.length > 0 && collectFees
|
|
104
|
-
? allFeeCosts.find((f) => f.name === "Integrator fee")
|
|
105
|
-
: undefined;
|
|
106
|
-
const expectedGasRefundCost = calculateExpectedGasRefundCost(firstFeeCost, fromChain?.chainType, estimate?.actions);
|
|
107
|
-
const expectedGasRefundCostUSD = convertTokenAmountToUSD(formatBNToReadable(expectedGasRefundCost, firstFeeCost?.token.decimals ?? 18), firstFeeCost?.token.usdPrice ?? "0");
|
|
108
|
-
const sameTokenBetweenFees = firstFeeCost?.token.address === firstGasCost?.token.address &&
|
|
109
|
-
firstFeeCost?.token.chainId === firstGasCost?.token.chainId;
|
|
110
|
-
const isFromTokenNative =
|
|
111
|
-
// TODO: temporary fix, currently nativeCurrency.symbol is not always in uppercase
|
|
112
|
-
fromToken?.symbol.toUpperCase() ===
|
|
113
|
-
fromChain?.nativeCurrency.symbol.toUpperCase();
|
|
114
|
-
const totalNativeFees = calculateTotalNativeFees({
|
|
115
|
-
expressFeeCost,
|
|
116
|
-
firstFeeCost,
|
|
117
|
-
firstGasCost,
|
|
118
|
-
sameTokenBetweenFees,
|
|
119
|
-
});
|
|
120
|
-
const totalFeesInNativeTokenPlusRatio = (totalNativeFees * BigInt(110)) / BigInt(100);
|
|
121
|
-
const fromBalanceEnoughToSwap = isFromBalanceEnoughToSwap({
|
|
122
|
-
isFromTokenNative,
|
|
123
|
-
fromAmount,
|
|
124
|
-
fromTokenDecimals: fromToken?.decimals,
|
|
125
|
-
totalFeesInNativeTokenPlusRatio,
|
|
126
|
-
nativeTokenBalanceFromChainWei,
|
|
127
|
-
});
|
|
128
|
-
const minAmountValueWarnMsg = calculateMinAmountValueWarnMsg({
|
|
129
|
-
isFromTokenNative,
|
|
130
|
-
nativeTokenBalanceFromChainWei,
|
|
131
|
-
sourceChainNativeTokenDecimals: sourceChainNativeToken?.decimals,
|
|
132
|
-
totalFeesInNativeTokenPlusRatio,
|
|
133
|
-
});
|
|
134
|
-
const isSingleChainRoute = fromChain?.chainId === toChain?.chainId;
|
|
135
|
-
const estimatedRouteDuration = formatEstimatedRouteDuration({
|
|
136
|
-
estimatedRouteDuration: squidRoute?.estimate?.estimatedRouteDuration,
|
|
137
|
-
isSingleChainRoute,
|
|
138
|
-
});
|
|
139
|
-
return {
|
|
140
|
-
fromToken,
|
|
141
|
-
fromAmount,
|
|
142
|
-
fromAmountFormatted,
|
|
143
|
-
sourceChainNativeToken,
|
|
144
|
-
destChainNativeToken,
|
|
145
|
-
toAmountUSD,
|
|
146
|
-
toAmountUSDFloat,
|
|
147
|
-
exchangeRate,
|
|
148
|
-
toAmountMinUSD,
|
|
149
|
-
toAmountMin,
|
|
150
|
-
toAmount,
|
|
151
|
-
allFeeCosts,
|
|
152
|
-
allGasCosts,
|
|
153
|
-
firstFeeCost,
|
|
154
|
-
firstGasCost,
|
|
155
|
-
expressFeeCost,
|
|
156
|
-
integratorFeeCost,
|
|
157
|
-
expectedGasRefundCost,
|
|
158
|
-
expectedGasRefundCostUSD,
|
|
159
|
-
sameTokenBetweenFees,
|
|
160
|
-
isFromTokenNative,
|
|
161
|
-
totalNativeFees,
|
|
162
|
-
totalFeesInNativeTokenPlusRatio,
|
|
163
|
-
fromBalanceEnoughToSwap,
|
|
164
|
-
minAmountValueWarnMsg,
|
|
165
|
-
estimatedRouteDuration,
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
/**
|
|
169
|
-
* Calculates the total estimate with refund for a transaction.
|
|
170
|
-
*
|
|
171
|
-
* @param allFeeCosts - Total fee costs of the transaction
|
|
172
|
-
* @param expectedGasRefundCost - The expected gas refund cost as a bigint.
|
|
173
|
-
* @param getUSDValue - A function to convert an amount to its USD value.
|
|
174
|
-
* @returns An object containing the total amount, total amount in USD, and the fee token.
|
|
175
|
-
*/
|
|
176
|
-
export const calculateTotalWithRefundEstimate = (allFeeCosts, expectedGasRefundCost, getUSDValue) => {
|
|
177
|
-
const initialTotalFees = {
|
|
178
|
-
totalFeeAmount: BigInt(0),
|
|
179
|
-
totalFeeUsd: 0,
|
|
180
|
-
};
|
|
181
|
-
const { totalFeeAmount, totalFeeUsd } = allFeeCosts?.reduce((totalFees, currentFee) => {
|
|
182
|
-
return {
|
|
183
|
-
totalFeeAmount: BigInt(totalFees.totalFeeAmount) + BigInt(currentFee.amount),
|
|
184
|
-
totalFeeUsd: Number(totalFees.totalFeeUsd) + Number(currentFee.amountUsd),
|
|
185
|
-
};
|
|
186
|
-
}, initialTotalFees) ?? initialTotalFees;
|
|
187
|
-
const totalFeeAmountMinusRefund = totalFeeAmount - expectedGasRefundCost;
|
|
188
|
-
const firstFeeCost = allFeeCosts?.[0];
|
|
189
|
-
const totalFeeAmountMinusRefundBn = formatBNToReadable(totalFeeAmountMinusRefund, firstFeeCost?.token?.decimals ?? 18);
|
|
190
|
-
const formattedRefundCost = formatBNToReadable(expectedGasRefundCost, firstFeeCost?.token.decimals ?? 18);
|
|
191
|
-
const formattedRefundCostUsd = getUSDValue(formattedRefundCost);
|
|
192
|
-
const totalFeeUsdMinusRefund = totalFeeUsd - Number(formattedRefundCostUsd ?? 0);
|
|
193
|
-
return {
|
|
194
|
-
totalAmount: totalFeeAmountMinusRefundBn,
|
|
195
|
-
totalAmountUSD: totalFeeUsdMinusRefund,
|
|
196
|
-
feeToken: firstFeeCost?.token,
|
|
197
|
-
};
|
|
198
|
-
};
|
|
199
|
-
/**
|
|
200
|
-
* Calculates the proposed gas amount for the destination chain.
|
|
201
|
-
*
|
|
202
|
-
* @param destChainNativeToken - The symbol of the native token for the destination chain.
|
|
203
|
-
* @returns An object containing the proposed gas amount value and the currency symbol.
|
|
204
|
-
*/
|
|
205
|
-
export const getProposedGasDestinationAmount = (destChainNativeToken) => {
|
|
206
|
-
const gasAmounts = {
|
|
207
|
-
GLMR: 5.289,
|
|
208
|
-
ETH: 0.0009,
|
|
209
|
-
AVAX: 0.115,
|
|
210
|
-
BNB: 0.00425,
|
|
211
|
-
FTM: 4.45,
|
|
212
|
-
CELO: 3.052,
|
|
213
|
-
KAVA: 2.339,
|
|
214
|
-
MATIC: 1.795,
|
|
215
|
-
};
|
|
216
|
-
return {
|
|
217
|
-
value: gasAmounts[destChainNativeToken ?? ""] ?? 0,
|
|
218
|
-
currency: destChainNativeToken,
|
|
219
|
-
};
|
|
220
|
-
};
|
|
221
|
-
//# sourceMappingURL=estimateService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"estimateService.js","sourceRoot":"","sources":["../../../src/services/internal/estimateService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { formatAmount } from "./estimateService";
|
|
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 formatTokenAmount = (data, findToken) => {
|
|
23
|
-
const fromToken = findToken(data.fromToken, data.fromChain);
|
|
24
|
-
const formattedFromAmount = formatAmount(data.fromAmount, fromToken?.decimals);
|
|
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", formatTokenAmount(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", formatTokenAmount(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 the search query has no results
|
|
157
|
-
* @param data Empty search details
|
|
158
|
-
*/
|
|
159
|
-
dispatchSearchEmpty(data) {
|
|
160
|
-
this.dispatch("searchEmpty", data);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
//# 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,42 +0,0 @@
|
|
|
1
|
-
import { isAddress as isEvmAddress, } from "viem";
|
|
2
|
-
export const EvmNetworkNotSupportedErrorCode = 4902;
|
|
3
|
-
export async function addEthereumChain({ chain, provider, }) {
|
|
4
|
-
const chainName = chain.rpc.includes("tenderly")
|
|
5
|
-
? `${chain.networkName} Tenderly fork`
|
|
6
|
-
: chain.networkName;
|
|
7
|
-
const chainParameters = {
|
|
8
|
-
chainId: `0x${parseInt(chain.chainId, 10).toString(16)}`,
|
|
9
|
-
chainName,
|
|
10
|
-
nativeCurrency: chain.nativeCurrency,
|
|
11
|
-
rpcUrls: [chain.rpc],
|
|
12
|
-
blockExplorerUrls: chain.blockExplorerUrls,
|
|
13
|
-
iconUrls: [chain.chainIconURI],
|
|
14
|
-
};
|
|
15
|
-
try {
|
|
16
|
-
return provider.request({
|
|
17
|
-
method: "wallet_addEthereumChain",
|
|
18
|
-
params: [chainParameters],
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
console.debug("Error adding chain:", error);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export const connectEvmWallet = async (wallet, { connectEvmAsync, }) => {
|
|
26
|
-
if (!wallet.connector) {
|
|
27
|
-
throw new Error("Wallet connector is undefined");
|
|
28
|
-
}
|
|
29
|
-
const evmConnectionResult = await connectEvmAsync({
|
|
30
|
-
connector: wallet.connector(),
|
|
31
|
-
});
|
|
32
|
-
return {
|
|
33
|
-
wallet,
|
|
34
|
-
address: evmConnectionResult.accounts?.[0] ?? "",
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
export const parseEvmAddress = (address) => {
|
|
38
|
-
if (address && isEvmAddress(address)) {
|
|
39
|
-
return address;
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=evmService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evmService.js","sourceRoot":"","sources":["../../../src/services/internal/evmService.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,IAAI,YAAY,GAC1B,MAAM,MAAM,CAAC;AAKd,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,KAAK,EACL,QAAQ,GAIT;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,gBAAgB;QACtC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACtB,MAAM,eAAe,GAA8B;QACjD,OAAO,EAAE,KAAK,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACxD,SAAS;QACT,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,QAAQ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;KAC/B,CAAC;IAEF,IAAI;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC;YACtB,MAAM,EAAE,yBAAyB;YACjC,MAAM,EAAE,CAAC,eAAe,CAAC;SAC1B,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;KAC7C;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,MAAiB,EACjB,EACE,eAAe,GAGhB,EACmD,EAAE;IACtD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,MAAM,mBAAmB,GAAG,MAAM,eAAe,CAAC;QAChD,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;KAC9B,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;KACjD,CAAC;AACJ,CAAC,CAAC;AAEF,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"}
|
|
@@ -1,171 +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
|
-
const MAX_TOKEN_DECIMALS = 8;
|
|
62
|
-
const TOKEN_EXACT_AMOUNT_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
63
|
-
minimumFractionDigits: 0,
|
|
64
|
-
maximumFractionDigits: MAX_TOKEN_DECIMALS,
|
|
65
|
-
});
|
|
66
|
-
const TOKEN_ROUNDED_AMOUNT_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
67
|
-
minimumFractionDigits: 0,
|
|
68
|
-
maximumFractionDigits: MAX_TOKEN_DECIMALS,
|
|
69
|
-
minimumSignificantDigits: 2,
|
|
70
|
-
maximumSignificantDigits: 4,
|
|
71
|
-
});
|
|
72
|
-
const TOKEN_SIMPLIFIED_AMOUNT_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
73
|
-
maximumSignificantDigits: 2,
|
|
74
|
-
});
|
|
75
|
-
export function formatTokenAmount(amount, { exact = true, simplified = false } = {}) {
|
|
76
|
-
const numericAmount = parseFloat(amount || "0");
|
|
77
|
-
if (numericAmount <= 0) {
|
|
78
|
-
return "0";
|
|
79
|
-
}
|
|
80
|
-
// Check if numericAmount is less than the smallest displayable amount
|
|
81
|
-
if (numericAmount < Math.pow(10, -MAX_TOKEN_DECIMALS)) {
|
|
82
|
-
return `<${Math.pow(10, -MAX_TOKEN_DECIMALS).toFixed(MAX_TOKEN_DECIMALS)}`;
|
|
83
|
-
}
|
|
84
|
-
if (simplified) {
|
|
85
|
-
return TOKEN_SIMPLIFIED_AMOUNT_FORMATTER.format(numericAmount);
|
|
86
|
-
}
|
|
87
|
-
if (exact) {
|
|
88
|
-
return TOKEN_EXACT_AMOUNT_FORMATTER.format(numericAmount);
|
|
89
|
-
}
|
|
90
|
-
return TOKEN_ROUNDED_AMOUNT_FORMATTER.format(numericAmount);
|
|
91
|
-
}
|
|
92
|
-
// For values below 100,000, use exact integer precision
|
|
93
|
-
// e.g 1,234.56, 98,765.43
|
|
94
|
-
const STANDARD_USD_INTL_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
95
|
-
style: "currency",
|
|
96
|
-
currency: "USD",
|
|
97
|
-
minimumFractionDigits: 2,
|
|
98
|
-
maximumFractionDigits: 2,
|
|
99
|
-
});
|
|
100
|
-
// For values above 100,000, use compact notation
|
|
101
|
-
// e.g $12,34K, $98,765.43M
|
|
102
|
-
const COMPACT_USD_INTL_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
103
|
-
style: "currency",
|
|
104
|
-
currency: "USD",
|
|
105
|
-
notation: "compact",
|
|
106
|
-
compactDisplay: "short",
|
|
107
|
-
minimumFractionDigits: 2,
|
|
108
|
-
maximumFractionDigits: 2,
|
|
109
|
-
});
|
|
110
|
-
// For small amounts where decimal precision is important
|
|
111
|
-
// e.g $0.00045, $1,231.3209, $57.00002
|
|
112
|
-
const PRECISE_USD_INTL_FORMATTER = new Intl.NumberFormat(DEFAULT_LOCALE, {
|
|
113
|
-
style: "currency",
|
|
114
|
-
currency: "USD",
|
|
115
|
-
minimumFractionDigits: 2,
|
|
116
|
-
maximumFractionDigits: 5,
|
|
117
|
-
});
|
|
118
|
-
const DECIMAL_PRECISION_THRESHOLD = 1;
|
|
119
|
-
export function formatUsdAmount(amount = "0", { includeSign = true, decimalPrecision = false } = {}) {
|
|
120
|
-
const parsedAmount = Number(amount);
|
|
121
|
-
if (parsedAmount < 0.01 && parsedAmount > 0 && !decimalPrecision) {
|
|
122
|
-
return includeSign ? "<$0.01" : "<0.01";
|
|
123
|
-
}
|
|
124
|
-
// Handle amounts 100,000 or above using compact notation
|
|
125
|
-
if (parsedAmount >= 100_000) {
|
|
126
|
-
return COMPACT_USD_INTL_FORMATTER.format(parsedAmount).replace(/^\$/, includeSign ? "$" : "");
|
|
127
|
-
}
|
|
128
|
-
// Handle small amounts with decimal precision
|
|
129
|
-
// We don't care about decimal precision for big amounts
|
|
130
|
-
if (decimalPrecision && parsedAmount < DECIMAL_PRECISION_THRESHOLD) {
|
|
131
|
-
return PRECISE_USD_INTL_FORMATTER.format(parsedAmount).replace(/^\$/, includeSign ? "$" : "");
|
|
132
|
-
}
|
|
133
|
-
// Handle amounts less than 100,000 with exact integer precision
|
|
134
|
-
return STANDARD_USD_INTL_FORMATTER.format(parsedAmount).replace(/^\$/, includeSign ? "$" : "");
|
|
135
|
-
}
|
|
136
|
-
export function trimExtraDecimals(value, maxDecimals) {
|
|
137
|
-
const [integerPart, decimalPart] = value.split(".");
|
|
138
|
-
// Return just the integer part if maxDecimals is zero
|
|
139
|
-
if (maxDecimals === 0) {
|
|
140
|
-
return integerPart;
|
|
141
|
-
}
|
|
142
|
-
// Process decimals if present and maxDecimals is not zero
|
|
143
|
-
if (decimalPart &&
|
|
144
|
-
maxDecimals !== undefined &&
|
|
145
|
-
decimalPart.length > maxDecimals) {
|
|
146
|
-
return `${integerPart}.${decimalPart.slice(0, maxDecimals)}`;
|
|
147
|
-
}
|
|
148
|
-
// Return the original value if there are no excess decimals or maxDecimals is undefined
|
|
149
|
-
return value;
|
|
150
|
-
}
|
|
151
|
-
export const getNumericValue = ({ value, precision, useComaEvery3Digits = true, hideIfZero = false, currency, significantFigures, formatIfVerySmall, wrapInParens = false, isNegative = false, }) => {
|
|
152
|
-
const roundedValue = value !== undefined && value !== ""
|
|
153
|
-
? roundNumericValue(value, precision, useComaEvery3Digits, significantFigures)
|
|
154
|
-
: undefined;
|
|
155
|
-
if (hideIfZero && (value === "0" || value === "0.0")) {
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
const isVerySmall = formatIfVerySmall !== undefined &&
|
|
159
|
-
+(value ?? "0") !== 0 &&
|
|
160
|
-
+(value ?? "0") < formatIfVerySmall;
|
|
161
|
-
const prefix = `${isVerySmall ? "<" : ""}${currency && currency.symbol && currency.symbolPosition === "before"
|
|
162
|
-
? currency.symbol
|
|
163
|
-
: ""}`;
|
|
164
|
-
const suffix = `${currency && currency.symbol && currency.symbolPosition === "after"
|
|
165
|
-
? currency.symbol
|
|
166
|
-
: ""}`;
|
|
167
|
-
const formattedIfVerySmall = roundedValue && isVerySmall ? formatIfVerySmall?.toString() : roundedValue;
|
|
168
|
-
const finalValue = `${isNegative ? "-" : ""}${prefix}${formattedIfVerySmall}${suffix ? ` ${suffix}` : ""}`;
|
|
169
|
-
return wrapInParens ? `(${finalValue})` : finalValue;
|
|
170
|
-
};
|
|
171
|
-
//# 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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"}
|