UNPKG

multichain-address-validator

Version:

Multichain address validator for Bitcoin and other blockchains.

129 lines (128 loc) 4.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getValidatorForChain = getValidatorForChain; const types_js_1 = require("./types.js"); const index_js_1 = require("./validators/index.js"); const chainValidators = { algorand: { validator: index_js_1.AlgorandValidator }, aptos: { validator: index_js_1.MoveValidator }, bitcoin: { alternatives: ['btc', 'omni'], validator: { mainnet: (0, index_js_1.BTCValidator)({ addressTypes: ['00', '05'], bech32Hrp: ['bc'], }), testnet: (0, index_js_1.BTCValidator)({ addressTypes: ['6f', 'c4', '3c', '26'], bech32Hrp: ['tb'], }), }, }, 'bitcoincash': { alternatives: ['bch', 'bitcoin-cash', 'bitcoin cash'], validator: { mainnet: (0, index_js_1.BCHValidator)({ addressTypes: ['00', '05'], bech32Hrp: ['bc'], networkType: types_js_1.NetworkType.MainNet, }), testnet: (0, index_js_1.BCHValidator)({ addressTypes: ['6f', 'c4', '3c', '26'], bech32Hrp: ['tb'], networkType: types_js_1.NetworkType.TestNet, }), } }, cardano: { alternatives: ['ada'], validator: index_js_1.CardanoValidator, }, doge: { alternatives: ['dogecoin'], validator: { mainnet: (0, index_js_1.BTCValidator)({ addressTypes: ['1e', '16'] }), testnet: (0, index_js_1.BTCValidator)({ addressTypes: ['71', 'c4'] }), } }, eos: { validator: index_js_1.EOSValidator }, ethereum: { alternatives: [ 'arbitrum', 'avalanche', 'avalanche-c', 'base', 'berachain', 'binance', 'BinanceSmartChain', 'bnb', 'bsc', 'eth', 'EthereumClassic', 'EthereumPow', 'erc20', 'flare', 'optimism', 'sonic', 'story', ], validator: index_js_1.ETHValidator }, hedera: { alternatives: ['hbar'], validator: index_js_1.HederaValidator }, litecoin: { alternatives: ['ltc'], validator: { mainnet: (0, index_js_1.BTCValidator)({ addressTypes: ['30', '32'], bech32Hrp: ['ltc'], }), testnet: (0, index_js_1.BTCValidator)({ addressTypes: ['6f', 'c4', '3a'], bech32Hrp: ['tltc'] }) } }, monero: { validator: { mainnet: (0, index_js_1.MoneroValidator)(types_js_1.NetworkType.MainNet), testnet: (0, index_js_1.MoneroValidator)(types_js_1.NetworkType.TestNet), } }, nem: { validator: index_js_1.NemValidator }, nano: { validator: index_js_1.NanoValidator }, polkadot: { validator: index_js_1.PolkadotValidator }, ripple: { alternatives: ['xrp'], validator: index_js_1.RippleValidator, }, sia: { alternatives: ['SiaCoin'], validator: index_js_1.SiaValidator }, solana: { alternatives: ['sol', 'spl'], validator: index_js_1.SolanaValidator, }, sui: { validator: index_js_1.MoveValidator }, tron: { alternatives: ['trc20'], validator: (0, index_js_1.TronValidator)(), }, tezos: { validator: index_js_1.TezosValidator }, xlm: { alternatives: ['stellar', 'stellarlumens'], validator: index_js_1.XLMValidator, }, }; function getValidatorForChain(chain) { const chainName = chain.chain || chain; const networkType = chain.networkType || types_js_1.NetworkType.MainNet; const key = Object.keys(chainValidators).find(key => key.toUpperCase() === chainName.toUpperCase() || chainValidators[key] ?.alternatives ?.map(alternative => alternative.toUpperCase()) ?.includes(chainName.toUpperCase())); return chainValidators[key]?.validator[networkType] || chainValidators[key]?.validator; }