carbon_score_decoder/instructions/
process_initialize.rs1use 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}