carbon_score_decoder/instructions/
process_withdraw_ships.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 ProcessWithdrawShips {
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    pub treasury_auth_bump: u8,
17    pub treasury_bump: u8,
18}
19
20#[derive(Debug, Clone, PartialEq)]
21#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
22pub struct ProcessWithdrawShipsInstructionAccounts {
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 score_vars_ship_account: solana_pubkey::Pubkey,
27    pub player_atlas_token_account: solana_pubkey::Pubkey,
28    pub ship_token_account_escrow: solana_pubkey::Pubkey,
29    pub ship_token_account_return: solana_pubkey::Pubkey,
30    pub toolkit_token_account_source: solana_pubkey::Pubkey,
31    pub treasury_token_account: solana_pubkey::Pubkey,
32    pub treasury_authority_account: solana_pubkey::Pubkey,
33    pub escrow_authority: solana_pubkey::Pubkey,
34    pub token_program: solana_pubkey::Pubkey,
35    pub system_program: solana_pubkey::Pubkey,
36    pub clock: solana_pubkey::Pubkey,
37    pub ship_mint: solana_pubkey::Pubkey,
38    pub toolkit_mint: solana_pubkey::Pubkey,
39    pub remaining: Vec<solana_instruction::AccountMeta>,
40}
41
42impl ProcessWithdrawShips {
43    pub fn decode(data: &[u8]) -> Option<Self> {
44        if data.len() < 8 {
45            return None;
46        }
47        let discriminator = &data[0..8];
48        if discriminator != &[75, 198, 23, 209, 171, 228, 207, 85] {
49            return None;
50        }
51
52        let data_slice = data;
53
54        let data_slice = &data_slice[8..];
55
56        Self::deserialize(data_slice)
57    }
58}
59
60impl ArrangeAccounts for ProcessWithdrawShips {
61    type ArrangedAccounts = ProcessWithdrawShipsInstructionAccounts;
62
63    fn arrange_accounts(
64        accounts: &[solana_instruction::AccountMeta],
65    ) -> Option<Self::ArrangedAccounts> {
66        let mut iter = accounts.iter();
67
68        let player_account = next_account(&mut iter)?;
69        let ship_staking_account = next_account(&mut iter)?;
70        let score_vars_account = next_account(&mut iter)?;
71        let score_vars_ship_account = next_account(&mut iter)?;
72        let player_atlas_token_account = next_account(&mut iter)?;
73        let ship_token_account_escrow = next_account(&mut iter)?;
74        let ship_token_account_return = next_account(&mut iter)?;
75        let toolkit_token_account_source = next_account(&mut iter)?;
76        let treasury_token_account = next_account(&mut iter)?;
77        let treasury_authority_account = next_account(&mut iter)?;
78        let escrow_authority = next_account(&mut iter)?;
79        let token_program = next_account(&mut iter)?;
80        let system_program = next_account(&mut iter)?;
81        let clock = next_account(&mut iter)?;
82        let ship_mint = next_account(&mut iter)?;
83        let toolkit_mint = next_account(&mut iter)?;
84
85        let remaining = iter.as_slice();
86
87        Some(ProcessWithdrawShipsInstructionAccounts {
88            player_account,
89            ship_staking_account,
90            score_vars_account,
91            score_vars_ship_account,
92            player_atlas_token_account,
93            ship_token_account_escrow,
94            ship_token_account_return,
95            toolkit_token_account_source,
96            treasury_token_account,
97            treasury_authority_account,
98            escrow_authority,
99            token_program,
100            system_program,
101            clock,
102            ship_mint,
103            toolkit_mint,
104            remaining: remaining.to_vec(),
105        })
106    }
107}