UNPKG

@bithomp/xrpl-api

Version:

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

64 lines (63 loc) 2.38 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseCheckChanges = parseCheckChanges; const bignumber_js_1 = __importDefault(require("bignumber.js")); const amount_1 = __importDefault(require("../ledger/amount")); const source_1 = require("../ledger/source"); const destination_1 = require("../ledger/destination"); const utils_1 = require("../utils"); const models_1 = require("../../models"); function parseCheckStatus(node) { if (node.diffType === "CreatedNode") { return "created"; } if (node.diffType === "ModifiedNode") { return "modified"; } if (node.diffType === "DeletedNode") { return "deleted"; } return undefined; } function summarizeCheck(node) { const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields; const prev = node.previousFields; const summary = { status: parseCheckStatus(node), checkID: node.ledgerIndex, source: (0, source_1.parseSource)(final), destination: (0, destination_1.parseDestination)(final), sendMax: (0, amount_1.default)(final.SendMax), sequence: final.Sequence, }; if (final.Expiration) { summary.expiration = (0, models_1.ledgerTimeToUnixTime)(final.Expiration); } if (final.InvoiceID) { summary.invoiceID = final.InvoiceID; } if (prev.SendMax) { summary.sendMaxChange = (0, amount_1.default)(prev.SendMax); summary.sendMaxChange.value = new bignumber_js_1.default(summary.sendMaxChange.value) .minus(new bignumber_js_1.default(summary.sendMax.value)) .toString(10); } if (node.PreviousTxnID) { summary.previousTxnID = node.PreviousTxnID; } return summary; } function parseCheckChanges(metadata) { const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => { const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode; return node.LedgerEntryType === "Check"; }); if (affectedNodes.length !== 1) { return undefined; } const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]); return summarizeCheck(normalizedNode); }