UNPKG

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.

47 lines (46 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Scalar = void 0; const blsct_1 = require("./blsct"); const managedObj_1 = require("./managedObj"); class Scalar extends managedObj_1.ManagedObj { constructor(obj) { if (typeof obj === 'object') { super(obj); } else if (typeof obj === 'number') { const rv = (0, blsct_1.genScalar)(obj); super(rv.value); } else if (obj === undefined || obj === null) { const rv = (0, blsct_1.genRandomScalar)(); super(rv.value); (0, blsct_1.freeObj)(rv); } else { throw new TypeError(`Scalar constructor received value of unexpected type ${typeof obj}`); } } value() { return (0, blsct_1.castToScalar)(this.obj); } static random() { const rv = (0, blsct_1.genRandomScalar)(); const x = Scalar.fromObj(rv.value); (0, blsct_1.freeObj)(rv); return x; } toNumber() { return (0, blsct_1.scalarToUint64)(this.value()); } equals(other) { return (0, blsct_1.isScalarEqual)(this.value(), other.value()); } serialize() { return (0, blsct_1.serializeScalar)(this.value()); } static deserialize(hex) { return Scalar._deserialize(hex, blsct_1.deserializeScalar); } } exports.Scalar = Scalar;