carbon_virtuals_decoder/instructions/
update_pool_creator.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x71e1a6b95ee7601c")]
7pub struct UpdatePoolCreator {}
8
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}
21
22impl carbon_core::deserialize::ArrangeAccounts for UpdatePoolCreator {
23    type ArrangedAccounts = UpdatePoolCreatorInstructionAccounts;
24
25    fn arrange_accounts(
26        accounts: &[solana_instruction::AccountMeta],
27    ) -> Option<Self::ArrangedAccounts> {
28        let [creator, new_creator, virtuals_mint, token_mint, new_creator_virtuals_ata, new_creator_token_ata, vpool, token_program, associated_token_program, system_program, _remaining @ ..] =
29            accounts
30        else {
31            return None;
32        };
33
34        Some(UpdatePoolCreatorInstructionAccounts {
35            creator: creator.pubkey,
36            new_creator: new_creator.pubkey,
37            virtuals_mint: virtuals_mint.pubkey,
38            token_mint: token_mint.pubkey,
39            new_creator_virtuals_ata: new_creator_virtuals_ata.pubkey,
40            new_creator_token_ata: new_creator_token_ata.pubkey,
41            vpool: vpool.pubkey,
42            token_program: token_program.pubkey,
43            associated_token_program: associated_token_program.pubkey,
44            system_program: system_program.pubkey,
45        })
46    }
47}