@0xsquid/react-hooks 6.7.0-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/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/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 -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/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 -215
- 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 -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,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":"AAMA,OAAO,EACL,uCAAuC,EACvC,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,SAAS,EACT,aAAa,EACb,WAAW,EACX,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAW,EAAE;IAC/D,IAAI;QACF,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;KACb;IAAC,MAAM;QACN,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,MAAoB,EACpB,EAAE,aAAa,EAAwD,EAChB,EAAE;IACzD,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,WAAW,CAAC;QAC/C,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE;QACX,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KAC5B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,KAAK,EACL,MAAM,EACN,UAAU,EACV,QAAQ,GAMT,EAAmB,EAAE;IACpB,IAAI,CAAE,KAAK,EAAE,kBAA2C,EAAE,IAAI,EAAE;QAC9D,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;IAED,MAAM,WAAW,GAAI,KAAK,CAAC,kBAA2C,CAAC,IAAI,CAAC;IAC5E,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEzE,IAAI;QACF,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAExE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;QAEtB,MAAM,UAAU,CAAC,kBAAkB,CAAC;YAClC,SAAS;YACT,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,oBAAoB,EAAE,eAAe,CAAC,oBAAoB;SAC3D,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC;KACb;AACH,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,MAAM,EACN,MAAM,EACN,MAAM,EACN,UAAU,EACV,WAAW,EACX,QAAQ,GAQT,EAAmB,EAAE;IACpB,qCAAqC;IACrC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;IACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IAED,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GACjB,CAAC,WAAW;QACZ,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE;YAC/B,wBAAwB,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,aAAa,EAAE;QACjB,6BAA6B;QAC7B,WAAW,CAAC,GAAG,CACb,aAAa,CAAC,QAAQ,CAAC;YACrB,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,MAAM;SACjB,CAAC,CACH,CAAC;KACH;SAAM;QACL,4BAA4B;QAC5B,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEhD,kEAAkE;QAClE,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAC/C,IAAI,EACJ,MAAM,CAAC,SAAS,EAChB,IAAI,CACL,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAE5E,kDAAkD;QAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,EAAE;YAClB,WAAW,CAAC,GAAG,CACb,uCAAuC,CACrC,MAAM,CAAC,SAAS,EAChB,SAAS,EACT,YAAY,EACZ,IAAI,CACL,CACF,CAAC;SACH;QAED,qCAAqC;QACrC,WAAW,CAAC,GAAG,CACb,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAC1E,CAAC;KACH;IAED,4CAA4C;IAC5C,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACxC,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC;IACxC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAExC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAExE,wDAAwD;IACxD,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IAEtB,oCAAoC;IACpC,MAAM,UAAU,CAAC,kBAAkB,CAAC;QAClC,SAAS;QACT,SAAS;QACT,oBAAoB;KACrB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { ActionType, BridgeType, SquidDataType, } from "@0xsquid/squid-types";
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
import { DEFAULT_LOCALE } from "../../core/constants";
|
|
4
|
-
import { TransactionType, } from "../../core/types/transaction";
|
|
5
|
-
import { getQueryHeaders } from "./apiService";
|
|
6
|
-
export const formatTransactionHistoryDate = (transaction) => {
|
|
7
|
-
if (!transaction?.timestamp)
|
|
8
|
-
return undefined;
|
|
9
|
-
try {
|
|
10
|
-
const date = new Date(Number(transaction.timestamp));
|
|
11
|
-
// Format date to: MMM DD. Examples:
|
|
12
|
-
// Jan 01
|
|
13
|
-
// May 12
|
|
14
|
-
const month = new Intl.DateTimeFormat(DEFAULT_LOCALE, {
|
|
15
|
-
month: "short",
|
|
16
|
-
}).format(date);
|
|
17
|
-
const day = date.toLocaleString(DEFAULT_LOCALE, { day: "2-digit" });
|
|
18
|
-
return { month, day };
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
console.error("Error formatting date:", error);
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
export const getAxelarExplorerTxUrl = (urlPrefix, routeType, txID) => {
|
|
26
|
-
if (!urlPrefix) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
const txType = routeType ?? TransactionType.BRIDGE;
|
|
30
|
-
if (txType === TransactionType.CALL_BRIDGE ||
|
|
31
|
-
txType === TransactionType.BRIDGE) {
|
|
32
|
-
return `${urlPrefix}transfer/${txID}`;
|
|
33
|
-
}
|
|
34
|
-
return `${urlPrefix}gmp/${txID}`;
|
|
35
|
-
};
|
|
36
|
-
export const getSourceExplorerTxUrl = (chain, txID) => {
|
|
37
|
-
if (!chain || !chain.blockExplorerUrls[0]) {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
let txSuffix;
|
|
41
|
-
switch (chain.chainId) {
|
|
42
|
-
case "agoric-3":
|
|
43
|
-
txSuffix = "/transactions/";
|
|
44
|
-
break;
|
|
45
|
-
default:
|
|
46
|
-
txSuffix = "/tx/";
|
|
47
|
-
}
|
|
48
|
-
if (chain.blockExplorerUrls[0].endsWith("/")) {
|
|
49
|
-
txSuffix = txSuffix.slice(1);
|
|
50
|
-
}
|
|
51
|
-
return `${chain.blockExplorerUrls[0]}${txSuffix}${txID}`;
|
|
52
|
-
};
|
|
53
|
-
export const getMainExplorerUrl = (transaction) => {
|
|
54
|
-
// The most accurate one is coming from squid /status api
|
|
55
|
-
if (transaction?.statusResponse?.axelarTransactionUrl) {
|
|
56
|
-
return transaction?.statusResponse.axelarTransactionUrl;
|
|
57
|
-
}
|
|
58
|
-
// If not, we can try to get it from the source chain
|
|
59
|
-
if (transaction?.sourceTxExplorerUrl) {
|
|
60
|
-
return transaction?.sourceTxExplorerUrl;
|
|
61
|
-
}
|
|
62
|
-
// If not, we can try to guess it from the transaction type
|
|
63
|
-
if (transaction && transaction?.transactionId) {
|
|
64
|
-
return getAxelarExplorerTxUrl(transaction.statusResponse?.axelarTransactionUrl, transaction.routeType, transaction.transactionId);
|
|
65
|
-
}
|
|
66
|
-
return undefined;
|
|
67
|
-
};
|
|
68
|
-
export const formatDistance = (date, baseDate, options) => {
|
|
69
|
-
const { includeSeconds = false, addSuffix = false, locale = { locale: DEFAULT_LOCALE }, } = options || {};
|
|
70
|
-
const elapsedMilliseconds = Math.abs(new Date(date).getTime() - new Date(baseDate).getTime());
|
|
71
|
-
const seconds = Math.round(elapsedMilliseconds / 1000);
|
|
72
|
-
const minutes = Math.round(seconds / 60);
|
|
73
|
-
const hours = Math.round(minutes / 60);
|
|
74
|
-
const days = Math.round(hours / 24);
|
|
75
|
-
const months = Math.round(days / 30.44);
|
|
76
|
-
const years = Math.round(days / 365.25);
|
|
77
|
-
const rtf = new Intl.RelativeTimeFormat(locale.locale, { numeric: "auto" });
|
|
78
|
-
let formatted = "";
|
|
79
|
-
if (includeSeconds && seconds < 45) {
|
|
80
|
-
const unit = addSuffix ? "second" : "seconds";
|
|
81
|
-
formatted = rtf.format(-seconds, unit);
|
|
82
|
-
}
|
|
83
|
-
else if (minutes < 60) {
|
|
84
|
-
formatted = rtf.format(-minutes, "minutes");
|
|
85
|
-
}
|
|
86
|
-
else if (hours < 24) {
|
|
87
|
-
formatted = rtf.format(-hours, "hours");
|
|
88
|
-
}
|
|
89
|
-
else if (days < 30) {
|
|
90
|
-
formatted = rtf.format(-days, "days");
|
|
91
|
-
}
|
|
92
|
-
else if (months < 12) {
|
|
93
|
-
formatted = rtf.format(-months, "months");
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
formatted = rtf.format(-years, "years");
|
|
97
|
-
}
|
|
98
|
-
// remove "ago" from the string
|
|
99
|
-
// before: "2 minutes ago"
|
|
100
|
-
// after: "2 minutes"
|
|
101
|
-
return addSuffix ? formatted : formatted.replace(/\b(?:ago)\b/, "").trim();
|
|
102
|
-
};
|
|
103
|
-
export const formatSeconds = (seconds, secondsTemplate = " seconds", minutesTemplate = " minutes", hoursTemplate = " hours") => {
|
|
104
|
-
let duration = "";
|
|
105
|
-
if (seconds < 60) {
|
|
106
|
-
duration = `${seconds.toString()}${secondsTemplate}`;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
duration = formatDistance(0, seconds * 1000, { includeSeconds: true });
|
|
110
|
-
}
|
|
111
|
-
const result = duration.startsWith("1 ")
|
|
112
|
-
? duration
|
|
113
|
-
.replace(" minute", minutesTemplate)
|
|
114
|
-
.replace(" hour", hoursTemplate)
|
|
115
|
-
: duration
|
|
116
|
-
.replace(" minutes", minutesTemplate)
|
|
117
|
-
.replace(" hours", hoursTemplate);
|
|
118
|
-
return result;
|
|
119
|
-
};
|
|
120
|
-
/**
|
|
121
|
-
* Remove the chainData from statusResponse to gain some storage space
|
|
122
|
-
* @param sr
|
|
123
|
-
* @returns
|
|
124
|
-
*/
|
|
125
|
-
export const formatStatusResponseForStorage = (sr) => {
|
|
126
|
-
if (!sr) {
|
|
127
|
-
return sr;
|
|
128
|
-
}
|
|
129
|
-
const formattedSrcChain = sr.fromChain
|
|
130
|
-
? {
|
|
131
|
-
...sr.fromChain,
|
|
132
|
-
chainData: undefined,
|
|
133
|
-
callEventLog: [],
|
|
134
|
-
}
|
|
135
|
-
: undefined;
|
|
136
|
-
const formattedDestChain = sr.toChain
|
|
137
|
-
? {
|
|
138
|
-
...sr.toChain,
|
|
139
|
-
chainData: undefined,
|
|
140
|
-
callEventLog: [],
|
|
141
|
-
}
|
|
142
|
-
: undefined;
|
|
143
|
-
return {
|
|
144
|
-
...sr,
|
|
145
|
-
fromChain: formattedSrcChain,
|
|
146
|
-
toChain: formattedDestChain,
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
|
-
export const formatTxForStorage = (tx) => {
|
|
150
|
-
return {
|
|
151
|
-
...tx,
|
|
152
|
-
statusResponse: formatStatusResponseForStorage(tx.statusResponse),
|
|
153
|
-
};
|
|
154
|
-
};
|
|
155
|
-
export const fetchTransactionStatus = async ({ transaction, integratorId, apiUrl, }) => {
|
|
156
|
-
const statusEndpoint = `${apiUrl}/v2/status`;
|
|
157
|
-
try {
|
|
158
|
-
const response = await axios.get(statusEndpoint, {
|
|
159
|
-
params: {
|
|
160
|
-
transactionId: transaction?.transactionIdForStatus ?? transaction?.transactionId,
|
|
161
|
-
fromChainId: transaction?.fromChain,
|
|
162
|
-
toChainId: transaction?.toChain,
|
|
163
|
-
bridgeType: transaction?.bridgeType,
|
|
164
|
-
quoteId: transaction?.requestId,
|
|
165
|
-
},
|
|
166
|
-
headers: getQueryHeaders(integratorId, transaction?.requestId),
|
|
167
|
-
});
|
|
168
|
-
return response.data;
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
if (error) {
|
|
172
|
-
throw new Error("Fetch transaction status failed", { cause: error });
|
|
173
|
-
}
|
|
174
|
-
throw new Error("Fetch transaction status failed", { cause: undefined });
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
export const compareTransactionIds = (idA, idB) => {
|
|
178
|
-
if (!idA || !idB) {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
const normalizedA = idA.toLowerCase();
|
|
182
|
-
const normalizedB = idB.toLowerCase();
|
|
183
|
-
return normalizedA.includes(normalizedB) || normalizedB.includes(normalizedA);
|
|
184
|
-
};
|
|
185
|
-
/**
|
|
186
|
-
* Checks if the provided action is Coral bridge action
|
|
187
|
-
*/
|
|
188
|
-
export function isCoralBridgeAction(action) {
|
|
189
|
-
return (action.type === ActionType.RFQ &&
|
|
190
|
-
// TODO: update types
|
|
191
|
-
action.provider?.toLowerCase() === "coral");
|
|
192
|
-
}
|
|
193
|
-
export function sleep(ms) {
|
|
194
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
195
|
-
}
|
|
196
|
-
export const isDepositRoute = (route) => {
|
|
197
|
-
return (!!route &&
|
|
198
|
-
route.transactionRequest?.type === SquidDataType.ChainflipDepositAddress);
|
|
199
|
-
};
|
|
200
|
-
/**
|
|
201
|
-
* Checks if the route contains a Chainflip bridge action
|
|
202
|
-
*/
|
|
203
|
-
export function isChainflipBridgeTransaction(actions = []) {
|
|
204
|
-
return actions.some((action) => action.type === ActionType.BRIDGE &&
|
|
205
|
-
action.data?.type === BridgeType.CHAINFLIP);
|
|
206
|
-
}
|
|
207
|
-
//# sourceMappingURL=transactionService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transactionService.js","sourceRoot":"","sources":["../../../src/services/internal/transactionService.ts"],"names":[],"mappings":"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"}
|