carbon_wavebreak_decoder/instructions/
bonding_curve_close.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 = "0x33")]
7pub struct BondingCurveClose {}
8
9#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
10pub struct BondingCurveCloseInstructionAccounts {
11    pub authority: solana_pubkey::Pubkey,
12    pub creator: solana_pubkey::Pubkey,
13    pub fee_authority: solana_pubkey::Pubkey,
14    pub bonding_curve: solana_pubkey::Pubkey,
15    pub quote_mint: solana_pubkey::Pubkey,
16    pub quote_vault: solana_pubkey::Pubkey,
17    pub fee_authority_quote_ata: solana_pubkey::Pubkey,
18    pub base_mint: solana_pubkey::Pubkey,
19    pub authority_config: solana_pubkey::Pubkey,
20    pub quote_token_program: solana_pubkey::Pubkey,
21    pub base_token_program: solana_pubkey::Pubkey,
22    pub system_program: solana_pubkey::Pubkey,
23    pub ata_program: solana_pubkey::Pubkey,
24}
25
26impl carbon_core::deserialize::ArrangeAccounts for BondingCurveClose {
27    type ArrangedAccounts = BondingCurveCloseInstructionAccounts;
28
29    fn arrange_accounts(
30        accounts: &[solana_instruction::AccountMeta],
31    ) -> Option<Self::ArrangedAccounts> {
32        let mut iter = accounts.iter();
33        let authority = next_account(&mut iter)?;
34        let creator = next_account(&mut iter)?;
35        let fee_authority = next_account(&mut iter)?;
36        let bonding_curve = next_account(&mut iter)?;
37        let quote_mint = next_account(&mut iter)?;
38        let quote_vault = next_account(&mut iter)?;
39        let fee_authority_quote_ata = next_account(&mut iter)?;
40        let base_mint = next_account(&mut iter)?;
41        let authority_config = next_account(&mut iter)?;
42        let quote_token_program = next_account(&mut iter)?;
43        let base_token_program = next_account(&mut iter)?;
44        let system_program = next_account(&mut iter)?;
45        let ata_program = next_account(&mut iter)?;
46
47        Some(BondingCurveCloseInstructionAccounts {
48            authority,
49            creator,
50            fee_authority,
51            bonding_curve,
52            quote_mint,
53            quote_vault,
54            fee_authority_quote_ata,
55            base_mint,
56            authority_config,
57            quote_token_program,
58            base_token_program,
59            system_program,
60            ata_program,
61        })
62    }
63}