carbon_token_program_decoder/instructions/
mod.rs1use crate::TokenProgramDecoder;
2
3pub mod amount_to_ui_amount;
4pub mod approve;
5pub mod approve_checked;
6pub mod burn;
7pub mod burn_checked;
8pub mod close_account;
9pub mod freeze_account;
10pub mod get_account_data_size;
11pub mod initialize_account;
12pub mod initialize_account2;
13pub mod initialize_account3;
14pub mod initialize_immutable_owner;
15pub mod initialize_mint;
16pub mod initialize_mint2;
17pub mod initialize_multisig;
18pub mod initialize_multisig2;
19pub mod mint_to;
20pub mod mint_to_checked;
21pub mod revoke;
22pub mod set_authority;
23pub mod sync_native;
24pub mod thaw_account;
25pub mod transfer;
26pub mod transfer_checked;
27pub mod ui_amount_to_amount;
28
29#[derive(
30 carbon_core::InstructionType,
31 serde::Serialize,
32 serde::Deserialize,
33 PartialEq,
34 Eq,
35 Debug,
36 Clone,
37 Hash,
38)]
39pub enum TokenProgramInstruction {
40 AmountToUiAmount(amount_to_ui_amount::AmountToUiAmount),
41 ApproveChecked(approve_checked::ApproveChecked),
42 Approve(approve::Approve),
43 BurnChecked(burn_checked::BurnChecked),
44 Burn(burn::Burn),
45 CloseAccount(close_account::CloseAccount),
46 FreezeAccount(freeze_account::FreezeAccount),
47 GetAccountDataSize(get_account_data_size::GetAccountDataSize),
48 InitializeAccount(initialize_account::InitializeAccount),
49 InitializeAccount2(initialize_account2::InitializeAccount2),
50 InitializeAccount3(initialize_account3::InitializeAccount3),
51 InitializeImmutableOwner(initialize_immutable_owner::InitializeImmutableOwner),
52 InitializeMint(initialize_mint::InitializeMint),
53 InitializeMint2(initialize_mint2::InitializeMint2),
54 InitializeMultisig(initialize_multisig::InitializeMultisig),
55 InitializeMultisig2(initialize_multisig2::InitializeMultisig2),
56 MintToChecked(mint_to_checked::MintToChecked),
57 MintTo(mint_to::MintTo),
58 Revoke(revoke::Revoke),
59 SetAuthority(set_authority::SetAuthority),
60 SyncNative(sync_native::SyncNative),
61 ThawAccount(thaw_account::ThawAccount),
62 TransferChecked(transfer_checked::TransferChecked),
63 Transfer(transfer::Transfer),
64 UiAmountToAmount(ui_amount_to_amount::UiAmountToAmount),
65}
66
67impl carbon_core::instruction::InstructionDecoder<'_> for TokenProgramDecoder {
68 type InstructionType = TokenProgramInstruction;
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(&spl_token::id()) {
75 return None;
76 }
77
78 carbon_core::try_decode_instructions!(instruction,
79 TokenProgramInstruction::AmountToUiAmount => amount_to_ui_amount::AmountToUiAmount,
80 TokenProgramInstruction::ApproveChecked => approve_checked::ApproveChecked,
81 TokenProgramInstruction::Approve => approve::Approve,
82 TokenProgramInstruction::BurnChecked => burn_checked::BurnChecked,
83 TokenProgramInstruction::Burn => burn::Burn,
84 TokenProgramInstruction::CloseAccount => close_account::CloseAccount,
85 TokenProgramInstruction::FreezeAccount => freeze_account::FreezeAccount,
86 TokenProgramInstruction::GetAccountDataSize => get_account_data_size::GetAccountDataSize,
87 TokenProgramInstruction::InitializeAccount => initialize_account::InitializeAccount,
88 TokenProgramInstruction::InitializeAccount2 => initialize_account2::InitializeAccount2,
89 TokenProgramInstruction::InitializeAccount3 => initialize_account3::InitializeAccount3,
90 TokenProgramInstruction::InitializeImmutableOwner => initialize_immutable_owner::InitializeImmutableOwner,
91 TokenProgramInstruction::InitializeMint => initialize_mint::InitializeMint,
92 TokenProgramInstruction::InitializeMint2 => initialize_mint2::InitializeMint2,
93 TokenProgramInstruction::InitializeMultisig => initialize_multisig::InitializeMultisig,
94 TokenProgramInstruction::InitializeMultisig2 => initialize_multisig2::InitializeMultisig2,
95 TokenProgramInstruction::MintToChecked => mint_to_checked::MintToChecked,
96 TokenProgramInstruction::MintTo => mint_to::MintTo,
97 TokenProgramInstruction::Revoke => revoke::Revoke,
98 TokenProgramInstruction::SetAuthority => set_authority::SetAuthority,
99 TokenProgramInstruction::SyncNative => sync_native::SyncNative,
100 TokenProgramInstruction::ThawAccount => thaw_account::ThawAccount,
101 TokenProgramInstruction::TransferChecked => transfer_checked::TransferChecked,
102 TokenProgramInstruction::Transfer => transfer::Transfer,
103 TokenProgramInstruction::UiAmountToAmount => ui_amount_to_amount::UiAmountToAmount,
104 )
105 }
106}