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