Skip to main content

carbon_sage_starbased_decoder/instructions/
create_crafting_process.rs

1//! This code was AUTOGENERATED using the Codama library.
2use crate::types::StarbaseCreateCraftingProcessInput;
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 CreateCraftingProcess {
12    pub input: StarbaseCreateCraftingProcessInput,
13}
14
15#[derive(Debug, Clone, PartialEq)]
16#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
17pub struct CreateCraftingProcessInstructionAccounts {
18    pub funder: 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_facility: solana_pubkey::Pubkey,
23    pub crafting_process: solana_pubkey::Pubkey,
24    pub crafting_recipe: solana_pubkey::Pubkey,
25    pub crafting_domain: solana_pubkey::Pubkey,
26    pub key: solana_pubkey::Pubkey,
27    pub profile: solana_pubkey::Pubkey,
28    pub profile_faction: solana_pubkey::Pubkey,
29    pub game_id: solana_pubkey::Pubkey,
30    pub game_state: solana_pubkey::Pubkey,
31    pub crafting_program: solana_pubkey::Pubkey,
32    pub system_program: solana_pubkey::Pubkey,
33    pub remaining: Vec<solana_instruction::AccountMeta>,
34}
35
36impl CreateCraftingProcess {
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 != &[54, 25, 3, 71, 90, 215, 99, 108] {
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 CreateCraftingProcess {
55    type ArrangedAccounts = CreateCraftingProcessInstructionAccounts;
56
57    fn arrange_accounts(
58        accounts: &[solana_instruction::AccountMeta],
59    ) -> Option<Self::ArrangedAccounts> {
60        let mut iter = accounts.iter();
61
62        let funder = next_account(&mut iter)?;
63        let starbase = next_account(&mut iter)?;
64        let starbase_player = next_account(&mut iter)?;
65        let crafting_instance = next_account(&mut iter)?;
66        let crafting_facility = next_account(&mut iter)?;
67        let crafting_process = next_account(&mut iter)?;
68        let crafting_recipe = next_account(&mut iter)?;
69        let crafting_domain = next_account(&mut iter)?;
70        let key = next_account(&mut iter)?;
71        let profile = next_account(&mut iter)?;
72        let profile_faction = next_account(&mut iter)?;
73        let game_id = next_account(&mut iter)?;
74        let game_state = next_account(&mut iter)?;
75        let crafting_program = next_account(&mut iter)?;
76        let system_program = next_account(&mut iter)?;
77
78        let remaining = iter.as_slice();
79
80        Some(CreateCraftingProcessInstructionAccounts {
81            funder,
82            starbase,
83            starbase_player,
84            crafting_instance,
85            crafting_facility,
86            crafting_process,
87            crafting_recipe,
88            crafting_domain,
89            key,
90            profile,
91            profile_faction,
92            game_id,
93            game_state,
94            crafting_program,
95            system_program,
96            remaining: remaining.to_vec(),
97        })
98    }
99}