carbon_claim_stake_decoder/instructions/
mod.rs1use crate::ClaimStakeDecoder;
3use crate::PROGRAM_ID;
4
5pub mod process_harvest;
6pub mod process_initial_deposit;
7pub mod process_initialize;
8pub mod process_partial_deposit;
9pub mod process_register_claim_stake;
10pub mod process_settle;
11pub mod process_update_claim_stake_vars;
12pub mod process_withdraw_claim_stakes;
13
14pub use self::process_harvest::*;
15pub use self::process_initial_deposit::*;
16pub use self::process_initialize::*;
17pub use self::process_partial_deposit::*;
18pub use self::process_register_claim_stake::*;
19pub use self::process_settle::*;
20pub use self::process_update_claim_stake_vars::*;
21pub use self::process_withdraw_claim_stakes::*;
22
23#[derive(Debug, Clone, PartialEq, Eq, Hash)]
24#[cfg_attr(
25 feature = "serde",
26 derive(carbon_core::InstructionType, serde::Serialize, serde::Deserialize)
27)]
28#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
29pub enum ClaimStakeInstruction {
30 ProcessHarvest(ProcessHarvest),
31 ProcessInitialDeposit(ProcessInitialDeposit),
32 ProcessInitialize(ProcessInitialize),
33 ProcessPartialDeposit(ProcessPartialDeposit),
34 ProcessRegisterClaimStake(ProcessRegisterClaimStake),
35 ProcessSettle(ProcessSettle),
36 ProcessUpdateClaimStakeVars(ProcessUpdateClaimStakeVars),
37 ProcessWithdrawClaimStakes(ProcessWithdrawClaimStakes),
38}
39
40impl carbon_core::instruction::InstructionDecoder<'_> for ClaimStakeDecoder {
41 type InstructionType = ClaimStakeInstruction;
42
43 fn decode_instruction(
44 &self,
45 instruction: &solana_instruction::Instruction,
46 ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
47 if !instruction.program_id.eq(&PROGRAM_ID) {
48 return None;
49 }
50
51 let data = instruction.data.as_slice();
52
53 {
54 if let Some(decoded) = process_harvest::ProcessHarvest::decode(data) {
55 return Some(carbon_core::instruction::DecodedInstruction {
56 program_id: instruction.program_id,
57 data: ClaimStakeInstruction::ProcessHarvest(decoded),
58 accounts: instruction.accounts.clone(),
59 });
60 }
61 }
62 {
63 if let Some(decoded) = process_initial_deposit::ProcessInitialDeposit::decode(data) {
64 return Some(carbon_core::instruction::DecodedInstruction {
65 program_id: instruction.program_id,
66 data: ClaimStakeInstruction::ProcessInitialDeposit(decoded),
67 accounts: instruction.accounts.clone(),
68 });
69 }
70 }
71 {
72 if let Some(decoded) = process_initialize::ProcessInitialize::decode(data) {
73 return Some(carbon_core::instruction::DecodedInstruction {
74 program_id: instruction.program_id,
75 data: ClaimStakeInstruction::ProcessInitialize(decoded),
76 accounts: instruction.accounts.clone(),
77 });
78 }
79 }
80 {
81 if let Some(decoded) = process_partial_deposit::ProcessPartialDeposit::decode(data) {
82 return Some(carbon_core::instruction::DecodedInstruction {
83 program_id: instruction.program_id,
84 data: ClaimStakeInstruction::ProcessPartialDeposit(decoded),
85 accounts: instruction.accounts.clone(),
86 });
87 }
88 }
89 {
90 if let Some(decoded) =
91 process_register_claim_stake::ProcessRegisterClaimStake::decode(data)
92 {
93 return Some(carbon_core::instruction::DecodedInstruction {
94 program_id: instruction.program_id,
95 data: ClaimStakeInstruction::ProcessRegisterClaimStake(decoded),
96 accounts: instruction.accounts.clone(),
97 });
98 }
99 }
100 {
101 if let Some(decoded) = process_settle::ProcessSettle::decode(data) {
102 return Some(carbon_core::instruction::DecodedInstruction {
103 program_id: instruction.program_id,
104 data: ClaimStakeInstruction::ProcessSettle(decoded),
105 accounts: instruction.accounts.clone(),
106 });
107 }
108 }
109 {
110 if let Some(decoded) =
111 process_update_claim_stake_vars::ProcessUpdateClaimStakeVars::decode(data)
112 {
113 return Some(carbon_core::instruction::DecodedInstruction {
114 program_id: instruction.program_id,
115 data: ClaimStakeInstruction::ProcessUpdateClaimStakeVars(decoded),
116 accounts: instruction.accounts.clone(),
117 });
118 }
119 }
120 {
121 if let Some(decoded) =
122 process_withdraw_claim_stakes::ProcessWithdrawClaimStakes::decode(data)
123 {
124 return Some(carbon_core::instruction::DecodedInstruction {
125 program_id: instruction.program_id,
126 data: ClaimStakeInstruction::ProcessWithdrawClaimStakes(decoded),
127 accounts: instruction.accounts.clone(),
128 });
129 }
130 }
131
132 None
133 }
134}