carbon_token_program_decoder/instructions/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
use crate::TokenProgramDecoder;

pub mod amount_to_ui_amount;
pub mod approve;
pub mod approve_checked;
pub mod burn;
pub mod burn_checked;
pub mod close_account;
pub mod freeze_account;
pub mod get_account_data_size;
pub mod initialize_account;
pub mod initialize_account2;
pub mod initialize_account3;
pub mod initialize_immutable_owner;
pub mod initialize_mint;
pub mod initialize_mint2;
pub mod initialize_multisig;
pub mod initialize_multisig2;
pub mod mint_to;
pub mod mint_to_checked;
pub mod revoke;
pub mod set_authority;
pub mod sync_native;
pub mod thaw_account;
pub mod transfer;
pub mod transfer_checked;
pub mod ui_amount_to_amount;

#[derive(
    carbon_core::InstructionType,
    serde::Serialize,
    serde::Deserialize,
    PartialEq,
    Eq,
    Debug,
    Clone,
    Hash,
)]
pub enum TokenProgramInstruction {
    AmountToUiAmount(amount_to_ui_amount::AmountToUiAmount),
    ApproveChecked(approve_checked::ApproveChecked),
    Approve(approve::Approve),
    BurnChecked(burn_checked::BurnChecked),
    Burn(burn::Burn),
    CloseAccount(close_account::CloseAccount),
    FreezeAccount(freeze_account::FreezeAccount),
    GetAccountDataSize(get_account_data_size::GetAccountDataSize),
    InitializeAccount(initialize_account::InitializeAccount),
    InitializeAccount2(initialize_account2::InitializeAccount2),
    InitializeAccount3(initialize_account3::InitializeAccount3),
    InitializeImmutableOwner(initialize_immutable_owner::InitializeImmutableOwner),
    InitializeMint(initialize_mint::InitializeMint),
    InitializeMint2(initialize_mint2::InitializeMint2),
    InitializeMultisig(initialize_multisig::InitializeMultisig),
    InitializeMultisig2(initialize_multisig2::InitializeMultisig2),
    MintToChecked(mint_to_checked::MintToChecked),
    MintTo(mint_to::MintTo),
    Revoke(revoke::Revoke),
    SetAuthority(set_authority::SetAuthority),
    SyncNative(sync_native::SyncNative),
    ThawAccount(thaw_account::ThawAccount),
    TransferChecked(transfer_checked::TransferChecked),
    Transfer(transfer::Transfer),
    UiAmountToAmount(ui_amount_to_amount::UiAmountToAmount),
}

impl<'a> carbon_core::instruction::InstructionDecoder<'a> for TokenProgramDecoder {
    type InstructionType = TokenProgramInstruction;

    fn decode_instruction(
        &self,
        instruction: &solana_sdk::instruction::Instruction,
    ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
        carbon_core::try_decode_instructions!(instruction,
            TokenProgramInstruction::AmountToUiAmount => amount_to_ui_amount::AmountToUiAmount,
            TokenProgramInstruction::ApproveChecked => approve_checked::ApproveChecked,
            TokenProgramInstruction::Approve => approve::Approve,
            TokenProgramInstruction::BurnChecked => burn_checked::BurnChecked,
            TokenProgramInstruction::Burn => burn::Burn,
            TokenProgramInstruction::CloseAccount => close_account::CloseAccount,
            TokenProgramInstruction::FreezeAccount => freeze_account::FreezeAccount,
            TokenProgramInstruction::GetAccountDataSize => get_account_data_size::GetAccountDataSize,
            TokenProgramInstruction::InitializeAccount => initialize_account::InitializeAccount,
            TokenProgramInstruction::InitializeAccount2 => initialize_account2::InitializeAccount2,
            TokenProgramInstruction::InitializeAccount3 => initialize_account3::InitializeAccount3,
            TokenProgramInstruction::InitializeImmutableOwner => initialize_immutable_owner::InitializeImmutableOwner,
            TokenProgramInstruction::InitializeMint => initialize_mint::InitializeMint,
            TokenProgramInstruction::InitializeMint2 => initialize_mint2::InitializeMint2,
            TokenProgramInstruction::InitializeMultisig => initialize_multisig::InitializeMultisig,
            TokenProgramInstruction::InitializeMultisig2 => initialize_multisig2::InitializeMultisig2,
            TokenProgramInstruction::MintToChecked => mint_to_checked::MintToChecked,
            TokenProgramInstruction::MintTo => mint_to::MintTo,
            TokenProgramInstruction::Revoke => revoke::Revoke,
            TokenProgramInstruction::SetAuthority => set_authority::SetAuthority,
            TokenProgramInstruction::SyncNative => sync_native::SyncNative,
            TokenProgramInstruction::ThawAccount => thaw_account::ThawAccount,
            TokenProgramInstruction::TransferChecked => transfer_checked::TransferChecked,
            TokenProgramInstruction::Transfer => transfer::Transfer,
            TokenProgramInstruction::UiAmountToAmount => ui_amount_to_amount::UiAmountToAmount,
        )
    }
}