```\n function currentRewardsPerToken() public view returns (uint256) {\n        // Rewards do not accrue if the total balance is zero\n        if (totalBalance == 0) return rewardsPerTokenStored;\n\n        // @audit\n        // loss of precision\n        // The number of rewards to apply is based on the reward rate and the amount of time that has passed since the last reward update\n        uint256 rewardsToApply = ((block.timestamp - lastRewardUpdate) * rewardRate) /\n            REWARD_PERIOD;\n\n        // The rewards per token is the current rewards per token plus the rewards to apply divided by the total staked balance\n        return rewardsPerTokenStored + (rewardsToApply * 10 ** stakedTokenDecimals) / totalBalance;\n    }\n```\n