airgap-coin-lib
Version:
The airgap-coin-lib is a protocol agnostic library to prepare, sign and broadcast cryptocurrency transactions.
40 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var SCALEDecoder_1 = require("../scale/SCALEDecoder");
var MetadataV11_1 = require("./v11/MetadataV11");
var MetadataV12_1 = require("./v12/MetadataV12");
var MAGIC_NUMBER = '6174656d'; // `meta` in hex
var Metadata = /** @class */ (function () {
function Metadata(versioned) {
this.versioned = versioned;
}
Metadata.decode = function (network, raw) {
var decoder = new SCALEDecoder_1.SCALEDecoder(network, raw);
var magicNumber = decoder.decodeNextInt(32); // 32 bits
this.assertMagicNumber(magicNumber.decoded.toNumber());
var version = decoder.decodeNextInt(8); // 8 bits
var versioned;
switch (version.decoded.toNumber()) {
case 12:
versioned = MetadataV12_1.MetadataV12.decode(network, raw);
break;
case 11:
versioned = MetadataV11_1.MetadataV11.decode(network, raw);
break;
default:
throw new Error("Error while parsing metadata, metadata version " + version + " is not supported");
}
return new Metadata(versioned);
};
Metadata.assertMagicNumber = function (magicNumber) {
if (magicNumber !== parseInt(MAGIC_NUMBER, 16)) {
throw new Error('Error while parsing metadata, invalid magic number');
}
};
Metadata.prototype.decorate = function () {
return this.versioned.decorate();
};
return Metadata;
}());
exports.Metadata = Metadata;
//# sourceMappingURL=Metadata.js.map