carbon_score_decoder/instructions/
process_repair.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 ProcessRepair {
11    pub staking_bump: u8,
12    pub scorevars_bump: u8,
13    pub scorevars_ship_bump: u8,
14    pub toolkit_quantity: u64,
15}
16
17#[derive(Debug, Clone, PartialEq)]
18#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
19pub struct ProcessRepairInstructionAccounts {
20    pub token_owner_account: solana_pubkey::Pubkey,
21    pub player_account: solana_pubkey::Pubkey,
22    pub ship_staking_account: solana_pubkey::Pubkey,
23    pub score_vars_account: solana_pubkey::Pubkey,
24    pub score_vars_ship_account: solana_pubkey::Pubkey,
25    pub system_program: solana_pubkey::Pubkey,
26    pub token_program: solana_pubkey::Pubkey,
27    pub clock: solana_pubkey::Pubkey,
28    pub rent: solana_pubkey::Pubkey,
29    pub ship_mint: solana_pubkey::Pubkey,
30    pub toolkit_mint: solana_pubkey::Pubkey,
31    pub toolkit_token_account_source: solana_pubkey::Pubkey,
32    pub remaining: Vec<solana_instruction::AccountMeta>,
33}
34
35impl ProcessRepair {
36    pub fn decode(data: &[u8]) -> Option<Self> {
37        if data.len() < 8 {
38            return None;
39        }
40        let discriminator = &data[0..8];
41        if discriminator != &[45, 221, 101, 143, 19, 154, 65, 60] {
42            return None;
43        }
44
45        let data_slice = data;
46
47        let data_slice = &data_slice[8..];
48
49        Self::deserialize(data_slice)
50    }
51}
52
53impl ArrangeAccounts for ProcessRepair {
54    type ArrangedAccounts = ProcessRepairInstructionAccounts;
55
56    fn arrange_accounts(
57        accounts: &[solana_instruction::AccountMeta],
58    ) -> Option<Self::ArrangedAccounts> {
59        let mut iter = accounts.iter();
60
61        let token_owner_account = next_account(&mut iter)?;
62        let player_account = next_account(&mut iter)?;
63        let ship_staking_account = next_account(&mut iter)?;
64        let score_vars_account = next_account(&mut iter)?;
65        let score_vars_ship_account = next_account(&mut iter)?;
66        let system_program = next_account(&mut iter)?;
67        let token_program = next_account(&mut iter)?;
68        let clock = next_account(&mut iter)?;
69        let rent = next_account(&mut iter)?;
70        let ship_mint = next_account(&mut iter)?;
71        let toolkit_mint = next_account(&mut iter)?;
72        let toolkit_token_account_source = next_account(&mut iter)?;
73
74        let remaining = iter.as_slice();
75
76        Some(ProcessRepairInstructionAccounts {
77            token_owner_account,
78            player_account,
79            ship_staking_account,
80            score_vars_account,
81            score_vars_ship_account,
82            system_program,
83            token_program,
84            clock,
85            rent,
86            ship_mint,
87            toolkit_mint,
88            toolkit_token_account_source,
89            remaining: remaining.to_vec(),
90        })
91    }
92}