UNPKG

banx-vaults-sdk

Version:

Fbonds SDK for interacting with protocol banx vaults

31 lines (30 loc) 1.32 kB
"use strict"; 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;