@radixdlt/tx-parser
Version:
Parsing of Radix Engine transactions and instructions
56 lines • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PreparedStake = exports.makeBaseStakeSubstateFromBuffer = exports.makeBaseValidatorSubstateFromBuffer = exports.pubKeyFromReadBuffer = void 0;
const neverthrow_1 = require("neverthrow");
const _types_1 = require("./_types");
const reAddress_1 = require("./reAddress");
const crypto_1 = require("@radixdlt/crypto");
const tokens_1 = require("./tokens");
const account_1 = require("@radixdlt/account");
const pubKeyFromReadBuffer = (bufferReader) => bufferReader.readNextBuffer(33).andThen(b => crypto_1.PublicKey.fromBuffer(b));
exports.pubKeyFromReadBuffer = pubKeyFromReadBuffer;
const makeBaseValidatorSubstateFromBuffer = (substateType) => (bufferReader) => (0, neverthrow_1.combine)([
bufferReader.readNextBuffer(1).map(b => b.readUInt8(0)),
(0, exports.pubKeyFromReadBuffer)(bufferReader),
])
.map(resList => ({
reserved: resList[0],
validator: resList[1],
}))
.map((partial) => {
const { reserved, validator } = partial;
const buffer = Buffer.concat([
Buffer.from([substateType]),
Buffer.from([reserved]),
validator.asData({ compressed: true }),
]);
return Object.assign(Object.assign({}, partial), { substateType, toBuffer: () => buffer });
});
exports.makeBaseValidatorSubstateFromBuffer = makeBaseValidatorSubstateFromBuffer;
const makeBaseStakeSubstateFromBuffer = (substateType) => (bufferReader, lengthData) => (0, exports.makeBaseValidatorSubstateFromBuffer)(substateType)(bufferReader).andThen(base => (0, neverthrow_1.combine)([
reAddress_1.REAddress.fromBufferReader(bufferReader),
(0, tokens_1.uint256FromReadBuffer)(bufferReader),
]).map((resList) => {
const owner = resList[0];
const amount = resList[1];
const reserved = base.reserved;
const validator = base.validator;
return Object.assign(Object.assign({}, base), { owner,
amount, toBuffer: () => Buffer.concat([
lengthData,
base.toBuffer(),
owner.toBuffer(),
(0, tokens_1.amountToBuffer)(amount),
]), toString: () => `${(0, _types_1.stringifySubstateType)(substateType)} { reserved: ${reserved}, validator: 0x${validator.toString()}, owner: 0x${owner
.toBuffer()
.toString('hex')}, amount: U256 { raw: ${amount.toString()} } }`, toHumanReadableString: () => `${(0, _types_1.stringifySubstateType)(substateType)} { reserved: ${reserved}, validator: ${account_1.ValidatorAddress.fromUnsafe(validator.asData({ compressed: true }))
._unsafeUnwrap()
.toString()}, owner: ${account_1.AccountAddress.fromUnsafe(owner.toBuffer())
._unsafeUnwrap()
.toString()}, amount: ${(0, tokens_1.stringifyUInt256)(amount)} }` });
}));
exports.makeBaseStakeSubstateFromBuffer = makeBaseStakeSubstateFromBuffer;
exports.PreparedStake = {
fromBufferReader: (bufferReader, lengthData) => (0, exports.makeBaseStakeSubstateFromBuffer)(_types_1.SubStateType.PREPARED_STAKE)(bufferReader, lengthData),
};
//# sourceMappingURL=preparedStake.js.map