UNPKG

@bithomp/xrpl-api

Version:

A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger

98 lines (97 loc) 4.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseMPTokenIssuanceChanges = parseMPTokenIssuanceChanges; const bignumber_js_1 = __importDefault(require("bignumber.js")); const common_1 = require("../../common"); const mptoken_1 = require("../../models/mptoken"); function parseMPTokenIssuanceChanges(tx) { return new MPTokenIssuanceChanges(tx).call(); } class MPTokenIssuanceChanges { constructor(tx) { this.tx = tx; this.changes = {}; } call() { if (this.hasAffectedNodes() === false) { return this.changes; } this.parseAffectedNodes(); return this.changes; } hasAffectedNodes() { if (this.tx.meta?.AffectedNodes === undefined) { return false; } if (this.tx.meta?.AffectedNodes?.length === 0) { return false; } return true; } addChange(mptIssuanceID, change) { this.changes[mptIssuanceID] = (0, common_1.removeUndefined)(change); } parseAffectedNodes() { for (const affectedNode of this.tx.meta.AffectedNodes) { const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode; if (node?.LedgerEntryType === "MPTokenIssuance" && node?.LedgerIndex) { if (affectedNode.CreatedNode) { const mptIssuanceID = (0, mptoken_1.buildMPTokenIssuanceID)(node.NewFields.Sequence, node.NewFields.Issuer); this.addChange(mptIssuanceID, { status: "added", flags: node.NewFields.Flags, mptIssuanceID, issuer: node.NewFields.Issuer, sequence: node.NewFields.Sequence, transferFee: node.NewFields.TransferFee, maximumAmount: node.NewFields.MaximumAmount, outstandingAmount: node.NewFields.OutstandingAmount, metadata: node.NewFields.Metadata, scale: node.NewFields.AssetScale, }); } if (affectedNode.ModifiedNode) { const mptIssuanceID = (0, mptoken_1.buildMPTokenIssuanceID)(node.FinalFields.Sequence, node.FinalFields.Issuer); let outstandingAmountChange = new bignumber_js_1.default(node.FinalFields.OutstandingAmount ?? 0) .minus(node.PreviousFields.OutstandingAmount ?? 0) .toString(); if (outstandingAmountChange === "0") { outstandingAmountChange = undefined; } this.addChange(mptIssuanceID, { status: "modified", flags: node.FinalFields.Flags, mptIssuanceID, issuer: node.FinalFields.Issuer, sequence: node.FinalFields.Sequence, transferFee: node.FinalFields.TransferFee, maximumAmount: node.FinalFields.MaximumAmount, outstandingAmount: node.FinalFields.OutstandingAmount, metadata: node.FinalFields.Metadata, scale: node.FinalFields.AssetScale, outstandingAmountChange, flagsChange: node.PreviousFields.Flags, }); } if (affectedNode.DeletedNode) { const mptIssuanceID = (0, mptoken_1.buildMPTokenIssuanceID)(node.FinalFields.Sequence, node.FinalFields.Issuer); this.addChange(mptIssuanceID, { status: "removed", flags: node.FinalFields.Flags, mptIssuanceID, issuer: node.FinalFields.Issuer, sequence: node.FinalFields.Sequence, transferFee: node.FinalFields.TransferFee, maximumAmount: node.FinalFields.MaximumAmount, outstandingAmount: node.FinalFields.OutstandingAmount, metadata: node.FinalFields.Metadata, scale: node.FinalFields.AssetScale, }); } } } } }