carbon_score_decoder/instructions/
process_close_accounts.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 ProcessCloseAccounts {
11    pub staking_bump: u8,
12    pub scorevars_bump: u8,
13    pub ship_bump: u8,
14    pub fuel_bump: u8,
15    pub food_bump: u8,
16    pub arms_bump: u8,
17    pub escrow_auth_bump: u8,
18}
19
20#[derive(Debug, Clone, PartialEq)]
21#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
22pub struct ProcessCloseAccountsInstructionAccounts {
23    pub player_account: solana_pubkey::Pubkey,
24    pub ship_staking_account: solana_pubkey::Pubkey,
25    pub score_vars_account: solana_pubkey::Pubkey,
26    pub ship_token_account_escrow: solana_pubkey::Pubkey,
27    pub fuel_token_account_escrow: solana_pubkey::Pubkey,
28    pub food_token_account_escrow: solana_pubkey::Pubkey,
29    pub arms_token_account_escrow: solana_pubkey::Pubkey,
30    pub escrow_authority: solana_pubkey::Pubkey,
31    pub token_program: solana_pubkey::Pubkey,
32    pub system_program: solana_pubkey::Pubkey,
33    pub ship_mint: solana_pubkey::Pubkey,
34    pub fuel_mint: solana_pubkey::Pubkey,
35    pub food_mint: solana_pubkey::Pubkey,
36    pub arms_mint: solana_pubkey::Pubkey,
37    pub clock: solana_pubkey::Pubkey,
38    pub remaining: Vec<solana_instruction::AccountMeta>,
39}
40
41impl ProcessCloseAccounts {
42    pub fn decode(data: &[u8]) -> Option<Self> {
43        if data.len() < 8 {
44            return None;
45        }
46        let discriminator = &data[0..8];
47        if discriminator != &[172, 2, 197, 170, 113, 225, 190, 90] {
48            return None;
49        }
50
51        let data_slice = data;
52
53        let data_slice = &data_slice[8..];
54
55        Self::deserialize(data_slice)
56    }
57}
58
59impl ArrangeAccounts for ProcessCloseAccounts {
60    type ArrangedAccounts = ProcessCloseAccountsInstructionAccounts;
61
62    fn arrange_accounts(
63        accounts: &[solana_instruction::AccountMeta],
64    ) -> Option<Self::ArrangedAccounts> {
65        let mut iter = accounts.iter();
66
67        let player_account = next_account(&mut iter)?;
68        let ship_staking_account = next_account(&mut iter)?;
69        let score_vars_account = next_account(&mut iter)?;
70        let ship_token_account_escrow = next_account(&mut iter)?;
71        let fuel_token_account_escrow = next_account(&mut iter)?;
72        let food_token_account_escrow = next_account(&mut iter)?;
73        let arms_token_account_escrow = next_account(&mut iter)?;
74        let escrow_authority = next_account(&mut iter)?;
75        let token_program = next_account(&mut iter)?;
76        let system_program = next_account(&mut iter)?;
77        let ship_mint = next_account(&mut iter)?;
78        let fuel_mint = next_account(&mut iter)?;
79        let food_mint = next_account(&mut iter)?;
80        let arms_mint = next_account(&mut iter)?;
81        let clock = next_account(&mut iter)?;
82
83        let remaining = iter.as_slice();
84
85        Some(ProcessCloseAccountsInstructionAccounts {
86            player_account,
87            ship_staking_account,
88            score_vars_account,
89            ship_token_account_escrow,
90            fuel_token_account_escrow,
91            food_token_account_escrow,
92            arms_token_account_escrow,
93            escrow_authority,
94            token_program,
95            system_program,
96            ship_mint,
97            fuel_mint,
98            food_mint,
99            arms_mint,
100            clock,
101            remaining: remaining.to_vec(),
102        })
103    }
104}