@pharosnames/address-encoder
Version:
Encodes and decodes address formats for various cryptocurrencies with Pharos network support
47 lines • 1.79 kB
JavaScript
import * as formats from "./coins.js";
import { coinNameToTypeMap, evmCoinNameToTypeMap, nonEvmCoinNameToTypeMap, } from "./consts/coinNameToTypeMap.js";
import { coinTypeToNameMap, evmCoinTypeToNameMap, nonEvmCoinTypeToNameMap, } from "./consts/coinTypeToNameMap.js";
import { SLIP44_MSB, coinTypeToEvmChainId } from "./utils/evm.js";
export { coinNameToTypeMap, coinTypeToNameMap, evmCoinNameToTypeMap, evmCoinTypeToNameMap, nonEvmCoinNameToTypeMap, nonEvmCoinTypeToNameMap, };
export const getCoderByCoinName = (name) => {
const format = formats[name];
if (!format) {
const coinType = coinNameToTypeMap[name];
if (!coinType)
throw new Error(`Unsupported coin: ${name}`);
const evmChainId = coinTypeToEvmChainId(coinType);
const ethFormat = formats["eth"];
return {
name: name,
coinType,
evmChainId,
encode: ethFormat.encode,
decode: ethFormat.decode,
};
}
return format;
};
export const getCoderByCoinType = (coinType) => {
const names = coinTypeToNameMap[String(coinType)];
if (coinType >= SLIP44_MSB) {
const evmChainId = coinTypeToEvmChainId(coinType);
const isUnknownChain = !names;
const name = isUnknownChain ? `Unknown Chain (${evmChainId})` : names[0];
const ethFormat = formats["eth"];
return {
name,
coinType: coinType,
evmChainId,
isUnknownChain,
encode: ethFormat.encode,
decode: ethFormat.decode,
};
}
if (!names) {
throw new Error(`Unsupported coin type: ${coinType}`);
}
const [name] = names;
const format = formats[name];
return format;
};
//# sourceMappingURL=index.js.map