arrow_sunny/
account_validators.rs1use anchor_lang::prelude::*;
4use vipers::{assert_keys_eq, program_err};
5
6use crate::*;
7
8impl<'info> StakeCommon<'info> {
9 pub fn validate_miner(&self, miner: &ArrowMiner) -> Result<()> {
11 assert_keys_eq!(self.rewarder, miner.rewarder, "rewarder");
12 assert_keys_eq!(self.quarry, miner.quarry, "quarry");
13 assert_keys_eq!(self.miner, miner.miner, "miner");
14 assert_keys_eq!(self.miner_vault, miner.miner_vault, "miner_vault");
15 Ok(())
16 }
17}
18
19impl Arrow {
20 pub fn miner_for_rewards(&self, rewards_mint: Pubkey) -> Result<&ArrowMiner> {
22 if rewards_mint == self.vendor_miner.rewards_mint {
23 Ok(&self.vendor_miner)
24 } else if rewards_mint == self.internal_miner.rewards_mint {
25 Ok(&self.internal_miner)
26 } else {
27 program_err!(InvalidRewardsMint)
28 }
29 }
30}