carbon_wavebreak_decoder/instructions/
bonding_curve_initialize.rs1use super::super::types::*;
2
3use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
4
5#[derive(
6 CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
7)]
8#[carbon(discriminator = "0x30")]
9pub struct BondingCurveInitialize {
10 pub start_price: u128,
11 pub end_price: u128,
12 pub control_points: [u16; 4],
13 pub creator: solana_pubkey::Pubkey,
14 pub graduation_methods: [GraduationMethod; 8],
15 pub swap_fee_bps: u16,
16 pub quote_fee_bps: u16,
17 pub base_fee_bps: u16,
18 pub launch_slot: u64,
19 pub creator_reward: u64,
20 pub graduation_reward: u64,
21 pub graduation_target: u64,
22 pub graduation_slot: u64,
23 pub min_reserve_bps: u16,
24 pub buy_requires_permission: bool,
25 pub buy_permission_bitmap: [u8; 32],
26 pub sell_requires_permission: bool,
27 pub sell_permission_bitmap: [u8; 32],
28 pub max_buy_amount: u64,
29 pub max_sell_amount: u64,
30 pub retain_mint_authority: bool,
31 pub base_allocation_bps: u16,
32}
33
34#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
35pub struct BondingCurveInitializeInstructionAccounts {
36 pub authority: solana_pubkey::Pubkey,
37 pub bonding_curve: solana_pubkey::Pubkey,
38 pub base_mint: solana_pubkey::Pubkey,
39 pub quote_mint: solana_pubkey::Pubkey,
40 pub quote_vault: solana_pubkey::Pubkey,
41 pub authority_config: solana_pubkey::Pubkey,
42 pub system_program: solana_pubkey::Pubkey,
43 pub base_token_program: solana_pubkey::Pubkey,
44 pub quote_token_program: solana_pubkey::Pubkey,
45 pub ata_program: solana_pubkey::Pubkey,
46}
47
48impl carbon_core::deserialize::ArrangeAccounts for BondingCurveInitialize {
49 type ArrangedAccounts = BondingCurveInitializeInstructionAccounts;
50
51 fn arrange_accounts(
52 accounts: &[solana_instruction::AccountMeta],
53 ) -> Option<Self::ArrangedAccounts> {
54 let mut iter = accounts.iter();
55 let authority = next_account(&mut iter)?;
56 let bonding_curve = next_account(&mut iter)?;
57 let base_mint = next_account(&mut iter)?;
58 let quote_mint = next_account(&mut iter)?;
59 let quote_vault = next_account(&mut iter)?;
60 let authority_config = next_account(&mut iter)?;
61 let system_program = next_account(&mut iter)?;
62 let base_token_program = next_account(&mut iter)?;
63 let quote_token_program = next_account(&mut iter)?;
64 let ata_program = next_account(&mut iter)?;
65
66 Some(BondingCurveInitializeInstructionAccounts {
67 authority,
68 bonding_curve,
69 base_mint,
70 quote_mint,
71 quote_vault,
72 authority_config,
73 system_program,
74 base_token_program,
75 quote_token_program,
76 ata_program,
77 })
78 }
79}