UNPKG

@bithomp/xrpl-api

Version:

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

41 lines (40 loc) 2.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseOrderbookOrder = parseOrderbookOrder; const lodash_1 = __importDefault(require("lodash")); const xrpl_1 = require("xrpl"); const utils_1 = require("../utils"); const common_1 = require("../../common"); const amount_1 = __importDefault(require("./amount")); const offer_flags_1 = __importDefault(require("../ledger/offer-flags")); function parseOrderbookOrder(data) { const flags = (0, offer_flags_1.default)(data.Flags); const takerGets = (0, amount_1.default)(data.TakerGets); const takerPays = (0, amount_1.default)(data.TakerPays); const quantity = flags.sell === true ? takerGets : takerPays; const totalPrice = flags.sell === true ? takerPays : takerGets; const specification = (0, common_1.removeUndefined)({ flags: flags, quantity: quantity, totalPrice: totalPrice, expirationTime: (0, utils_1.parseTimestamp)(data.Expiration), direction: (data.Flags & xrpl_1.LedgerEntry.OfferFlags.lsfSell) === 0 ? "buy" : "sell", passive: (data.Flags & xrpl_1.LedgerEntry.OfferFlags.lsfPassive) !== 0 || undefined, }); const properties = { maker: data.Account, sequence: data.Sequence, makerExchangeRate: (0, utils_1.adjustQualityForXRP)(data.quality, takerGets.currency, takerPays.currency), }; const takerGetsFunded = data.taker_gets_funded ? (0, amount_1.default)(data.taker_gets_funded) : undefined; const takerPaysFunded = data.taker_pays_funded ? (0, amount_1.default)(data.taker_pays_funded) : undefined; const available = (0, common_1.removeUndefined)({ fundedAmount: takerGetsFunded, priceOfFundedAmount: takerPaysFunded, }); const state = lodash_1.default.isEmpty(available) ? undefined : available; return (0, common_1.removeUndefined)({ specification, properties, state, data }); }