UNPKG

@reservoir0x/relay-kit-ui

Version:

Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.

68 lines 2.78 kB
import { getDeadAddress } from '@reservoir0x/relay-sdk'; import { isAddress } from 'viem'; import { isBitcoinAddress } from '../utils/bitcoin.js'; import { eclipse, eclipseWallets, isSolanaAddress, solana } from '../utils/solana.js'; import { isSuiAddress } from '../utils/sui.js'; import { isTronAddress } from './tron.js'; export const isValidAddress = (vmType, address, chainId, connector, connectorKeyOverrides) => { let eclipseConnectorKeys = undefined; if (connectorKeyOverrides && connectorKeyOverrides[eclipse.id]) { eclipseConnectorKeys = connectorKeyOverrides[eclipse.id]; } else if (vmType === 'svm') { eclipseConnectorKeys = eclipseWallets; } if (address) { if (vmType === 'evm' || vmType === 'hypevm' || !vmType) { return isAddress(address); } else if (vmType === 'svm') { if (chainId && connector) { if (chainId === eclipse.id && !eclipseConnectorKeys.includes(connector.toLowerCase())) { return false; } if (chainId === solana.id && eclipseConnectorKeys.includes(connector.toLowerCase())) { return false; } } return isSolanaAddress(address); } else if (vmType === 'bvm') { return isBitcoinAddress(address); } else if (vmType === 'suivm') { return isSuiAddress(address); } else if (vmType === 'tvm') { return isTronAddress(address); } } return false; }; export const addressWithFallback = (vmType, address, chainId, connector, connectorKeyOverrides) => { return address && isValidAddress(vmType ?? 'evm', address, chainId, connector, connectorKeyOverrides) ? address : getDeadAddress(vmType, chainId); }; export function findSupportedWallet(chain, currentAddress, linkedWallets, connectorKeyOverrides) { const currentWallet = linkedWallets.find((wallet) => wallet.address === currentAddress); if (currentWallet?.vmType !== chain.vmType || (currentWallet && !isValidAddress(chain.vmType, currentWallet.address, chain.id, currentWallet.connector, connectorKeyOverrides))) { const supportedWallet = linkedWallets.find((wallet) => isValidAddress(chain.vmType, wallet.address, chain.id, wallet.connector, connectorKeyOverrides)); return supportedWallet?.address; } return undefined; } export function addressesEqual(vmType, a, b) { if (!a || !b) return false; if (vmType === 'evm' || vmType === 'suivm') { return a.toLowerCase() === b.toLowerCase(); } return a === b; } //# sourceMappingURL=address.js.map