carbon_score_decoder/instructions/
process_withdraw_fuel.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 ProcessWithdrawFuel {
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 ProcessWithdrawFuelInstructionAccounts {
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 fuel_token_account_escrow: solana_pubkey::Pubkey,
26    pub fuel_token_account_return: solana_pubkey::Pubkey,
27    pub fuel_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 ProcessWithdrawFuel {
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, 147, 147, 163, 32, 221, 161, 176] {
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 ProcessWithdrawFuel {
54    type ArrangedAccounts = ProcessWithdrawFuelInstructionAccounts;
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 fuel_token_account_escrow = next_account(&mut iter)?;
66        let fuel_token_account_return = next_account(&mut iter)?;
67        let fuel_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(ProcessWithdrawFuelInstructionAccounts {
76            player_account,
77            ship_staking_account,
78            score_vars_account,
79            score_vars_ship_account,
80            fuel_token_account_escrow,
81            fuel_token_account_return,
82            fuel_mint,
83            escrow_authority,
84            token_program,
85            clock,
86            ship_mint,
87            remaining: remaining.to_vec(),
88        })
89    }
90}