defituna-staking 1.0.16

Rust client to interact with DefiTuna's Staking on-chain program.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
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)
    }
}