navio-blsct
Version:
TypeScript bindings for the `libblsct` library used by the [Navio](https://nav.io/) blockchain to construct confidential transactions based on the BLS12-381 curve.
37 lines (36 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Address = exports.AddressEncoding = void 0;
const blsct_1 = require("./blsct");
const doublePublicKey_1 = require("./keys/doublePublicKey");
var AddressEncoding;
(function (AddressEncoding) {
AddressEncoding[AddressEncoding["Bech32"] = 0] = "Bech32";
AddressEncoding[AddressEncoding["Bech32M"] = 1] = "Bech32M";
})(AddressEncoding || (exports.AddressEncoding = AddressEncoding = {}));
class Address {
static encode(addrDpk, encoding) {
let blsctEncoding = encoding === AddressEncoding.Bech32 ? blsct_1.Bech32 : blsct_1.Bech32M;
const dpk = (0, blsct_1.castToDpk)(addrDpk.value());
const rv = (0, blsct_1.encodeAddress)(dpk, blsctEncoding);
if (rv.result !== 0) {
(0, blsct_1.freeObj)(rv);
throw new Error(`Failed to encode address. Error code = ${rv.result}`);
}
const encAddr = rv.value;
(0, blsct_1.freeObj)(rv);
return encAddr;
}
static decode(addrStr) {
const addrCStr = (0, blsct_1.asString)(addrStr);
const rv = (0, blsct_1.decodeAddress)(addrCStr);
if (rv.result !== 0) {
(0, blsct_1.freeObj)(rv);
throw new Error(`Failed to decode address. Error code = ${rv.result}`);
}
const addrDpk = doublePublicKey_1.DoublePublicKey.fromObj(rv.value);
(0, blsct_1.freeObj)(rv);
return addrDpk;
}
}
exports.Address = Address;