carbon_pumpfun_decoder/instructions/
create.rs1use alloc::string::String;
2use carbon_core::{borsh, CarbonDeserialize};
3
4#[derive(
5 CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
6)]
7#[carbon(discriminator = "0x181ec828051c0777")]
8pub struct Create {
9 pub name: String,
10 pub symbol: String,
11 pub uri: String,
12 pub creator: solana_pubkey::Pubkey,
13}
14
15#[derive(Debug, PartialEq)]
16pub struct CreateInstructionAccounts {
17 pub mint: solana_pubkey::Pubkey,
18 pub mint_authority: solana_pubkey::Pubkey,
19 pub bonding_curve: solana_pubkey::Pubkey,
20 pub associated_bonding_curve: solana_pubkey::Pubkey,
21 pub global: solana_pubkey::Pubkey,
22 pub mpl_token_metadata: solana_pubkey::Pubkey,
23 pub metadata: solana_pubkey::Pubkey,
24 pub user: solana_pubkey::Pubkey,
25 pub system_program: solana_pubkey::Pubkey,
26 pub token_program: solana_pubkey::Pubkey,
27 pub associated_token_program: solana_pubkey::Pubkey,
28 pub rent: solana_pubkey::Pubkey,
29 pub event_authority: solana_pubkey::Pubkey,
30 pub program: solana_pubkey::Pubkey,
31}
32
33impl carbon_core::deserialize::ArrangeAccounts for Create {
34 type ArrangedAccounts = CreateInstructionAccounts;
35
36 fn arrange_accounts(
37 accounts: &[solana_instruction::AccountMeta],
38 ) -> Option<Self::ArrangedAccounts> {
39 let [mint, mint_authority, bonding_curve, associated_bonding_curve, global, mpl_token_metadata, metadata, user, system_program, token_program, associated_token_program, rent, event_authority, program, _remaining @ ..] =
40 accounts
41 else {
42 return None;
43 };
44
45 Some(CreateInstructionAccounts {
46 mint: mint.pubkey,
47 mint_authority: mint_authority.pubkey,
48 bonding_curve: bonding_curve.pubkey,
49 associated_bonding_curve: associated_bonding_curve.pubkey,
50 global: global.pubkey,
51 mpl_token_metadata: mpl_token_metadata.pubkey,
52 metadata: metadata.pubkey,
53 user: user.pubkey,
54 system_program: system_program.pubkey,
55 token_program: token_program.pubkey,
56 associated_token_program: associated_token_program.pubkey,
57 rent: rent.pubkey,
58 event_authority: event_authority.pubkey,
59 program: program.pubkey,
60 })
61 }
62}