carbon_pumpfun_decoder/instructions/
set_creator.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0xfe94ff70cf8eaaa5")]
7pub struct SetCreator {
8    pub creator: solana_pubkey::Pubkey,
9}
10
11#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
12pub struct SetCreatorInstructionAccounts {
13    pub set_creator_authority: solana_pubkey::Pubkey,
14    pub global: solana_pubkey::Pubkey,
15    pub mint: solana_pubkey::Pubkey,
16    pub metadata: solana_pubkey::Pubkey,
17    pub bonding_curve: solana_pubkey::Pubkey,
18    pub event_authority: solana_pubkey::Pubkey,
19    pub program: solana_pubkey::Pubkey,
20}
21
22impl carbon_core::deserialize::ArrangeAccounts for SetCreator {
23    type ArrangedAccounts = SetCreatorInstructionAccounts;
24
25    fn arrange_accounts(
26        accounts: &[solana_instruction::AccountMeta],
27    ) -> Option<Self::ArrangedAccounts> {
28        let [set_creator_authority, global, mint, metadata, bonding_curve, event_authority, program, _remaining @ ..] =
29            accounts
30        else {
31            return None;
32        };
33
34        Some(SetCreatorInstructionAccounts {
35            set_creator_authority: set_creator_authority.pubkey,
36            global: global.pubkey,
37            mint: mint.pubkey,
38            metadata: metadata.pubkey,
39            bonding_curve: bonding_curve.pubkey,
40            event_authority: event_authority.pubkey,
41            program: program.pubkey,
42        })
43    }
44}