carbon_cargo_decoder/instructions/
mod.rs

1//! This code was AUTOGENERATED using the Codama library.
2use crate::CargoDecoder;
3use crate::PROGRAM_ID;
4
5pub mod add_cargo;
6pub mod close_cargo_pod;
7pub mod close_token_account;
8pub mod consume_cargo;
9pub mod init_cargo_pod;
10pub mod init_cargo_type;
11pub mod init_cargo_type_for_next_seq_id;
12pub mod init_cargo_type_from_old_cargo_type;
13pub mod init_definition;
14pub mod legitimize_cargo;
15pub mod mint_to;
16pub mod remove_cargo;
17pub mod transfer_authority;
18pub mod transfer_cargo;
19pub mod update_cargo_pod;
20pub mod update_definition;
21pub mod update_pod_token_account;
22
23pub use self::add_cargo::*;
24pub use self::close_cargo_pod::*;
25pub use self::close_token_account::*;
26pub use self::consume_cargo::*;
27pub use self::init_cargo_pod::*;
28pub use self::init_cargo_type::*;
29pub use self::init_cargo_type_for_next_seq_id::*;
30pub use self::init_cargo_type_from_old_cargo_type::*;
31pub use self::init_definition::*;
32pub use self::legitimize_cargo::*;
33pub use self::mint_to::*;
34pub use self::remove_cargo::*;
35pub use self::transfer_authority::*;
36pub use self::transfer_cargo::*;
37pub use self::update_cargo_pod::*;
38pub use self::update_definition::*;
39pub use self::update_pod_token_account::*;
40
41#[derive(Debug, Clone, PartialEq, Eq, Hash)]
42#[cfg_attr(
43    feature = "serde",
44    derive(carbon_core::InstructionType, serde::Serialize, serde::Deserialize)
45)]
46#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
47pub enum CargoInstruction {
48    AddCargo(AddCargo),
49    CloseCargoPod(CloseCargoPod),
50    CloseTokenAccount(CloseTokenAccount),
51    ConsumeCargo(ConsumeCargo),
52    InitCargoPod(InitCargoPod),
53    InitCargoType(InitCargoType),
54    InitCargoTypeForNextSeqId(InitCargoTypeForNextSeqId),
55    InitCargoTypeFromOldCargoType(InitCargoTypeFromOldCargoType),
56    InitDefinition(InitDefinition),
57    LegitimizeCargo(LegitimizeCargo),
58    MintTo(MintTo),
59    RemoveCargo(RemoveCargo),
60    TransferAuthority(TransferAuthority),
61    TransferCargo(TransferCargo),
62    UpdateCargoPod(UpdateCargoPod),
63    UpdateDefinition(UpdateDefinition),
64    UpdatePodTokenAccount(UpdatePodTokenAccount),
65}
66
67impl carbon_core::instruction::InstructionDecoder<'_> for CargoDecoder {
68    type InstructionType = CargoInstruction;
69
70    fn decode_instruction(
71        &self,
72        instruction: &solana_instruction::Instruction,
73    ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
74        if !instruction.program_id.eq(&PROGRAM_ID) {
75            return None;
76        }
77
78        let data = instruction.data.as_slice();
79
80        {
81            if let Some(decoded) = add_cargo::AddCargo::decode(data) {
82                return Some(carbon_core::instruction::DecodedInstruction {
83                    program_id: instruction.program_id,
84                    data: CargoInstruction::AddCargo(decoded),
85                    accounts: instruction.accounts.clone(),
86                });
87            }
88        }
89        {
90            if let Some(decoded) = close_cargo_pod::CloseCargoPod::decode(data) {
91                return Some(carbon_core::instruction::DecodedInstruction {
92                    program_id: instruction.program_id,
93                    data: CargoInstruction::CloseCargoPod(decoded),
94                    accounts: instruction.accounts.clone(),
95                });
96            }
97        }
98        {
99            if let Some(decoded) = close_token_account::CloseTokenAccount::decode(data) {
100                return Some(carbon_core::instruction::DecodedInstruction {
101                    program_id: instruction.program_id,
102                    data: CargoInstruction::CloseTokenAccount(decoded),
103                    accounts: instruction.accounts.clone(),
104                });
105            }
106        }
107        {
108            if let Some(decoded) = consume_cargo::ConsumeCargo::decode(data) {
109                return Some(carbon_core::instruction::DecodedInstruction {
110                    program_id: instruction.program_id,
111                    data: CargoInstruction::ConsumeCargo(decoded),
112                    accounts: instruction.accounts.clone(),
113                });
114            }
115        }
116        {
117            if let Some(decoded) = init_cargo_pod::InitCargoPod::decode(data) {
118                return Some(carbon_core::instruction::DecodedInstruction {
119                    program_id: instruction.program_id,
120                    data: CargoInstruction::InitCargoPod(decoded),
121                    accounts: instruction.accounts.clone(),
122                });
123            }
124        }
125        {
126            if let Some(decoded) = init_cargo_type::InitCargoType::decode(data) {
127                return Some(carbon_core::instruction::DecodedInstruction {
128                    program_id: instruction.program_id,
129                    data: CargoInstruction::InitCargoType(decoded),
130                    accounts: instruction.accounts.clone(),
131                });
132            }
133        }
134        {
135            if let Some(decoded) =
136                init_cargo_type_for_next_seq_id::InitCargoTypeForNextSeqId::decode(data)
137            {
138                return Some(carbon_core::instruction::DecodedInstruction {
139                    program_id: instruction.program_id,
140                    data: CargoInstruction::InitCargoTypeForNextSeqId(decoded),
141                    accounts: instruction.accounts.clone(),
142                });
143            }
144        }
145        {
146            if let Some(decoded) =
147                init_cargo_type_from_old_cargo_type::InitCargoTypeFromOldCargoType::decode(data)
148            {
149                return Some(carbon_core::instruction::DecodedInstruction {
150                    program_id: instruction.program_id,
151                    data: CargoInstruction::InitCargoTypeFromOldCargoType(decoded),
152                    accounts: instruction.accounts.clone(),
153                });
154            }
155        }
156        {
157            if let Some(decoded) = init_definition::InitDefinition::decode(data) {
158                return Some(carbon_core::instruction::DecodedInstruction {
159                    program_id: instruction.program_id,
160                    data: CargoInstruction::InitDefinition(decoded),
161                    accounts: instruction.accounts.clone(),
162                });
163            }
164        }
165        {
166            if let Some(decoded) = legitimize_cargo::LegitimizeCargo::decode(data) {
167                return Some(carbon_core::instruction::DecodedInstruction {
168                    program_id: instruction.program_id,
169                    data: CargoInstruction::LegitimizeCargo(decoded),
170                    accounts: instruction.accounts.clone(),
171                });
172            }
173        }
174        {
175            if let Some(decoded) = mint_to::MintTo::decode(data) {
176                return Some(carbon_core::instruction::DecodedInstruction {
177                    program_id: instruction.program_id,
178                    data: CargoInstruction::MintTo(decoded),
179                    accounts: instruction.accounts.clone(),
180                });
181            }
182        }
183        {
184            if let Some(decoded) = remove_cargo::RemoveCargo::decode(data) {
185                return Some(carbon_core::instruction::DecodedInstruction {
186                    program_id: instruction.program_id,
187                    data: CargoInstruction::RemoveCargo(decoded),
188                    accounts: instruction.accounts.clone(),
189                });
190            }
191        }
192        {
193            if let Some(decoded) = transfer_authority::TransferAuthority::decode(data) {
194                return Some(carbon_core::instruction::DecodedInstruction {
195                    program_id: instruction.program_id,
196                    data: CargoInstruction::TransferAuthority(decoded),
197                    accounts: instruction.accounts.clone(),
198                });
199            }
200        }
201        {
202            if let Some(decoded) = transfer_cargo::TransferCargo::decode(data) {
203                return Some(carbon_core::instruction::DecodedInstruction {
204                    program_id: instruction.program_id,
205                    data: CargoInstruction::TransferCargo(decoded),
206                    accounts: instruction.accounts.clone(),
207                });
208            }
209        }
210        {
211            if let Some(decoded) = update_cargo_pod::UpdateCargoPod::decode(data) {
212                return Some(carbon_core::instruction::DecodedInstruction {
213                    program_id: instruction.program_id,
214                    data: CargoInstruction::UpdateCargoPod(decoded),
215                    accounts: instruction.accounts.clone(),
216                });
217            }
218        }
219        {
220            if let Some(decoded) = update_definition::UpdateDefinition::decode(data) {
221                return Some(carbon_core::instruction::DecodedInstruction {
222                    program_id: instruction.program_id,
223                    data: CargoInstruction::UpdateDefinition(decoded),
224                    accounts: instruction.accounts.clone(),
225                });
226            }
227        }
228        {
229            if let Some(decoded) = update_pod_token_account::UpdatePodTokenAccount::decode(data) {
230                return Some(carbon_core::instruction::DecodedInstruction {
231                    program_id: instruction.program_id,
232                    data: CargoInstruction::UpdatePodTokenAccount(decoded),
233                    accounts: instruction.accounts.clone(),
234                });
235            }
236        }
237
238        None
239    }
240}