carbon_crew_decoder/instructions/
mod.rs

1use super::CrewDecoder;
2pub mod mint_crew_member;
3pub mod redeem_crew_pack;
4pub mod register_crew_config;
5pub mod register_pack_tiers;
6pub mod register_pack_type;
7pub mod register_sft_redemption;
8pub mod update_pack_tiers;
9
10#[derive(
11    carbon_core::InstructionType,
12    serde::Serialize,
13    serde::Deserialize,
14    PartialEq,
15    Eq,
16    Debug,
17    Clone,
18    Hash,
19)]
20pub enum CrewInstruction {
21    MintCrewMember(mint_crew_member::MintCrewMember),
22    RedeemCrewPack(redeem_crew_pack::RedeemCrewPack),
23    RegisterCrewConfig(register_crew_config::RegisterCrewConfig),
24    RegisterPackTiers(register_pack_tiers::RegisterPackTiers),
25    RegisterPackType(register_pack_type::RegisterPackType),
26    RegisterSftRedemption(register_sft_redemption::RegisterSftRedemption),
27    UpdatePackTiers(update_pack_tiers::UpdatePackTiers),
28}
29
30impl<'a> carbon_core::instruction::InstructionDecoder<'a> for CrewDecoder {
31    type InstructionType = CrewInstruction;
32
33    fn decode_instruction(
34        &self,
35        instruction: &solana_instruction::Instruction,
36    ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
37        carbon_core::try_decode_instructions!(instruction,
38            CrewInstruction::MintCrewMember => mint_crew_member::MintCrewMember,
39            CrewInstruction::RedeemCrewPack => redeem_crew_pack::RedeemCrewPack,
40            CrewInstruction::RegisterCrewConfig => register_crew_config::RegisterCrewConfig,
41            CrewInstruction::RegisterPackTiers => register_pack_tiers::RegisterPackTiers,
42            CrewInstruction::RegisterPackType => register_pack_type::RegisterPackType,
43            CrewInstruction::RegisterSftRedemption => register_sft_redemption::RegisterSftRedemption,
44            CrewInstruction::UpdatePackTiers => update_pack_tiers::UpdatePackTiers,
45        )
46    }
47}