@silentswap/sdk 0.1.64 → 0.1.65

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/assets.d.ts CHANGED
@@ -27,7 +27,7 @@ export interface AssetsData {
27
27
  chains: Record<Caip2, ChainInfo>;
28
28
  assets: Record<Caip19, AssetInfo>;
29
29
  }
30
- export declare function loadAssetsData(): AssetsData;
30
+ export declare function loadAssetsData(): Promise<AssetsData>;
31
31
  export declare function getAllAssets(): Record<Caip19, AssetInfo>;
32
32
  export declare function getAllChains(): Record<Caip2, ChainInfo>;
33
33
  export declare function getAllAssetsArray(): AssetInfo[];
package/dist/assets.js CHANGED
@@ -1,10 +1,25 @@
1
- import filteredData from './data/filtered.json' with { type: 'json' };
1
+ // Lazy-loaded assets data avoids loading the 96KB JSON at module import time.
2
+ // Dynamic import works with Vite/webpack code-splitting; bundlers treat .json imports as modules.
3
+ let _filteredDataPromise = null;
4
+ async function getFilteredDataAsync() {
5
+ if (!_filteredDataPromise) {
6
+ _filteredDataPromise = import('./data/filtered.json').then((module) => (module.default ?? module));
7
+ }
8
+ return _filteredDataPromise;
9
+ }
10
+ // Synchronous accessor — returns cached data after loadAssetsData() resolves.
11
+ // Throws if data hasn't been loaded yet; callers should await loadAssetsData() first.
12
+ let _filteredData = null;
2
13
  function getFilteredData() {
3
- return filteredData;
14
+ if (!_filteredData) {
15
+ throw new Error('Assets data not loaded. Call loadAssetsData() first.');
16
+ }
17
+ return _filteredData;
4
18
  }
5
- // Load assets data from filtered.json
6
- export function loadAssetsData() {
7
- return getFilteredData();
19
+ // Load assets data from filtered.json (async — call once at app startup)
20
+ export async function loadAssetsData() {
21
+ _filteredData = await getFilteredDataAsync();
22
+ return _filteredData;
8
23
  }
9
24
  // Get all assets from the filtered data
10
25
  export function getAllAssets() {
package/dist/bridge.js CHANGED
@@ -2,6 +2,12 @@ import { encodeFunctionData, erc20Abi } from 'viem';
2
2
  import BigNumber from 'bignumber.js';
3
3
  import { NI_CHAIN_ID_AVALANCHE, S0X_ADDR_USDC_AVALANCHE, S0X_ADDR_EVM_ZERO, UINT256_MAX, N_DEBRIDGE_CHAIN_ID_SOLANA, N_DEBRIDGE_CHAIN_ID_TRON, N_RELAY_CHAIN_ID_SOLANA, N_RELAY_CHAIN_ID_BITCOIN, N_RELAY_CHAIN_ID_SUI, N_RELAY_CHAIN_ID_TRON, S0X_ADDR_TRON_NATIVE, SB58_ADDR_SOL_PROGRAM_SYSTEM, } from './constants.js';
4
4
  import { createPhonyDepositCalldata } from './wallet.js';
5
+ // TTL cache for solveOptimalUsdcAmount — avoids re-fetching identical quotes
6
+ const QUOTE_CACHE_TTL = 30_000; // 30 seconds
7
+ const quoteCache = new Map();
8
+ function getQuoteCacheKey(srcChainId, srcToken, srcAmount, forceProvider) {
9
+ return `${srcChainId}:${srcToken}:${srcAmount}:${forceProvider ?? 'any'}`;
10
+ }
5
11
  /**
6
12
  * Map relay.link chain IDs to deBridge chain IDs
7
13
  * Different bridge providers use different chain ID schemes
@@ -794,6 +800,12 @@ async function solveDebridgeSingleChainUsdcAmount(chainId, srcToken, srcAmount,
794
800
  */
795
801
  export async function solveOptimalUsdcAmount(srcChainId, srcToken, srcAmount, userAddress, depositCalldata, maxImpactPercent, depositorAddress, evmSignerAddress, // Optional EVM address for deposit calldata (required for non-EVM swaps: Solana, Bitcoin)
796
802
  forceProvider) {
803
+ // Check cache first
804
+ const cacheKey = getQuoteCacheKey(srcChainId, srcToken, srcAmount, forceProvider);
805
+ const cached = quoteCache.get(cacheKey);
806
+ if (cached && Date.now() - cached.timestamp < QUOTE_CACHE_TTL) {
807
+ return cached.result;
808
+ }
797
809
  // Check if this is a non-EVM chain (Solana, Bitcoin, etc.)
798
810
  const isNonEvmChain = isNonEvmRelayChainId(srcChainId);
799
811
  // For non-EVM chains (Solana, Bitcoin), we need an EVM address for deposit calldata
@@ -811,21 +823,38 @@ forceProvider) {
811
823
  const recipientAddress = isNonEvmChain && evmSignerAddress ? evmSignerAddress : userAddress;
812
824
  const useRelay = forceProvider !== 'debridge';
813
825
  const useDebridge = forceProvider !== 'relay';
814
- // Try enabled providers in parallel
815
- const [relayResult, debridgeResult] = await Promise.allSettled([
816
- useRelay
817
- ? solveRelayUsdcAmount(srcChainId, srcToken, srcAmount, userAddress, calldata, maxImpactPercent, depositorAddress, recipientAddress)
818
- : Promise.resolve(null),
819
- useDebridge
820
- ? solveDebridgeUsdcAmount(srcChainId, srcToken, srcAmount, userAddress, calldata, maxImpactPercent, depositorAddress)
821
- : Promise.resolve(null),
822
- ]);
826
+ // Build promise array only for enabled providers to avoid creating unnecessary promises
827
+ const promises = [];
828
+ if (useRelay) {
829
+ promises.push(solveRelayUsdcAmount(srcChainId, srcToken, srcAmount, userAddress, calldata, maxImpactPercent, depositorAddress, recipientAddress)
830
+ .then(([usdcAmountOut, actualAmountIn, allowanceTarget]) => ({
831
+ usdcAmountOut,
832
+ actualAmountIn,
833
+ provider: 'relay',
834
+ allowanceTarget,
835
+ })));
836
+ }
837
+ else {
838
+ promises.push(Promise.resolve(null));
839
+ }
840
+ if (useDebridge) {
841
+ promises.push(solveDebridgeUsdcAmount(srcChainId, srcToken, srcAmount, userAddress, calldata, maxImpactPercent, depositorAddress)
842
+ .then(([usdcAmountOut, actualAmountIn, allowanceTarget]) => ({
843
+ usdcAmountOut,
844
+ actualAmountIn,
845
+ provider: 'debridge',
846
+ allowanceTarget,
847
+ })));
848
+ }
849
+ else {
850
+ promises.push(Promise.resolve(null));
851
+ }
852
+ const [relayResult, debridgeResult] = await Promise.allSettled(promises);
823
853
  // Extract results
824
854
  const relayData = relayResult.status === 'fulfilled' ? relayResult.value : null;
825
855
  const debridgeData = debridgeResult.status === 'fulfilled' ? debridgeResult.value : null;
826
856
  // Both failed — surface the most relevant inner error message
827
857
  if (!relayData && !debridgeData) {
828
- debugger;
829
858
  const errors = [
830
859
  relayResult.status === 'rejected' ? relayResult.reason : null,
831
860
  debridgeResult.status === 'rejected' ? debridgeResult.reason : null,
@@ -844,48 +873,53 @@ forceProvider) {
844
873
  }
845
874
  throw new AggregateError(errors, 'All bridge providers failed');
846
875
  }
876
+ // Helper to cache and return result
877
+ const cacheAndReturn = (result) => {
878
+ quoteCache.set(cacheKey, { result, timestamp: Date.now() });
879
+ return result;
880
+ };
847
881
  // Only one succeeded
848
882
  if (!relayData) {
849
883
  console.info('Using deBridge (relay failed)');
850
- return {
851
- usdcAmountOut: debridgeData[0],
852
- actualAmountIn: debridgeData[1],
884
+ return cacheAndReturn({
885
+ usdcAmountOut: debridgeData.usdcAmountOut,
886
+ actualAmountIn: debridgeData.actualAmountIn,
853
887
  provider: 'debridge',
854
- allowanceTarget: debridgeData[2],
855
- };
888
+ allowanceTarget: debridgeData.allowanceTarget,
889
+ });
856
890
  }
857
891
  if (!debridgeData) {
858
892
  console.info('Using relay.link (deBridge failed)');
859
- return {
860
- usdcAmountOut: relayData[0],
861
- actualAmountIn: relayData[1],
893
+ return cacheAndReturn({
894
+ usdcAmountOut: relayData.usdcAmountOut,
895
+ actualAmountIn: relayData.actualAmountIn,
862
896
  provider: 'relay',
863
- allowanceTarget: relayData[2],
864
- };
897
+ allowanceTarget: relayData.allowanceTarget,
898
+ });
865
899
  }
866
900
  // Compare rates (USDC out / amount in)
867
901
  // Use BigNumber for precision (matching Svelte implementation)
868
902
  // Svelte: yx_rate_relay = BigNumber(xg_uusdc_out_relay).div(xg_amount_in_relay)
869
- const relayRate = BigNumber(relayData[0].toString()).div(relayData[1].toString());
870
- const debridgeRate = BigNumber(debridgeData[0].toString()).div(debridgeData[1].toString());
903
+ const relayRate = BigNumber(relayData.usdcAmountOut.toString()).div(relayData.actualAmountIn.toString());
904
+ const debridgeRate = BigNumber(debridgeData.usdcAmountOut.toString()).div(debridgeData.actualAmountIn.toString());
871
905
  // Relay performs better (matches Svelte: yx_rate_relay.gte(yx_rate_debridge))
872
906
  if (relayRate.gte(debridgeRate)) {
873
- console.info(`Using relay.link: ${relayRate.toString()} >= ${debridgeRate.toString()}`, [relayData[0], relayData[1]], [debridgeData[0], debridgeData[1]]);
874
- return {
875
- usdcAmountOut: relayData[0],
876
- actualAmountIn: relayData[1],
907
+ console.info(`Using relay.link: ${relayRate.toString()} >= ${debridgeRate.toString()}`, [relayData.usdcAmountOut, relayData.actualAmountIn], [debridgeData.usdcAmountOut, debridgeData.actualAmountIn]);
908
+ return cacheAndReturn({
909
+ usdcAmountOut: relayData.usdcAmountOut,
910
+ actualAmountIn: relayData.actualAmountIn,
877
911
  provider: 'relay',
878
912
  allowanceTarget: '',
879
- };
913
+ });
880
914
  }
881
915
  else {
882
916
  // DeBridge performs better
883
- console.info(`Using deBridge: ${debridgeRate.toString()} >= ${relayRate.toString()}`, [debridgeData[0], debridgeData[1]], [relayData[0], relayData[1]]);
884
- return {
885
- usdcAmountOut: debridgeData[0],
886
- actualAmountIn: debridgeData[1],
917
+ console.info(`Using deBridge: ${debridgeRate.toString()} >= ${relayRate.toString()}`, [debridgeData.usdcAmountOut, debridgeData.actualAmountIn], [relayData.usdcAmountOut, relayData.actualAmountIn]);
918
+ return cacheAndReturn({
919
+ usdcAmountOut: debridgeData.usdcAmountOut,
920
+ actualAmountIn: debridgeData.actualAmountIn,
887
921
  provider: 'debridge',
888
- allowanceTarget: debridgeData[2],
889
- };
922
+ allowanceTarget: debridgeData.allowanceTarget,
923
+ });
890
924
  }
891
925
  }
package/dist/index.d.ts CHANGED
@@ -1,31 +1,40 @@
1
1
  export type { SilentSwapClientConfig, SilentSwapClient, } from './client.js';
2
- export type * from './types/api.js';
2
+ export type { NonceResponse, AuthRequest, AuthResponse, QuoteRequest, QuoteResponse, OrderRequest, DepositParams, OrderResponse, } from './types/api.js';
3
3
  export type { Caip19, SignInMessage } from './types/core.js';
4
4
  export type { EvmSigner } from './types/sdk.js';
5
- export * from './order.js';
6
- export * from './caip19.js';
5
+ export type { FacilitatorPublicKey, Eip712Document, Eip3009TypedData, AuthorizationInstruction, AuthorizationReply, FacilitatorInstruction, FacilitatorReply, OrderOutputArg, OrderMetadata, Quote, Order, } from './order.js';
6
+ export { DeliveryMethod, PrivacySetting, FacilitatorKeyType, PublicKeyArgGroups, EIP712_TYPES_ORDER, EIP712_TYPES_WALLET_GENERATION, EIP712_DOMAIN_ORDER_DEFAULT, EIP712_DOMAIN_WALLET_GENERATION, quoteResponseToEip712Document, } from './order.js';
7
+ export type { Caip19Parts, ParsedCaip19, ParsedEvmCaip19, ParsedSolanaCaip19, ParsedTronCaip19, } from './caip19.js';
8
+ export { CAIP19_REGEX, EVM_CAIP19_REGEX, SOLANA_CAIP19_REGEX, TRON_CAIP19_NATIVE_REGEX, TRON_CAIP19_TOKEN_REGEX, Caip19Namespace, parseCaip19, parseEvmCaip19, parseSolanaCaip19, parseTronCaip19, getChainNamespace, getChainId, getEvmChainId, getAssetNamespace, getAssetReference, getEvmTokenAddress, getCaip2FromCaip19, isNativeToken, isEvmAsset, isSolanaAsset, isTronAsset, BIP122_BITCOIN_MAINNET_CHAIN_ID, isBitcoinAsset, isBitcoinMainnetAsset, isEvmNativeToken, isErc20Token, isSolanaNativeToken, isSplToken, caip19FromParts, caip19FungibleEvmToken, caip19NativeEvmToken, caip19SplToken, caip19NativeSolanaToken, } from './caip19.js';
7
9
  export { createSilentSwapClient, } from './client.js';
8
- export * from './constants.js';
9
- export * from './gateway-abi.js';
10
+ export type { CalculationDirection, } from './constants.js';
11
+ export { EVM_PHONY_ADDRESS, EVM_NATIVE_ADDRESS, DEAD_ADDRESS, S0X_ADDR_EVM_ZERO, UINT256_MAX, MAINNET_GATEWAY_ADDRESS, MAINNET_GATEWAY_PUBLIC_KEY, ENVIRONMENT, ENVIRONMENT_CONFIGS, S0X_ADDR_USDC_AVALANCHE, S_CAIP19_USDC_AVALANCHE, NI_CHAIN_ID_AVALANCHE, XT_TTL_SESSION_CACHE, X_MINIMUM_INPUT_USD, X_MAX_IMPACT_PERCENT, COIN_TYPES, SB58_CHAIN_ID_SOLANA_MAINNET, SB58_ADDR_SOL_PROGRAM_SYSTEM, SB58_ADDR_SOL_RELAY_LINK_RECIPIENT, SB58_ADDR_SOL_DEAD, SBTC_ADDR_BITCOIN_NATIVE, SBTC_ADDR_BTC_RELAY_LINK_RECIPIENT, S0X_ADDR_TRON_NATIVE, SB58_ADDR_TRON_DEAD, N_RELAY_CHAIN_ID_SOLANA, N_RELAY_CHAIN_ID_BITCOIN, N_RELAY_CHAIN_ID_TRON, N_RELAY_CHAIN_ID_SUI, N_DEBRIDGE_CHAIN_ID_SOLANA, N_DEBRIDGE_CHAIN_ID_TRON, S0X_ADDR_EVM_RELAY_LINK_DEAD, P_URL_API_RPC_SOLANA, CALCULATION_DIRECTION_INPUT_TO_OUTPUT, CALCULATION_DIRECTION_OUTPUT_TO_INPUT, } from './constants.js';
12
+ export { GATEWAY_ABI, } from './gateway-abi.js';
10
13
  export { createHdFacilitatorGroupFromEntropy, exportSecretMnemonicFromEntropy, type HdFacilitatorGroup, } from './hd-facilitator-group.js';
11
14
  export { createSignInMessage, createEip712DocForOrder, createEip712DocForWalletGeneration, } from './sdk.js';
12
15
  export { createViemSigner, parseTransactionRequestForViem, } from './signer-adapters/viem.js';
13
- export * from './bridge.js';
14
- export * from './quote-utils.js';
15
- export * from './transaction-utils.js';
16
- export * from './wallet.js';
17
- export * from './storage.js';
18
- export * from './chain.js';
19
- export * from './chains.js';
20
- export * from './rpc.js';
21
- export * from './assets.js';
22
- export * from './encoding.js';
23
- export * from './refund.js';
16
+ export type { BridgeProvider, BridgeQuote, SolanaInstruction, BridgeTransaction, BridgeStatus, BridgeQuoteParams, RelayQuoteParams, RelayQuoteResponse, DeBridgeOrderParams, DeBridgeOrderResponse, SolveUsdcResult, } from './bridge.js';
17
+ export { getRelayOriginAsset, executeRelayBridge, executeDebridgeBridge, getRelayStatus, getDebridgeStatus, fetchRelayQuote, fetchDebridgeOrder, solveOptimalUsdcAmount, } from './bridge.js';
18
+ export type { EstimateSample, Estimate, QuoteMetrics, BridgeQuoteResult, ForceBridgeProvider, } from './quote-utils.js';
19
+ export { calculateRelayMetrics, calculateDebridgeMetrics, selectBestQuote, interpolateSamples, getBridgeQuote, convertQuoteResultToQuote, } from './quote-utils.js';
20
+ export type { SolanaTransactionExecutor, BitcoinTransactionExecutor, TronTransactionExecutor, UniversalTransactionExecutor, } from './transaction-utils.js';
21
+ export { createTransactionExecutor, createChainSwitcher, executeBridgeTransaction, getBridgeStatus, } from './transaction-utils.js';
22
+ export { queryDepositCount, createPhonyDepositCalldata, } from './wallet.js';
23
+ export { STORAGE_KEY_AUTH_PREFIX, STORAGE_KEY_WALLET_PREFIX, getAuthStorageKey, getWalletStorageKey, loadCachedAuth, saveAuth, clearAuth, saveWalletData, loadWalletData, clearWalletData, } from './storage.js';
24
+ export { ensureChain, pingWalletConnectSession, clearStaleWalletConnectSessions, createPublicClientWithRpc, waitForTransactionConfirmation, executeTransaction, } from './chain.js';
25
+ export { SOLANA_CHAIN_ID, BITCOIN_CHAIN_ID, TRON_CHAIN_ID, A_VIEM_CHAINS, getChainById, } from './chains.js';
26
+ export { H_RPCS, } from './rpc.js';
27
+ export type { AssetInfo, ChainInfo, AssetsData, } from './assets.js';
28
+ export { loadAssetsData, getAllAssets, getAllChains, getAllAssetsArray, getCommonAssets, COMMON_ASSETS, CHAIN_NAMES, getAssetByCaip19, getChainByCaip2, getAssetsByChain, getChainName, searchAssets, } from './assets.js';
29
+ export { hexToBytes, bytesToBase58, hexToBase58, base93ToBytes, bytesToBase93, } from './encoding.js';
30
+ export type { GatewayOrderStatus, RefundEligibility, } from './refund.js';
31
+ export { DepositStatus, orderIdToBytes32, queryOrderStatus, checkRefundEligibility, executeRefund, checkRecoveryEligibility, } from './refund.js';
24
32
  export { trackOrderViaWebSocket, getOrderTrackingWebSocketUrl, type TrackOrderOptions, type OrderStatusUpdate, } from './order-tracking.js';
25
33
  export type { NaiveBase58, NaiveBase93, NaiveHexLower, NaiveHexUpper } from './belt-utils.js';
26
34
  export { bytes_to_base58, base58_to_bytes, bytes_to_base93, base93_to_bytes, bytes_to_hex, hex_to_bytes } from './belt-utils.js';
27
- export * from './address.js';
28
- export * from './asset-utils.js';
29
- export * from './solana-utils.js';
30
- export * from './errors.js';
35
+ export type { ContactSource, Contact, Caip10, } from './address.js';
36
+ export { isValidEvmAddress, isValidSolanaAddress, isValidBitcoinAddress, isValidTronAddress, validateAddress, normalizeAddress, isValidEnsName, formatAddress, formatAddressByType, getAvatarColor, getAvatarInitials, createCaip10, parseCaip10, getAddressFromCaip10, evmAddressToCaip10, solanaAddressToCaip10, bitcoinAddressToCaip10, addressToCaip10, isContactCompatibleWithAsset, filterContacts, } from './address.js';
37
+ export { parseCaip19Legacy, getChainNamespaceFromAsset, getChainIdFromAsset, getAssetNamespaceFromAsset, getAssetId, getCaip2, getTokenAddress, isBitcoin, isEvm, isSolana, isCosmos, isSui, isTron, isNativeTokenFromAsset, isEvmNative, isEvmErc20, isSolanaNative, isSolanaToken, isCosmosNative, isCosmosIbc, getTokenChainId, getTokenChainIdString, extractChainIdsFromAssets, extractChainIdFromAsset, getTokenChainInfo, getTokenChainName, switchChainNamespace, } from './asset-utils.js';
38
+ export { getSolanaRpcUrl, } from './solana-utils.js';
39
+ export { SilentSwapError, ApiError, NetworkError, AuthenticationError, QuoteError, OrderError, ValidationError, ConfigurationError, WalletError, TransactionError, createErrorFromResponse, } from './errors.js';
31
40
  export { executeSolanaSwap, type SwapEnvironment, type OutputStage, type OrderStatus, type SwapStatusUpdate, type SwapResult, type EvmAccount, type SolanaAccount, type SwapAccounts, type SolanaSwapConfig, } from './swap-executor.js';
package/dist/index.js CHANGED
@@ -1,31 +1,37 @@
1
- export * from './order.js';
2
- export * from './caip19.js';
1
+ export { DeliveryMethod, PrivacySetting, FacilitatorKeyType, PublicKeyArgGroups, EIP712_TYPES_ORDER, EIP712_TYPES_WALLET_GENERATION, EIP712_DOMAIN_ORDER_DEFAULT, EIP712_DOMAIN_WALLET_GENERATION, quoteResponseToEip712Document, } from './order.js';
2
+ export { CAIP19_REGEX, EVM_CAIP19_REGEX, SOLANA_CAIP19_REGEX, TRON_CAIP19_NATIVE_REGEX, TRON_CAIP19_TOKEN_REGEX, Caip19Namespace, parseCaip19, parseEvmCaip19, parseSolanaCaip19, parseTronCaip19, getChainNamespace, getChainId, getEvmChainId, getAssetNamespace, getAssetReference, getEvmTokenAddress, getCaip2FromCaip19, isNativeToken, isEvmAsset, isSolanaAsset, isTronAsset, BIP122_BITCOIN_MAINNET_CHAIN_ID, isBitcoinAsset, isBitcoinMainnetAsset, isEvmNativeToken, isErc20Token, isSolanaNativeToken, isSplToken, caip19FromParts, caip19FungibleEvmToken, caip19NativeEvmToken, caip19SplToken, caip19NativeSolanaToken, } from './caip19.js';
3
3
  export { createSilentSwapClient, } from './client.js';
4
- export * from './constants.js';
5
- export * from './gateway-abi.js';
4
+ export { EVM_PHONY_ADDRESS, EVM_NATIVE_ADDRESS, DEAD_ADDRESS, S0X_ADDR_EVM_ZERO, UINT256_MAX, MAINNET_GATEWAY_ADDRESS, MAINNET_GATEWAY_PUBLIC_KEY, ENVIRONMENT, ENVIRONMENT_CONFIGS, S0X_ADDR_USDC_AVALANCHE, S_CAIP19_USDC_AVALANCHE, NI_CHAIN_ID_AVALANCHE, XT_TTL_SESSION_CACHE, X_MINIMUM_INPUT_USD, X_MAX_IMPACT_PERCENT, COIN_TYPES, SB58_CHAIN_ID_SOLANA_MAINNET, SB58_ADDR_SOL_PROGRAM_SYSTEM, SB58_ADDR_SOL_RELAY_LINK_RECIPIENT, SB58_ADDR_SOL_DEAD, SBTC_ADDR_BITCOIN_NATIVE, SBTC_ADDR_BTC_RELAY_LINK_RECIPIENT, S0X_ADDR_TRON_NATIVE, SB58_ADDR_TRON_DEAD, N_RELAY_CHAIN_ID_SOLANA, N_RELAY_CHAIN_ID_BITCOIN, N_RELAY_CHAIN_ID_TRON, N_RELAY_CHAIN_ID_SUI, N_DEBRIDGE_CHAIN_ID_SOLANA, N_DEBRIDGE_CHAIN_ID_TRON, S0X_ADDR_EVM_RELAY_LINK_DEAD, P_URL_API_RPC_SOLANA, CALCULATION_DIRECTION_INPUT_TO_OUTPUT, CALCULATION_DIRECTION_OUTPUT_TO_INPUT, } from './constants.js';
5
+ // gateway-abi
6
+ export { GATEWAY_ABI, } from './gateway-abi.js';
6
7
  export { createHdFacilitatorGroupFromEntropy, exportSecretMnemonicFromEntropy, } from './hd-facilitator-group.js';
7
8
  export { createSignInMessage, createEip712DocForOrder, createEip712DocForWalletGeneration, } from './sdk.js';
8
9
  export { createViemSigner, parseTransactionRequestForViem, } from './signer-adapters/viem.js';
9
- export * from './bridge.js';
10
- export * from './quote-utils.js';
11
- export * from './transaction-utils.js';
12
- export * from './wallet.js';
13
- export * from './storage.js';
14
- export * from './chain.js';
15
- export * from './chains.js';
16
- export * from './rpc.js';
17
- export * from './assets.js';
18
- export * from './encoding.js';
19
- export * from './refund.js';
10
+ export { getRelayOriginAsset, executeRelayBridge, executeDebridgeBridge, getRelayStatus, getDebridgeStatus, fetchRelayQuote, fetchDebridgeOrder, solveOptimalUsdcAmount, } from './bridge.js';
11
+ export { calculateRelayMetrics, calculateDebridgeMetrics, selectBestQuote, interpolateSamples, getBridgeQuote, convertQuoteResultToQuote, } from './quote-utils.js';
12
+ export { createTransactionExecutor, createChainSwitcher, executeBridgeTransaction, getBridgeStatus, } from './transaction-utils.js';
13
+ // wallet
14
+ export { queryDepositCount, createPhonyDepositCalldata, } from './wallet.js';
15
+ // storage
16
+ export { STORAGE_KEY_AUTH_PREFIX, STORAGE_KEY_WALLET_PREFIX, getAuthStorageKey, getWalletStorageKey, loadCachedAuth, saveAuth, clearAuth, saveWalletData, loadWalletData, clearWalletData, } from './storage.js';
17
+ // chain
18
+ export { ensureChain, pingWalletConnectSession, clearStaleWalletConnectSessions, createPublicClientWithRpc, waitForTransactionConfirmation, executeTransaction, } from './chain.js';
19
+ // chains
20
+ export { SOLANA_CHAIN_ID, BITCOIN_CHAIN_ID, TRON_CHAIN_ID, A_VIEM_CHAINS, getChainById, } from './chains.js';
21
+ // rpc
22
+ export { H_RPCS, } from './rpc.js';
23
+ export { loadAssetsData, getAllAssets, getAllChains, getAllAssetsArray, getCommonAssets, COMMON_ASSETS, CHAIN_NAMES, getAssetByCaip19, getChainByCaip2, getAssetsByChain, getChainName, searchAssets, } from './assets.js';
24
+ // encoding
25
+ export { hexToBytes, bytesToBase58, hexToBase58, base93ToBytes, bytesToBase93, } from './encoding.js';
26
+ export { DepositStatus, orderIdToBytes32, queryOrderStatus, checkRefundEligibility, executeRefund, checkRecoveryEligibility, } from './refund.js';
20
27
  export { trackOrderViaWebSocket, getOrderTrackingWebSocketUrl, } from './order-tracking.js';
21
28
  export { bytes_to_base58, base58_to_bytes, bytes_to_base93, base93_to_bytes, bytes_to_hex, hex_to_bytes } from './belt-utils.js';
22
- export * from './address.js';
23
- // Export asset-utils functions (AssetInfo-based wrappers)
24
- // Note: parseCaip19, getChainNamespace, getChainId, getAssetNamespace, and isNativeToken
25
- // have the same names as caip19.js but take AssetInfo instead of string.
26
- // TypeScript will use the parameter type to distinguish them at call sites.
27
- export * from './asset-utils.js';
28
- export * from './solana-utils.js';
29
- export * from './errors.js';
29
+ export { isValidEvmAddress, isValidSolanaAddress, isValidBitcoinAddress, isValidTronAddress, validateAddress, normalizeAddress, isValidEnsName, formatAddress, formatAddressByType, getAvatarColor, getAvatarInitials, createCaip10, parseCaip10, getAddressFromCaip10, evmAddressToCaip10, solanaAddressToCaip10, bitcoinAddressToCaip10, addressToCaip10, isContactCompatibleWithAsset, filterContacts, } from './address.js';
30
+ // asset-utils
31
+ export { parseCaip19Legacy, getChainNamespaceFromAsset, getChainIdFromAsset, getAssetNamespaceFromAsset, getAssetId, getCaip2, getTokenAddress, isBitcoin, isEvm, isSolana, isCosmos, isSui, isTron, isNativeTokenFromAsset, isEvmNative, isEvmErc20, isSolanaNative, isSolanaToken, isCosmosNative, isCosmosIbc, getTokenChainId, getTokenChainIdString, extractChainIdsFromAssets, extractChainIdFromAsset, getTokenChainInfo, getTokenChainName, switchChainNamespace, } from './asset-utils.js';
32
+ // solana-utils
33
+ export { getSolanaRpcUrl, } from './solana-utils.js';
34
+ // errors
35
+ export { SilentSwapError, ApiError, NetworkError, AuthenticationError, QuoteError, OrderError, ValidationError, ConfigurationError, WalletError, TransactionError, createErrorFromResponse, } from './errors.js';
30
36
  // Swap executor for Node.js integrators
31
37
  export { executeSolanaSwap, } from './swap-executor.js';
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@silentswap/sdk",
3
3
  "type": "module",
4
- "version": "0.1.64",
4
+ "version": "0.1.65",
5
5
  "license": "MIT",
6
+ "sideEffects": false,
6
7
  "main": "dist/index.js",
7
8
  "files": [
8
9
  "dist",