carbon_score_decoder/instructions/
process_withdraw_arms.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 ProcessWithdrawArms {
11    pub staking_bump: u8,
12    pub scorevars_bump: u8,
13    pub scorevars_ship_bump: u8,
14    pub escrow_auth_bump: u8,
15    pub escrow_bump: u8,
16}
17
18#[derive(Debug, Clone, PartialEq)]
19#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
20pub struct ProcessWithdrawArmsInstructionAccounts {
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 arms_token_account_escrow: solana_pubkey::Pubkey,
26    pub arms_token_account_return: solana_pubkey::Pubkey,
27    pub arms_mint: solana_pubkey::Pubkey,
28    pub escrow_authority: solana_pubkey::Pubkey,
29    pub token_program: solana_pubkey::Pubkey,
30    pub clock: solana_pubkey::Pubkey,
31    pub ship_mint: solana_pubkey::Pubkey,
32    pub remaining: Vec<solana_instruction::AccountMeta>,
33}
34
35impl ProcessWithdrawArms {
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 != &[34, 148, 183, 222, 204, 221, 91, 219] {
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 ProcessWithdrawArms {
54    type ArrangedAccounts = ProcessWithdrawArmsInstructionAccounts;
55
56    fn arrange_accounts(
57        accounts: &[solana_instruction::AccountMeta],
58    ) -> Option<Self::ArrangedAccounts> {
59        let mut iter = accounts.iter();
60
61        let player_account = next_account(&mut iter)?;
62        let ship_staking_account = next_account(&mut iter)?;
63        let score_vars_account = next_account(&mut iter)?;
64        let score_vars_ship_account = next_account(&mut iter)?;
65        let arms_token_account_escrow = next_account(&mut iter)?;
66        let arms_token_account_return = next_account(&mut iter)?;
67        let arms_mint = next_account(&mut iter)?;
68        let escrow_authority = next_account(&mut iter)?;
69        let token_program = next_account(&mut iter)?;
70        let clock = next_account(&mut iter)?;
71        let ship_mint = next_account(&mut iter)?;
72
73        let remaining = iter.as_slice();
74
75        Some(ProcessWithdrawArmsInstructionAccounts {
76            player_account,
77            ship_staking_account,
78            score_vars_account,
79            score_vars_ship_account,
80            arms_token_account_escrow,
81            arms_token_account_return,
82            arms_mint,
83            escrow_authority,
84            token_program,
85            clock,
86            ship_mint,
87            remaining: remaining.to_vec(),
88        })
89    }
90}