carbon_sage_starbased_decoder/instructions/
close_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 CloseCraftingProcess {
12 pub input: KeyIndexInput,
13}
14
15#[derive(Debug, Clone, PartialEq)]
16#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
17pub struct CloseCraftingProcessInstructionAccounts {
18 pub funds_to: solana_pubkey::Pubkey,
19 pub starbase: solana_pubkey::Pubkey,
20 pub starbase_player: solana_pubkey::Pubkey,
21 pub crafting_instance: solana_pubkey::Pubkey,
22 pub crafting_process: solana_pubkey::Pubkey,
23 pub crafting_recipe: solana_pubkey::Pubkey,
24 pub crafting_facility: solana_pubkey::Pubkey,
25 pub key: solana_pubkey::Pubkey,
26 pub profile: solana_pubkey::Pubkey,
27 pub profile_faction: solana_pubkey::Pubkey,
28 pub game_id: solana_pubkey::Pubkey,
29 pub game_state: solana_pubkey::Pubkey,
30 pub user_points_account: solana_pubkey::Pubkey,
31 pub points_category: solana_pubkey::Pubkey,
32 pub points_modifier_account: solana_pubkey::Pubkey,
33 pub progression_config: solana_pubkey::Pubkey,
34 pub points_program: solana_pubkey::Pubkey,
35 pub crafting_program: solana_pubkey::Pubkey,
36 pub remaining: Vec<solana_instruction::AccountMeta>,
37}
38
39impl CloseCraftingProcess {
40 pub fn decode(data: &[u8]) -> Option<Self> {
41 if data.len() < 8 {
42 return None;
43 }
44 let discriminator = &data[0..8];
45 if discriminator != &[202, 21, 225, 156, 15, 4, 106, 93] {
46 return None;
47 }
48
49 let data_slice = data;
50
51 let data_slice = &data_slice[8..];
52
53 Self::deserialize(data_slice)
54 }
55}
56
57impl ArrangeAccounts for CloseCraftingProcess {
58 type ArrangedAccounts = CloseCraftingProcessInstructionAccounts;
59
60 fn arrange_accounts(
61 accounts: &[solana_instruction::AccountMeta],
62 ) -> Option<Self::ArrangedAccounts> {
63 let mut iter = accounts.iter();
64
65 let funds_to = next_account(&mut iter)?;
66 let starbase = next_account(&mut iter)?;
67 let starbase_player = next_account(&mut iter)?;
68 let crafting_instance = next_account(&mut iter)?;
69 let crafting_process = next_account(&mut iter)?;
70 let crafting_recipe = next_account(&mut iter)?;
71 let crafting_facility = next_account(&mut iter)?;
72 let key = next_account(&mut iter)?;
73 let profile = next_account(&mut iter)?;
74 let profile_faction = next_account(&mut iter)?;
75 let game_id = next_account(&mut iter)?;
76 let game_state = next_account(&mut iter)?;
77 let user_points_account = next_account(&mut iter)?;
78 let points_category = next_account(&mut iter)?;
79 let points_modifier_account = next_account(&mut iter)?;
80 let progression_config = next_account(&mut iter)?;
81 let points_program = next_account(&mut iter)?;
82 let crafting_program = next_account(&mut iter)?;
83
84 let remaining = iter.as_slice();
85
86 Some(CloseCraftingProcessInstructionAccounts {
87 funds_to,
88 starbase,
89 starbase_player,
90 crafting_instance,
91 crafting_process,
92 crafting_recipe,
93 crafting_facility,
94 key,
95 profile,
96 profile_faction,
97 game_id,
98 game_state,
99 user_points_account,
100 points_category,
101 points_modifier_account,
102 progression_config,
103 points_program,
104 crafting_program,
105 remaining: remaining.to_vec(),
106 })
107 }
108}