UNPKG

@bithomp/xrpl-api

Version:

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

41 lines (40 loc) 2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseAccountOrder = parseAccountOrder; const bignumber_js_1 = __importDefault(require("bignumber.js")); const xrpl_1 = require("xrpl"); const amount_1 = __importDefault(require("./amount")); const utils_1 = require("../utils"); const common_1 = require("../../common"); const offer_flags_1 = __importDefault(require("../ledger/offer-flags")); function computeQuality(takerGets, takerPays) { const quotient = new bignumber_js_1.default(takerPays.value).dividedBy(takerGets.value); return quotient.precision(16, bignumber_js_1.default.ROUND_HALF_UP).toString(); } function parseAccountOrder(address, order) { const flags = (0, offer_flags_1.default)(order.flags); const takerGetsAmount = (0, amount_1.default)(order.taker_gets); const takerPaysAmount = (0, amount_1.default)(order.taker_pays); const quantity = flags.sell === true ? takerGetsAmount : takerPaysAmount; const totalPrice = flags.sell === true ? takerPaysAmount : takerGetsAmount; const specification = (0, common_1.removeUndefined)({ flags: flags, quantity: quantity, totalPrice: totalPrice, expirationTime: (0, utils_1.parseTimestamp)(order.expiration), direction: (order.flags & xrpl_1.LedgerEntry.OfferFlags.lsfSell) === 0 ? "buy" : "sell", passive: (order.flags & xrpl_1.LedgerEntry.OfferFlags.lsfPassive) !== 0 || undefined, }); const makerExchangeRate = order.quality ? (0, utils_1.adjustQualityForXRP)(order.quality.toString(), takerGetsAmount.currency, takerPaysAmount.currency) : computeQuality(takerGetsAmount, takerPaysAmount); const properties = { maker: address, sequence: order.seq, makerExchangeRate: makerExchangeRate, }; return { specification, properties }; }