@meteora-ag/cp-amm-sdk 1.0.11-rc.6 → 1.0.11-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -6385,27 +6385,55 @@ function getRewardPerTokenStore(poolReward, poolLiquidity, currentTime) {
6385
6385
  ).add(rewardPerTokenStore);
6386
6386
  return totalRewardPerTokenStore;
6387
6387
  }
6388
+ function getRewardPerPeriod(poolReward, currentTime, periodTime) {
6389
+ const timeRewardAppicable = currentTime.add(periodTime);
6390
+ const period = timeRewardAppicable <= poolReward.rewardDurationEnd ? periodTime : poolReward.rewardDurationEnd.sub(currentTime);
6391
+ const rewardPerPeriod = poolReward.rewardRate.mul(period);
6392
+ return rewardPerPeriod;
6393
+ }
6388
6394
  function getRewardInfo(poolState, rewardIndex, periodTime, currentTime) {
6389
6395
  const poolReward = poolState.rewardInfos[rewardIndex];
6390
- const totalRewardPerPeriod = poolReward.rewardRate.mul(periodTime);
6391
6396
  const totalReward = poolReward.rewardRate.mul(poolReward.rewardDuration).shrn(64);
6392
- const rewardPerTokenStore = getRewardPerTokenStore(poolReward, poolState.liquidity, currentTime);
6397
+ const rewardPerTokenStore = getRewardPerTokenStore(
6398
+ poolReward,
6399
+ poolState.liquidity,
6400
+ currentTime
6401
+ );
6393
6402
  const totalRewardDistributed = rewardPerTokenStore.mul(poolState.liquidity).shrn(192);
6403
+ const rewardPerPeriod = getRewardPerPeriod(
6404
+ poolReward,
6405
+ currentTime,
6406
+ periodTime
6407
+ );
6394
6408
  return {
6395
- rewardPerPeriod: totalRewardPerPeriod.shrn(64),
6409
+ rewardPerPeriod: rewardPerPeriod.shrn(64),
6396
6410
  rewardBalance: totalReward.sub(totalRewardDistributed)
6397
6411
  };
6398
6412
  }
6399
- function getUserRewardPending(poolState, positionState, rewardIndex, currentTime) {
6413
+ function getUserRewardPending(poolState, positionState, rewardIndex, currentTime, periodTime) {
6400
6414
  const poolReward = poolState.rewardInfos[rewardIndex];
6401
6415
  const userRewardInfo = positionState.rewardInfos[rewardIndex];
6402
- const rewardPerTokenStore = getRewardPerTokenStore(poolReward, poolState.liquidity, currentTime);
6416
+ const rewardPerTokenStore = getRewardPerTokenStore(
6417
+ poolReward,
6418
+ poolState.liquidity,
6419
+ currentTime
6420
+ );
6403
6421
  const totalPositionLiquidity = positionState.unlockedLiquidity.add(positionState.vestedLiquidity).add(positionState.permanentLockedLiquidity);
6404
6422
  const userRewardPerTokenCheckPoint = new BN6(
6405
6423
  Buffer.from(userRewardInfo.rewardPerTokenCheckpoint).reverse()
6406
6424
  );
6407
6425
  const newReward = totalPositionLiquidity.mul(rewardPerTokenStore.sub(userRewardPerTokenCheckPoint)).shrn(192);
6408
- return userRewardInfo.rewardPendings.add(newReward);
6426
+ const rewardPerPeriod = getRewardPerPeriod(
6427
+ poolReward,
6428
+ currentTime,
6429
+ periodTime
6430
+ );
6431
+ const rewardPerTokenStorePerPeriod = rewardPerPeriod.shln(128).div(poolState.liquidity);
6432
+ const userRewardPerPeriod = totalPositionLiquidity.mul(rewardPerTokenStorePerPeriod).shrn(192);
6433
+ return {
6434
+ userPendingReward: userRewardInfo.rewardPendings.add(newReward),
6435
+ userRewardPerPeriod
6436
+ };
6409
6437
  }
6410
6438
 
6411
6439
  // src/helpers/accountFilters.ts