use crate::accounts::Position;
use crate::{TunaStakingError as ErrorCode, REWARD_PER_SHARE_FRAC_BITS};
impl Position {
pub fn get_current_unclaimed_reward(&self, acc_reward_per_share: u128) -> Result<u64, ErrorCode> {
let current_reward_debt: u64 = ((acc_reward_per_share * self.shares as u128) >> REWARD_PER_SHARE_FRAC_BITS)
.try_into()
.map_err(|_| ErrorCode::TypeCastOverflow)?;
let current_unclaimed_reward = self.unclaimed_reward + current_reward_debt.saturating_sub(self.reward_debt);
Ok(current_unclaimed_reward)
}
}