carbon_wavebreak_decoder/instructions/
create_launch.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 = "0x29")]
9pub struct CreateLaunch {
10 pub name: String,
11 pub symbol: String,
12 pub uri: String,
13 pub start_price: Option<u128>,
14 pub end_price: Option<u128>,
15 pub control_points: Option<[u16; 4]>,
16 pub graduation_target: Option<u64>,
17 pub graduation_methods: Option<[GraduationMethod; 8]>,
18 pub launch_slot: Option<u64>,
19 pub graduation_slot: Option<u64>,
20 pub base_allocation_bps: Option<u16>,
21}
22
23#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
24pub struct CreateLaunchInstructionAccounts {
25 pub creator: solana_pubkey::Pubkey,
26 pub bonding_curve: solana_pubkey::Pubkey,
27 pub base_mint: solana_pubkey::Pubkey,
28 pub quote_mint: solana_pubkey::Pubkey,
29 pub quote_vault: solana_pubkey::Pubkey,
30 pub mint_config: solana_pubkey::Pubkey,
31 pub metadata: solana_pubkey::Pubkey,
32 pub system_program: solana_pubkey::Pubkey,
33 pub base_token_program: solana_pubkey::Pubkey,
34 pub quote_token_program: solana_pubkey::Pubkey,
35 pub ata_program: solana_pubkey::Pubkey,
36 pub metaplex_program: solana_pubkey::Pubkey,
37}
38
39impl carbon_core::deserialize::ArrangeAccounts for CreateLaunch {
40 type ArrangedAccounts = CreateLaunchInstructionAccounts;
41
42 fn arrange_accounts(
43 accounts: &[solana_instruction::AccountMeta],
44 ) -> Option<Self::ArrangedAccounts> {
45 let mut iter = accounts.iter();
46 let creator = next_account(&mut iter)?;
47 let bonding_curve = next_account(&mut iter)?;
48 let base_mint = next_account(&mut iter)?;
49 let quote_mint = next_account(&mut iter)?;
50 let quote_vault = next_account(&mut iter)?;
51 let mint_config = next_account(&mut iter)?;
52 let metadata = next_account(&mut iter)?;
53 let system_program = next_account(&mut iter)?;
54 let base_token_program = next_account(&mut iter)?;
55 let quote_token_program = next_account(&mut iter)?;
56 let ata_program = next_account(&mut iter)?;
57 let metaplex_program = next_account(&mut iter)?;
58
59 Some(CreateLaunchInstructionAccounts {
60 creator,
61 bonding_curve,
62 base_mint,
63 quote_mint,
64 quote_vault,
65 mint_config,
66 metadata,
67 system_program,
68 base_token_program,
69 quote_token_program,
70 ata_program,
71 metaplex_program,
72 })
73 }
74}