This commit is contained in:
2026-07-23 16:37:12 +02:00
parent 99c345f2f2
commit 0da75c1311
2159 changed files with 230833 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
// file: kb_decoder_spl_token_2022/src/constants.rs
// version: 5
//! Local constants for the exact Token-2022 decoder. Program identifiers live in `kb_program_ids`.
/// Stable Token-2022 surface code.
pub(crate) const SURFACE_CODE: &str = "spl_token_2022";
/// Current decoded event contract version.
pub(crate) const TOKEN_EVENT_VERSION: u32 = 1;
/// Maximum retained instruction payload size.
pub(crate) const MAX_INSTRUCTION_BYTES: usize = 16_384;
/// Maximum retained UTF-8 string size for embedded Token Metadata instructions.
pub(crate) const MAX_METADATA_STRING_BYTES: usize = 4_096;
/// Maximum prefix retained in diagnostics.
pub(crate) const DIAGNOSTIC_PREFIX_BYTES: usize = 32;
/// Maximum decoded sub-instructions in one batch.
pub(crate) const MAX_BATCH_INSTRUCTIONS: usize = 64;
/// Maximum total account metas consumed by one batch.
pub(crate) const MAX_BATCH_ACCOUNTS: usize = 512;
/// Exact top-level instruction inventory published by the resolved Token-2022 interface.
pub(crate) const INSTRUCTION_ENTRIES: &[(u8, &str, bool)] = &[
(0, "initialize_mint", false),
(1, "initialize_account", false),
(2, "initialize_multisig", false),
(3, "transfer", false),
(4, "approve", false),
(5, "revoke", false),
(6, "set_authority", false),
(7, "mint_to", false),
(8, "burn", false),
(9, "close_account", false),
(10, "freeze_account", false),
(11, "thaw_account", false),
(12, "transfer_checked", false),
(13, "approve_checked", false),
(14, "mint_to_checked", false),
(15, "burn_checked", false),
(16, "initialize_account2", false),
(17, "sync_native", false),
(18, "initialize_account3", false),
(19, "initialize_multisig2", false),
(20, "initialize_mint2", false),
(21, "get_account_data_size", false),
(22, "initialize_immutable_owner", false),
(23, "amount_to_ui_amount", false),
(24, "ui_amount_to_amount", false),
(25, "initialize_mint_close_authority", false),
(26, "transfer_fee_extension", false),
(27, "confidential_transfer_extension", false),
(28, "default_account_state_extension", false),
(29, "reallocate", false),
(30, "memo_transfer_extension", false),
(31, "create_native_mint", false),
(32, "initialize_non_transferable_mint", false),
(33, "interest_bearing_mint_extension", false),
(34, "cpi_guard_extension", false),
(35, "initialize_permanent_delegate", false),
(36, "transfer_hook_extension", false),
(37, "confidential_transfer_fee_extension", false),
(38, "withdraw_excess_lamports", false),
(39, "metadata_pointer_extension", false),
(40, "group_pointer_extension", false),
(41, "group_member_pointer_extension", false),
(42, "confidential_mint_burn_extension", false),
(43, "scaled_ui_amount_extension", false),
(44, "pausable_extension", false),
(45, "unwrap_lamports", false),
(46, "permissioned_burn_extension", false),
(255, "batch", false),
];
/// Canonical tracing target for this crate.
pub(crate) const TRACING_TARGET: &str = "kb_decoder_spl_token_2022";

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,48 @@
// file: kb_decoder_spl_token_2022/src/lib.rs
// version: 6
//! Decoder crate for `spl_token_2022`.
#![warn(missing_docs)]
#![deny(unreachable_pub)]
#![forbid(unsafe_code)]
mod constants;
mod decoder;
pub mod state;
mod token;
/// Maximum prefix retained in diagnostics.
pub(crate) use crate::constants::DIAGNOSTIC_PREFIX_BYTES;
/// Exact top-level instruction inventory published by the resolved Token-2022 interface.
pub(crate) use crate::constants::INSTRUCTION_ENTRIES;
/// Maximum total account metas consumed by one batch.
pub(crate) use crate::constants::MAX_BATCH_ACCOUNTS;
/// Maximum decoded sub-instructions in one batch.
pub(crate) use crate::constants::MAX_BATCH_INSTRUCTIONS;
/// Maximum retained instruction payload size.
pub(crate) use crate::constants::MAX_INSTRUCTION_BYTES;
/// Maximum retained UTF-8 string size for embedded Token Metadata instructions.
pub(crate) use crate::constants::MAX_METADATA_STRING_BYTES;
/// Stable Token-2022 surface code.
pub(crate) use crate::constants::SURFACE_CODE;
/// Current decoded event contract version.
pub(crate) use crate::constants::TOKEN_EVENT_VERSION;
/// Canonical tracing target for this crate.
pub(crate) use crate::constants::TRACING_TARGET;
/// Crate-root access to `decode` from `token`.
pub(crate) use crate::token::decode;
/// Crate-root access to `entry_for_tag` from `token`.
pub(crate) use crate::token::entry_for_tag;
/// Crate-root access to `payload_tag` from `token`.
pub(crate) use crate::token::payload_tag;
/// Initial decoder implementation placeholder.
pub use crate::decoder::SplToken2022Decoder;
/// Crate-root access to `Token2022State` from `state`.
pub use crate::state::Token2022State;
/// Crate-root access to `Token2022StateKind` from `state`.
pub use crate::state::Token2022StateKind;
/// Crate-root access to `Token2022TlvEntry` from `state`.
pub use crate::state::Token2022TlvEntry;
/// Parse one Token-2022 Mint, Account, or Multisig state without interpreting extension payloads.
pub use crate::state::parse_token_2022_state;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff