Skip to main content

carbon_pumpfun_decoder/instructions/
migrate_v2.rs

1//! This code was AUTOGENERATED using the Codama library.
2use carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts};
3/// Migrates liquidity to pump_amm if the bonding curve is complete
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
6pub struct MigrateV2 {}
7
8#[derive(Debug, Clone, PartialEq)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct MigrateV2InstructionAccounts {
11    pub global: solana_pubkey::Pubkey,
12    pub withdraw_authority: solana_pubkey::Pubkey,
13    pub base_mint: solana_pubkey::Pubkey,
14    pub quote_mint: solana_pubkey::Pubkey,
15    pub bonding_curve: solana_pubkey::Pubkey,
16    pub associated_base_bonding_curve: solana_pubkey::Pubkey,
17    pub associated_quote_bonding_curve: solana_pubkey::Pubkey,
18    pub user: solana_pubkey::Pubkey,
19    pub system_program: solana_pubkey::Pubkey,
20    pub pump_amm: solana_pubkey::Pubkey,
21    pub pool: solana_pubkey::Pubkey,
22    pub pool_authority: solana_pubkey::Pubkey,
23    pub pool_authority_mint_account: solana_pubkey::Pubkey,
24    pub pool_authority_quote_account: solana_pubkey::Pubkey,
25    pub amm_global_config: solana_pubkey::Pubkey,
26    pub lp_mint: solana_pubkey::Pubkey,
27    pub user_pool_token_account: solana_pubkey::Pubkey,
28    pub pool_base_token_account: solana_pubkey::Pubkey,
29    pub pool_quote_token_account: solana_pubkey::Pubkey,
30    pub base_token_program: solana_pubkey::Pubkey,
31    pub quote_token_program: solana_pubkey::Pubkey,
32    pub token2022_program: solana_pubkey::Pubkey,
33    pub associated_token_program: solana_pubkey::Pubkey,
34    pub pump_amm_event_authority: solana_pubkey::Pubkey,
35    pub rent: solana_pubkey::Pubkey,
36    pub event_authority: solana_pubkey::Pubkey,
37    pub program: solana_pubkey::Pubkey,
38    pub remaining: Vec<solana_instruction::AccountMeta>,
39}
40
41impl MigrateV2 {
42    pub fn decode(data: &[u8]) -> Option<Self> {
43        if data.len() < 8 {
44            return None;
45        }
46        let discriminator = &data[0..8];
47        if discriminator != [187, 203, 18, 31, 206, 237, 254, 41] {
48            return None;
49        }
50
51        let mut data_slice = data;
52
53        data_slice = &data_slice[8..];
54
55        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
56    }
57}
58
59impl ArrangeAccounts for MigrateV2 {
60    type ArrangedAccounts = MigrateV2InstructionAccounts;
61
62    fn arrange_accounts(
63        accounts: &[solana_instruction::AccountMeta],
64    ) -> Option<Self::ArrangedAccounts> {
65        let mut iter = accounts.iter();
66
67        let global = next_account(&mut iter)?;
68        let withdraw_authority = next_account(&mut iter)?;
69        let base_mint = next_account(&mut iter)?;
70        let quote_mint = next_account(&mut iter)?;
71        let bonding_curve = next_account(&mut iter)?;
72        let associated_base_bonding_curve = next_account(&mut iter)?;
73        let associated_quote_bonding_curve = next_account(&mut iter)?;
74        let user = next_account(&mut iter)?;
75        let system_program = next_account(&mut iter)?;
76        let pump_amm = next_account(&mut iter)?;
77        let pool = next_account(&mut iter)?;
78        let pool_authority = next_account(&mut iter)?;
79        let pool_authority_mint_account = next_account(&mut iter)?;
80        let pool_authority_quote_account = next_account(&mut iter)?;
81        let amm_global_config = next_account(&mut iter)?;
82        let lp_mint = next_account(&mut iter)?;
83        let user_pool_token_account = next_account(&mut iter)?;
84        let pool_base_token_account = next_account(&mut iter)?;
85        let pool_quote_token_account = next_account(&mut iter)?;
86        let base_token_program = next_account(&mut iter)?;
87        let quote_token_program = next_account(&mut iter)?;
88        let token2022_program = next_account(&mut iter)?;
89        let associated_token_program = next_account(&mut iter)?;
90        let pump_amm_event_authority = next_account(&mut iter)?;
91        let rent = next_account(&mut iter)?;
92        let event_authority = next_account(&mut iter)?;
93        let program = next_account(&mut iter)?;
94
95        let remaining = iter.as_slice();
96
97        Some(MigrateV2InstructionAccounts {
98            global,
99            withdraw_authority,
100            base_mint,
101            quote_mint,
102            bonding_curve,
103            associated_base_bonding_curve,
104            associated_quote_bonding_curve,
105            user,
106            system_program,
107            pump_amm,
108            pool,
109            pool_authority,
110            pool_authority_mint_account,
111            pool_authority_quote_account,
112            amm_global_config,
113            lp_mint,
114            user_pool_token_account,
115            pool_base_token_account,
116            pool_quote_token_account,
117            base_token_program,
118            quote_token_program,
119            token2022_program,
120            associated_token_program,
121            pump_amm_event_authority,
122            rent,
123            event_authority,
124            program,
125            remaining: remaining.to_vec(),
126        })
127    }
128}