carbon_score_decoder/instructions/
process_withdraw_fuel.rs1use 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}