@ledgerhq/coin-filecoin
Version:
Ledger Filecoin Coin integration
75 lines • 3.04 kB
JavaScript
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
;