carbon_wavebreak_decoder/instructions/
create_lockedlaunch.rs

1use 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 = "0x28")]
7pub struct CreateLockedlaunch {
8    pub name: String,
9    pub symbol: String,
10    pub uri: String,
11}
12
13#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
14pub struct CreateLockedlaunchInstructionAccounts {
15    pub creator: solana_pubkey::Pubkey,
16    pub bonding_curve: solana_pubkey::Pubkey,
17    pub base_mint: solana_pubkey::Pubkey,
18    pub quote_mint: solana_pubkey::Pubkey,
19    pub quote_vault: solana_pubkey::Pubkey,
20    pub mint_config: solana_pubkey::Pubkey,
21    pub metadata: solana_pubkey::Pubkey,
22    pub system_program: solana_pubkey::Pubkey,
23    pub base_token_program: solana_pubkey::Pubkey,
24    pub quote_token_program: solana_pubkey::Pubkey,
25    pub ata_program: solana_pubkey::Pubkey,
26    pub metaplex_program: solana_pubkey::Pubkey,
27}
28
29impl carbon_core::deserialize::ArrangeAccounts for CreateLockedlaunch {
30    type ArrangedAccounts = CreateLockedlaunchInstructionAccounts;
31
32    fn arrange_accounts(
33        accounts: &[solana_instruction::AccountMeta],
34    ) -> Option<Self::ArrangedAccounts> {
35        let mut iter = accounts.iter();
36        let creator = next_account(&mut iter)?;
37        let bonding_curve = next_account(&mut iter)?;
38        let base_mint = next_account(&mut iter)?;
39        let quote_mint = next_account(&mut iter)?;
40        let quote_vault = next_account(&mut iter)?;
41        let mint_config = next_account(&mut iter)?;
42        let metadata = next_account(&mut iter)?;
43        let system_program = next_account(&mut iter)?;
44        let base_token_program = next_account(&mut iter)?;
45        let quote_token_program = next_account(&mut iter)?;
46        let ata_program = next_account(&mut iter)?;
47        let metaplex_program = next_account(&mut iter)?;
48
49        Some(CreateLockedlaunchInstructionAccounts {
50            creator,
51            bonding_curve,
52            base_mint,
53            quote_mint,
54            quote_vault,
55            mint_config,
56            metadata,
57            system_program,
58            base_token_program,
59            quote_token_program,
60            ata_program,
61            metaplex_program,
62        })
63    }
64}