Skip to main content

carbon_sage_starbased_decoder/instructions/
start_crafting_process.rs

1//! This code was AUTOGENERATED using the Codama library.
2use crate::types::KeyIndexInput;
3use carbon_core::CarbonDeserialize;
4use carbon_core::account_utils::next_account;
5use carbon_core::borsh;
6use carbon_core::deserialize::ArrangeAccounts;
7use carbon_core::deserialize::CarbonDeserialize;
8
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq, Eq, Hash)]
11pub struct StartCraftingProcess {
12    pub input: KeyIndexInput,
13}
14
15#[derive(Debug, Clone, PartialEq)]
16#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
17pub struct StartCraftingProcessInstructionAccounts {
18    pub starbase: solana_pubkey::Pubkey,
19    pub starbase_player: solana_pubkey::Pubkey,
20    pub crafting_instance: solana_pubkey::Pubkey,
21    pub crafting_process: solana_pubkey::Pubkey,
22    pub crafting_recipe: solana_pubkey::Pubkey,
23    pub crafting_facility: solana_pubkey::Pubkey,
24    pub key: solana_pubkey::Pubkey,
25    pub profile: solana_pubkey::Pubkey,
26    pub profile_faction: solana_pubkey::Pubkey,
27    pub game_id: solana_pubkey::Pubkey,
28    pub game_state: solana_pubkey::Pubkey,
29    pub crafting_program: solana_pubkey::Pubkey,
30    pub remaining: Vec<solana_instruction::AccountMeta>,
31}
32
33impl StartCraftingProcess {
34    pub fn decode(data: &[u8]) -> Option<Self> {
35        if data.len() < 8 {
36            return None;
37        }
38        let discriminator = &data[0..8];
39        if discriminator != &[64, 108, 109, 62, 9, 128, 138, 246] {
40            return None;
41        }
42
43        let data_slice = data;
44
45        let data_slice = &data_slice[8..];
46
47        Self::deserialize(data_slice)
48    }
49}
50
51impl ArrangeAccounts for StartCraftingProcess {
52    type ArrangedAccounts = StartCraftingProcessInstructionAccounts;
53
54    fn arrange_accounts(
55        accounts: &[solana_instruction::AccountMeta],
56    ) -> Option<Self::ArrangedAccounts> {
57        let mut iter = accounts.iter();
58
59        let starbase = next_account(&mut iter)?;
60        let starbase_player = next_account(&mut iter)?;
61        let crafting_instance = next_account(&mut iter)?;
62        let crafting_process = next_account(&mut iter)?;
63        let crafting_recipe = next_account(&mut iter)?;
64        let crafting_facility = next_account(&mut iter)?;
65        let key = next_account(&mut iter)?;
66        let profile = next_account(&mut iter)?;
67        let profile_faction = next_account(&mut iter)?;
68        let game_id = next_account(&mut iter)?;
69        let game_state = next_account(&mut iter)?;
70        let crafting_program = next_account(&mut iter)?;
71
72        let remaining = iter.as_slice();
73
74        Some(StartCraftingProcessInstructionAccounts {
75            starbase,
76            starbase_player,
77            crafting_instance,
78            crafting_process,
79            crafting_recipe,
80            crafting_facility,
81            key,
82            profile,
83            profile_faction,
84            game_id,
85            game_state,
86            crafting_program,
87            remaining: remaining.to_vec(),
88        })
89    }
90}