carbon_score_decoder/instructions/
process_initialize.rs

1//! This code was AUTOGENERATED using the Codama library.
2use carbon_core::CarbonDeserialize;
3use carbon_core::account_utils::next_account;
4use carbon_core::borsh;
5use carbon_core::deserialize::ArrangeAccounts;
6use carbon_core::deserialize::CarbonDeserialize;
7
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq, Eq, Hash)]
10pub struct ProcessInitialize {
11    pub bump: u8,
12    pub treasury_bump: u8,
13    pub treasury_auth_bump: u8,
14}
15
16#[derive(Debug, Clone, PartialEq)]
17#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
18pub struct ProcessInitializeInstructionAccounts {
19    pub update_authority_account: solana_pubkey::Pubkey,
20    pub score_vars_account: solana_pubkey::Pubkey,
21    pub token_program: solana_pubkey::Pubkey,
22    pub system_program: solana_pubkey::Pubkey,
23    pub rent: solana_pubkey::Pubkey,
24    pub treasury_token_account: solana_pubkey::Pubkey,
25    pub treasury_authority_account: solana_pubkey::Pubkey,
26    pub atlas_mint: solana_pubkey::Pubkey,
27    pub fuel_mint: solana_pubkey::Pubkey,
28    pub food_mint: solana_pubkey::Pubkey,
29    pub arms_mint: solana_pubkey::Pubkey,
30    pub toolkit_mint: solana_pubkey::Pubkey,
31    pub remaining: Vec<solana_instruction::AccountMeta>,
32}
33
34impl ProcessInitialize {
35    pub fn decode(data: &[u8]) -> Option<Self> {
36        if data.len() < 8 {
37            return None;
38        }
39        let discriminator = &data[0..8];
40        if discriminator != &[184, 88, 20, 173, 17, 51, 81, 133] {
41            return None;
42        }
43
44        let data_slice = data;
45
46        let data_slice = &data_slice[8..];
47
48        Self::deserialize(data_slice)
49    }
50}
51
52impl ArrangeAccounts for ProcessInitialize {
53    type ArrangedAccounts = ProcessInitializeInstructionAccounts;
54
55    fn arrange_accounts(
56        accounts: &[solana_instruction::AccountMeta],
57    ) -> Option<Self::ArrangedAccounts> {
58        let mut iter = accounts.iter();
59
60        let update_authority_account = next_account(&mut iter)?;
61        let score_vars_account = next_account(&mut iter)?;
62        let token_program = next_account(&mut iter)?;
63        let system_program = next_account(&mut iter)?;
64        let rent = next_account(&mut iter)?;
65        let treasury_token_account = next_account(&mut iter)?;
66        let treasury_authority_account = next_account(&mut iter)?;
67        let atlas_mint = next_account(&mut iter)?;
68        let fuel_mint = next_account(&mut iter)?;
69        let food_mint = next_account(&mut iter)?;
70        let arms_mint = next_account(&mut iter)?;
71        let toolkit_mint = next_account(&mut iter)?;
72
73        let remaining = iter.as_slice();
74
75        Some(ProcessInitializeInstructionAccounts {
76            update_authority_account,
77            score_vars_account,
78            token_program,
79            system_program,
80            rent,
81            treasury_token_account,
82            treasury_authority_account,
83            atlas_mint,
84            fuel_mint,
85            food_mint,
86            arms_mint,
87            toolkit_mint,
88            remaining: remaining.to_vec(),
89        })
90    }
91}