Skip to main content

carbon_virtuals_decoder/instructions/
update_pool_creator.rs

1//! This code was AUTOGENERATED using the Codama library.
2use carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts};
3#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
5pub struct UpdatePoolCreator {}
6
7#[derive(Debug, Clone, PartialEq)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9pub struct UpdatePoolCreatorInstructionAccounts {
10    pub creator: solana_pubkey::Pubkey,
11    pub new_creator: solana_pubkey::Pubkey,
12    pub virtuals_mint: solana_pubkey::Pubkey,
13    pub token_mint: solana_pubkey::Pubkey,
14    pub new_creator_virtuals_ata: solana_pubkey::Pubkey,
15    pub new_creator_token_ata: solana_pubkey::Pubkey,
16    pub vpool: solana_pubkey::Pubkey,
17    pub token_program: solana_pubkey::Pubkey,
18    pub associated_token_program: solana_pubkey::Pubkey,
19    pub system_program: solana_pubkey::Pubkey,
20    pub remaining: Vec<solana_instruction::AccountMeta>,
21}
22
23impl UpdatePoolCreator {
24    pub fn decode(data: &[u8]) -> Option<Self> {
25        if data.len() < 8 {
26            return None;
27        }
28        let discriminator = &data[0..8];
29        if discriminator != [113, 225, 166, 185, 94, 231, 96, 28] {
30            return None;
31        }
32
33        let mut data_slice = data;
34
35        data_slice = &data_slice[8..];
36
37        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
38    }
39}
40
41impl ArrangeAccounts for UpdatePoolCreator {
42    type ArrangedAccounts = UpdatePoolCreatorInstructionAccounts;
43
44    fn arrange_accounts(
45        accounts: &[solana_instruction::AccountMeta],
46    ) -> Option<Self::ArrangedAccounts> {
47        let mut iter = accounts.iter();
48
49        let creator = next_account(&mut iter)?;
50        let new_creator = next_account(&mut iter)?;
51        let virtuals_mint = next_account(&mut iter)?;
52        let token_mint = next_account(&mut iter)?;
53        let new_creator_virtuals_ata = next_account(&mut iter)?;
54        let new_creator_token_ata = next_account(&mut iter)?;
55        let vpool = next_account(&mut iter)?;
56        let token_program = next_account(&mut iter)?;
57        let associated_token_program = next_account(&mut iter)?;
58        let system_program = next_account(&mut iter)?;
59
60        let remaining = iter.as_slice();
61
62        Some(UpdatePoolCreatorInstructionAccounts {
63            creator,
64            new_creator,
65            virtuals_mint,
66            token_mint,
67            new_creator_virtuals_ata,
68            new_creator_token_ata,
69            vpool,
70            token_program,
71            associated_token_program,
72            system_program,
73            remaining: remaining.to_vec(),
74        })
75    }
76}