banx-vaults-sdk
Version:
Fbonds SDK for interacting with protocol banx vaults
31 lines (30 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateRewards = void 0;
const anchor_1 = require("@coral-xyz/anchor");
const constants_1 = require("../../constants");
const helpers_1 = require("../../helpers");
const calculateRewards = (args) => {
let deltaLossCumulative = args.banxPool.lossCumulative
.sub(args.banxUserDeposit.lossCumulative);
// Если есть прирост убытков, пересчитываем депозит
const lossForUser = args.banxUserDeposit.depositAmount
.mul(deltaLossCumulative)
.div(constants_1.MUL_FOR_APR);
// Уменьшаем депозит пользователя
const newDepositAmount = args.banxUserDeposit.depositAmount
.sub(lossForUser);
let diffTime = new anchor_1.BN((0, helpers_1.nowInSeconds)()).sub(args.banxPool.lastTime);
if (diffTime.cmp(args.banxPool.period) == 1) {
diffTime = args.banxPool.period;
}
const cumulative = diffTime
.mul(args.banxPool.apr)
.add(args.banxPool.cumulative);
let harvestAmount = cumulative
.sub(args.banxUserDeposit.depositedAtCumulative)
.mul(newDepositAmount)
.div(constants_1.MUL_FOR_APR);
return harvestAmount;
};
exports.calculateRewards = calculateRewards;