@bithomp/xrpl-api
Version:
A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger
41 lines (40 loc) • 2 kB
JavaScript
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 };
}
;