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