Skip to main content

security_token_client/generated/accounts/
verification_config.rs

1//! This code was AUTOGENERATED using the codama library.
2//! Please DO NOT EDIT THIS FILE, instead use visitors
3//! to add features, then rerun codama to update it.
4//!
5//! <https://github.com/codama-idl/codama>
6//!
7
8use borsh::BorshDeserialize;
9use borsh::BorshSerialize;
10use solana_pubkey::Pubkey;
11
12#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
13#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14pub struct VerificationConfig {
15    pub discriminator: u8,
16    pub instruction_discriminator: u8,
17    pub cpi_mode: bool,
18    pub bump: u8,
19    #[cfg_attr(
20        feature = "serde",
21        serde(with = "serde_with::As::<Vec<serde_with::DisplayFromStr>>")
22    )]
23    pub verification_programs: Vec<Pubkey>,
24}
25
26impl VerificationConfig {
27    #[inline(always)]
28    pub fn from_bytes(data: &[u8]) -> Result<Self, std::io::Error> {
29        let mut data = data;
30        Self::deserialize(&mut data)
31    }
32}
33
34impl<'a> TryFrom<&solana_account_info::AccountInfo<'a>> for VerificationConfig {
35    type Error = std::io::Error;
36
37    fn try_from(account_info: &solana_account_info::AccountInfo<'a>) -> Result<Self, Self::Error> {
38        let mut data: &[u8] = &(*account_info.data).borrow();
39        Self::deserialize(&mut data)
40    }
41}
42
43#[cfg(feature = "fetch")]
44pub fn fetch_verification_config(
45    rpc: &solana_client::rpc_client::RpcClient,
46    address: &solana_pubkey::Pubkey,
47) -> Result<crate::shared::DecodedAccount<VerificationConfig>, std::io::Error> {
48    let accounts = fetch_all_verification_config(rpc, &[*address])?;
49    Ok(accounts[0].clone())
50}
51
52#[cfg(feature = "fetch")]
53pub fn fetch_all_verification_config(
54    rpc: &solana_client::rpc_client::RpcClient,
55    addresses: &[solana_pubkey::Pubkey],
56) -> Result<Vec<crate::shared::DecodedAccount<VerificationConfig>>, std::io::Error> {
57    let accounts = rpc
58        .get_multiple_accounts(addresses)
59        .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e.to_string()))?;
60    let mut decoded_accounts: Vec<crate::shared::DecodedAccount<VerificationConfig>> = Vec::new();
61    for i in 0..addresses.len() {
62        let address = addresses[i];
63        let account = accounts[i].as_ref().ok_or(std::io::Error::new(
64            std::io::ErrorKind::Other,
65            format!("Account not found: {}", address),
66        ))?;
67        let data = VerificationConfig::from_bytes(&account.data)?;
68        decoded_accounts.push(crate::shared::DecodedAccount {
69            address,
70            account: account.clone(),
71            data,
72        });
73    }
74    Ok(decoded_accounts)
75}
76
77#[cfg(feature = "fetch")]
78pub fn fetch_maybe_verification_config(
79    rpc: &solana_client::rpc_client::RpcClient,
80    address: &solana_pubkey::Pubkey,
81) -> Result<crate::shared::MaybeAccount<VerificationConfig>, std::io::Error> {
82    let accounts = fetch_all_maybe_verification_config(rpc, &[*address])?;
83    Ok(accounts[0].clone())
84}
85
86#[cfg(feature = "fetch")]
87pub fn fetch_all_maybe_verification_config(
88    rpc: &solana_client::rpc_client::RpcClient,
89    addresses: &[solana_pubkey::Pubkey],
90) -> Result<Vec<crate::shared::MaybeAccount<VerificationConfig>>, std::io::Error> {
91    let accounts = rpc
92        .get_multiple_accounts(addresses)
93        .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e.to_string()))?;
94    let mut decoded_accounts: Vec<crate::shared::MaybeAccount<VerificationConfig>> = Vec::new();
95    for i in 0..addresses.len() {
96        let address = addresses[i];
97        if let Some(account) = accounts[i].as_ref() {
98            let data = VerificationConfig::from_bytes(&account.data)?;
99            decoded_accounts.push(crate::shared::MaybeAccount::Exists(
100                crate::shared::DecodedAccount {
101                    address,
102                    account: account.clone(),
103                    data,
104                },
105            ));
106        } else {
107            decoded_accounts.push(crate::shared::MaybeAccount::NotFound(address));
108        }
109    }
110    Ok(decoded_accounts)
111}
112
113#[cfg(feature = "anchor")]
114impl anchor_lang::AccountDeserialize for VerificationConfig {
115    fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result<Self> {
116        Ok(Self::deserialize(buf)?)
117    }
118}
119
120#[cfg(feature = "anchor")]
121impl anchor_lang::AccountSerialize for VerificationConfig {}
122
123#[cfg(feature = "anchor")]
124impl anchor_lang::Owner for VerificationConfig {
125    fn owner() -> Pubkey {
126        crate::SECURITY_TOKEN_PROGRAM_ID
127    }
128}
129
130#[cfg(feature = "anchor-idl-build")]
131impl anchor_lang::IdlBuild for VerificationConfig {}
132
133#[cfg(feature = "anchor-idl-build")]
134impl anchor_lang::Discriminator for VerificationConfig {
135    const DISCRIMINATOR: &[u8] = &[0; 8];
136}