carbon_score_decoder/instructions/
process_harvest.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 ProcessHarvest {
11    pub staking_bump: u8,
12    pub scorevars_ship_bump: u8,
13    pub treasury_bump: u8,
14    pub treasury_auth_bump: u8,
15}
16
17#[derive(Debug, Clone, PartialEq)]
18#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
19pub struct ProcessHarvestInstructionAccounts {
20    pub player_account: solana_pubkey::Pubkey,
21    pub ship_staking_account: solana_pubkey::Pubkey,
22    pub score_vars_ship_account: solana_pubkey::Pubkey,
23    pub player_atlas_token_account: solana_pubkey::Pubkey,
24    pub treasury_token_account: solana_pubkey::Pubkey,
25    pub treasury_authority_account: solana_pubkey::Pubkey,
26    pub token_program: solana_pubkey::Pubkey,
27    pub clock: solana_pubkey::Pubkey,
28    pub ship_mint: solana_pubkey::Pubkey,
29    pub remaining: Vec<solana_instruction::AccountMeta>,
30}
31
32impl ProcessHarvest {
33    pub fn decode(data: &[u8]) -> Option<Self> {
34        if data.len() < 8 {
35            return None;
36        }
37        let discriminator = &data[0..8];
38        if discriminator != &[191, 70, 102, 41, 226, 36, 127, 160] {
39            return None;
40        }
41
42        let data_slice = data;
43
44        let data_slice = &data_slice[8..];
45
46        Self::deserialize(data_slice)
47    }
48}
49
50impl ArrangeAccounts for ProcessHarvest {
51    type ArrangedAccounts = ProcessHarvestInstructionAccounts;
52
53    fn arrange_accounts(
54        accounts: &[solana_instruction::AccountMeta],
55    ) -> Option<Self::ArrangedAccounts> {
56        let mut iter = accounts.iter();
57
58        let player_account = next_account(&mut iter)?;
59        let ship_staking_account = next_account(&mut iter)?;
60        let score_vars_ship_account = next_account(&mut iter)?;
61        let player_atlas_token_account = next_account(&mut iter)?;
62        let treasury_token_account = next_account(&mut iter)?;
63        let treasury_authority_account = next_account(&mut iter)?;
64        let token_program = next_account(&mut iter)?;
65        let clock = next_account(&mut iter)?;
66        let ship_mint = next_account(&mut iter)?;
67
68        let remaining = iter.as_slice();
69
70        Some(ProcessHarvestInstructionAccounts {
71            player_account,
72            ship_staking_account,
73            score_vars_ship_account,
74            player_atlas_token_account,
75            treasury_token_account,
76            treasury_authority_account,
77            token_program,
78            clock,
79            ship_mint,
80            remaining: remaining.to_vec(),
81        })
82    }
83}