UNPKG

@sx-bet/sportx-js

Version:

Provides an easy to use API to interact with the SportX relayer.

46 lines 2.71 kB
"use strict"; 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