carbon_wavebreak_decoder/instructions/
token_refund.rs1use 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}