@zlattice/lattice-js
Version:
Lattice blockchain TypeScript SDK with dual module support (CJS + ESM)
53 lines • 1.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Address = void 0;
const base58_1 = require("../../utils/base58.js");
const constants_1 = require("../constants.js");
// This is a address class. Can be converted to eth address or zltc address
class Address {
constructor(address) {
this.address = address;
}
/**
* @description convert eth address to zltc address,
* @returns {string} zltc address
*/
toZLTC() {
if (!this.address) {
return constants_1.HEX_PREFIX;
}
if (this.address.startsWith(constants_1.ADDRESS_TITLE)) {
return this.address;
}
if (this.address.startsWith(constants_1.HEX_PREFIX)) {
const base58 = new base58_1.Base58Impl();
const converted = base58.checkEncode(Buffer.from(this.address.substring(2), "hex"), constants_1.ADDRESS_VERSION);
return `${constants_1.ADDRESS_TITLE}_${converted}`;
}
return this.address;
}
/**
* @description convert zltc address to eth address,
* @returns {string} eth address
*/
toETH() {
if (!this.address) {
return constants_1.ADDRESS_TITLE;
}
const splitArr = this.address.split("_");
if (splitArr.length !== 2) {
throw new Error(`invalid address ${this.address}`);
}
if (splitArr[0] !== constants_1.ADDRESS_TITLE) {
throw new Error(`invalid address ${this.address}`);
}
const base58 = new base58_1.Base58Impl();
const { result: dec, version } = base58.checkDecode(splitArr[1]);
if (version !== constants_1.ADDRESS_VERSION) {
throw new Error(`invalid address ${this.address}`);
}
return `${constants_1.HEX_PREFIX}${dec.toString("hex")}`;
}
}
exports.Address = Address;
//# sourceMappingURL=address.js.map