Skip to main content

carbon_token_2022_decoder/instructions/
mod.rs

1//! This code was AUTOGENERATED using the Codama library.
2use crate::{Token2022Decoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod amount_to_ui_amount;
11pub mod apply_confidential_pending_balance;
12pub mod approve;
13pub mod approve_checked;
14pub mod approve_confidential_transfer_account;
15pub mod burn;
16pub mod burn_checked;
17pub mod close_account;
18pub mod confidential_deposit;
19pub mod confidential_transfer;
20pub mod confidential_transfer_with_fee;
21pub mod confidential_withdraw;
22pub mod configure_confidential_transfer_account;
23pub mod create_native_mint;
24pub mod disable_confidential_credits;
25pub mod disable_cpi_guard;
26pub mod disable_harvest_to_mint;
27pub mod disable_memo_transfers;
28pub mod disable_non_confidential_credits;
29pub mod emit_token_metadata;
30pub mod empty_confidential_transfer_account;
31pub mod enable_confidential_credits;
32pub mod enable_cpi_guard;
33pub mod enable_harvest_to_mint;
34pub mod enable_memo_transfers;
35pub mod enable_non_confidential_credits;
36pub mod freeze_account;
37pub mod get_account_data_size;
38pub mod harvest_withheld_tokens_to_mint;
39pub mod harvest_withheld_tokens_to_mint_for_confidential_transfer_fee;
40pub mod initialize_account;
41pub mod initialize_account2;
42pub mod initialize_account3;
43pub mod initialize_confidential_transfer_fee;
44pub mod initialize_confidential_transfer_mint;
45pub mod initialize_default_account_state;
46pub mod initialize_group_member_pointer;
47pub mod initialize_group_pointer;
48pub mod initialize_immutable_owner;
49pub mod initialize_interest_bearing_mint;
50pub mod initialize_metadata_pointer;
51pub mod initialize_mint;
52pub mod initialize_mint2;
53pub mod initialize_mint_close_authority;
54pub mod initialize_multisig;
55pub mod initialize_multisig2;
56pub mod initialize_non_transferable_mint;
57pub mod initialize_pausable_config;
58pub mod initialize_permanent_delegate;
59pub mod initialize_permissioned_burn;
60pub mod initialize_scaled_ui_amount_mint;
61pub mod initialize_token_group;
62pub mod initialize_token_group_member;
63pub mod initialize_token_metadata;
64pub mod initialize_transfer_fee_config;
65pub mod initialize_transfer_hook;
66pub mod mint_to;
67pub mod mint_to_checked;
68pub mod pause;
69pub mod permissioned_burn;
70pub mod permissioned_burn_checked;
71pub mod reallocate;
72pub mod remove_token_metadata_key;
73pub mod resume;
74pub mod revoke;
75pub mod set_authority;
76pub mod set_transfer_fee;
77pub mod sync_native;
78pub mod thaw_account;
79pub mod transfer;
80pub mod transfer_checked;
81pub mod transfer_checked_with_fee;
82pub mod ui_amount_to_amount;
83pub mod unwrap_lamports;
84pub mod update_confidential_transfer_mint;
85pub mod update_default_account_state;
86pub mod update_group_member_pointer;
87pub mod update_group_pointer;
88pub mod update_metadata_pointer;
89pub mod update_multiplier_scaled_ui_mint;
90pub mod update_rate_interest_bearing_mint;
91pub mod update_token_group_max_size;
92pub mod update_token_group_update_authority;
93pub mod update_token_metadata_field;
94pub mod update_token_metadata_update_authority;
95pub mod update_transfer_hook;
96pub mod withdraw_excess_lamports;
97pub mod withdraw_withheld_tokens_from_accounts;
98pub mod withdraw_withheld_tokens_from_accounts_for_confidential_transfer_fee;
99pub mod withdraw_withheld_tokens_from_mint;
100pub mod withdraw_withheld_tokens_from_mint_for_confidential_transfer_fee;
101
102pub use self::{
103    amount_to_ui_amount::*, apply_confidential_pending_balance::*, approve::*, approve_checked::*,
104    approve_confidential_transfer_account::*, burn::*, burn_checked::*, close_account::*,
105    confidential_deposit::*, confidential_transfer::*, confidential_transfer_with_fee::*,
106    confidential_withdraw::*, configure_confidential_transfer_account::*, create_native_mint::*,
107    disable_confidential_credits::*, disable_cpi_guard::*, disable_harvest_to_mint::*,
108    disable_memo_transfers::*, disable_non_confidential_credits::*, emit_token_metadata::*,
109    empty_confidential_transfer_account::*, enable_confidential_credits::*, enable_cpi_guard::*,
110    enable_harvest_to_mint::*, enable_memo_transfers::*, enable_non_confidential_credits::*,
111    freeze_account::*, get_account_data_size::*, harvest_withheld_tokens_to_mint::*,
112    harvest_withheld_tokens_to_mint_for_confidential_transfer_fee::*, initialize_account::*,
113    initialize_account2::*, initialize_account3::*, initialize_confidential_transfer_fee::*,
114    initialize_confidential_transfer_mint::*, initialize_default_account_state::*,
115    initialize_group_member_pointer::*, initialize_group_pointer::*, initialize_immutable_owner::*,
116    initialize_interest_bearing_mint::*, initialize_metadata_pointer::*, initialize_mint::*,
117    initialize_mint2::*, initialize_mint_close_authority::*, initialize_multisig::*,
118    initialize_multisig2::*, initialize_non_transferable_mint::*, initialize_pausable_config::*,
119    initialize_permanent_delegate::*, initialize_permissioned_burn::*,
120    initialize_scaled_ui_amount_mint::*, initialize_token_group::*,
121    initialize_token_group_member::*, initialize_token_metadata::*,
122    initialize_transfer_fee_config::*, initialize_transfer_hook::*, mint_to::*, mint_to_checked::*,
123    pause::*, permissioned_burn::*, permissioned_burn_checked::*, reallocate::*,
124    remove_token_metadata_key::*, resume::*, revoke::*, set_authority::*, set_transfer_fee::*,
125    sync_native::*, thaw_account::*, transfer::*, transfer_checked::*,
126    transfer_checked_with_fee::*, ui_amount_to_amount::*, unwrap_lamports::*,
127    update_confidential_transfer_mint::*, update_default_account_state::*,
128    update_group_member_pointer::*, update_group_pointer::*, update_metadata_pointer::*,
129    update_multiplier_scaled_ui_mint::*, update_rate_interest_bearing_mint::*,
130    update_token_group_max_size::*, update_token_group_update_authority::*,
131    update_token_metadata_field::*, update_token_metadata_update_authority::*,
132    update_transfer_hook::*, withdraw_excess_lamports::*,
133    withdraw_withheld_tokens_from_accounts::*,
134    withdraw_withheld_tokens_from_accounts_for_confidential_transfer_fee::*,
135    withdraw_withheld_tokens_from_mint::*,
136    withdraw_withheld_tokens_from_mint_for_confidential_transfer_fee::*,
137};
138
139#[derive(Debug, Clone, PartialEq)]
140#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
141#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
142pub enum Token2022Instruction {
143    AmountToUiAmount {
144        program_id: solana_pubkey::Pubkey,
145        data: AmountToUiAmount,
146        accounts: AmountToUiAmountInstructionAccounts,
147    },
148    ApplyConfidentialPendingBalance {
149        program_id: solana_pubkey::Pubkey,
150        data: ApplyConfidentialPendingBalance,
151        accounts: ApplyConfidentialPendingBalanceInstructionAccounts,
152    },
153    Approve {
154        program_id: solana_pubkey::Pubkey,
155        data: Approve,
156        accounts: ApproveInstructionAccounts,
157    },
158    ApproveChecked {
159        program_id: solana_pubkey::Pubkey,
160        data: ApproveChecked,
161        accounts: ApproveCheckedInstructionAccounts,
162    },
163    ApproveConfidentialTransferAccount {
164        program_id: solana_pubkey::Pubkey,
165        data: ApproveConfidentialTransferAccount,
166        accounts: ApproveConfidentialTransferAccountInstructionAccounts,
167    },
168    Burn {
169        program_id: solana_pubkey::Pubkey,
170        data: Burn,
171        accounts: BurnInstructionAccounts,
172    },
173    BurnChecked {
174        program_id: solana_pubkey::Pubkey,
175        data: BurnChecked,
176        accounts: BurnCheckedInstructionAccounts,
177    },
178    CloseAccount {
179        program_id: solana_pubkey::Pubkey,
180        data: CloseAccount,
181        accounts: CloseAccountInstructionAccounts,
182    },
183    ConfidentialDeposit {
184        program_id: solana_pubkey::Pubkey,
185        data: ConfidentialDeposit,
186        accounts: ConfidentialDepositInstructionAccounts,
187    },
188    ConfidentialTransfer {
189        program_id: solana_pubkey::Pubkey,
190        data: ConfidentialTransfer,
191        accounts: ConfidentialTransferInstructionAccounts,
192    },
193    ConfidentialTransferWithFee {
194        program_id: solana_pubkey::Pubkey,
195        data: ConfidentialTransferWithFee,
196        accounts: ConfidentialTransferWithFeeInstructionAccounts,
197    },
198    ConfidentialWithdraw {
199        program_id: solana_pubkey::Pubkey,
200        data: ConfidentialWithdraw,
201        accounts: ConfidentialWithdrawInstructionAccounts,
202    },
203    ConfigureConfidentialTransferAccount {
204        program_id: solana_pubkey::Pubkey,
205        data: ConfigureConfidentialTransferAccount,
206        accounts: ConfigureConfidentialTransferAccountInstructionAccounts,
207    },
208    CreateNativeMint {
209        program_id: solana_pubkey::Pubkey,
210        data: CreateNativeMint,
211        accounts: CreateNativeMintInstructionAccounts,
212    },
213    DisableConfidentialCredits {
214        program_id: solana_pubkey::Pubkey,
215        data: DisableConfidentialCredits,
216        accounts: DisableConfidentialCreditsInstructionAccounts,
217    },
218    DisableCpiGuard {
219        program_id: solana_pubkey::Pubkey,
220        data: DisableCpiGuard,
221        accounts: DisableCpiGuardInstructionAccounts,
222    },
223    DisableHarvestToMint {
224        program_id: solana_pubkey::Pubkey,
225        data: DisableHarvestToMint,
226        accounts: DisableHarvestToMintInstructionAccounts,
227    },
228    DisableMemoTransfers {
229        program_id: solana_pubkey::Pubkey,
230        data: DisableMemoTransfers,
231        accounts: DisableMemoTransfersInstructionAccounts,
232    },
233    DisableNonConfidentialCredits {
234        program_id: solana_pubkey::Pubkey,
235        data: DisableNonConfidentialCredits,
236        accounts: DisableNonConfidentialCreditsInstructionAccounts,
237    },
238    EmitTokenMetadata {
239        program_id: solana_pubkey::Pubkey,
240        data: EmitTokenMetadata,
241        accounts: EmitTokenMetadataInstructionAccounts,
242    },
243    EmptyConfidentialTransferAccount {
244        program_id: solana_pubkey::Pubkey,
245        data: EmptyConfidentialTransferAccount,
246        accounts: EmptyConfidentialTransferAccountInstructionAccounts,
247    },
248    EnableConfidentialCredits {
249        program_id: solana_pubkey::Pubkey,
250        data: EnableConfidentialCredits,
251        accounts: EnableConfidentialCreditsInstructionAccounts,
252    },
253    EnableCpiGuard {
254        program_id: solana_pubkey::Pubkey,
255        data: EnableCpiGuard,
256        accounts: EnableCpiGuardInstructionAccounts,
257    },
258    EnableHarvestToMint {
259        program_id: solana_pubkey::Pubkey,
260        data: EnableHarvestToMint,
261        accounts: EnableHarvestToMintInstructionAccounts,
262    },
263    EnableMemoTransfers {
264        program_id: solana_pubkey::Pubkey,
265        data: EnableMemoTransfers,
266        accounts: EnableMemoTransfersInstructionAccounts,
267    },
268    EnableNonConfidentialCredits {
269        program_id: solana_pubkey::Pubkey,
270        data: EnableNonConfidentialCredits,
271        accounts: EnableNonConfidentialCreditsInstructionAccounts,
272    },
273    FreezeAccount {
274        program_id: solana_pubkey::Pubkey,
275        data: FreezeAccount,
276        accounts: FreezeAccountInstructionAccounts,
277    },
278    GetAccountDataSize {
279        program_id: solana_pubkey::Pubkey,
280        data: GetAccountDataSize,
281        accounts: GetAccountDataSizeInstructionAccounts,
282    },
283    HarvestWithheldTokensToMint {
284        program_id: solana_pubkey::Pubkey,
285        data: HarvestWithheldTokensToMint,
286        accounts: HarvestWithheldTokensToMintInstructionAccounts,
287    },
288    HarvestWithheldTokensToMintForConfidentialTransferFee {
289        program_id: solana_pubkey::Pubkey,
290        data: HarvestWithheldTokensToMintForConfidentialTransferFee,
291        accounts: HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionAccounts,
292    },
293    InitializeAccount {
294        program_id: solana_pubkey::Pubkey,
295        data: InitializeAccount,
296        accounts: InitializeAccountInstructionAccounts,
297    },
298    InitializeAccount2 {
299        program_id: solana_pubkey::Pubkey,
300        data: InitializeAccount2,
301        accounts: InitializeAccount2InstructionAccounts,
302    },
303    InitializeAccount3 {
304        program_id: solana_pubkey::Pubkey,
305        data: InitializeAccount3,
306        accounts: InitializeAccount3InstructionAccounts,
307    },
308    InitializeConfidentialTransferFee {
309        program_id: solana_pubkey::Pubkey,
310        data: InitializeConfidentialTransferFee,
311        accounts: InitializeConfidentialTransferFeeInstructionAccounts,
312    },
313    InitializeConfidentialTransferMint {
314        program_id: solana_pubkey::Pubkey,
315        data: InitializeConfidentialTransferMint,
316        accounts: InitializeConfidentialTransferMintInstructionAccounts,
317    },
318    InitializeDefaultAccountState {
319        program_id: solana_pubkey::Pubkey,
320        data: InitializeDefaultAccountState,
321        accounts: InitializeDefaultAccountStateInstructionAccounts,
322    },
323    InitializeGroupMemberPointer {
324        program_id: solana_pubkey::Pubkey,
325        data: InitializeGroupMemberPointer,
326        accounts: InitializeGroupMemberPointerInstructionAccounts,
327    },
328    InitializeGroupPointer {
329        program_id: solana_pubkey::Pubkey,
330        data: InitializeGroupPointer,
331        accounts: InitializeGroupPointerInstructionAccounts,
332    },
333    InitializeImmutableOwner {
334        program_id: solana_pubkey::Pubkey,
335        data: InitializeImmutableOwner,
336        accounts: InitializeImmutableOwnerInstructionAccounts,
337    },
338    InitializeInterestBearingMint {
339        program_id: solana_pubkey::Pubkey,
340        data: InitializeInterestBearingMint,
341        accounts: InitializeInterestBearingMintInstructionAccounts,
342    },
343    InitializeMetadataPointer {
344        program_id: solana_pubkey::Pubkey,
345        data: InitializeMetadataPointer,
346        accounts: InitializeMetadataPointerInstructionAccounts,
347    },
348    InitializeMint {
349        program_id: solana_pubkey::Pubkey,
350        data: InitializeMint,
351        accounts: InitializeMintInstructionAccounts,
352    },
353    InitializeMint2 {
354        program_id: solana_pubkey::Pubkey,
355        data: InitializeMint2,
356        accounts: InitializeMint2InstructionAccounts,
357    },
358    InitializeMintCloseAuthority {
359        program_id: solana_pubkey::Pubkey,
360        data: InitializeMintCloseAuthority,
361        accounts: InitializeMintCloseAuthorityInstructionAccounts,
362    },
363    InitializeMultisig {
364        program_id: solana_pubkey::Pubkey,
365        data: InitializeMultisig,
366        accounts: InitializeMultisigInstructionAccounts,
367    },
368    InitializeMultisig2 {
369        program_id: solana_pubkey::Pubkey,
370        data: InitializeMultisig2,
371        accounts: InitializeMultisig2InstructionAccounts,
372    },
373    InitializeNonTransferableMint {
374        program_id: solana_pubkey::Pubkey,
375        data: InitializeNonTransferableMint,
376        accounts: InitializeNonTransferableMintInstructionAccounts,
377    },
378    InitializePausableConfig {
379        program_id: solana_pubkey::Pubkey,
380        data: InitializePausableConfig,
381        accounts: InitializePausableConfigInstructionAccounts,
382    },
383    InitializePermanentDelegate {
384        program_id: solana_pubkey::Pubkey,
385        data: InitializePermanentDelegate,
386        accounts: InitializePermanentDelegateInstructionAccounts,
387    },
388    InitializePermissionedBurn {
389        program_id: solana_pubkey::Pubkey,
390        data: InitializePermissionedBurn,
391        accounts: InitializePermissionedBurnInstructionAccounts,
392    },
393    InitializeScaledUiAmountMint {
394        program_id: solana_pubkey::Pubkey,
395        data: InitializeScaledUiAmountMint,
396        accounts: InitializeScaledUiAmountMintInstructionAccounts,
397    },
398    InitializeTokenGroup {
399        program_id: solana_pubkey::Pubkey,
400        data: InitializeTokenGroup,
401        accounts: InitializeTokenGroupInstructionAccounts,
402    },
403    InitializeTokenGroupMember {
404        program_id: solana_pubkey::Pubkey,
405        data: InitializeTokenGroupMember,
406        accounts: InitializeTokenGroupMemberInstructionAccounts,
407    },
408    InitializeTokenMetadata {
409        program_id: solana_pubkey::Pubkey,
410        data: InitializeTokenMetadata,
411        accounts: InitializeTokenMetadataInstructionAccounts,
412    },
413    InitializeTransferFeeConfig {
414        program_id: solana_pubkey::Pubkey,
415        data: InitializeTransferFeeConfig,
416        accounts: InitializeTransferFeeConfigInstructionAccounts,
417    },
418    InitializeTransferHook {
419        program_id: solana_pubkey::Pubkey,
420        data: InitializeTransferHook,
421        accounts: InitializeTransferHookInstructionAccounts,
422    },
423    MintTo {
424        program_id: solana_pubkey::Pubkey,
425        data: MintTo,
426        accounts: MintToInstructionAccounts,
427    },
428    MintToChecked {
429        program_id: solana_pubkey::Pubkey,
430        data: MintToChecked,
431        accounts: MintToCheckedInstructionAccounts,
432    },
433    Pause {
434        program_id: solana_pubkey::Pubkey,
435        data: Pause,
436        accounts: PauseInstructionAccounts,
437    },
438    PermissionedBurn {
439        program_id: solana_pubkey::Pubkey,
440        data: PermissionedBurn,
441        accounts: PermissionedBurnInstructionAccounts,
442    },
443    PermissionedBurnChecked {
444        program_id: solana_pubkey::Pubkey,
445        data: PermissionedBurnChecked,
446        accounts: PermissionedBurnCheckedInstructionAccounts,
447    },
448    Reallocate {
449        program_id: solana_pubkey::Pubkey,
450        data: Reallocate,
451        accounts: ReallocateInstructionAccounts,
452    },
453    RemoveTokenMetadataKey {
454        program_id: solana_pubkey::Pubkey,
455        data: RemoveTokenMetadataKey,
456        accounts: RemoveTokenMetadataKeyInstructionAccounts,
457    },
458    Resume {
459        program_id: solana_pubkey::Pubkey,
460        data: Resume,
461        accounts: ResumeInstructionAccounts,
462    },
463    Revoke {
464        program_id: solana_pubkey::Pubkey,
465        data: Revoke,
466        accounts: RevokeInstructionAccounts,
467    },
468    SetAuthority {
469        program_id: solana_pubkey::Pubkey,
470        data: SetAuthority,
471        accounts: SetAuthorityInstructionAccounts,
472    },
473    SetTransferFee {
474        program_id: solana_pubkey::Pubkey,
475        data: SetTransferFee,
476        accounts: SetTransferFeeInstructionAccounts,
477    },
478    SyncNative {
479        program_id: solana_pubkey::Pubkey,
480        data: SyncNative,
481        accounts: SyncNativeInstructionAccounts,
482    },
483    ThawAccount {
484        program_id: solana_pubkey::Pubkey,
485        data: ThawAccount,
486        accounts: ThawAccountInstructionAccounts,
487    },
488    Transfer {
489        program_id: solana_pubkey::Pubkey,
490        data: Transfer,
491        accounts: TransferInstructionAccounts,
492    },
493    TransferChecked {
494        program_id: solana_pubkey::Pubkey,
495        data: TransferChecked,
496        accounts: TransferCheckedInstructionAccounts,
497    },
498    TransferCheckedWithFee {
499        program_id: solana_pubkey::Pubkey,
500        data: TransferCheckedWithFee,
501        accounts: TransferCheckedWithFeeInstructionAccounts,
502    },
503    UiAmountToAmount {
504        program_id: solana_pubkey::Pubkey,
505        data: UiAmountToAmount,
506        accounts: UiAmountToAmountInstructionAccounts,
507    },
508    UnwrapLamports {
509        program_id: solana_pubkey::Pubkey,
510        data: UnwrapLamports,
511        accounts: UnwrapLamportsInstructionAccounts,
512    },
513    UpdateConfidentialTransferMint {
514        program_id: solana_pubkey::Pubkey,
515        data: UpdateConfidentialTransferMint,
516        accounts: UpdateConfidentialTransferMintInstructionAccounts,
517    },
518    UpdateDefaultAccountState {
519        program_id: solana_pubkey::Pubkey,
520        data: UpdateDefaultAccountState,
521        accounts: UpdateDefaultAccountStateInstructionAccounts,
522    },
523    UpdateGroupMemberPointer {
524        program_id: solana_pubkey::Pubkey,
525        data: UpdateGroupMemberPointer,
526        accounts: UpdateGroupMemberPointerInstructionAccounts,
527    },
528    UpdateGroupPointer {
529        program_id: solana_pubkey::Pubkey,
530        data: UpdateGroupPointer,
531        accounts: UpdateGroupPointerInstructionAccounts,
532    },
533    UpdateMetadataPointer {
534        program_id: solana_pubkey::Pubkey,
535        data: UpdateMetadataPointer,
536        accounts: UpdateMetadataPointerInstructionAccounts,
537    },
538    UpdateMultiplierScaledUiMint {
539        program_id: solana_pubkey::Pubkey,
540        data: UpdateMultiplierScaledUiMint,
541        accounts: UpdateMultiplierScaledUiMintInstructionAccounts,
542    },
543    UpdateRateInterestBearingMint {
544        program_id: solana_pubkey::Pubkey,
545        data: UpdateRateInterestBearingMint,
546        accounts: UpdateRateInterestBearingMintInstructionAccounts,
547    },
548    UpdateTokenGroupMaxSize {
549        program_id: solana_pubkey::Pubkey,
550        data: UpdateTokenGroupMaxSize,
551        accounts: UpdateTokenGroupMaxSizeInstructionAccounts,
552    },
553    UpdateTokenGroupUpdateAuthority {
554        program_id: solana_pubkey::Pubkey,
555        data: UpdateTokenGroupUpdateAuthority,
556        accounts: UpdateTokenGroupUpdateAuthorityInstructionAccounts,
557    },
558    UpdateTokenMetadataField {
559        program_id: solana_pubkey::Pubkey,
560        data: UpdateTokenMetadataField,
561        accounts: UpdateTokenMetadataFieldInstructionAccounts,
562    },
563    UpdateTokenMetadataUpdateAuthority {
564        program_id: solana_pubkey::Pubkey,
565        data: UpdateTokenMetadataUpdateAuthority,
566        accounts: UpdateTokenMetadataUpdateAuthorityInstructionAccounts,
567    },
568    UpdateTransferHook {
569        program_id: solana_pubkey::Pubkey,
570        data: UpdateTransferHook,
571        accounts: UpdateTransferHookInstructionAccounts,
572    },
573    WithdrawExcessLamports {
574        program_id: solana_pubkey::Pubkey,
575        data: WithdrawExcessLamports,
576        accounts: WithdrawExcessLamportsInstructionAccounts,
577    },
578    WithdrawWithheldTokensFromAccounts {
579        program_id: solana_pubkey::Pubkey,
580        data: WithdrawWithheldTokensFromAccounts,
581        accounts: WithdrawWithheldTokensFromAccountsInstructionAccounts,
582    },
583    WithdrawWithheldTokensFromAccountsForConfidentialTransferFee {
584        program_id: solana_pubkey::Pubkey,
585        data: WithdrawWithheldTokensFromAccountsForConfidentialTransferFee,
586        accounts: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionAccounts,
587    },
588    WithdrawWithheldTokensFromMint {
589        program_id: solana_pubkey::Pubkey,
590        data: WithdrawWithheldTokensFromMint,
591        accounts: WithdrawWithheldTokensFromMintInstructionAccounts,
592    },
593    WithdrawWithheldTokensFromMintForConfidentialTransferFee {
594        program_id: solana_pubkey::Pubkey,
595        data: WithdrawWithheldTokensFromMintForConfidentialTransferFee,
596        accounts: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionAccounts,
597    },
598}
599
600impl carbon_core::instruction::InstructionDecoder<'_> for Token2022Decoder {
601    type InstructionType = Token2022Instruction;
602
603    fn decode_instruction(
604        &self,
605        instruction: &solana_instruction::Instruction,
606    ) -> Option<Self::InstructionType> {
607        if instruction.program_id != PROGRAM_ID {
608            return None;
609        }
610
611        carbon_core::try_decode_instructions!(
612            instruction,
613            PROGRAM_ID,
614            Token2022Instruction::AmountToUiAmount => AmountToUiAmount,
615            Token2022Instruction::ApplyConfidentialPendingBalance => ApplyConfidentialPendingBalance,
616            Token2022Instruction::Approve => Approve,
617            Token2022Instruction::ApproveChecked => ApproveChecked,
618            Token2022Instruction::ApproveConfidentialTransferAccount => ApproveConfidentialTransferAccount,
619            Token2022Instruction::Burn => Burn,
620            Token2022Instruction::BurnChecked => BurnChecked,
621            Token2022Instruction::CloseAccount => CloseAccount,
622            Token2022Instruction::ConfidentialDeposit => ConfidentialDeposit,
623            Token2022Instruction::ConfidentialTransfer => ConfidentialTransfer,
624            Token2022Instruction::ConfidentialTransferWithFee => ConfidentialTransferWithFee,
625            Token2022Instruction::ConfidentialWithdraw => ConfidentialWithdraw,
626            Token2022Instruction::ConfigureConfidentialTransferAccount => ConfigureConfidentialTransferAccount,
627            Token2022Instruction::CreateNativeMint => CreateNativeMint,
628            Token2022Instruction::DisableConfidentialCredits => DisableConfidentialCredits,
629            Token2022Instruction::DisableCpiGuard => DisableCpiGuard,
630            Token2022Instruction::DisableHarvestToMint => DisableHarvestToMint,
631            Token2022Instruction::DisableMemoTransfers => DisableMemoTransfers,
632            Token2022Instruction::DisableNonConfidentialCredits => DisableNonConfidentialCredits,
633            Token2022Instruction::EmitTokenMetadata => EmitTokenMetadata,
634            Token2022Instruction::EmptyConfidentialTransferAccount => EmptyConfidentialTransferAccount,
635            Token2022Instruction::EnableConfidentialCredits => EnableConfidentialCredits,
636            Token2022Instruction::EnableCpiGuard => EnableCpiGuard,
637            Token2022Instruction::EnableHarvestToMint => EnableHarvestToMint,
638            Token2022Instruction::EnableMemoTransfers => EnableMemoTransfers,
639            Token2022Instruction::EnableNonConfidentialCredits => EnableNonConfidentialCredits,
640            Token2022Instruction::FreezeAccount => FreezeAccount,
641            Token2022Instruction::GetAccountDataSize => GetAccountDataSize,
642            Token2022Instruction::HarvestWithheldTokensToMint => HarvestWithheldTokensToMint,
643            Token2022Instruction::HarvestWithheldTokensToMintForConfidentialTransferFee => HarvestWithheldTokensToMintForConfidentialTransferFee,
644            Token2022Instruction::InitializeAccount => InitializeAccount,
645            Token2022Instruction::InitializeAccount2 => InitializeAccount2,
646            Token2022Instruction::InitializeAccount3 => InitializeAccount3,
647            Token2022Instruction::InitializeConfidentialTransferFee => InitializeConfidentialTransferFee,
648            Token2022Instruction::InitializeConfidentialTransferMint => InitializeConfidentialTransferMint,
649            Token2022Instruction::InitializeDefaultAccountState => InitializeDefaultAccountState,
650            Token2022Instruction::InitializeGroupMemberPointer => InitializeGroupMemberPointer,
651            Token2022Instruction::InitializeGroupPointer => InitializeGroupPointer,
652            Token2022Instruction::InitializeImmutableOwner => InitializeImmutableOwner,
653            Token2022Instruction::InitializeInterestBearingMint => InitializeInterestBearingMint,
654            Token2022Instruction::InitializeMetadataPointer => InitializeMetadataPointer,
655            Token2022Instruction::InitializeMint => InitializeMint,
656            Token2022Instruction::InitializeMint2 => InitializeMint2,
657            Token2022Instruction::InitializeMintCloseAuthority => InitializeMintCloseAuthority,
658            Token2022Instruction::InitializeMultisig => InitializeMultisig,
659            Token2022Instruction::InitializeMultisig2 => InitializeMultisig2,
660            Token2022Instruction::InitializeNonTransferableMint => InitializeNonTransferableMint,
661            Token2022Instruction::InitializePausableConfig => InitializePausableConfig,
662            Token2022Instruction::InitializePermanentDelegate => InitializePermanentDelegate,
663            Token2022Instruction::InitializePermissionedBurn => InitializePermissionedBurn,
664            Token2022Instruction::InitializeScaledUiAmountMint => InitializeScaledUiAmountMint,
665            Token2022Instruction::InitializeTokenGroup => InitializeTokenGroup,
666            Token2022Instruction::InitializeTokenGroupMember => InitializeTokenGroupMember,
667            Token2022Instruction::InitializeTokenMetadata => InitializeTokenMetadata,
668            Token2022Instruction::InitializeTransferFeeConfig => InitializeTransferFeeConfig,
669            Token2022Instruction::InitializeTransferHook => InitializeTransferHook,
670            Token2022Instruction::MintTo => MintTo,
671            Token2022Instruction::MintToChecked => MintToChecked,
672            Token2022Instruction::Pause => Pause,
673            Token2022Instruction::PermissionedBurn => PermissionedBurn,
674            Token2022Instruction::PermissionedBurnChecked => PermissionedBurnChecked,
675            Token2022Instruction::Reallocate => Reallocate,
676            Token2022Instruction::RemoveTokenMetadataKey => RemoveTokenMetadataKey,
677            Token2022Instruction::Resume => Resume,
678            Token2022Instruction::Revoke => Revoke,
679            Token2022Instruction::SetAuthority => SetAuthority,
680            Token2022Instruction::SetTransferFee => SetTransferFee,
681            Token2022Instruction::SyncNative => SyncNative,
682            Token2022Instruction::ThawAccount => ThawAccount,
683            Token2022Instruction::Transfer => Transfer,
684            Token2022Instruction::TransferChecked => TransferChecked,
685            Token2022Instruction::TransferCheckedWithFee => TransferCheckedWithFee,
686            Token2022Instruction::UiAmountToAmount => UiAmountToAmount,
687            Token2022Instruction::UnwrapLamports => UnwrapLamports,
688            Token2022Instruction::UpdateConfidentialTransferMint => UpdateConfidentialTransferMint,
689            Token2022Instruction::UpdateDefaultAccountState => UpdateDefaultAccountState,
690            Token2022Instruction::UpdateGroupMemberPointer => UpdateGroupMemberPointer,
691            Token2022Instruction::UpdateGroupPointer => UpdateGroupPointer,
692            Token2022Instruction::UpdateMetadataPointer => UpdateMetadataPointer,
693            Token2022Instruction::UpdateMultiplierScaledUiMint => UpdateMultiplierScaledUiMint,
694            Token2022Instruction::UpdateRateInterestBearingMint => UpdateRateInterestBearingMint,
695            Token2022Instruction::UpdateTokenGroupMaxSize => UpdateTokenGroupMaxSize,
696            Token2022Instruction::UpdateTokenGroupUpdateAuthority => UpdateTokenGroupUpdateAuthority,
697            Token2022Instruction::UpdateTokenMetadataField => UpdateTokenMetadataField,
698            Token2022Instruction::UpdateTokenMetadataUpdateAuthority => UpdateTokenMetadataUpdateAuthority,
699            Token2022Instruction::UpdateTransferHook => UpdateTransferHook,
700            Token2022Instruction::WithdrawExcessLamports => WithdrawExcessLamports,
701            Token2022Instruction::WithdrawWithheldTokensFromAccounts => WithdrawWithheldTokensFromAccounts,
702            Token2022Instruction::WithdrawWithheldTokensFromAccountsForConfidentialTransferFee => WithdrawWithheldTokensFromAccountsForConfidentialTransferFee,
703            Token2022Instruction::WithdrawWithheldTokensFromMint => WithdrawWithheldTokensFromMint,
704            Token2022Instruction::WithdrawWithheldTokensFromMintForConfidentialTransferFee => WithdrawWithheldTokensFromMintForConfidentialTransferFee,
705        )
706    }
707}