@melonproject/token-math
Version:
A small helper library to do precision safe calculations
25 lines (24 loc) • 1.57 kB
JavaScript
;
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;