carbon_wavebreak_decoder/instructions/
mint_config_initialize.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 = "0x18")]
7pub struct MintConfigInitialize {
8    pub token_mint: solana_pubkey::Pubkey,
9    pub instruction_discriminator: u8,
10}
11
12#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
13pub struct MintConfigInitializeInstructionAccounts {
14    pub authority: solana_pubkey::Pubkey,
15    pub mint_config: solana_pubkey::Pubkey,
16    pub authority_config: solana_pubkey::Pubkey,
17    pub system_program: solana_pubkey::Pubkey,
18}
19
20impl carbon_core::deserialize::ArrangeAccounts for MintConfigInitialize {
21    type ArrangedAccounts = MintConfigInitializeInstructionAccounts;
22
23    fn arrange_accounts(
24        accounts: &[solana_instruction::AccountMeta],
25    ) -> Option<Self::ArrangedAccounts> {
26        let mut iter = accounts.iter();
27        let authority = next_account(&mut iter)?;
28        let mint_config = next_account(&mut iter)?;
29        let authority_config = next_account(&mut iter)?;
30        let system_program = next_account(&mut iter)?;
31
32        Some(MintConfigInitializeInstructionAccounts {
33            authority,
34            mint_config,
35            authority_config,
36            system_program,
37        })
38    }
39}