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