UNPKG

@ledgerhq/coin-filecoin

Version:
75 lines 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertAddressEthToFil = exports.convertAddressFilToEth = exports.getEquivalentAddress = exports.isRecipientValidForTokenTransfer = exports.validateAddress = exports.isEthereumConvertableAddr = exports.isIdAddress = exports.isFilEthAddress = void 0; const address_1 = require("iso-filecoin/address"); const logs_1 = require("@ledgerhq/logs"); const isFilEthAddress = (addr) => addr.protocol === address_1.PROTOCOL_INDICATOR.DELEGATED && addr.namespace === 10; exports.isFilEthAddress = isFilEthAddress; const isIdAddress = (addr) => addr.protocol === address_1.PROTOCOL_INDICATOR.ID; exports.isIdAddress = isIdAddress; const isEthereumConvertableAddr = (addr) => (0, exports.isIdAddress)(addr) || (0, exports.isFilEthAddress)(addr); exports.isEthereumConvertableAddr = isEthereumConvertableAddr; const validateAddress = (input) => { try { const parsedAddress = (0, address_1.fromString)(input); return { isValid: true, parsedAddress }; } catch (error) { (0, logs_1.log)("debug", `[validateAddress] fromString invalid address`); } try { const parsedAddress = (0, address_1.fromEthAddress)(input, "mainnet"); return { isValid: true, parsedAddress }; } catch (error) { (0, logs_1.log)("debug", `[validateAddress] fromEthAddress invalid address`); } return { isValid: false }; }; exports.validateAddress = validateAddress; const isRecipientValidForTokenTransfer = (addr) => { if (addr.length < 2) { return false; } const valid = (0, exports.validateAddress)(addr); if (!valid.isValid) { return false; } if ((0, exports.isEthereumConvertableAddr)(valid.parsedAddress)) { return true; } return false; }; exports.isRecipientValidForTokenTransfer = isRecipientValidForTokenTransfer; const getEquivalentAddress = (addr) => { if ((0, address_1.isEthAddress)(addr)) { return (0, address_1.fromEthAddress)(addr, "mainnet").toString(); } else { const parsed = (0, address_1.fromString)(addr); if ((0, exports.isEthereumConvertableAddr)(parsed)) { return (0, address_1.toEthAddress)(parsed); } return ""; } }; exports.getEquivalentAddress = getEquivalentAddress; const convertAddressFilToEth = (addr) => { if ((0, address_1.isEthAddress)(addr)) { return addr; } const parsed = (0, address_1.fromString)(addr); if ((0, exports.isEthereumConvertableAddr)(parsed)) { return (0, address_1.toEthAddress)(parsed); } throw new Error("address is not convertible to ethereum address"); }; exports.convertAddressFilToEth = convertAddressFilToEth; const convertAddressEthToFil = (addr) => { if (!(0, address_1.isEthAddress)(addr)) { return addr; } return (0, address_1.fromEthAddress)(addr, "mainnet").toString(); }; exports.convertAddressEthToFil = convertAddressEthToFil; //# sourceMappingURL=addresses.js.map