@openocean.finance/widget
Version:
Openocean Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.
39 lines • 1.4 kB
JavaScript
import { isUTXOAddress } from '@bigmi/core';
import { ChainId, ChainType, isSVMAddress } from '@openocean.finance/widget-sdk';
import { isAddress as isEVMAddress } from 'viem';
const isNearAddress = (address) => {
if (!address) {
return false;
}
// Implicit accounts are 64-char hex strings
const isImplicitAccount = /^[0-9a-f]{64}$/i.test(address);
if (isImplicitAccount) {
return true;
}
// Named accounts must be lowercase and end with a TLD (e.g. .near, .testnet, custom subdomain)
const isNamedAccount = /^[a-z0-9_-]+(\.[a-z0-9_-]+)*(\.near|\.testnet|\.chain|\.btc)?$/.test(address);
return isNamedAccount;
};
const chainTypeAddressValidation = {
[ChainType.EVM]: isEVMAddress,
[ChainType.SVM]: isSVMAddress,
[ChainType.UTXO]: isUTXOAddress,
[ChainType.MVM]: () => false,
[ChainType.NVM]: isNearAddress,
};
export const getChainTypeFromAddress = (address) => {
for (const chainType in chainTypeAddressValidation) {
const isChainType = chainTypeAddressValidation[chainType](address);
if (isChainType) {
return chainType;
}
}
};
export const defaultChainIdsByType = {
[ChainType.EVM]: ChainId.ETH,
[ChainType.SVM]: ChainId.SOL,
[ChainType.UTXO]: ChainId.BTC,
[ChainType.MVM]: ChainId.SUI,
[ChainType.NVM]: ChainId.NEAR,
};
//# sourceMappingURL=chainType.js.map