UNPKG

@melonproject/token-math

Version:

A small helper library to do precision safe calculations

25 lines (24 loc) 1.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const multiply_1 = __importDefault(require("../bigInteger/multiply")); const divide_1 = __importDefault(require("../bigInteger/divide")); const createQuantity_1 = __importDefault(require("../quantity/createQuantity")); const isEqual_1 = __importDefault(require("../token/isEqual")); const ensure_1 = __importDefault(require("../utils/ensure")); const isZero_1 = __importDefault(require("../quantity/isZero")); const valueIn = (price, quantity) => { ensure_1.default(isEqual_1.default(price.base.token, quantity.token) || isEqual_1.default(price.quote.token, quantity.token), "Require price to contain token to convert", { price, quantity }); if (isZero_1.default(price.quote) || isZero_1.default(price.base) || isZero_1.default(quantity)) { return isEqual_1.default(price.base.token, quantity.token) ? createQuantity_1.default(price.quote.token, 0) : createQuantity_1.default(price.base.token, 0); } return isEqual_1.default(price.base.token, quantity.token) ? createQuantity_1.default(price.quote.token, divide_1.default(multiply_1.default(quantity.quantity, price.quote.quantity), price.base.quantity)) : createQuantity_1.default(price.base.token, divide_1.default(multiply_1.default(price.base.quantity, quantity.quantity), price.quote.quantity)); }; exports.default = valueIn;