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