@radixdlt/tx-parser
Version:
Parsing of Radix Engine transactions and instructions
62 lines • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.REAddress = void 0;
const _types_1 = require("./_types");
const neverthrow_1 = require("neverthrow");
const crypto_1 = require("@radixdlt/crypto");
/* eslint-disable no-case-declarations */
const fromBufferReader = (bufferReader) => bufferReader
.readNextBuffer(1)
.map(b => ({
reAddressTypeBuf: b,
reAddressType: b.readUInt8(0),
}))
.andThen((aa) => {
const { reAddressTypeBuf, reAddressType } = aa;
switch (reAddressType) {
case _types_1.REAddressType.SYSTEM:
const systemAddress = {
reAddressType,
toBuffer: () => reAddressTypeBuf,
toString: () => `REAddressType.SYSTEM (Always empty)`,
};
return (0, neverthrow_1.ok)(systemAddress);
case _types_1.REAddressType.RADIX_NATIVE_TOKEN:
const nativeToken = {
reAddressType,
toBuffer: () => reAddressTypeBuf,
toString: () => `REAddressType.RADIX_NATIVE_TOKEN (Always empty)`,
};
return (0, neverthrow_1.ok)(nativeToken);
case _types_1.REAddressType.HASHED_KEY_NONCE:
return bufferReader.readNextBuffer(26).map((lower26Bytes) => ({
reAddressType,
lower26Bytes,
toBuffer: () => Buffer.concat([
reAddressTypeBuf,
lower26Bytes,
]),
toString: () => `REAddressType.HASHED_KEY_NONCE: { lower26Bytes: ${lower26Bytes.toString('hex')} }`,
}));
case _types_1.REAddressType.PUBLIC_KEY:
return bufferReader
.readNextBuffer(33)
.andThen(pubKeyBytes => crypto_1.PublicKey.fromBuffer(pubKeyBytes))
.map((publicKey) => ({
reAddressType,
publicKey,
toBuffer: () => Buffer.concat([
reAddressTypeBuf,
publicKey.asData({
compressed: true,
}),
]),
toString: () => `REAddressType.PUBLIC_KEY: { publicKey: ${publicKey.toString(true)} }`,
}));
}
});
/* eslint-enable no-case-declarations */
exports.REAddress = {
fromBufferReader,
};
//# sourceMappingURL=reAddress.js.map