@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
55 lines • 2.26 kB
JavaScript
;
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