carbon_sharky_decoder/instructions/
mod.rs1use crate::PROGRAM_ID;
2
3use super::SharkyDecoder;
4pub mod close_nft_list;
5pub mod close_order_book;
6pub mod create_nft_list;
7pub mod create_order_book;
8pub mod create_program_version;
9pub mod extend_loan_v3;
10pub mod extend_loan_v3_compressed;
11pub mod foreclose_loan_v3;
12pub mod foreclose_loan_v3_compressed;
13pub mod offer_loan;
14pub mod repay_loan_v3;
15pub mod repay_loan_v3_compressed;
16pub mod rescind_loan;
17pub mod take_loan_v3;
18pub mod take_loan_v3_compressed;
19pub mod update_nft_list;
20pub mod update_order_book;
21pub mod update_program_version;
22
23#[derive(
24 carbon_core::InstructionType,
25 serde::Serialize,
26 serde::Deserialize,
27 PartialEq,
28 Eq,
29 Debug,
30 Clone,
31 Hash,
32)]
33pub enum SharkyInstruction {
34 CreateOrderBook(create_order_book::CreateOrderBook),
35 UpdateOrderBook(update_order_book::UpdateOrderBook),
36 CloseOrderBook(close_order_book::CloseOrderBook),
37 OfferLoan(offer_loan::OfferLoan),
38 RescindLoan(rescind_loan::RescindLoan),
39 TakeLoanV3(take_loan_v3::TakeLoanV3),
40 TakeLoanV3Compressed(take_loan_v3_compressed::TakeLoanV3Compressed),
41 ForecloseLoanV3(foreclose_loan_v3::ForecloseLoanV3),
42 ForecloseLoanV3Compressed(foreclose_loan_v3_compressed::ForecloseLoanV3Compressed),
43 RepayLoanV3Compressed(repay_loan_v3_compressed::RepayLoanV3Compressed),
44 RepayLoanV3(repay_loan_v3::RepayLoanV3),
45 ExtendLoanV3(extend_loan_v3::ExtendLoanV3),
46 ExtendLoanV3Compressed(extend_loan_v3_compressed::ExtendLoanV3Compressed),
47 CreateNftList(create_nft_list::CreateNftList),
48 UpdateNftList(update_nft_list::UpdateNftList),
49 CloseNftList(close_nft_list::CloseNftList),
50 CreateProgramVersion(create_program_version::CreateProgramVersion),
51 UpdateProgramVersion(update_program_version::UpdateProgramVersion),
52}
53
54impl carbon_core::instruction::InstructionDecoder<'_> for SharkyDecoder {
55 type InstructionType = SharkyInstruction;
56
57 fn decode_instruction(
58 &self,
59 instruction: &solana_instruction::Instruction,
60 ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
61 if !instruction.program_id.eq(&PROGRAM_ID) {
62 return None;
63 }
64
65 carbon_core::try_decode_instructions!(instruction,
66 SharkyInstruction::CreateOrderBook => create_order_book::CreateOrderBook,
67 SharkyInstruction::UpdateOrderBook => update_order_book::UpdateOrderBook,
68 SharkyInstruction::CloseOrderBook => close_order_book::CloseOrderBook,
69 SharkyInstruction::OfferLoan => offer_loan::OfferLoan,
70 SharkyInstruction::RescindLoan => rescind_loan::RescindLoan,
71 SharkyInstruction::TakeLoanV3 => take_loan_v3::TakeLoanV3,
72 SharkyInstruction::TakeLoanV3Compressed => take_loan_v3_compressed::TakeLoanV3Compressed,
73 SharkyInstruction::ForecloseLoanV3 => foreclose_loan_v3::ForecloseLoanV3,
74 SharkyInstruction::ForecloseLoanV3Compressed => foreclose_loan_v3_compressed::ForecloseLoanV3Compressed,
75 SharkyInstruction::RepayLoanV3Compressed => repay_loan_v3_compressed::RepayLoanV3Compressed,
76 SharkyInstruction::RepayLoanV3 => repay_loan_v3::RepayLoanV3,
77 SharkyInstruction::ExtendLoanV3 => extend_loan_v3::ExtendLoanV3,
78 SharkyInstruction::ExtendLoanV3Compressed => extend_loan_v3_compressed::ExtendLoanV3Compressed,
79 SharkyInstruction::CreateNftList => create_nft_list::CreateNftList,
80 SharkyInstruction::UpdateNftList => update_nft_list::UpdateNftList,
81 SharkyInstruction::CloseNftList => close_nft_list::CloseNftList,
82 SharkyInstruction::CreateProgramVersion => create_program_version::CreateProgramVersion,
83 SharkyInstruction::UpdateProgramVersion => update_program_version::UpdateProgramVersion,
84 )
85 }
86}