@sx-bet/sportx-js
Version:
Provides an easy to use API to interact with the SportX relayer.
46 lines • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertToTakerPayAmount = exports.convertToDisplayAmount = exports.convertToTrueTokenAmount = exports.convertToContractOrder = exports.convertFromAPIPercentageOdds = exports.convertToAPIPercentageOdds = void 0;
const bignumber_1 = require("@ethersproject/bignumber");
const units_1 = require("@ethersproject/units");
const bignumber_js_1 = require("bignumber.js");
const constants_1 = require("../constants");
function convertToAPIPercentageOdds(decimal) {
if (decimal < 0 || decimal > 1) {
throw new Error(`${decimal} not in valid range. Must be between 0 and 1`);
}
const protocolBigNum = decimal * Math.pow(10, 20);
return bignumber_1.BigNumber.from(protocolBigNum.toString());
}
exports.convertToAPIPercentageOdds = convertToAPIPercentageOdds;
function convertFromAPIPercentageOdds(odds) {
const apiPercentageOdds = bignumber_1.BigNumber.from(odds);
if (apiPercentageOdds.gt(constants_1.FRACTION_DENOMINATOR)) {
throw new Error(`Invalid api percentage odds. ${apiPercentageOdds} greater than ${bignumber_1.BigNumber.from(10)
.pow(constants_1.PERCENTAGE_PRECISION_EXPONENT)
.toString()}`);
}
const bigNumWithDecimals = new bignumber_js_1.BigNumber(apiPercentageOdds.toString());
const impliedOddsWithDecimals = bigNumWithDecimals.dividedBy(new bignumber_js_1.BigNumber(10).exponentiatedBy(constants_1.PERCENTAGE_PRECISION_EXPONENT));
return impliedOddsWithDecimals.toNumber();
}
exports.convertFromAPIPercentageOdds = convertFromAPIPercentageOdds;
function convertToContractOrder(order) {
return Object.assign(Object.assign({}, order), { totalBetSize: bignumber_1.BigNumber.from(order.totalBetSize), percentageOdds: bignumber_1.BigNumber.from(order.percentageOdds), expiry: bignumber_1.BigNumber.from(order.expiry), baseToken: order.baseToken, salt: bignumber_1.BigNumber.from(order.salt) });
}
exports.convertToContractOrder = convertToContractOrder;
function convertToTrueTokenAmount(amount, baseToken) {
return units_1.parseUnits(amount.toString(), constants_1.TokenDecimalMapping[baseToken]).toString();
}
exports.convertToTrueTokenAmount = convertToTrueTokenAmount;
function convertToDisplayAmount(amount, baseToken) {
return units_1.formatUnits(amount, constants_1.TokenDecimalMapping[baseToken]);
}
exports.convertToDisplayAmount = convertToDisplayAmount;
function convertToTakerPayAmount(amount, odds) {
return bignumber_1.BigNumber.from(amount)
.mul(odds)
.div(constants_1.FRACTION_DENOMINATOR.sub(odds));
}
exports.convertToTakerPayAmount = convertToTakerPayAmount;
//# sourceMappingURL=convert.js.map