mpl_token_auth_rules/state/v2/constraint/
pass.rs

1use solana_program::msg;
2
3use crate::{
4    error::RuleSetError,
5    state::v2::{Constraint, ConstraintType, HEADER_SECTION},
6    state::{Header, RuleResult},
7};
8
9/// Constraint representing an operation that always succeeds.
10pub struct Pass;
11
12impl<'a> Pass {
13    /// Deserialize a constraint from a byte array.
14    pub fn from_bytes(_bytes: &'a [u8]) -> Result<Self, RuleSetError> {
15        Ok(Self {})
16    }
17
18    /// Serialize a constraint into a byte array.
19    pub fn serialize() -> Result<Vec<u8>, RuleSetError> {
20        let mut data = Vec::with_capacity(HEADER_SECTION);
21        // Header
22        Header::serialize(ConstraintType::Pass, 0, &mut data);
23
24        Ok(data)
25    }
26}
27
28impl<'a> Constraint<'a> for Pass {
29    fn constraint_type(&self) -> ConstraintType {
30        ConstraintType::Pass
31    }
32
33    fn validate(
34        &self,
35        _accounts: &std::collections::HashMap<
36            solana_program::pubkey::Pubkey,
37            &solana_program::account_info::AccountInfo,
38        >,
39        _payload: &crate::payload::Payload,
40        _update_rule_state: bool,
41        _rule_set_state_pda: &Option<&solana_program::account_info::AccountInfo>,
42        _rule_authority: &Option<&solana_program::account_info::AccountInfo>,
43    ) -> RuleResult {
44        msg!("Validating Pass");
45        RuleResult::Success(self.constraint_type().to_error())
46    }
47}