carbon_virtuals_decoder/instructions/
launch.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x99f15de116454a3d")]
7pub struct Launch {
8    pub symbol: String,
9    pub name: String,
10    pub uri: String,
11}
12
13pub struct LaunchInstructionAccounts {
14    pub creator: solana_sdk::pubkey::Pubkey,
15    pub creator_virtuals_ata: solana_sdk::pubkey::Pubkey,
16    pub token_mint: solana_sdk::pubkey::Pubkey,
17    pub platform_prototype: solana_sdk::pubkey::Pubkey,
18    pub platform_prototype_virtuals_ata: solana_sdk::pubkey::Pubkey,
19    pub vpool: solana_sdk::pubkey::Pubkey,
20    pub token_metadata: solana_sdk::pubkey::Pubkey,
21    pub metadata_program: solana_sdk::pubkey::Pubkey,
22    pub token_program: solana_sdk::pubkey::Pubkey,
23    pub associated_token_program: solana_sdk::pubkey::Pubkey,
24    pub system_program: solana_sdk::pubkey::Pubkey,
25    pub rent: solana_sdk::pubkey::Pubkey,
26}
27
28impl carbon_core::deserialize::ArrangeAccounts for Launch {
29    type ArrangedAccounts = LaunchInstructionAccounts;
30
31    fn arrange_accounts(
32        accounts: &[solana_sdk::instruction::AccountMeta],
33    ) -> Option<Self::ArrangedAccounts> {
34        let [creator, creator_virtuals_ata, token_mint, platform_prototype, platform_prototype_virtuals_ata, vpool, token_metadata, metadata_program, token_program, associated_token_program, system_program, rent, _remaining @ ..] =
35            accounts
36        else {
37            return None;
38        };
39
40        Some(LaunchInstructionAccounts {
41            creator: creator.pubkey,
42            creator_virtuals_ata: creator_virtuals_ata.pubkey,
43            token_mint: token_mint.pubkey,
44            platform_prototype: platform_prototype.pubkey,
45            platform_prototype_virtuals_ata: platform_prototype_virtuals_ata.pubkey,
46            vpool: vpool.pubkey,
47            token_metadata: token_metadata.pubkey,
48            metadata_program: metadata_program.pubkey,
49            token_program: token_program.pubkey,
50            associated_token_program: associated_token_program.pubkey,
51            system_program: system_program.pubkey,
52            rent: rent.pubkey,
53        })
54    }
55}