carbon_token_program_decoder/instructions/
mod.rs

1use 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}