UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

55 lines 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Constants_1 = require("../lib/Constants"); var DolomiteMarginMath = /** @class */ (function () { function DolomiteMarginMath() { } DolomiteMarginMath.getPartialRoundHalfUp = function (target, numerator, denominator) { var value = target.abs() .times(numerator); var halfUp = value.mod(denominator) .gte(denominator.minus(1) .dividedToIntegerBy(2) .plus(1)) ? 1 : 0; var result = value.dividedToIntegerBy(denominator) .plus(halfUp); if (target.lt(Constants_1.INTEGERS.ZERO)) { return result.negated(); } return result; }; DolomiteMarginMath.getPartialRoundUp = function (target, numerator, denominator) { var result = target .abs() .times(numerator) .minus('1') .dividedToIntegerBy(denominator) .plus('1'); if (target.lt(Constants_1.INTEGERS.ZERO)) { return result.negated(); } return result; }; DolomiteMarginMath.getPartial = function (target, numerator, denominator) { return target.times(numerator).dividedToIntegerBy(denominator); }; DolomiteMarginMath.weiToPar = function (valueWei, index) { var base = Constants_1.INTEGERS.INTEREST_RATE_BASE; if (valueWei.lt(Constants_1.INTEGERS.ZERO)) { return DolomiteMarginMath.getPartialRoundHalfUp(valueWei.negated(), base, index.borrow.times(base)).negated(); } return DolomiteMarginMath.getPartialRoundHalfUp(valueWei, base, index.supply.times(base)); }; DolomiteMarginMath.parToWei = function (valueWei, index) { var base = Constants_1.INTEGERS.INTEREST_RATE_BASE; if (valueWei.lt(Constants_1.INTEGERS.ZERO)) { return DolomiteMarginMath.getPartialRoundHalfUp(valueWei.negated(), index.borrow.times(base), base).negated(); } return DolomiteMarginMath.getPartialRoundHalfUp(valueWei, index.supply.times(base), base); }; return DolomiteMarginMath; }()); exports.default = DolomiteMarginMath; //# sourceMappingURL=DolomiteMarginMath.js.map