@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
68 lines • 2.78 kB
JavaScript
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