Comparing version 0.2.86 to 0.2.91
@@ -92,1 +92,7 @@ import { Converter, nRelay, ChoppedRelay } from "./interfaces"; | ||
export declare function chargeFee(asset: Asset, decimalFee: number, magnitude?: number): Asset; | ||
export declare function liquidate(smartTokens: Asset, reserveBalance: Asset, smartSupply: Asset): Asset; | ||
export declare function calculateLiquidateCost(reserveTokens: Asset, reserveBalance: Asset, smartSupply: Asset): Asset; | ||
export declare function fund(smartTokens: Asset, reserveBalance: Asset, smartSupply: Asset): Asset; | ||
export declare function calculateFundReturnSmall(reserveTokens: Asset, reserveBalance: Asset, smartSupply: Asset): Asset; | ||
export declare function calculateFundReturnBig(reserveTokens: Asset, reserveBalance: Asset, smartSupply: Asset): Asset; | ||
export declare function calculateFundReturn(reserveTokens: Asset, reserveBalance: Asset, smartSupply: Asset): Asset; |
@@ -114,3 +114,3 @@ "use strict"; | ||
function calculateSmartToReserve(smartTokens, reserveBalance, smartSupply, ratio = 0.5) { | ||
const smartTokensN = smartTokens.toDecimal(); | ||
const reserveTokensN = smartTokens.toDecimal(); | ||
const reserveBalanceN = reserveBalance.toDecimal(); | ||
@@ -121,3 +121,3 @@ const smartSupplyN = smartSupply.toDecimal(); | ||
decimal_js_1.default.set({ precision: 15, rounding: decimal_js_1.default.ROUND_DOWN }); | ||
const reward = reserveBalanceN.times(one.minus(decimal_js_1.default.pow(one.minus(smartTokensN.div(smartSupplyN)), ratioN))); | ||
const reward = reserveBalanceN.times(one.minus(decimal_js_1.default.pow(one.minus(reserveTokensN.div(smartSupplyN)), ratioN))); | ||
return new eos_common_1.Asset(reward | ||
@@ -266,2 +266,83 @@ .times(Math.pow(10, reserveBalance.symbol.precision)) | ||
exports.chargeFee = chargeFee; | ||
function liquidate(smartTokens, reserveBalance, smartSupply) { | ||
const smartTokensN = smartTokens.toDecimal(); | ||
const reserveBalanceN = reserveBalance.toDecimal(); | ||
const smartSupplyN = smartSupply.toDecimal(); | ||
const reward = smartTokensN.times(reserveBalanceN).div(smartSupplyN); | ||
return new eos_common_1.Asset(reward | ||
.times(Math.pow(10, reserveBalance.symbol.precision)) | ||
.toDecimalPlaces(0, decimal_js_1.default.ROUND_DOWN) | ||
.toNumber(), reserveBalance.symbol); | ||
} | ||
exports.liquidate = liquidate; | ||
function calculateLiquidateCost(reserveTokens, reserveBalance, smartSupply) { | ||
const reserveTokensN = reserveTokens.toDecimal(); | ||
const reserveBalanceN = reserveBalance.toDecimal(); | ||
const smartSupplyN = smartSupply.toDecimal(); | ||
const reward = reserveTokensN.times(smartSupplyN).div(reserveBalanceN); | ||
return new eos_common_1.Asset(reward | ||
.times(Math.pow(10, smartSupply.symbol.precision)) | ||
.toDecimalPlaces(0, decimal_js_1.default.ROUND_DOWN) | ||
.toNumber(), smartSupply.symbol); | ||
} | ||
exports.calculateLiquidateCost = calculateLiquidateCost; | ||
function fund(smartTokens, reserveBalance, smartSupply) { | ||
const reserveTokensN = smartTokens.toDecimal(); | ||
const reserveBalanceN = reserveBalance.toDecimal(); | ||
const smartSupplyN = smartSupply.toDecimal(); | ||
const one = new decimal_js_1.default(1); | ||
// (smart_amount * balance - 1) / current_smart_supply + 1; | ||
const reward = reserveTokensN | ||
.times(reserveBalanceN) | ||
.minus(one) | ||
.div(smartSupplyN) | ||
.plus(one); | ||
return new eos_common_1.Asset(reward | ||
.times(Math.pow(10, reserveBalance.symbol.precision)) | ||
.toDecimalPlaces(0, decimal_js_1.default.ROUND_DOWN) | ||
.toNumber(), reserveBalance.symbol); | ||
} | ||
exports.fund = fund; | ||
function calculateFundReturnSmall(reserveTokens, reserveBalance, smartSupply) { | ||
const wholeGuarantee = new decimal_js_1.default(Math.pow(10, 10)); | ||
const reserveTokensN = reserveTokens.toDecimal().times(wholeGuarantee); | ||
const reserveBalanceN = reserveBalance.toDecimal().times(wholeGuarantee); | ||
const smartSupplyN = smartSupply.toDecimal().times(wholeGuarantee); | ||
const one = new decimal_js_1.default(1); | ||
decimal_js_1.default.set({ precision: 15, rounding: decimal_js_1.default.ROUND_DOWN }); | ||
const reward = reserveTokensN | ||
.times(smartSupplyN) | ||
.minus(smartSupplyN) | ||
.plus(one) | ||
.div(reserveBalanceN); | ||
return new eos_common_1.Asset(reward | ||
.div(wholeGuarantee) | ||
.times(Math.pow(10, smartSupply.symbol.precision)) | ||
.toDecimalPlaces(0, decimal_js_1.default.ROUND_DOWN) | ||
.toNumber(), smartSupply.symbol); | ||
} | ||
exports.calculateFundReturnSmall = calculateFundReturnSmall; | ||
function calculateFundReturnBig(reserveTokens, reserveBalance, smartSupply) { | ||
const reserveTokensN = reserveTokens.toDecimal(); | ||
const reserveBalanceN = reserveBalance.toDecimal(); | ||
const smartSupplyN = smartSupply.toDecimal(); | ||
const one = new decimal_js_1.default(1); | ||
decimal_js_1.default.set({ precision: 15, rounding: decimal_js_1.default.ROUND_DOWN }); | ||
const reward = reserveTokensN | ||
.times(smartSupplyN) | ||
.minus(smartSupplyN) | ||
.plus(one) | ||
.div(reserveBalanceN); | ||
return new eos_common_1.Asset(reward | ||
.times(Math.pow(10, smartSupply.symbol.precision)) | ||
.toDecimalPlaces(0, decimal_js_1.default.ROUND_DOWN) | ||
.toNumber(), smartSupply.symbol); | ||
} | ||
exports.calculateFundReturnBig = calculateFundReturnBig; | ||
function calculateFundReturn(reserveTokens, reserveBalance, smartSupply) { | ||
return reserveTokens.toDecimal().greaterThanOrEqualTo(1) | ||
? calculateFundReturnBig(reserveTokens, reserveBalance, smartSupply) | ||
: calculateFundReturnSmall(reserveTokens, reserveBalance, smartSupply); | ||
} | ||
exports.calculateFundReturn = calculateFundReturn; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "bancorx", | ||
"version": "0.2.86", | ||
"version": "0.2.91", | ||
"description": "BancorX Utility", | ||
@@ -5,0 +5,0 @@ "main": "build/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
57423
809