carbon_sage_starbased_decoder/instructions/
start_crafting_process.rs1use 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}