carbon_score_decoder/instructions/
process_initial_deposit.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 ProcessInitialDeposit {
11    pub staking_bump: u8,
12    pub scorevars_ship_bump: u8,
13    pub escrow_auth_bump: u8,
14    pub escrow_bump: u8,
15    pub ship_quantity: u64,
16}
17
18#[derive(Debug, Clone, PartialEq)]
19#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
20pub struct ProcessInitialDepositInstructionAccounts {
21    pub player_account: solana_pubkey::Pubkey,
22    pub ship_staking_account: solana_pubkey::Pubkey,
23    pub score_vars_ship_account: solana_pubkey::Pubkey,
24    pub player_faction_account: solana_pubkey::Pubkey,
25    pub escrow_authority: solana_pubkey::Pubkey,
26    pub system_program: solana_pubkey::Pubkey,
27    pub token_program: solana_pubkey::Pubkey,
28    pub clock: solana_pubkey::Pubkey,
29    pub rent: solana_pubkey::Pubkey,
30    pub ship_mint: solana_pubkey::Pubkey,
31    pub ship_token_account_source: solana_pubkey::Pubkey,
32    pub ship_token_account_escrow: solana_pubkey::Pubkey,
33    pub remaining: Vec<solana_instruction::AccountMeta>,
34}
35
36impl ProcessInitialDeposit {
37    pub fn decode(data: &[u8]) -> Option<Self> {
38        if data.len() < 8 {
39            return None;
40        }
41        let discriminator = &data[0..8];
42        if discriminator != &[251, 22, 44, 231, 201, 137, 218, 162] {
43            return None;
44        }
45
46        let data_slice = data;
47
48        let data_slice = &data_slice[8..];
49
50        Self::deserialize(data_slice)
51    }
52}
53
54impl ArrangeAccounts for ProcessInitialDeposit {
55    type ArrangedAccounts = ProcessInitialDepositInstructionAccounts;
56
57    fn arrange_accounts(
58        accounts: &[solana_instruction::AccountMeta],
59    ) -> Option<Self::ArrangedAccounts> {
60        let mut iter = accounts.iter();
61
62        let player_account = next_account(&mut iter)?;
63        let ship_staking_account = next_account(&mut iter)?;
64        let score_vars_ship_account = next_account(&mut iter)?;
65        let player_faction_account = next_account(&mut iter)?;
66        let escrow_authority = next_account(&mut iter)?;
67        let system_program = next_account(&mut iter)?;
68        let token_program = next_account(&mut iter)?;
69        let clock = next_account(&mut iter)?;
70        let rent = next_account(&mut iter)?;
71        let ship_mint = next_account(&mut iter)?;
72        let ship_token_account_source = next_account(&mut iter)?;
73        let ship_token_account_escrow = next_account(&mut iter)?;
74
75        let remaining = iter.as_slice();
76
77        Some(ProcessInitialDepositInstructionAccounts {
78            player_account,
79            ship_staking_account,
80            score_vars_ship_account,
81            player_faction_account,
82            escrow_authority,
83            system_program,
84            token_program,
85            clock,
86            rent,
87            ship_mint,
88            ship_token_account_source,
89            ship_token_account_escrow,
90            remaining: remaining.to_vec(),
91        })
92    }
93}