carbon_points_decoder/accounts/
points_modifier.rs1use carbon_core::CarbonDeserialize;
3use carbon_core::borsh;
4use carbon_core::deserialize::CarbonDeserialize;
5use solana_pubkey::Pubkey;
6
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq)]
11pub struct PointsModifier {
12 pub version: u8,
14 pub point_category: Pubkey,
16 pub can_increment: u8,
18 pub can_decrement: u8,
20}
21
22impl PointsModifier {
23 pub fn decode(data: &[u8]) -> Option<Self> {
24 if data.len() < 8 {
25 return None;
26 }
27 let discriminator = &data[0..8];
28 if discriminator != &[191, 227, 217, 178, 58, 205, 44, 39] {
29 return None;
30 }
31
32 let data_slice = data;
33
34 let data_slice = &data_slice[8..];
35
36 Self::deserialize(data_slice)
37 }
38}