@0xsquid/react-hooks 6.7.0-cosmos-rest-beta.0 → 6.7.0-rollup-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/constants.d.ts +9 -0
- package/dist/hooks/index.d.ts +5 -4
- 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/secretService-Cc7emxDy.js +162 -0
- package/dist/secretService-Cc7emxDy.js.map +1 -0
- package/dist/{services/external/secretService.js → secretService-SEqSyHG0.js} +37 -8
- package/dist/secretService-SEqSyHG0.js.map +1 -0
- package/dist/services/external/rpcService.d.ts +2 -2
- package/dist/services/internal/cosmosService.d.ts +1 -2
- 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 -135
- 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 -204
- 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/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 -44
- 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 -224
- 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/cosmosRestClient.d.ts +0 -18
- package/dist/services/external/cosmosRestClient.js +0 -41
- 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/rpcService.js +0 -390
- 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 -215
- package/dist/services/internal/configService.js.map +0 -1
- package/dist/services/internal/cosmosService.js +0 -214
- 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 -156
- 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,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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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { BigNumber } from "bignumber.js";
|
|
2
|
-
/**
|
|
3
|
-
* Cleans numeric string by removing thousand separators
|
|
4
|
-
* @param amount - The amount to clean (string or number)
|
|
5
|
-
*/
|
|
6
|
-
export function cleanAmount(amount) {
|
|
7
|
-
if (typeof amount === "number")
|
|
8
|
-
return amount.toString();
|
|
9
|
-
return amount.replace(/,/g, "");
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Convert token amount to USD
|
|
13
|
-
* @param {string|number} tokenAmount - The amount of tokens
|
|
14
|
-
* @param {string|number} tokenPrice - The price of one token in USD
|
|
15
|
-
* @returns {BigNumber} - The equivalent amount in USD
|
|
16
|
-
*/
|
|
17
|
-
export function convertTokenAmountToUSD(tokenAmount, tokenPrice, maxDecimals = 4) {
|
|
18
|
-
if (!tokenAmount || !tokenPrice)
|
|
19
|
-
return "";
|
|
20
|
-
try {
|
|
21
|
-
const amount = new BigNumber(cleanAmount(tokenAmount));
|
|
22
|
-
const price = new BigNumber(cleanAmount(tokenPrice));
|
|
23
|
-
return amount.multipliedBy(price).decimalPlaces(maxDecimals).toString();
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return "";
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Convert USD to token amount
|
|
31
|
-
* @param {string|number} usdAmount - The amount in USD
|
|
32
|
-
* @param {string|number} tokenPrice - The price of one token in USD
|
|
33
|
-
* @param {number} maxDecimals - The maximum number of decimals
|
|
34
|
-
* @returns {BigNumber} - The equivalent amount of tokens
|
|
35
|
-
*/
|
|
36
|
-
export function convertUSDToTokenAmount(usdAmount, tokenPrice, maxDecimals) {
|
|
37
|
-
if (!usdAmount || !tokenPrice || !maxDecimals)
|
|
38
|
-
return "0";
|
|
39
|
-
const amount = new BigNumber(cleanAmount(usdAmount));
|
|
40
|
-
const price = new BigNumber(cleanAmount(tokenPrice));
|
|
41
|
-
return amount.dividedBy(price).decimalPlaces(maxDecimals).toString();
|
|
42
|
-
}
|
|
43
|
-
export const calculateTotal24hChange = (tokensWithBalance, totalUSDAmount) => {
|
|
44
|
-
let weightedChangeSum = 0;
|
|
45
|
-
for (const token of tokensWithBalance) {
|
|
46
|
-
const tokenBalance = parseFloat(token.balance);
|
|
47
|
-
const tokenValueUSD = tokenBalance * token.usdPrice;
|
|
48
|
-
const weightedChange = (tokenValueUSD / Number(totalUSDAmount)) * token.price24hChange;
|
|
49
|
-
weightedChangeSum += weightedChange;
|
|
50
|
-
}
|
|
51
|
-
return weightedChangeSum;
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=priceService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"priceService.js","sourceRoot":"","sources":["../../../src/services/internal/priceService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAA4B,EAC5B,UAA2B,EAC3B,cAAsB,CAAC;IAEvB,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3C,IAAI;QACF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;KACzE;IAAC,MAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA0B,EAC1B,UAA2B,EAC3B,WAAmB;IAEnB,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;QAAE,OAAO,GAAG,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAErD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvE,CAAC;AAQD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,iBAAqC,EACrC,cAA+B,EACvB,EAAE;IACV,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE;QACrC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QACpD,MAAM,cAAc,GAClB,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;QAClE,iBAAiB,IAAI,cAAc,CAAC;KACrC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import Fuse from "fuse.js";
|
|
2
|
-
import { nativeEvmTokenAddress } from "../../core/constants";
|
|
3
|
-
const fuseSearchOptions = {
|
|
4
|
-
isCaseSensitive: false,
|
|
5
|
-
threshold: 0.1,
|
|
6
|
-
findAllMatches: false,
|
|
7
|
-
includeMatches: true,
|
|
8
|
-
keys: [
|
|
9
|
-
{ name: "symbol", weight: 1 },
|
|
10
|
-
{ name: "name", weight: 0.8 },
|
|
11
|
-
],
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Minimum length of a search query to search by address
|
|
15
|
-
* Some tokens can have very short addresses (e.g. "uosmo", "uixo", "satoshi", etc...)
|
|
16
|
-
* We don't want to search by address for these short queries
|
|
17
|
-
* as they can conflict with other tokens' symbols
|
|
18
|
-
*
|
|
19
|
-
* This value is arbitrary and can be adjusted as needed
|
|
20
|
-
* but most blockchains should have longer addresses than this
|
|
21
|
-
*/
|
|
22
|
-
const minAddressLength = 7;
|
|
23
|
-
/**
|
|
24
|
-
* Searches for tokens based on a query string, prioritizing results in the following order:
|
|
25
|
-
* 1. Exact address (if query is long enough)
|
|
26
|
-
* 2. ETH on Ethereum mainnet (chainId 1)
|
|
27
|
-
* 3. Native tokens of chains matching the query (e.g., BNB when searching for "binance")
|
|
28
|
-
* 4. Exact matches for native tokens (e.g., native FTM when searching for "FTM")
|
|
29
|
-
* 5. Other exact matches for token names or symbols
|
|
30
|
-
* 6. Other native tokens that partially match the query
|
|
31
|
-
* 7. Remaining tokens that partially match the query
|
|
32
|
-
*
|
|
33
|
-
* @param query - The search query string
|
|
34
|
-
* @param tokens - Array of all available tokens
|
|
35
|
-
* @param chains - Array of chain data
|
|
36
|
-
* @returns An array of tokens sorted according to the priority described above
|
|
37
|
-
*/
|
|
38
|
-
export const searchTokens = (query, tokens, chains) => {
|
|
39
|
-
// Query must at least be 2 characters long
|
|
40
|
-
if (query.length <= 1)
|
|
41
|
-
return tokens;
|
|
42
|
-
// Check for exact address match first, only if query is long enough
|
|
43
|
-
const exactAddressMatches = query.length >= minAddressLength
|
|
44
|
-
? tokens.filter((token) => token.address.toLowerCase() === query.toLowerCase())
|
|
45
|
-
: [];
|
|
46
|
-
// There can be multiple matches for the same address,
|
|
47
|
-
// e.g. ITS tokens share address across chains
|
|
48
|
-
if (exactAddressMatches.length > 0) {
|
|
49
|
-
return exactAddressMatches;
|
|
50
|
-
}
|
|
51
|
-
// Init fuse.js
|
|
52
|
-
const fuse = new Fuse(tokens, fuseSearchOptions);
|
|
53
|
-
// Perform the search with fuse
|
|
54
|
-
const searchResults = fuse.search(query);
|
|
55
|
-
// Find native tokens that match the query or related chain names
|
|
56
|
-
const nativeTokens = chains
|
|
57
|
-
.filter((chain) => chain.nativeCurrency.symbol.toLowerCase() === query.toLowerCase() ||
|
|
58
|
-
chain.nativeCurrency.name.toLowerCase().includes(query.toLowerCase()) ||
|
|
59
|
-
chain.networkName.toLowerCase().includes(query.toLowerCase()) ||
|
|
60
|
-
chain.axelarChainName.toLowerCase().includes(query.toLowerCase()))
|
|
61
|
-
.map((chain) => tokens.find((token) => token.chainId === chain.chainId &&
|
|
62
|
-
token.address.toLowerCase() === nativeEvmTokenAddress))
|
|
63
|
-
.filter((token) => token !== undefined);
|
|
64
|
-
// Separate ETH on Ethereum mainnet (chainId 1) for top priority
|
|
65
|
-
const ethMainnet = nativeTokens.find((token) => token.symbol === "ETH" && token.chainId === "1");
|
|
66
|
-
const otherNativeTokens = nativeTokens.filter((token) => !(token.symbol === "ETH" && token.chainId === "1"));
|
|
67
|
-
// Find exact matches for token name or symbol
|
|
68
|
-
const exactMatches = searchResults
|
|
69
|
-
.map((result) => result.item)
|
|
70
|
-
.filter((token) => token.name.toLowerCase() === query.toLowerCase() ||
|
|
71
|
-
token.symbol.toLowerCase() === query.toLowerCase());
|
|
72
|
-
// Prioritize native tokens within exact matches
|
|
73
|
-
const prioritizedExactMatches = exactMatches.sort((a, b) => {
|
|
74
|
-
const aIsNative = a.address.toLowerCase() === nativeEvmTokenAddress;
|
|
75
|
-
const bIsNative = b.address.toLowerCase() === nativeEvmTokenAddress;
|
|
76
|
-
if (aIsNative && !bIsNative)
|
|
77
|
-
return -1;
|
|
78
|
-
if (!aIsNative && bIsNative)
|
|
79
|
-
return 1;
|
|
80
|
-
return 0;
|
|
81
|
-
});
|
|
82
|
-
// Collect remaining search results that aren't exact matches
|
|
83
|
-
const otherResults = searchResults
|
|
84
|
-
.map((result) => result.item)
|
|
85
|
-
.filter((token) => !(token.name.toLowerCase() === query.toLowerCase() ||
|
|
86
|
-
token.symbol.toLowerCase() === query.toLowerCase()));
|
|
87
|
-
// Combine all results in the desired priority order
|
|
88
|
-
const combinedResults = [
|
|
89
|
-
...(ethMainnet ? [ethMainnet] : []),
|
|
90
|
-
...otherNativeTokens,
|
|
91
|
-
...prioritizedExactMatches,
|
|
92
|
-
...otherResults,
|
|
93
|
-
];
|
|
94
|
-
// Remove any duplicate tokens from the results
|
|
95
|
-
const uniqueResults = Array.from(new Set(combinedResults));
|
|
96
|
-
return uniqueResults;
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=searchService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"searchService.js","sourceRoot":"","sources":["../../../src/services/internal/searchService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { createAssociatedTokenAccountInstruction, createTransferInstruction, getAssociatedTokenAddress, } from "@solana/spl-token";
|
|
2
|
-
import { PublicKey, SystemProgram, Transaction, VersionedTransaction, } from "@solana/web3.js";
|
|
3
|
-
import { nativeSolanaTokenAddress } from "../../core/constants";
|
|
4
|
-
export const isSolanaAddressValid = (address) => {
|
|
5
|
-
try {
|
|
6
|
-
new PublicKey(address);
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
catch {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
export const connectSolanaWallet = async (wallet, { connectSolana }) => {
|
|
14
|
-
const address = await connectSolana?.mutateAsync({
|
|
15
|
-
wallet,
|
|
16
|
-
});
|
|
17
|
-
if (address) {
|
|
18
|
-
return { wallet, address };
|
|
19
|
-
}
|
|
20
|
-
return null;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Execute a Solana swap transaction
|
|
24
|
-
* This will be used for the swap flow - Using Jupiter Dex under the hood
|
|
25
|
-
*/
|
|
26
|
-
export const executeSolanaSwap = async ({ route, signer, connection, onSigned, }) => {
|
|
27
|
-
if (!route?.transactionRequest?.data) {
|
|
28
|
-
throw new Error("Invalid parameters");
|
|
29
|
-
}
|
|
30
|
-
const swapRequest = route.transactionRequest.data;
|
|
31
|
-
const swapTransactionBuf = Buffer.from(swapRequest, "base64");
|
|
32
|
-
const transaction = VersionedTransaction.deserialize(swapTransactionBuf);
|
|
33
|
-
try {
|
|
34
|
-
const latestBlockhash = await connection.getLatestBlockhash();
|
|
35
|
-
const signature = await signer.sendTransaction(transaction, connection);
|
|
36
|
-
onSigned?.(signature);
|
|
37
|
-
await connection.confirmTransaction({
|
|
38
|
-
signature,
|
|
39
|
-
blockhash: latestBlockhash.blockhash,
|
|
40
|
-
lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,
|
|
41
|
-
});
|
|
42
|
-
return signature;
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
console.error("Solana swap failed:", error);
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Execute a Solana transfer transaction for both native SOL and SPL tokens
|
|
51
|
-
* @param amount - Amount to transfer in raw units (lamports for SOL, raw token units for SPL)
|
|
52
|
-
* @param target - Target wallet address
|
|
53
|
-
* @param signer - Solana wallet adapter instance
|
|
54
|
-
* @param connection - Solana RPC connection
|
|
55
|
-
* @param sourceToken - Token information (undefined for native SOL)
|
|
56
|
-
* @param onSigned - Optional callback triggered when transaction is signed
|
|
57
|
-
* @returns Transaction signature
|
|
58
|
-
*/
|
|
59
|
-
export const executeSolanaTransfer = async ({ amount, target, signer, connection, sourceToken, onSigned, }) => {
|
|
60
|
-
// Validate signer and target address
|
|
61
|
-
if (!signer.publicKey) {
|
|
62
|
-
throw new Error("Signer public key not found");
|
|
63
|
-
}
|
|
64
|
-
if (!isSolanaAddressValid(target)) {
|
|
65
|
-
throw new Error("Invalid target address");
|
|
66
|
-
}
|
|
67
|
-
const targetPubKey = new PublicKey(target);
|
|
68
|
-
const transaction = new Transaction();
|
|
69
|
-
const isNativeToken = !sourceToken ||
|
|
70
|
-
sourceToken.address.toLowerCase() ===
|
|
71
|
-
nativeSolanaTokenAddress.toLowerCase();
|
|
72
|
-
if (isNativeToken) {
|
|
73
|
-
// Handle native SOL transfer
|
|
74
|
-
transaction.add(SystemProgram.transfer({
|
|
75
|
-
fromPubkey: signer.publicKey,
|
|
76
|
-
toPubkey: targetPubKey,
|
|
77
|
-
lamports: amount,
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
// Handle SPL token transfer
|
|
82
|
-
const mint = new PublicKey(sourceToken.address);
|
|
83
|
-
// Get Associated Token Accounts (ATAs) for both source and target
|
|
84
|
-
const sourceATA = await getAssociatedTokenAddress(mint, signer.publicKey, true);
|
|
85
|
-
const targetATA = await getAssociatedTokenAddress(mint, targetPubKey, true);
|
|
86
|
-
// Check if target ATA exists and create if needed
|
|
87
|
-
const targetAccount = await connection.getAccountInfo(targetATA);
|
|
88
|
-
if (!targetAccount) {
|
|
89
|
-
transaction.add(createAssociatedTokenAccountInstruction(signer.publicKey, targetATA, targetPubKey, mint));
|
|
90
|
-
}
|
|
91
|
-
// Add the token transfer instruction
|
|
92
|
-
transaction.add(createTransferInstruction(sourceATA, targetATA, signer.publicKey, amount));
|
|
93
|
-
}
|
|
94
|
-
// Get latest blockhash and sign transaction
|
|
95
|
-
const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
|
|
96
|
-
transaction.recentBlockhash = blockhash;
|
|
97
|
-
transaction.feePayer = signer.publicKey;
|
|
98
|
-
const signature = await signer.sendTransaction(transaction, connection);
|
|
99
|
-
// Trigger callback for UI purposes (show loading state)
|
|
100
|
-
onSigned?.(signature);
|
|
101
|
-
// Wait for transaction confirmation
|
|
102
|
-
await connection.confirmTransaction({
|
|
103
|
-
signature,
|
|
104
|
-
blockhash,
|
|
105
|
-
lastValidBlockHeight,
|
|
106
|
-
});
|
|
107
|
-
return signature;
|
|
108
|
-
};
|
|
109
|
-
//# sourceMappingURL=solanaService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solanaService.js","sourceRoot":"","sources":["../../../src/services/internal/solanaService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
-
import { isSuiChain, SUI_MAINNET_CHAIN, SUI_TESTNET_CHAIN, } from "@mysten/wallet-standard";
|
|
3
|
-
import { CHAIN_IDS } from "../../core/constants";
|
|
4
|
-
import { walletIconBaseUrl } from "../../core/wallets";
|
|
5
|
-
const STANDARD_FEATURES = [
|
|
6
|
-
"standard:connect",
|
|
7
|
-
"standard:events",
|
|
8
|
-
];
|
|
9
|
-
const SUI_FEATURES = ["sui:signTransaction"];
|
|
10
|
-
/**
|
|
11
|
-
* Validates that a given standard wallet has all the required features for a Sui wallet
|
|
12
|
-
*/
|
|
13
|
-
function isSuiStandardWallet(wallet) {
|
|
14
|
-
return [...STANDARD_FEATURES, ...SUI_FEATURES].every((feature) => feature in wallet.features);
|
|
15
|
-
}
|
|
16
|
-
export function filterSuiWallets(standardWallets) {
|
|
17
|
-
// Filter out all non-Sui standard wallets
|
|
18
|
-
return standardWallets.filter(isSuiStandardWallet).map(formatSuiWallet);
|
|
19
|
-
}
|
|
20
|
-
function isHex(value) {
|
|
21
|
-
return /^(0x|0X)?[a-fA-F0-9]+$/.test(value) && value.length % 2 === 0;
|
|
22
|
-
}
|
|
23
|
-
function getHexByteLength(value) {
|
|
24
|
-
return /^(0x|0X)/.test(value) ? (value.length - 2) / 2 : value.length / 2;
|
|
25
|
-
}
|
|
26
|
-
const SUI_ADDRESS_LENGTH = 32;
|
|
27
|
-
// Ref. https://github.com/MystenLabs/ts-sdks/blob/31dd6c73d7aab9819bd545323273f733cfcc5a01/packages/typescript/src/utils/sui-types.ts#L24-L27
|
|
28
|
-
export function isSuiAddressValid(address) {
|
|
29
|
-
return isHex(address) && getHexByteLength(address) === SUI_ADDRESS_LENGTH;
|
|
30
|
-
}
|
|
31
|
-
export const slushWebWalletData = {
|
|
32
|
-
icon: `${walletIconBaseUrl}/slush-web.webp`,
|
|
33
|
-
id: "slush-web-wallet",
|
|
34
|
-
name: "Slush Web Wallet",
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Override Sui standard wallet properties
|
|
38
|
-
*/
|
|
39
|
-
export const suiStdWalletOverrides = {
|
|
40
|
-
Phantom: {
|
|
41
|
-
icon: `${walletIconBaseUrl}/phantom.webp`,
|
|
42
|
-
connectorId: "phantom",
|
|
43
|
-
},
|
|
44
|
-
Backpack: {
|
|
45
|
-
icon: `${walletIconBaseUrl}/backpack.webp`,
|
|
46
|
-
connectorId: "backpack",
|
|
47
|
-
},
|
|
48
|
-
"OKX Wallet": {
|
|
49
|
-
icon: `${walletIconBaseUrl}/okx.webp`,
|
|
50
|
-
connectorId: "okx",
|
|
51
|
-
},
|
|
52
|
-
"Cosmostation Wallet": {
|
|
53
|
-
icon: `${walletIconBaseUrl}/cosmostation.webp`,
|
|
54
|
-
connectorId: "cosmostation",
|
|
55
|
-
},
|
|
56
|
-
"Surf Wallet": {
|
|
57
|
-
icon: `${walletIconBaseUrl}/surf.webp`,
|
|
58
|
-
},
|
|
59
|
-
"com.mystenlabs.suiwallet": {
|
|
60
|
-
icon: `${walletIconBaseUrl}/slush.webp`,
|
|
61
|
-
name: "Slush Wallet",
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
/**
|
|
65
|
-
* Format a Sui standard wallet into a Squid Wallet
|
|
66
|
-
*/
|
|
67
|
-
function formatSuiWallet(wallet) {
|
|
68
|
-
const { icon, name: defaultName, features, id, chains } = wallet;
|
|
69
|
-
const standardWalletId = id || defaultName;
|
|
70
|
-
const walletOverrides = suiStdWalletOverrides[standardWalletId];
|
|
71
|
-
const walletIcon = walletOverrides?.icon || icon;
|
|
72
|
-
const name = walletOverrides?.name || defaultName;
|
|
73
|
-
const connectorId = walletOverrides?.connectorId || standardWalletId;
|
|
74
|
-
const isSlushWebWallet = connectorId === slushWebWalletData.id;
|
|
75
|
-
return {
|
|
76
|
-
connectorId,
|
|
77
|
-
name,
|
|
78
|
-
connectorName: name,
|
|
79
|
-
type: ChainType.SUI,
|
|
80
|
-
icon: walletIcon,
|
|
81
|
-
windowFlag: name,
|
|
82
|
-
isMobile: false,
|
|
83
|
-
// Slush (web) is a social wallet so it cannot be installed
|
|
84
|
-
// and works similar to WalletConnect
|
|
85
|
-
isInstalled: isSlushWebWallet ? undefined : () => true,
|
|
86
|
-
skipInstallCheck: isSlushWebWallet,
|
|
87
|
-
connector() {
|
|
88
|
-
return {
|
|
89
|
-
signTransaction: features["sui:signTransaction"].signTransaction,
|
|
90
|
-
connect: async () => {
|
|
91
|
-
const { accounts } = await features["standard:connect"].connect();
|
|
92
|
-
if (!isSuiChain(chains[0]))
|
|
93
|
-
throw new Error("Error connecting Sui wallet, invalid chain");
|
|
94
|
-
if (!accounts.length) {
|
|
95
|
-
throw new Error("No accounts returned from wallet");
|
|
96
|
-
}
|
|
97
|
-
return {
|
|
98
|
-
account: accounts[0],
|
|
99
|
-
chain: chains[0],
|
|
100
|
-
};
|
|
101
|
-
},
|
|
102
|
-
disconnect: async () => {
|
|
103
|
-
await features["standard:disconnect"]?.disconnect();
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
export function getSuiChain(chainId) {
|
|
110
|
-
switch (chainId) {
|
|
111
|
-
case CHAIN_IDS.SUI:
|
|
112
|
-
return SUI_MAINNET_CHAIN;
|
|
113
|
-
case CHAIN_IDS.SUI_TESTNET:
|
|
114
|
-
return SUI_TESTNET_CHAIN;
|
|
115
|
-
default:
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=suiService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suiService.js","sourceRoot":"","sources":["../../../src/services/internal/suiService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,UAAU,EAIV,iBAAiB,EACjB,iBAAiB,GAKlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAavD,MAAM,iBAAiB,GAAkC;IACvD,kBAAkB;IAClB,iBAAiB;CAClB,CAAC;AACF,MAAM,YAAY,GAA6B,CAAC,qBAAqB,CAAC,CAAC;AAEvE;;GAEG;AACH,SAAS,mBAAmB,CAC1B,MAAsB;IAEtB,OAAO,CAAC,GAAG,iBAAiB,EAAE,GAAG,YAAY,CAAC,CAAC,KAAK,CAClD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,eAA0C;IAE1C,0CAA0C;IAC1C,OAAO,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,8IAA8I;AAC9I,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;AAC5E,CAAC;AAQD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,GAAG,iBAAiB,iBAAiB;IAC3C,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,kBAAkB;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC;IACE,OAAO,EAAE;QACP,IAAI,EAAE,GAAG,iBAAiB,eAAe;QACzC,WAAW,EAAE,SAAS;KACvB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,GAAG,iBAAiB,gBAAgB;QAC1C,WAAW,EAAE,UAAU;KACxB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,GAAG,iBAAiB,WAAW;QACrC,WAAW,EAAE,KAAK;KACnB;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,GAAG,iBAAiB,oBAAoB;QAC9C,WAAW,EAAE,cAAc;KAC5B;IACD,aAAa,EAAE;QACb,IAAI,EAAE,GAAG,iBAAiB,YAAY;KACvC;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,GAAG,iBAAiB,aAAa;QACvC,IAAI,EAAE,cAAc;KACrB;CACF,CAAC;AAEJ;;GAEG;AACH,SAAS,eAAe,CAAC,MAAyB;IAChD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEjE,MAAM,gBAAgB,GAAG,EAAE,IAAI,WAAW,CAAC;IAC3C,MAAM,eAAe,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAChE,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;IAEpE,MAAM,gBAAgB,GAAG,WAAW,KAAK,kBAAkB,CAAC,EAAE,CAAC;IAE/D,OAAO;QACL,WAAW;QACX,IAAI;QACJ,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,SAAS,CAAC,GAAG;QACnB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,IAAwB;QACpC,QAAQ,EAAE,KAAK;QACf,2DAA2D;QAC3D,qCAAqC;QACrC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI;QACtD,gBAAgB,EAAE,gBAAgB;QAClC,SAAS;YACP,OAAO;gBACL,eAAe,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,eAAe;gBAChE,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;oBAElE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;oBAEhE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;wBACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;qBACrD;oBAED,OAAO;wBACL,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;wBACpB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;qBACjB,CAAC;gBACJ,CAAC;gBACD,UAAU,EAAE,KAAK,IAAI,EAAE;oBACrB,MAAM,QAAQ,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC;gBACtD,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,QAAQ,OAAO,EAAE;QACf,KAAK,SAAS,CAAC,GAAG;YAChB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,SAAS,CAAC,WAAW;YACxB,OAAO,iBAAiB,CAAC;QAC3B;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC"}
|