carbon_crafting_decoder/accounts/
crafting_process.rs1use carbon_core::CarbonDeserialize;
3use carbon_core::borsh;
4use carbon_core::deserialize::CarbonDeserialize;
5use solana_pubkey::Pubkey;
6
7use crate::types::ProcessStatus;
8
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq)]
13pub struct CraftingProcess {
14 pub version: u8,
16 pub crafting_id: u64,
18 pub authority: Pubkey,
20 pub recipe: Pubkey,
22 pub crafting_facility: Pubkey,
24 pub inputs_checksum: [u8; 16],
26 pub outputs_checksum: [u8; 16],
28 pub quantity: u64,
30 pub status: ProcessStatus,
32 pub start_time: i64,
34 pub end_time: i64,
36 pub deny_permissionless_claiming: u8,
38 pub use_local_time: u8,
40 pub bump: u8,
42}
43
44impl CraftingProcess {
45 pub fn decode(data: &[u8]) -> Option<Self> {
46 if data.len() < 8 {
47 return None;
48 }
49 let discriminator = &data[0..8];
50 if discriminator != &[105, 184, 5, 105, 175, 112, 13, 169] {
51 return None;
52 }
53
54 let data_slice = data;
55
56 let data_slice = &data_slice[8..];
57
58 Self::deserialize(data_slice)
59 }
60}