carbon_wavebreak_decoder/instructions/
create_lockedlaunch.rs1use carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts};
3#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
5pub struct CreateLockedlaunch {
6 pub name: String,
7 pub symbol: String,
8 pub uri: String,
9}
10
11#[derive(Debug, Clone, PartialEq)]
12#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13pub struct CreateLockedlaunchInstructionAccounts {
14 pub creator: solana_pubkey::Pubkey,
15 pub bonding_curve: solana_pubkey::Pubkey,
16 pub base_mint: solana_pubkey::Pubkey,
17 pub quote_mint: solana_pubkey::Pubkey,
18 pub quote_vault: solana_pubkey::Pubkey,
19 pub mint_config: solana_pubkey::Pubkey,
20 pub metadata: solana_pubkey::Pubkey,
21 pub system_program: solana_pubkey::Pubkey,
22 pub base_token_program: solana_pubkey::Pubkey,
23 pub quote_token_program: solana_pubkey::Pubkey,
24 pub ata_program: solana_pubkey::Pubkey,
25 pub metaplex_program: solana_pubkey::Pubkey,
26 pub remaining: Vec<solana_instruction::AccountMeta>,
27}
28
29impl CreateLockedlaunch {
30 pub fn decode(data: &[u8]) -> Option<Self> {
31 if data.is_empty() {
32 return None;
33 }
34 let discriminator = &data[0..1];
35 if discriminator != [40] {
36 return None;
37 }
38
39 let mut data_slice = data;
40
41 data_slice = &data_slice[1..];
42
43 borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
44 }
45}
46
47impl ArrangeAccounts for CreateLockedlaunch {
48 type ArrangedAccounts = CreateLockedlaunchInstructionAccounts;
49
50 fn arrange_accounts(
51 accounts: &[solana_instruction::AccountMeta],
52 ) -> Option<Self::ArrangedAccounts> {
53 let mut iter = accounts.iter();
54
55 let creator = 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 mint_config = next_account(&mut iter)?;
61 let metadata = next_account(&mut iter)?;
62 let system_program = next_account(&mut iter)?;
63 let base_token_program = next_account(&mut iter)?;
64 let quote_token_program = next_account(&mut iter)?;
65 let ata_program = next_account(&mut iter)?;
66 let metaplex_program = next_account(&mut iter)?;
67
68 let remaining = iter.as_slice();
69
70 Some(CreateLockedlaunchInstructionAccounts {
71 creator,
72 bonding_curve,
73 base_mint,
74 quote_mint,
75 quote_vault,
76 mint_config,
77 metadata,
78 system_program,
79 base_token_program,
80 quote_token_program,
81 ata_program,
82 metaplex_program,
83 remaining: remaining.to_vec(),
84 })
85 }
86}