carbon_wavebreak_decoder/instructions/
graduate_manual.rs

1use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x21")]
7pub struct GraduateManual {}
8
9#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
10pub struct GraduateManualInstructionAccounts {
11    pub signer: solana_pubkey::Pubkey,
12    pub destination: solana_pubkey::Pubkey,
13    pub bonding_curve: solana_pubkey::Pubkey,
14    pub quote_mint: solana_pubkey::Pubkey,
15    pub quote_vault: solana_pubkey::Pubkey,
16    pub signer_quote_ata: solana_pubkey::Pubkey,
17    pub destination_quote_ata: solana_pubkey::Pubkey,
18    pub base_mint: solana_pubkey::Pubkey,
19    pub destination_base_ata: solana_pubkey::Pubkey,
20    pub system_program: solana_pubkey::Pubkey,
21    pub ata_program: solana_pubkey::Pubkey,
22    pub quote_token_program: solana_pubkey::Pubkey,
23    pub base_token_program: solana_pubkey::Pubkey,
24}
25
26impl carbon_core::deserialize::ArrangeAccounts for GraduateManual {
27    type ArrangedAccounts = GraduateManualInstructionAccounts;
28
29    fn arrange_accounts(
30        accounts: &[solana_instruction::AccountMeta],
31    ) -> Option<Self::ArrangedAccounts> {
32        let mut iter = accounts.iter();
33        let signer = next_account(&mut iter)?;
34        let destination = next_account(&mut iter)?;
35        let bonding_curve = next_account(&mut iter)?;
36        let quote_mint = next_account(&mut iter)?;
37        let quote_vault = next_account(&mut iter)?;
38        let signer_quote_ata = next_account(&mut iter)?;
39        let destination_quote_ata = next_account(&mut iter)?;
40        let base_mint = next_account(&mut iter)?;
41        let destination_base_ata = next_account(&mut iter)?;
42        let system_program = next_account(&mut iter)?;
43        let ata_program = next_account(&mut iter)?;
44        let quote_token_program = next_account(&mut iter)?;
45        let base_token_program = next_account(&mut iter)?;
46
47        Some(GraduateManualInstructionAccounts {
48            signer,
49            destination,
50            bonding_curve,
51            quote_mint,
52            quote_vault,
53            signer_quote_ata,
54            destination_quote_ata,
55            base_mint,
56            destination_base_ata,
57            system_program,
58            ata_program,
59            quote_token_program,
60            base_token_program,
61        })
62    }
63}