v0.1.0-pre.011
This commit is contained in:
@@ -3,164 +3,498 @@
|
||||
|
||||
//! Consolidated decoder modules.
|
||||
|
||||
pub mod adapter;
|
||||
pub mod admin;
|
||||
pub mod amm;
|
||||
pub mod anchor;
|
||||
pub mod api;
|
||||
pub mod bridge;
|
||||
pub mod clmm;
|
||||
pub mod cpmm;
|
||||
pub mod dlmm;
|
||||
pub mod fees;
|
||||
pub mod governance;
|
||||
pub mod launchpad;
|
||||
pub mod lending;
|
||||
pub mod lock;
|
||||
pub mod metadata;
|
||||
pub mod nft;
|
||||
pub mod orderbook;
|
||||
pub mod perpetuals;
|
||||
pub mod router;
|
||||
pub mod rwa;
|
||||
pub mod solana;
|
||||
pub mod spl;
|
||||
pub mod stable;
|
||||
pub mod staking;
|
||||
pub mod treasury;
|
||||
pub mod vault;
|
||||
pub mod vesting;
|
||||
pub mod wallet;
|
||||
pub mod weighted;
|
||||
mod adapter;
|
||||
mod admin;
|
||||
mod amm;
|
||||
mod anchor;
|
||||
mod api;
|
||||
mod bridge;
|
||||
mod clmm;
|
||||
mod cpmm;
|
||||
mod dlmm;
|
||||
mod fees;
|
||||
mod governance;
|
||||
mod launchpad;
|
||||
mod lending;
|
||||
mod lock;
|
||||
mod metadata;
|
||||
mod nft;
|
||||
mod orderbook;
|
||||
mod perpetuals;
|
||||
mod router;
|
||||
mod rwa;
|
||||
mod solana;
|
||||
mod spl;
|
||||
mod stable;
|
||||
mod staking;
|
||||
mod treasury;
|
||||
mod vault;
|
||||
mod vesting;
|
||||
mod wallet;
|
||||
mod weighted;
|
||||
|
||||
/// One parsed SPL ElGamal registry instruction.
|
||||
pub(crate) use self::spl::ParsedRegistryInstruction;
|
||||
/// Approve Collection Authority discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
/// Approve Use Authority discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_APPROVE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
/// Bubblegum Set Collection Size discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
/// Burn discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_BURN_DISCRIMINATOR;
|
||||
/// Historical Burn Edition NFT discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_BURN_EDITION_NFT_DISCRIMINATOR;
|
||||
/// Historical Burn NFT discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_BURN_NFT_DISCRIMINATOR;
|
||||
/// Close Accounts discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CLOSE_ACCOUNTS_DISCRIMINATOR;
|
||||
/// Close Escrow Account discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
/// Collect discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_COLLECT_DISCRIMINATOR;
|
||||
/// Convert Master Edition V1 to V2 discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR;
|
||||
/// Modern Create discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CREATE_DISCRIMINATOR;
|
||||
/// Create Escrow Account discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CREATE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
/// Historical Create Master Edition discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
/// Create Master Edition V3 discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CREATE_MASTER_EDITION_V3_DISCRIMINATOR;
|
||||
/// Historical Create Metadata Account discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
/// Historical Create Metadata Account V2 discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
/// Create Metadata Account V3 discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR;
|
||||
/// Delegate discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DELEGATE_DISCRIMINATOR;
|
||||
/// Deprecated Create Master Edition discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
/// Deprecated Create Reservation List discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR;
|
||||
/// Deprecated printing-token mint-new-edition discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR;
|
||||
/// Deprecated Mint Printing Tokens discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR;
|
||||
/// Deprecated Mint Printing Tokens Via Token discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Deprecated Set Reservation List discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR;
|
||||
/// Number of bytes retained in malformed-wire diagnostics.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_DIAGNOSTIC_PREFIX_BYTES;
|
||||
/// Stable event payload contract version.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_EVENT_VERSION;
|
||||
/// Freeze Delegated Account discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
/// Current pre-release instruction inventory.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_INSTRUCTION_ENTRIES;
|
||||
/// Lock discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_LOCK_DISCRIMINATOR;
|
||||
/// Maximum encoded base64 instruction payload size.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_MAX_BASE64_BYTES;
|
||||
/// Maximum number of instruction accounts accepted by this decoder.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_MAX_INSTRUCTION_ACCOUNTS;
|
||||
/// Tracing target for this decoder.
|
||||
/// Maximum retained instruction payload size.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_MAX_INSTRUCTION_BYTES;
|
||||
/// Migrate discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_MIGRATE_DISCRIMINATOR;
|
||||
/// Modern Mint discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_MINT_DISCRIMINATOR;
|
||||
/// Mint New Edition From Master Edition Via Token discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Mint New Edition From Master Edition Via Vault Proxy discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR;
|
||||
/// Modern Print discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_PRINT_DISCRIMINATOR;
|
||||
/// Puff Metadata discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_PUFF_METADATA_DISCRIMINATOR;
|
||||
/// Remove Creator Verification discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR;
|
||||
/// Resize discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_RESIZE_DISCRIMINATOR;
|
||||
/// Revoke Collection Authority discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
/// Revoke discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_REVOKE_DISCRIMINATOR;
|
||||
/// Revoke Use Authority discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_REVOKE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
/// Set And Verify Collection discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_SET_AND_VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Set And Verify Sized Collection Item discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Set Collection Size discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
/// Set Token Standard discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_SET_TOKEN_STANDARD_DISCRIMINATOR;
|
||||
/// Sign Metadata discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_SIGN_METADATA_DISCRIMINATOR;
|
||||
/// Stable decoder surface code.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_SURFACE_CODE;
|
||||
/// Thaw Delegated Account discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_THAW_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
/// Canonical tracing target for this crate.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_TRACING_TARGET;
|
||||
/// Transfer discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_TRANSFER_DISCRIMINATOR;
|
||||
/// Transfer Out Of Escrow discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR;
|
||||
/// Unlock discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UNLOCK_DISCRIMINATOR;
|
||||
/// Unverify Collection discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UNVERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Modern Unverify discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UNVERIFY_DISCRIMINATOR;
|
||||
/// Unverify Sized Collection Item discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Modern Update discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UPDATE_DISCRIMINATOR;
|
||||
/// Historical Update Metadata Account discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
/// Update Metadata Account V2 discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
/// Update Primary Sale Happened Via Token discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Modern Use discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_USE_DISCRIMINATOR;
|
||||
/// Utilize discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_UTILIZE_DISCRIMINATOR;
|
||||
/// Verify Collection discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Modern Verify discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_VERIFY_DISCRIMINATOR;
|
||||
/// Verify Sized Collection Item discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Crate-root access to `decode` from `instruction`.
|
||||
pub(crate) use self::metadata::decoder_metadata_metaplex_token_metadata_decode;
|
||||
/// Crate-root access to `entry_for_discriminator` from `instruction`.
|
||||
pub(crate) use self::metadata::decoder_metadata_metaplex_token_metadata_entry_for_discriminator;
|
||||
/// Crate-root access to `payload_discriminator` from `instruction`.
|
||||
pub(crate) use self::metadata::decoder_metadata_metaplex_token_metadata_payload_discriminator;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_ADDRESS_LOOKUP_TABLE_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_BPF_LOADER_DEPRECATED_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_BPF_LOADER_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_BPF_LOADER_UPGRADEABLE_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_COMPUTE_BUDGET_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_CONFIG_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_ED25519_PUBLIC_KEY_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_ED25519_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_FEATURE_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_LOADER_V4_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_MAX_NATIVE_INSTRUCTION_PAYLOAD_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_NATIVE_EVENT_VERSION;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_NATIVE_LOADER_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_PRECOMPILE_COMPONENT_PREFIX_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_PROTOCOL_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SECP256K1_ETHEREUM_ADDRESS_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SECP256K1_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SECP256R1_MAX_SIGNATURES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SECP256R1_PUBLIC_KEY_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SECP256R1_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SIGNATURE_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SLASHING_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_STAKE_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_SYSTEM_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_TRACING_TARGET;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_U8_OFFSETS_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_U16_OFFSETS_BYTES;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_VOTE_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_ZK_ELGAMAL_PROOF_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DC_SOLANA_CORE_ZK_TOKEN_PROOF_SURFACE_CODE;
|
||||
pub(crate) use self::solana::DcSolanaCoreAccountRole;
|
||||
pub(crate) use self::solana::DcSolanaCoreResolvedInstructionPayload;
|
||||
pub(crate) use self::solana::decoder_solana_core_address_lookup_table_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_address_lookup_table_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_address_lookup_table_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_bounded_hexadecimal_prefix;
|
||||
pub(crate) use self::solana::decoder_solana_core_bounded_slice;
|
||||
pub(crate) use self::solana::decoder_solana_core_compute_budget_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_compute_budget_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_compute_budget_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_config_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_config_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_config_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_decode_instruction_data;
|
||||
pub(crate) use self::solana::decoder_solana_core_decoded_payload_length;
|
||||
pub(crate) use self::solana::decoder_solana_core_decoded_payload_sha256;
|
||||
pub(crate) use self::solana::decoder_solana_core_decoded_result;
|
||||
pub(crate) use self::solana::decoder_solana_core_failed_result;
|
||||
pub(crate) use self::solana::decoder_solana_core_feature_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_feature_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_feature_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_hash_bytes;
|
||||
pub(crate) use self::solana::decoder_solana_core_hexadecimal_prefix;
|
||||
pub(crate) use self::solana::decoder_solana_core_loaders_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_loaders_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_loaders_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_payload_hash;
|
||||
pub(crate) use self::solana::decoder_solana_core_precompiles_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_precompiles_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_precompiles_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_read_u32_le;
|
||||
pub(crate) use self::solana::decoder_solana_core_read_u64_le;
|
||||
pub(crate) use self::solana::decoder_solana_core_resolve_accounts;
|
||||
pub(crate) use self::solana::decoder_solana_core_resolve_u8_instruction_payload;
|
||||
pub(crate) use self::solana::decoder_solana_core_resolve_u16_instruction_payload;
|
||||
pub(crate) use self::solana::decoder_solana_core_slashing_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_slashing_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_slashing_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_stake_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_stake_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_stake_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_system_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_system_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_system_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_target_outer_instruction_index;
|
||||
pub(crate) use self::solana::decoder_solana_core_unsupported_result;
|
||||
pub(crate) use self::solana::decoder_solana_core_vote_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_vote_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_vote_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_zk_elgamal_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_zk_elgamal_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_zk_elgamal_recognize;
|
||||
pub(crate) use self::solana::decoder_solana_core_zk_token_proof_coverage;
|
||||
pub(crate) use self::solana::decoder_solana_core_zk_token_proof_decode;
|
||||
pub(crate) use self::solana::decoder_solana_core_zk_token_proof_recognize;
|
||||
/// Current stable Associated Token Account decoded event contract version.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_EVENT_VERSION;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_EVENT_VERSION;
|
||||
/// Exact Associated Token Account instructions published by the official interface.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_INSTRUCTION_ENTRIES;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_INSTRUCTION_ENTRIES;
|
||||
/// Maximum retained account-key text length for the Associated Token Account decoder.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_MAX_ACCOUNT_KEY_BYTES;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_MAX_ACCOUNT_KEY_BYTES;
|
||||
/// Maximum retained instruction account count for the Associated Token Account decoder.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_MAX_ACCOUNTS;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_MAX_ACCOUNTS;
|
||||
/// Maximum retained semantic diagnostic count for the Associated Token Account decoder.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_MAX_DIAGNOSTICS;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_MAX_DIAGNOSTICS;
|
||||
/// Maximum retained Associated Token Account instruction payload size.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_MAX_INSTRUCTION_BYTES;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_MAX_INSTRUCTION_BYTES;
|
||||
/// Maximum retained transaction account-key count for the Associated Token Account decoder.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_MAX_TRANSACTION_KEYS;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_MAX_TRANSACTION_KEYS;
|
||||
/// Stable protocol and surface code for the Associated Token Account program.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_SURFACE_CODE;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_SURFACE_CODE;
|
||||
/// Canonical tracing target for the Associated Token Account decoder.
|
||||
pub(crate) use self::spl::SPL_ASSOCIATED_TOKEN_ACCOUNT_TRACING_TARGET;
|
||||
pub(crate) use self::spl::DC_SPL_ATA_TRACING_TARGET;
|
||||
/// Current stable SPL ElGamal registry event contract version.
|
||||
pub(crate) use self::spl::SPL_ELGAMAL_REGISTRY_EVENT_VERSION;
|
||||
pub(crate) use self::spl::DC_SPL_ELGAMAL_REGISTRY_EVENT_VERSION;
|
||||
/// Maximum retained SPL ElGamal registry instruction payload size.
|
||||
pub(crate) use self::spl::SPL_ELGAMAL_REGISTRY_MAX_INSTRUCTION_BYTES;
|
||||
pub(crate) use self::spl::DC_SPL_ELGAMAL_REGISTRY_MAX_INSTRUCTION_BYTES;
|
||||
/// Stable SPL ElGamal registry surface code.
|
||||
pub(crate) use self::spl::SPL_ELGAMAL_REGISTRY_SURFACE_CODE;
|
||||
pub(crate) use self::spl::DC_SPL_ELGAMAL_REGISTRY_SURFACE_CODE;
|
||||
/// Canonical tracing target for the SPL ElGamal registry decoder.
|
||||
pub(crate) use self::spl::SPL_ELGAMAL_REGISTRY_TRACING_TARGET;
|
||||
pub(crate) use self::spl::DC_SPL_ELGAMAL_REGISTRY_TRACING_TARGET;
|
||||
/// Maximum payload prefix retained for bounded diagnostics.
|
||||
pub(crate) use self::spl::SPL_MEMO_DIAGNOSTIC_PREFIX_BYTES;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_DIAGNOSTIC_PREFIX_BYTES;
|
||||
/// Current stable Memo decoded event contract version.
|
||||
pub(crate) use self::spl::SPL_MEMO_EVENT_VERSION;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_EVENT_VERSION;
|
||||
/// Maximum decoded instruction data retained as a complete Memo payload.
|
||||
pub(crate) use self::spl::SPL_MEMO_MAX_PAYLOAD_BYTES;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_MAX_PAYLOAD_BYTES;
|
||||
/// Stable protocol code shared by Memo generations.
|
||||
pub(crate) use self::spl::SPL_MEMO_PROTOCOL_CODE;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_PROTOCOL_CODE;
|
||||
/// Canonical tracing target for the SPL Memo decoder.
|
||||
pub(crate) use self::spl::SPL_MEMO_TRACING_TARGET;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_TRACING_TARGET;
|
||||
/// Stable Memo v1 surface code.
|
||||
pub(crate) use self::spl::SPL_MEMO_V1_SURFACE_CODE;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_V1_SURFACE_CODE;
|
||||
/// Stable Memo v3 surface code.
|
||||
pub(crate) use self::spl::SPL_MEMO_V3_SURFACE_CODE;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_V3_SURFACE_CODE;
|
||||
/// Stable Memo v4 surface code.
|
||||
pub(crate) use self::spl::SPL_MEMO_V4_SURFACE_CODE;
|
||||
/// Maximum prefix retained in bounded Token-2022 diagnostics.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_DIAGNOSTIC_PREFIX_BYTES;
|
||||
/// Current stable Token-2022 decoded event contract version.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_EVENT_VERSION;
|
||||
/// Exact top-level instruction inventory published by the resolved Token-2022 interface.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_INSTRUCTION_ENTRIES;
|
||||
/// Maximum total account metas consumed by one Token-2022 batch.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_MAX_BATCH_ACCOUNTS;
|
||||
/// Maximum decoded sub-instructions in one Token-2022 batch.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_MAX_BATCH_INSTRUCTIONS;
|
||||
/// Maximum retained Token-2022 instruction payload size.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_MAX_INSTRUCTION_BYTES;
|
||||
/// Maximum retained UTF-8 string size for embedded Token Metadata instructions.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_MAX_METADATA_STRING_BYTES;
|
||||
/// Stable Token-2022 surface code.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_SURFACE_CODE;
|
||||
/// Canonical tracing target for the Token-2022 decoder.
|
||||
pub(crate) use self::spl::SPL_TOKEN_2022_TRACING_TARGET;
|
||||
pub(crate) use self::spl::DC_SPL_MEMO_V4_SURFACE_CODE;
|
||||
/// Maximum prefix retained in bounded classic SPL Token diagnostics.
|
||||
pub(crate) use self::spl::SPL_TOKEN_DIAGNOSTIC_PREFIX_BYTES;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_DIAGNOSTIC_PREFIX_BYTES;
|
||||
/// Current stable classic SPL Token decoded event contract version.
|
||||
pub(crate) use self::spl::SPL_TOKEN_EVENT_VERSION;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_EVENT_VERSION;
|
||||
/// One exact classic SPL Token instruction entry published by the official interface.
|
||||
pub(crate) use self::spl::SPL_TOKEN_INSTRUCTION_ENTRIES;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_INSTRUCTION_ENTRIES;
|
||||
/// Maximum total account metas consumed by one classic SPL Token batch.
|
||||
pub(crate) use self::spl::SPL_TOKEN_MAX_BATCH_ACCOUNTS;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_MAX_BATCH_ACCOUNTS;
|
||||
/// Maximum decoded sub-instructions in one classic SPL Token batch.
|
||||
pub(crate) use self::spl::SPL_TOKEN_MAX_BATCH_INSTRUCTIONS;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_MAX_BATCH_INSTRUCTIONS;
|
||||
/// Maximum retained classic SPL Token instruction payload size.
|
||||
pub(crate) use self::spl::SPL_TOKEN_MAX_INSTRUCTION_BYTES;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_MAX_INSTRUCTION_BYTES;
|
||||
/// Stable protocol and surface code for the classic SPL Token program.
|
||||
pub(crate) use self::spl::SPL_TOKEN_SURFACE_CODE;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_SURFACE_CODE;
|
||||
/// Canonical tracing target for the classic SPL Token decoder.
|
||||
pub(crate) use self::spl::SPL_TOKEN_TRACING_TARGET;
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN_TRACING_TARGET;
|
||||
/// Maximum prefix retained in bounded Token-2022 diagnostics.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_DIAGNOSTIC_PREFIX_BYTES;
|
||||
/// Current stable Token-2022 decoded event contract version.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_EVENT_VERSION;
|
||||
/// Exact top-level instruction inventory published by the resolved Token-2022 interface.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_INSTRUCTION_ENTRIES;
|
||||
/// Maximum total account metas consumed by one Token-2022 batch.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_MAX_BATCH_ACCOUNTS;
|
||||
/// Maximum decoded sub-instructions in one Token-2022 batch.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_MAX_BATCH_INSTRUCTIONS;
|
||||
/// Maximum retained Token-2022 instruction payload size.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_MAX_INSTRUCTION_BYTES;
|
||||
/// Maximum retained UTF-8 string size for embedded Token Metadata instructions.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_MAX_METADATA_STRING_BYTES;
|
||||
/// Stable Token-2022 surface code.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_SURFACE_CODE;
|
||||
/// Canonical tracing target for the Token-2022 decoder.
|
||||
pub(crate) use self::spl::DC_SPL_TOKEN2022_TRACING_TARGET;
|
||||
/// One parsed SPL ElGamal registry instruction.
|
||||
pub(crate) use self::spl::DcSplElGamalRegistryParsedRegistryInstruction;
|
||||
/// Decodes one bounded Associated Token Account instruction.
|
||||
pub(crate) use self::spl::spl_associated_token_account_decode;
|
||||
pub(crate) use self::spl::decoder_spl_associated_token_account_decode;
|
||||
/// Returns the exact entry matching an Associated Token Account wire.
|
||||
pub(crate) use self::spl::spl_associated_token_account_entry;
|
||||
pub(crate) use self::spl::decoder_spl_associated_token_account_entry;
|
||||
/// Reads one bounded Associated Token Account payload.
|
||||
pub(crate) use self::spl::spl_associated_token_account_payload;
|
||||
pub(crate) use self::spl::decoder_spl_associated_token_account_payload;
|
||||
/// Decodes one bounded SPL ElGamal registry instruction.
|
||||
pub(crate) use self::spl::spl_elgamal_registry_decode;
|
||||
pub(crate) use self::spl::decoder_spl_elgamal_registry_decode;
|
||||
/// Decodes one bounded SPL ElGamal registry instruction payload.
|
||||
pub(crate) use self::spl::spl_elgamal_registry_decode_payload;
|
||||
pub(crate) use self::spl::decoder_spl_elgamal_registry_decode_payload;
|
||||
/// Parses one exact SPL ElGamal registry instruction.
|
||||
pub(crate) use self::spl::spl_elgamal_registry_parse;
|
||||
pub(crate) use self::spl::decoder_spl_elgamal_registry_parse;
|
||||
/// Decodes one bounded SPL Memo instruction.
|
||||
pub(crate) use self::spl::spl_memo_decode;
|
||||
/// Decodes one bounded Token-2022 instruction.
|
||||
pub(crate) use self::spl::spl_token_2022_decode;
|
||||
/// Returns the exact entry matching one Token-2022 tag.
|
||||
pub(crate) use self::spl::spl_token_2022_entry_for_tag;
|
||||
/// Returns the first byte of one retained Token-2022 payload.
|
||||
pub(crate) use self::spl::spl_token_2022_payload_tag;
|
||||
pub(crate) use self::spl::decoder_spl_memo_decode;
|
||||
/// Decodes one bounded classic SPL Token instruction.
|
||||
pub(crate) use self::spl::spl_token_decode;
|
||||
pub(crate) use self::spl::decoder_spl_token_decode;
|
||||
/// Returns the published entry matching one classic SPL Token tag.
|
||||
pub(crate) use self::spl::spl_token_entry_for_tag;
|
||||
pub(crate) use self::spl::decoder_spl_token_entry_for_tag;
|
||||
/// Returns the first byte of one retained classic SPL Token payload.
|
||||
pub(crate) use self::spl::spl_token_payload_tag;
|
||||
pub(crate) use self::spl::decoder_spl_token_payload_tag;
|
||||
/// Decodes one bounded Token-2022 instruction.
|
||||
pub(crate) use self::spl::decoder_spl_token2022_decode;
|
||||
/// Returns the exact entry matching one Token-2022 tag.
|
||||
pub(crate) use self::spl::decoder_spl_token2022_entry_for_tag;
|
||||
/// Returns the first byte of one retained Token-2022 payload.
|
||||
pub(crate) use self::spl::decoder_spl_token2022_payload_tag;
|
||||
|
||||
/// Current contextual core instruction input contract version.
|
||||
pub use self::api::DC_API_CORE_INSTRUCTION_INPUT_CONTRACT_VERSION;
|
||||
/// Stable contextual decoded observation.
|
||||
pub use self::api::DcApiDecodedObservation;
|
||||
/// Machine-readable decoder coverage declaration.
|
||||
pub use self::api::DcApiDecoderCoverageDeclaration;
|
||||
/// Declared decoder coverage entry kind.
|
||||
pub use self::api::DcApiDecoderCoverageEntryKind;
|
||||
/// Structured decoder diagnostic.
|
||||
pub use self::api::DcApiDecoderDiagnostic;
|
||||
/// Complete decoder execution result.
|
||||
pub use self::api::DcApiDecoderExecutionResult;
|
||||
/// Stable decoder identity.
|
||||
pub use self::api::DcApiDecoderIdentity;
|
||||
/// Decoder terminal result status.
|
||||
pub use self::api::DcApiDecoderOutcomeStatus;
|
||||
/// Explicit decoding proof.
|
||||
pub use self::api::DcApiDecoderProof;
|
||||
/// Decoding proof category.
|
||||
pub use self::api::DcApiDecoderProofKind;
|
||||
/// Deterministic decoder recognition result.
|
||||
pub use self::api::DcApiDecoderRecognition;
|
||||
/// Exposes the decoder support level.
|
||||
pub use self::api::DcApiDecoderSupport;
|
||||
/// One statically declared decoder surface.
|
||||
pub use self::api::DcApiDecoderSurface;
|
||||
/// Initial decoder implementation placeholder for API-level tests.
|
||||
pub use self::api::DcApiInitialDecoder;
|
||||
/// Contextual instruction decoder contract.
|
||||
pub use self::api::DcApiInstructionDecoder;
|
||||
/// Exposes the common protocol decoder trait.
|
||||
pub use self::api::DcApiProtocolDecoder;
|
||||
/// Computes the deterministic contextual input hash.
|
||||
pub use self::api::decoder_api_decoder_api_contextual_input_hash;
|
||||
/// Returns true when a decoder declares the exact program id.
|
||||
pub use self::api::decoder_api_decoder_handles_program_id;
|
||||
/// Computes a deterministic lowercase SHA-256 hash for one JSON value.
|
||||
pub use self::api::decoder_api_deterministic_json_hash;
|
||||
/// Extracts the first eight payload bytes as hexadecimal when available.
|
||||
pub use self::api::decoder_api_discriminator_8_hex;
|
||||
/// Exhaustive published Metaplex account-key inventory.
|
||||
pub use self::metadata::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
|
||||
/// Exact decoder for the Metaplex Token Metadata program.
|
||||
pub use self::metadata::MetadataMetaplexTokenMetadataDecoder;
|
||||
pub use self::metadata::DcMetadataMetaplexTokenMetadataDecoder;
|
||||
/// Canonical projection shared by Collection and Use Authority records.
|
||||
pub use self::metadata::DcMetadataMtmAuthorityRecordAccountSnapshot;
|
||||
/// Stable identity and policy of one canonical account snapshot.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalAccountIdentity;
|
||||
/// Lifecycle class of one canonical account layout.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalAccountLifecycle;
|
||||
/// Provenance retained for one canonical account observation.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalAccountProvenance;
|
||||
/// Execution policy separated from historical materialization.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalExecutionPolicy;
|
||||
/// Materialization policy for active or historical state.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalMaterializationPolicy;
|
||||
/// Canonical account envelope used by materializers and replay.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalMetadataAccountSnapshot;
|
||||
/// Typed canonical Metaplex account state.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalMetadataAccountState;
|
||||
/// Origin of one canonical account observation.
|
||||
pub use self::metadata::DcMetadataMtmCanonicalObservationSource;
|
||||
/// Canonical projection shared by Metadata and Holder delegate records.
|
||||
pub use self::metadata::DcMetadataMtmDelegateRecordAccountSnapshot;
|
||||
/// Supported edition account layout.
|
||||
pub use self::metadata::DcMetadataMtmEditionAccountKind;
|
||||
/// Canonical bounded projection of one edition or master-edition account.
|
||||
pub use self::metadata::DcMetadataMtmEditionAccountSnapshot;
|
||||
/// Supported Edition Marker account layout.
|
||||
pub use self::metadata::DcMetadataMtmEditionMarkerAccountKind;
|
||||
/// Canonical bounded projection of one Edition Marker account.
|
||||
pub use self::metadata::DcMetadataMtmEditionMarkerAccountSnapshot;
|
||||
/// Bounded error returned while decoding a Metadata account.
|
||||
pub use self::metadata::DcMetadataMtmMetadataAccountDecodeError;
|
||||
/// One entry in the exhaustive published account-key audit.
|
||||
pub use self::metadata::DcMetadataMtmMetadataAccountLayoutAuditEntry;
|
||||
/// Canonical bounded projection of one Metadata account.
|
||||
pub use self::metadata::DcMetadataMtmMetadataAccountSnapshot;
|
||||
/// One bounded historical reservation entry.
|
||||
pub use self::metadata::DcMetadataMtmReservationEntrySnapshot;
|
||||
/// Historical Reservation List account generation.
|
||||
pub use self::metadata::DcMetadataMtmReservationListAccountKind;
|
||||
/// Canonical decode-only projection of a historical Reservation List account.
|
||||
pub use self::metadata::DcMetadataMtmReservationListAccountSnapshot;
|
||||
/// Canonical projection of one Token Owned Escrow account.
|
||||
pub use self::metadata::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
|
||||
/// Authority form used by one Token Owned Escrow account.
|
||||
pub use self::metadata::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
|
||||
/// Canonical bounded projection of one programmable Token Record account.
|
||||
pub use self::metadata::DcMetadataMtmTokenRecordAccountSnapshot;
|
||||
/// Decodes one Collection Authority Record account.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
|
||||
/// Decodes and validates one edition or master-edition account snapshot.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_edition_account;
|
||||
/// Decodes and validates one Edition Marker account snapshot.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
|
||||
/// Decodes one Holder Delegate Record account.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
|
||||
/// Decodes and validates one canonical Metadata account snapshot.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
|
||||
/// Decodes one Metadata Delegate Record account.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
|
||||
/// Decodes one historical Reservation List V1 or V2 account.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
|
||||
/// Decodes one Token Owned Escrow account.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
|
||||
/// Decodes and validates one programmable Token Record account snapshot.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
|
||||
/// Decodes one Use Authority Record account.
|
||||
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;
|
||||
/// Runtime-native Solana decoder with phased maximal native coverage.
|
||||
pub use self::solana::DcSolanaCoreDecoder;
|
||||
/// Exact byte length of one SPL ElGamal registry account.
|
||||
pub use self::spl::ELGAMAL_REGISTRY_ACCOUNT_LEN;
|
||||
/// Parsed SPL ElGamal public-key registry account.
|
||||
pub use self::spl::ElGamalRegistryState;
|
||||
pub use self::spl::DC_SPL_ELGAMAL_REGISTRY_ACCOUNT_LEN;
|
||||
/// Exact decoder for the SPL Associated Token Account program.
|
||||
pub use self::spl::SplAssociatedTokenAccountDecoder;
|
||||
pub use self::spl::DcSplAssociatedTokenAccountDecoder;
|
||||
/// Parsed SPL ElGamal public-key registry account.
|
||||
pub use self::spl::DcSplElGamalRegistryState;
|
||||
/// Exact decoder for the SPL ElGamal registry program.
|
||||
pub use self::spl::SplElgamalRegistryDecoder;
|
||||
pub use self::spl::DcSplElgamalRegistryDecoder;
|
||||
/// Exact decoder for the three registered SPL Memo generations.
|
||||
pub use self::spl::SplMemoDecoder;
|
||||
pub use self::spl::DcSplMemoDecoder;
|
||||
/// Exact decoder for the Token-2022 program.
|
||||
pub use self::spl::SplToken2022Decoder;
|
||||
pub use self::spl::DcSplToken2022Decoder;
|
||||
/// Exact decoder for the classic SPL Token program.
|
||||
pub use self::spl::SplTokenDecoder;
|
||||
pub use self::spl::DcSplTokenDecoder;
|
||||
/// Parsed Token-2022 Mint, Account, or Multisig state.
|
||||
pub use self::spl::Token2022State;
|
||||
pub use self::spl::DcToken2022State;
|
||||
/// Exact Token-2022 base account state kind.
|
||||
pub use self::spl::Token2022StateKind;
|
||||
pub use self::spl::DcToken2022StateKind;
|
||||
/// One exact Token-2022 TLV entry.
|
||||
pub use self::spl::Token2022TlvEntry;
|
||||
pub use self::spl::DcToken2022TlvEntry;
|
||||
/// Parses one exact SPL ElGamal registry account.
|
||||
pub use self::spl::parse_elgamal_registry_state;
|
||||
pub use self::spl::decoder_spl_elgamal_registry_parse_elgamal_registry_state;
|
||||
/// Parses one Token-2022 Mint, Account, or Multisig state.
|
||||
pub use self::spl::parse_token_2022_state;
|
||||
pub use self::spl::decoder_spl_token2022_parse_token2022_state;
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
//! `adapter` decoder family.
|
||||
|
||||
pub mod saber_decimal_wrapper;
|
||||
mod saber_decimal_wrapper;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_adapter_saber_decimal_wrapper`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_adapter_saber_decimal_wrapper";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_adapter_saber_decimal_wrapper";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
//! `admin` decoder family.
|
||||
|
||||
pub mod jupiter_lock;
|
||||
pub mod pump_fees;
|
||||
mod jupiter_lock;
|
||||
mod pump_fees;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_admin_jupiter_lock`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_admin_jupiter_lock";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_admin_jupiter_lock";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_admin_pump_fees`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_admin_pump_fees";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_admin_pump_fees";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,29 +3,29 @@
|
||||
|
||||
//! `amm` decoder family.
|
||||
|
||||
pub mod aldrin_v1;
|
||||
pub mod aldrin_v2;
|
||||
pub mod alphaq;
|
||||
pub mod believe;
|
||||
pub mod bonk_swap;
|
||||
pub mod fluxbeam;
|
||||
pub mod goon_fi;
|
||||
pub mod goosefx_gamma;
|
||||
pub mod goosefx_v2;
|
||||
pub mod guac_swap;
|
||||
pub mod lifinity_swap_v2;
|
||||
pub mod metadao_futarchy_amm;
|
||||
pub mod metadao_v0_5;
|
||||
pub mod meteora_damm_v1;
|
||||
pub mod meteora_damm_v2;
|
||||
pub mod obric_v2;
|
||||
pub mod one_dex;
|
||||
pub mod pump_swap;
|
||||
pub mod raydium_lp_v4;
|
||||
pub mod solfi;
|
||||
pub mod solfi_v2;
|
||||
pub mod vertigo;
|
||||
pub mod virtuals;
|
||||
pub mod woofi;
|
||||
pub mod zero_fi;
|
||||
pub mod zora;
|
||||
mod aldrin_v1;
|
||||
mod aldrin_v2;
|
||||
mod alphaq;
|
||||
mod believe;
|
||||
mod bonk_swap;
|
||||
mod fluxbeam;
|
||||
mod goon_fi;
|
||||
mod goosefx_gamma;
|
||||
mod goosefx_v2;
|
||||
mod guac_swap;
|
||||
mod lifinity_swap_v2;
|
||||
mod metadao_futarchy_amm;
|
||||
mod metadao_v0_5;
|
||||
mod meteora_damm_v1;
|
||||
mod meteora_damm_v2;
|
||||
mod obric_v2;
|
||||
mod one_dex;
|
||||
mod pump_swap;
|
||||
mod raydium_lp_v4;
|
||||
mod solfi;
|
||||
mod solfi_v2;
|
||||
mod vertigo;
|
||||
mod virtuals;
|
||||
mod woofi;
|
||||
mod zero_fi;
|
||||
mod zora;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_aldrin_v1`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_aldrin_v1";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_aldrin_v1";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_aldrin_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_aldrin_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_aldrin_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_alphaq`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_alphaq";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_alphaq";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_believe`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_believe";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_believe";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_bonk_swap`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_bonk_swap";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_bonk_swap";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_fluxbeam`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_fluxbeam";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_fluxbeam";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_goon_fi`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_goon_fi";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_goon_fi";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_goosefx_gamma`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_goosefx_gamma";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_goosefx_gamma";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_goosefx_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_goosefx_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_goosefx_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_guac_swap`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_guac_swap";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_guac_swap";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_lifinity_swap_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_lifinity_swap_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_lifinity_swap_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_metadao_futarchy_amm`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_metadao_futarchy_amm";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_metadao_futarchy_amm";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_metadao_v0_5`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_metadao_v0_5";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_metadao_v0_5";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_meteora_damm_v1`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_meteora_damm_v1";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_meteora_damm_v1";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_meteora_damm_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_meteora_damm_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_meteora_damm_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_obric_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_obric_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_obric_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_one_dex`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_one_dex";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_one_dex";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_pump_swap`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_pump_swap";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_pump_swap";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_raydium_lp_v4`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_raydium_lp_v4";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_raydium_lp_v4";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_solfi`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_solfi";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_solfi";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_solfi_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_solfi_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_solfi_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_vertigo`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_vertigo";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_vertigo";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_virtuals`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_virtuals";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_virtuals";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_woofi`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_woofi";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_woofi";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_zero_fi`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_zero_fi";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_zero_fi";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_amm_zora`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_amm_zora";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_amm_zora";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
//! `anchor` decoder family.
|
||||
|
||||
pub mod core;
|
||||
mod core;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_anchor`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_anchor";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_anchor";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,45 +3,46 @@
|
||||
|
||||
//! Decoder contracts consolidated from `kb_decoder_api`.
|
||||
|
||||
pub mod contracts;
|
||||
pub mod decoder;
|
||||
mod contracts;
|
||||
mod decoder;
|
||||
|
||||
/// Current contextual core instruction input contract version.
|
||||
pub use crate::decoder::api::contracts::CORE_INSTRUCTION_INPUT_CONTRACT_VERSION;
|
||||
pub use self::contracts::DC_API_CORE_INSTRUCTION_INPUT_CONTRACT_VERSION;
|
||||
/// Stable contextual decoded observation.
|
||||
pub use crate::decoder::api::contracts::DecodedObservation;
|
||||
pub use self::contracts::DcApiDecodedObservation;
|
||||
/// Machine-readable decoder coverage declaration.
|
||||
pub use crate::decoder::api::contracts::DecoderCoverageDeclaration;
|
||||
pub use self::contracts::DcApiDecoderCoverageDeclaration;
|
||||
/// Declared decoder coverage entry kind.
|
||||
pub use crate::decoder::api::contracts::DecoderCoverageEntryKind;
|
||||
pub use self::contracts::DcApiDecoderCoverageEntryKind;
|
||||
/// Structured decoder diagnostic.
|
||||
pub use crate::decoder::api::contracts::DecoderDiagnostic;
|
||||
pub use self::contracts::DcApiDecoderDiagnostic;
|
||||
/// Complete decoder execution result.
|
||||
pub use crate::decoder::api::contracts::DecoderExecutionResult;
|
||||
pub use self::contracts::DcApiDecoderExecutionResult;
|
||||
/// Stable decoder identity.
|
||||
pub use crate::decoder::api::contracts::DecoderIdentity;
|
||||
pub use self::contracts::DcApiDecoderIdentity;
|
||||
/// Decoder terminal result status.
|
||||
pub use crate::decoder::api::contracts::DecoderOutcomeStatus;
|
||||
pub use self::contracts::DcApiDecoderOutcomeStatus;
|
||||
/// Explicit decoding proof.
|
||||
pub use crate::decoder::api::contracts::DecoderProof;
|
||||
pub use self::contracts::DcApiDecoderProof;
|
||||
/// Decoding proof category.
|
||||
pub use crate::decoder::api::contracts::DecoderProofKind;
|
||||
pub use self::contracts::DcApiDecoderProofKind;
|
||||
/// Deterministic decoder recognition result.
|
||||
pub use crate::decoder::api::contracts::DecoderRecognition;
|
||||
pub use self::contracts::DcApiDecoderRecognition;
|
||||
/// One statically declared decoder surface.
|
||||
pub use crate::decoder::api::contracts::DecoderSurface;
|
||||
pub use self::contracts::DcApiDecoderSurface;
|
||||
/// Contextual instruction decoder contract.
|
||||
pub use crate::decoder::api::contracts::InstructionDecoder;
|
||||
pub use self::contracts::DcApiInstructionDecoder;
|
||||
/// Computes the deterministic contextual input hash.
|
||||
pub use crate::decoder::api::contracts::contextual_input_hash;
|
||||
pub use self::contracts::decoder_api_decoder_api_contextual_input_hash;
|
||||
/// Returns true when a decoder declares the exact program id.
|
||||
pub use crate::decoder::api::contracts::decoder_handles_program_id;
|
||||
pub use self::contracts::decoder_api_decoder_handles_program_id;
|
||||
/// Computes a deterministic lowercase SHA-256 hash for one JSON value.
|
||||
pub use crate::decoder::api::contracts::deterministic_json_hash;
|
||||
pub use self::contracts::decoder_api_deterministic_json_hash;
|
||||
/// Extracts the first eight payload bytes as hexadecimal when available.
|
||||
pub use crate::decoder::api::contracts::discriminator_8_hex;
|
||||
pub use self::contracts::decoder_api_discriminator_8_hex;
|
||||
/// Exposes the decoder support level.
|
||||
pub use crate::decoder::api::decoder::DecoderSupport;
|
||||
pub use self::decoder::DcApiDecoderSupport;
|
||||
/// Initial decoder implementation placeholder for API-level tests.
|
||||
pub use crate::decoder::api::decoder::InitialDecoder;
|
||||
pub use self::decoder::DcApiInitialDecoder;
|
||||
/// Exposes the common protocol decoder trait.
|
||||
pub use crate::decoder::api::decoder::ProtocolDecoder;
|
||||
pub use self::decoder::DcApiProtocolDecoder;
|
||||
|
||||
@@ -6,18 +6,19 @@
|
||||
use sha2::Digest; // rust-rules: trait-import
|
||||
|
||||
/// Current contextual core instruction input contract version.
|
||||
pub const CORE_INSTRUCTION_INPUT_CONTRACT_VERSION: u32 = crate::CORE_REPLAY_INPUT_CONTRACT_VERSION;
|
||||
pub const DC_API_CORE_INSTRUCTION_INPUT_CONTRACT_VERSION: u32 =
|
||||
crate::MD_CORE_REPLAY_INPUT_CONTRACT_VERSION;
|
||||
|
||||
/// Stable identity of one contextual instruction decoder.
|
||||
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DecoderIdentity {
|
||||
pub struct DcApiDecoderIdentity {
|
||||
/// Stable lower snake case processor name.
|
||||
pub name: std::string::String,
|
||||
/// Semantic or deterministic implementation version.
|
||||
pub version: std::string::String,
|
||||
}
|
||||
|
||||
impl DecoderIdentity {
|
||||
impl DcApiDecoderIdentity {
|
||||
/// Builds a validated decoder identity.
|
||||
pub fn new(
|
||||
name: impl std::convert::Into<std::string::String>,
|
||||
@@ -38,7 +39,7 @@ impl DecoderIdentity {
|
||||
|
||||
/// One statically declared Solana surface supported by a decoder.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub struct DecoderSurface {
|
||||
pub struct DcApiDecoderSurface {
|
||||
/// Exact Solana program identifier.
|
||||
pub program_id: &'static str,
|
||||
/// Stable surface code.
|
||||
@@ -49,7 +50,7 @@ pub struct DecoderSurface {
|
||||
|
||||
/// Declared decoder coverage entry kind.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub enum DecoderCoverageEntryKind {
|
||||
pub enum DcApiDecoderCoverageEntryKind {
|
||||
/// Program instruction entry.
|
||||
Instruction,
|
||||
/// Program event entry.
|
||||
@@ -60,13 +61,13 @@ pub enum DecoderCoverageEntryKind {
|
||||
|
||||
/// Machine-readable decoder coverage declaration.
|
||||
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DecoderCoverageDeclaration {
|
||||
pub struct DcApiDecoderCoverageDeclaration {
|
||||
/// Solana program identifier.
|
||||
pub program_id: std::string::String,
|
||||
/// Optional stable surface code.
|
||||
pub surface_code: std::option::Option<std::string::String>,
|
||||
/// Entry kind.
|
||||
pub entry_kind: DecoderCoverageEntryKind,
|
||||
pub entry_kind: DcApiDecoderCoverageEntryKind,
|
||||
/// Stable instruction, event or discriminator code.
|
||||
pub entry_code: std::string::String,
|
||||
/// Optional normalized lowercase hexadecimal discriminator.
|
||||
@@ -75,12 +76,12 @@ pub struct DecoderCoverageDeclaration {
|
||||
pub historical: bool,
|
||||
}
|
||||
|
||||
impl DecoderCoverageDeclaration {
|
||||
impl DcApiDecoderCoverageDeclaration {
|
||||
/// Builds a validated coverage declaration.
|
||||
pub fn new(
|
||||
program_id: impl std::convert::Into<std::string::String>,
|
||||
surface_code: std::option::Option<std::string::String>,
|
||||
entry_kind: DecoderCoverageEntryKind,
|
||||
entry_kind: DcApiDecoderCoverageEntryKind,
|
||||
entry_code: impl std::convert::Into<std::string::String>,
|
||||
discriminator_hex: std::option::Option<std::string::String>,
|
||||
historical: bool,
|
||||
@@ -122,7 +123,7 @@ impl DecoderCoverageDeclaration {
|
||||
|
||||
/// Deterministic recognition result used by dispatch.
|
||||
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DecoderRecognition {
|
||||
pub struct DcApiDecoderRecognition {
|
||||
/// Whether the decoder is compatible with the input.
|
||||
pub compatible: bool,
|
||||
/// Whether recognition is exact rather than program-only.
|
||||
@@ -137,7 +138,7 @@ pub struct DecoderRecognition {
|
||||
pub discriminator_hex: std::option::Option<std::string::String>,
|
||||
}
|
||||
|
||||
impl DecoderRecognition {
|
||||
impl DcApiDecoderRecognition {
|
||||
/// Builds a non-compatible recognition result.
|
||||
pub fn incompatible() -> Self {
|
||||
return Self {
|
||||
@@ -171,7 +172,7 @@ impl DecoderRecognition {
|
||||
|
||||
/// Decoder terminal result status.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub enum DecoderOutcomeStatus {
|
||||
pub enum DcApiDecoderOutcomeStatus {
|
||||
/// At least one stable decoded observation was produced.
|
||||
Decoded,
|
||||
/// The decoder intentionally ignored a recognized input.
|
||||
@@ -184,7 +185,7 @@ pub enum DecoderOutcomeStatus {
|
||||
|
||||
/// Proof category attached to one decoded observation.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub enum DecoderProofKind {
|
||||
pub enum DcApiDecoderProofKind {
|
||||
/// Exact instruction discriminator match.
|
||||
ExactDiscriminator,
|
||||
/// Exact binary layout decode.
|
||||
@@ -207,18 +208,18 @@ pub enum DecoderProofKind {
|
||||
|
||||
/// Explicit proof attached to one decoded observation.
|
||||
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DecoderProof {
|
||||
pub struct DcApiDecoderProof {
|
||||
/// Proof category.
|
||||
pub kind: DecoderProofKind,
|
||||
pub kind: DcApiDecoderProofKind,
|
||||
/// Decoder confidence.
|
||||
pub confidence: crate::DecoderConfidence,
|
||||
pub confidence: crate::MdDecoderConfidence,
|
||||
/// Stable evidence strings, hashes or classifier codes.
|
||||
pub evidence: std::vec::Vec<std::string::String>,
|
||||
}
|
||||
|
||||
/// Structured decoder diagnostic without third-party error wrappers.
|
||||
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DecoderDiagnostic {
|
||||
pub struct DcApiDecoderDiagnostic {
|
||||
/// Stable machine-readable diagnostic code.
|
||||
pub code: std::string::String,
|
||||
/// Human-readable diagnostic message.
|
||||
@@ -227,7 +228,7 @@ pub struct DecoderDiagnostic {
|
||||
pub retriable: bool,
|
||||
}
|
||||
|
||||
impl DecoderDiagnostic {
|
||||
impl DcApiDecoderDiagnostic {
|
||||
/// Builds a validated decoder diagnostic.
|
||||
pub fn new(
|
||||
code: impl std::convert::Into<std::string::String>,
|
||||
@@ -250,11 +251,11 @@ impl DecoderDiagnostic {
|
||||
|
||||
/// Stable contextual decoded observation persisted by the decode pipeline.
|
||||
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DecodedObservation {
|
||||
pub struct DcApiDecodedObservation {
|
||||
/// Stable processor-owned event key within one input.
|
||||
pub event_key: std::string::String,
|
||||
/// Shared typed protocol event identity.
|
||||
pub event: crate::DecodedProtocolEvent,
|
||||
pub event: crate::MdDecodedProtocolEvent,
|
||||
/// Typed event payload serialized as deterministic JSON.
|
||||
pub payload_json: serde_json::Value,
|
||||
/// Whether the source transaction failed on-chain.
|
||||
@@ -264,10 +265,10 @@ pub struct DecodedObservation {
|
||||
/// Whether the observed state mutation was committed on-chain.
|
||||
pub observation_committed: bool,
|
||||
/// Explicit decoding proof.
|
||||
pub proof: DecoderProof,
|
||||
pub proof: DcApiDecoderProof,
|
||||
}
|
||||
|
||||
impl DecodedObservation {
|
||||
impl DcApiDecodedObservation {
|
||||
/// Validates failed transaction commit semantics and stable identity fields.
|
||||
pub fn validate(&self) -> kb_core::Result<()> {
|
||||
if self.event_key.trim().is_empty() {
|
||||
@@ -295,22 +296,22 @@ impl DecodedObservation {
|
||||
|
||||
/// Complete explicit result produced by one decoder invocation.
|
||||
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DecoderExecutionResult {
|
||||
pub struct DcApiDecoderExecutionResult {
|
||||
/// Terminal decoder status.
|
||||
pub status: DecoderOutcomeStatus,
|
||||
pub status: DcApiDecoderOutcomeStatus,
|
||||
/// Optional recognized instruction or discriminator code.
|
||||
pub recognized_entry_code: std::option::Option<std::string::String>,
|
||||
/// Decoded observations.
|
||||
pub observations: std::vec::Vec<DecodedObservation>,
|
||||
pub observations: std::vec::Vec<DcApiDecodedObservation>,
|
||||
/// Structured diagnostics.
|
||||
pub diagnostics: std::vec::Vec<DecoderDiagnostic>,
|
||||
pub diagnostics: std::vec::Vec<DcApiDecoderDiagnostic>,
|
||||
}
|
||||
|
||||
impl DecoderExecutionResult {
|
||||
impl DcApiDecoderExecutionResult {
|
||||
/// Builds an unsupported result with no false decoded observation.
|
||||
pub fn unsupported(entry_code: std::option::Option<std::string::String>) -> Self {
|
||||
return Self {
|
||||
status: DecoderOutcomeStatus::Unsupported,
|
||||
status: DcApiDecoderOutcomeStatus::Unsupported,
|
||||
recognized_entry_code: entry_code,
|
||||
observations: std::vec::Vec::new(),
|
||||
diagnostics: std::vec::Vec::new(),
|
||||
@@ -320,7 +321,7 @@ impl DecoderExecutionResult {
|
||||
/// Builds an ignored result.
|
||||
pub fn ignored(entry_code: std::option::Option<std::string::String>) -> Self {
|
||||
return Self {
|
||||
status: DecoderOutcomeStatus::Ignored,
|
||||
status: DcApiDecoderOutcomeStatus::Ignored,
|
||||
recognized_entry_code: entry_code,
|
||||
observations: std::vec::Vec::new(),
|
||||
diagnostics: std::vec::Vec::new(),
|
||||
@@ -329,17 +330,17 @@ impl DecoderExecutionResult {
|
||||
|
||||
/// Validates status and observation consistency.
|
||||
pub fn validate(&self) -> kb_core::Result<()> {
|
||||
if self.status == DecoderOutcomeStatus::Decoded && self.observations.is_empty() {
|
||||
if self.status == DcApiDecoderOutcomeStatus::Decoded && self.observations.is_empty() {
|
||||
return std::result::Result::Err(kb_core::Error::invalid_state(
|
||||
"decoded status requires at least one observation",
|
||||
));
|
||||
}
|
||||
if self.status != DecoderOutcomeStatus::Decoded && !self.observations.is_empty() {
|
||||
if self.status != DcApiDecoderOutcomeStatus::Decoded && !self.observations.is_empty() {
|
||||
return std::result::Result::Err(kb_core::Error::invalid_state(
|
||||
"non-decoded status must not contain observations",
|
||||
));
|
||||
}
|
||||
if self.status == DecoderOutcomeStatus::Failed && self.diagnostics.is_empty() {
|
||||
if self.status == DcApiDecoderOutcomeStatus::Failed && self.diagnostics.is_empty() {
|
||||
return std::result::Result::Err(kb_core::Error::invalid_state(
|
||||
"failed decoder status requires at least one diagnostic",
|
||||
));
|
||||
@@ -355,21 +356,24 @@ impl DecoderExecutionResult {
|
||||
}
|
||||
|
||||
/// Contextual instruction decoder contract used by the common pipeline.
|
||||
pub trait InstructionDecoder: std::marker::Send + std::marker::Sync {
|
||||
pub trait DcApiInstructionDecoder: std::marker::Send + std::marker::Sync {
|
||||
/// Returns the stable decoder identity.
|
||||
fn identity(&self) -> DecoderIdentity;
|
||||
fn identity(&self) -> DcApiDecoderIdentity;
|
||||
/// Returns every exact Solana surface supported by the decoder.
|
||||
fn surfaces(&self) -> &'static [DecoderSurface];
|
||||
fn surfaces(&self) -> &'static [DcApiDecoderSurface];
|
||||
/// Returns the machine-readable declared coverage matrix.
|
||||
fn coverage(&self) -> std::vec::Vec<DecoderCoverageDeclaration>;
|
||||
fn coverage(&self) -> std::vec::Vec<DcApiDecoderCoverageDeclaration>;
|
||||
/// Recognizes one contextual core instruction for deterministic dispatch.
|
||||
fn recognize(&self, input: &crate::CoreInstructionReplayInput) -> DecoderRecognition;
|
||||
fn recognize(&self, input: &crate::MdCoreInstructionReplayInput) -> DcApiDecoderRecognition;
|
||||
/// Decodes one recognized contextual core instruction.
|
||||
fn decode(&self, input: &crate::CoreInstructionReplayInput) -> DecoderExecutionResult;
|
||||
fn decode(&self, input: &crate::MdCoreInstructionReplayInput) -> DcApiDecoderExecutionResult;
|
||||
}
|
||||
|
||||
/// Returns true when a decoder declares the exact program id.
|
||||
pub fn decoder_handles_program_id(decoder: &dyn InstructionDecoder, program_id: &str) -> bool {
|
||||
pub fn decoder_api_decoder_handles_program_id(
|
||||
decoder: &dyn DcApiInstructionDecoder,
|
||||
program_id: &str,
|
||||
) -> bool {
|
||||
for surface in decoder.surfaces() {
|
||||
if surface.program_id == program_id {
|
||||
return true;
|
||||
@@ -379,8 +383,8 @@ pub fn decoder_handles_program_id(decoder: &dyn InstructionDecoder, program_id:
|
||||
}
|
||||
|
||||
/// Computes a deterministic lowercase SHA-256 hash for one contextual input.
|
||||
pub fn contextual_input_hash(
|
||||
input: &crate::CoreInstructionReplayInput,
|
||||
pub fn decoder_api_decoder_api_contextual_input_hash(
|
||||
input: &crate::MdCoreInstructionReplayInput,
|
||||
) -> kb_core::Result<std::string::String> {
|
||||
let serialization_result = serde_json::to_value(input);
|
||||
let mut value = match serialization_result {
|
||||
@@ -391,11 +395,11 @@ pub fn contextual_input_hash(
|
||||
)));
|
||||
},
|
||||
};
|
||||
return crate::deterministic_json_hash(&mut value);
|
||||
return crate::decoder_api_deterministic_json_hash(&mut value);
|
||||
}
|
||||
|
||||
/// Computes a deterministic lowercase SHA-256 hash for one JSON value.
|
||||
pub fn deterministic_json_hash(
|
||||
pub fn decoder_api_deterministic_json_hash(
|
||||
value: &mut serde_json::Value,
|
||||
) -> kb_core::Result<std::string::String> {
|
||||
sort_json_value(value);
|
||||
@@ -417,8 +421,8 @@ pub fn deterministic_json_hash(
|
||||
}
|
||||
|
||||
/// Extracts the first eight payload bytes as normalized lowercase hexadecimal when available.
|
||||
pub fn discriminator_8_hex(
|
||||
input: &crate::CoreInstructionReplayInput,
|
||||
pub fn decoder_api_discriminator_8_hex(
|
||||
input: &crate::MdCoreInstructionReplayInput,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
let payload = match &input.instruction_payload_json {
|
||||
std::option::Option::Some(value) => value,
|
||||
@@ -465,8 +469,8 @@ fn sort_json_value(value: &mut serde_json::Value) {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
fn replay_input() -> crate::CoreInstructionReplayInput {
|
||||
let result = crate::CoreInstructionReplayInput::new(
|
||||
fn replay_input() -> crate::MdCoreInstructionReplayInput {
|
||||
let result = crate::MdCoreInstructionReplayInput::new(
|
||||
"signature:0",
|
||||
"signature",
|
||||
42,
|
||||
@@ -497,8 +501,8 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn contextual_input_hash_is_stable() {
|
||||
let first = crate::contextual_input_hash(&replay_input());
|
||||
let second = crate::contextual_input_hash(&replay_input());
|
||||
let first = crate::decoder_api_decoder_api_contextual_input_hash(&replay_input());
|
||||
let second = crate::decoder_api_decoder_api_contextual_input_hash(&replay_input());
|
||||
assert!(first.is_ok());
|
||||
assert_eq!(first, second);
|
||||
}
|
||||
@@ -514,8 +518,8 @@ mod tests {
|
||||
"payloadJson": {"dataBase64": "CAcGBQQDAgE="},
|
||||
"payloadHash": "different-payload-hash"
|
||||
}]);
|
||||
let first_hash = crate::contextual_input_hash(&first);
|
||||
let second_hash = crate::contextual_input_hash(&second);
|
||||
let first_hash = crate::decoder_api_decoder_api_contextual_input_hash(&first);
|
||||
let second_hash = crate::decoder_api_decoder_api_contextual_input_hash(&second);
|
||||
assert!(first_hash.is_ok());
|
||||
assert!(second_hash.is_ok());
|
||||
assert_ne!(first_hash, second_hash);
|
||||
@@ -538,26 +542,26 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn discriminator_uses_first_eight_bytes() {
|
||||
let value = crate::discriminator_8_hex(&replay_input());
|
||||
let value = crate::decoder_api_discriminator_8_hex(&replay_input());
|
||||
assert_eq!(value.as_deref(), std::option::Option::Some("0102030405060708"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn failed_observation_cannot_be_committed() {
|
||||
let observation = crate::DecodedObservation {
|
||||
let observation = crate::DcApiDecodedObservation {
|
||||
event_key: "event".to_string(),
|
||||
event: crate::DecodedProtocolEvent {
|
||||
signature: crate::Signature("signature".to_string()),
|
||||
slot: crate::Slot(42),
|
||||
instruction_path: crate::InstructionPath("0".to_string()),
|
||||
program_id: crate::ProgramId("program".to_string()),
|
||||
protocol_code: crate::ProtocolCode("solana".to_string()),
|
||||
surface_code: crate::SurfaceCode("system_program".to_string()),
|
||||
event_code: crate::EventCode("system_program.attempt".to_string()),
|
||||
event_name: crate::EventName("attempt".to_string()),
|
||||
event_family: crate::EventFamily::Audit,
|
||||
source_kind: crate::EventSourceKind::Instruction,
|
||||
confidence: crate::DecoderConfidence::Exact,
|
||||
event: crate::MdDecodedProtocolEvent {
|
||||
signature: crate::MdSignature("signature".to_string()),
|
||||
slot: crate::MdSlot(42),
|
||||
instruction_path: crate::MdInstructionPath("0".to_string()),
|
||||
program_id: crate::MdProgramId("program".to_string()),
|
||||
protocol_code: crate::MdProtocolCode("solana".to_string()),
|
||||
surface_code: crate::MdSurfaceCode("system_program".to_string()),
|
||||
event_code: crate::MdEventCode("system_program.attempt".to_string()),
|
||||
event_name: crate::MdEventName("attempt".to_string()),
|
||||
event_family: crate::MdEventFamily::Audit,
|
||||
source_kind: crate::MdEventSourceKind::Instruction,
|
||||
confidence: crate::MdDecoderConfidence::Exact,
|
||||
},
|
||||
payload_json: serde_json::json!({}),
|
||||
transaction_failed: true,
|
||||
@@ -565,9 +569,9 @@ mod tests {
|
||||
serde_json::json!({"InstructionError": [0, "Custom"]}),
|
||||
),
|
||||
observation_committed: true,
|
||||
proof: crate::DecoderProof {
|
||||
kind: crate::DecoderProofKind::ExactLayout,
|
||||
confidence: crate::DecoderConfidence::Exact,
|
||||
proof: crate::DcApiDecoderProof {
|
||||
kind: crate::DcApiDecoderProofKind::ExactLayout,
|
||||
confidence: crate::MdDecoderConfidence::Exact,
|
||||
evidence: std::vec!["layout".to_string()],
|
||||
},
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
/// Decoder support level for a program observation.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub enum DecoderSupport {
|
||||
pub enum DcApiDecoderSupport {
|
||||
/// The decoder does not support the observation.
|
||||
No,
|
||||
/// The decoder may support the observation after deeper inspection.
|
||||
@@ -15,7 +15,7 @@ pub enum DecoderSupport {
|
||||
}
|
||||
|
||||
/// Common trait implemented by every protocol decoder crate.
|
||||
pub trait ProtocolDecoder {
|
||||
pub trait DcApiProtocolDecoder {
|
||||
/// Returns the stable decoder name.
|
||||
fn decoder_name(&self) -> &'static str;
|
||||
/// Returns the decoder implementation version.
|
||||
@@ -23,7 +23,7 @@ pub trait ProtocolDecoder {
|
||||
/// Returns the Solana program ids handled by this decoder.
|
||||
fn program_ids(&self) -> &'static [&'static str];
|
||||
/// Checks whether the decoder handles a program id.
|
||||
fn handles_program_id(&self, program_id: &crate::ProgramId) -> bool {
|
||||
fn handles_program_id(&self, program_id: &crate::MdProgramId) -> bool {
|
||||
for candidate in self.program_ids() {
|
||||
if program_id.0.as_str() == *candidate {
|
||||
return true;
|
||||
@@ -32,19 +32,22 @@ pub trait ProtocolDecoder {
|
||||
return false;
|
||||
}
|
||||
/// Checks whether the decoder supports a generic program observation.
|
||||
fn supports_observation(&self, observation: &crate::ProgramObservation) -> DecoderSupport;
|
||||
fn supports_observation(
|
||||
&self,
|
||||
observation: &crate::MdProgramObservation,
|
||||
) -> DcApiDecoderSupport;
|
||||
/// Decodes a generic program observation into protocol events.
|
||||
fn decode_observation(
|
||||
&self,
|
||||
observation: &crate::ProgramObservation,
|
||||
) -> kb_core::Result<std::vec::Vec<crate::DecodedProtocolEvent>>;
|
||||
observation: &crate::MdProgramObservation,
|
||||
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>>;
|
||||
}
|
||||
|
||||
/// Initial decoder implementation placeholder for API-level tests.
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct InitialDecoder;
|
||||
pub struct DcApiInitialDecoder;
|
||||
|
||||
impl ProtocolDecoder for InitialDecoder {
|
||||
impl DcApiProtocolDecoder for DcApiInitialDecoder {
|
||||
fn decoder_name(&self) -> &'static str {
|
||||
return "kb_decoder_api";
|
||||
}
|
||||
@@ -57,17 +60,20 @@ impl ProtocolDecoder for InitialDecoder {
|
||||
return &[];
|
||||
}
|
||||
|
||||
fn supports_observation(&self, observation: &crate::ProgramObservation) -> DecoderSupport {
|
||||
if ProtocolDecoder::handles_program_id(self, &observation.program_id) {
|
||||
return DecoderSupport::Maybe;
|
||||
fn supports_observation(
|
||||
&self,
|
||||
observation: &crate::MdProgramObservation,
|
||||
) -> DcApiDecoderSupport {
|
||||
if DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
|
||||
return DcApiDecoderSupport::Maybe;
|
||||
}
|
||||
return DecoderSupport::No;
|
||||
return DcApiDecoderSupport::No;
|
||||
}
|
||||
|
||||
fn decode_observation(
|
||||
&self,
|
||||
_observation: &crate::ProgramObservation,
|
||||
) -> kb_core::Result<std::vec::Vec<crate::DecodedProtocolEvent>> {
|
||||
_observation: &crate::MdProgramObservation,
|
||||
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
|
||||
return std::result::Result::Ok(std::vec::Vec::new());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
//! `bridge` decoder family.
|
||||
|
||||
pub mod circle_cctp_token_messenger_minter;
|
||||
pub mod circle_cctp_token_messenger_minter_v2;
|
||||
pub mod layer_zero_endpoint;
|
||||
pub mod layer_zero_executor;
|
||||
mod circle_cctp_token_messenger_minter;
|
||||
mod circle_cctp_token_messenger_minter_v2;
|
||||
mod layer_zero_endpoint;
|
||||
mod layer_zero_executor;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_bridge_circle_cctp_token_messenger_minter`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_bridge_circle_cctp_token_messenger_minter";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_bridge_circle_cctp_token_messenger_minter";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_bridge_circle_cctp_token_messenger_minter_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_bridge_circle_cctp_token_messenger_minter_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_bridge_circle_cctp_token_messenger_minter_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_bridge_layer_zero_endpoint`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_bridge_layer_zero_endpoint";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_bridge_layer_zero_endpoint";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_bridge_layer_zero_executor`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_bridge_layer_zero_executor";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_bridge_layer_zero_executor";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
//! `clmm` decoder family.
|
||||
|
||||
pub mod byreal;
|
||||
pub mod fusion;
|
||||
pub mod orca_whirlpool;
|
||||
pub mod pancake_swap;
|
||||
pub mod raydium;
|
||||
pub mod stabble;
|
||||
mod byreal;
|
||||
mod fusion;
|
||||
mod orca_whirlpool;
|
||||
mod pancake_swap;
|
||||
mod raydium;
|
||||
mod stabble;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_clmm_byreal`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_clmm_byreal";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_clmm_byreal";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_clmm_fusion`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_clmm_fusion";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_clmm_fusion";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_clmm_orca_whirlpool`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_clmm_orca_whirlpool";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_clmm_orca_whirlpool";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_clmm_pancake_swap`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_clmm_pancake_swap";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_clmm_pancake_swap";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_clmm_raydium`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_clmm_raydium";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_clmm_raydium";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_clmm_stabble`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_clmm_stabble";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_clmm_stabble";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
//! `cpmm` decoder family.
|
||||
|
||||
pub mod raydium;
|
||||
mod raydium;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_cpmm_raydium`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_cpmm_raydium";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_cpmm_raydium";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
//! `dlmm` decoder family.
|
||||
|
||||
pub mod meteora;
|
||||
mod meteora;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_dlmm_meteora`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_dlmm_meteora";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_dlmm_meteora";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
//! `fees` decoder family.
|
||||
|
||||
pub mod bags_fee_share_v1;
|
||||
pub mod bags_fee_share_v2;
|
||||
mod bags_fee_share_v1;
|
||||
mod bags_fee_share_v2;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_fees_bags_fee_share_v1`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_fees_bags_fee_share_v1";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_fees_bags_fee_share_v1";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_fees_bags_fee_share_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_fees_bags_fee_share_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_fees_bags_fee_share_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
//! `governance` decoder family.
|
||||
|
||||
pub mod metadao_bid_wall;
|
||||
mod metadao_bid_wall;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_governance_metadao_bid_wall`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_governance_metadao_bid_wall";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_governance_metadao_bid_wall";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
//! `launchpad` decoder family.
|
||||
|
||||
pub mod boop_fun;
|
||||
pub mod metadao_ico;
|
||||
pub mod meteora_dbc;
|
||||
pub mod moonit;
|
||||
pub mod orca_wavebreak;
|
||||
pub mod printr;
|
||||
pub mod pump_fun;
|
||||
pub mod pump_pumpup_ai;
|
||||
pub mod raydium_launchlab;
|
||||
mod boop_fun;
|
||||
mod metadao_ico;
|
||||
mod meteora_dbc;
|
||||
mod moonit;
|
||||
mod orca_wavebreak;
|
||||
mod printr;
|
||||
mod pump_fun;
|
||||
mod pump_pumpup_ai;
|
||||
mod raydium_launchlab;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_boop_fun`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_boop_fun";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_boop_fun";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_metadao_ico`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_metadao_ico";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_metadao_ico";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_meteora_dbc`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_meteora_dbc";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_meteora_dbc";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_moonit`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_moonit";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_moonit";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_orca_wavebreak`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_orca_wavebreak";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_orca_wavebreak";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_printr`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_printr";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_printr";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_pump_fun`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_pump_fun";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_pump_fun";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_pump_pumpup_ai`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_pump_pumpup_ai";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_pump_pumpup_ai";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_launchpad_raydium_launchlab`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_launchpad_raydium_launchlab";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_launchpad_raydium_launchlab";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
|
||||
//! `lending` decoder family.
|
||||
|
||||
pub mod clone;
|
||||
pub mod jupiter_lend_borrow;
|
||||
pub mod jupiter_lend_earn;
|
||||
pub mod jupiter_lend_flash_loan;
|
||||
pub mod jupiter_lend_liquidity;
|
||||
pub mod kamino;
|
||||
pub mod marginfi_v2;
|
||||
mod clone;
|
||||
mod jupiter_lend_borrow;
|
||||
mod jupiter_lend_earn;
|
||||
mod jupiter_lend_flash_loan;
|
||||
mod jupiter_lend_liquidity;
|
||||
mod kamino;
|
||||
mod marginfi_v2;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lending_clone`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lending_clone";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lending_clone";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_borrow`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_borrow";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_borrow";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_earn`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_earn";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_earn";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_flash_loan`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_flash_loan";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_flash_loan";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_liquidity`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_liquidity";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lending_jupiter_lend_liquidity";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lending_kamino`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lending_kamino";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lending_kamino";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lending_marginfi_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lending_marginfi_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lending_marginfi_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
//! `lock` decoder family.
|
||||
|
||||
pub mod raydium_lp;
|
||||
mod raydium_lp;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_lock_raydium_lp`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_lock_raydium_lp";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_lock_raydium_lp";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,8 +3,216 @@
|
||||
|
||||
//! `metadata` decoder family.
|
||||
|
||||
pub mod metaplex_token_metadata;
|
||||
pub mod spl_name_service;
|
||||
mod metaplex_token_metadata;
|
||||
mod spl_name_service;
|
||||
|
||||
/// Approve Collection Authority discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
/// Approve Use Authority discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_APPROVE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
/// Bubblegum Set Collection Size discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
/// Burn discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_BURN_DISCRIMINATOR;
|
||||
/// Historical Burn Edition NFT discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_BURN_EDITION_NFT_DISCRIMINATOR;
|
||||
/// Historical Burn NFT discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_BURN_NFT_DISCRIMINATOR;
|
||||
/// Close Accounts discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CLOSE_ACCOUNTS_DISCRIMINATOR;
|
||||
/// Close Escrow Account discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
/// Collect discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_COLLECT_DISCRIMINATOR;
|
||||
/// Convert Master Edition V1 to V2 discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR;
|
||||
/// Modern Create discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CREATE_DISCRIMINATOR;
|
||||
/// Create Escrow Account discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CREATE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
/// Historical Create Master Edition discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
/// Create Master Edition V3 discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CREATE_MASTER_EDITION_V3_DISCRIMINATOR;
|
||||
/// Historical Create Metadata Account discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
/// Historical Create Metadata Account V2 discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
/// Create Metadata Account V3 discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR;
|
||||
/// Delegate discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DELEGATE_DISCRIMINATOR;
|
||||
/// Deprecated Create Master Edition discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
/// Deprecated Create Reservation List discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR;
|
||||
/// Deprecated printing-token mint-new-edition discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR;
|
||||
/// Deprecated Mint Printing Tokens discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR;
|
||||
/// Deprecated Mint Printing Tokens Via Token discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Deprecated Set Reservation List discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR;
|
||||
/// Number of bytes retained in malformed-wire diagnostics.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_DIAGNOSTIC_PREFIX_BYTES;
|
||||
/// Stable event payload contract version.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_EVENT_VERSION;
|
||||
/// Freeze Delegated Account discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
/// Current pre-release instruction inventory.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_INSTRUCTION_ENTRIES;
|
||||
/// Lock discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_LOCK_DISCRIMINATOR;
|
||||
/// Maximum encoded base64 instruction payload size.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_MAX_BASE64_BYTES;
|
||||
/// Maximum number of instruction accounts accepted by this decoder.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_MAX_INSTRUCTION_ACCOUNTS;
|
||||
/// Tracing target for this decoder.
|
||||
/// Maximum retained instruction payload size.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_MAX_INSTRUCTION_BYTES;
|
||||
/// Migrate discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_MIGRATE_DISCRIMINATOR;
|
||||
/// Modern Mint discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_MINT_DISCRIMINATOR;
|
||||
/// Mint New Edition From Master Edition Via Token discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Mint New Edition From Master Edition Via Vault Proxy discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR;
|
||||
/// Modern Print discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_PRINT_DISCRIMINATOR;
|
||||
/// Puff Metadata discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_PUFF_METADATA_DISCRIMINATOR;
|
||||
/// Remove Creator Verification discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR;
|
||||
/// Resize discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_RESIZE_DISCRIMINATOR;
|
||||
/// Revoke Collection Authority discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
/// Revoke discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_REVOKE_DISCRIMINATOR;
|
||||
/// Revoke Use Authority discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_REVOKE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
/// Set And Verify Collection discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_SET_AND_VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Set And Verify Sized Collection Item discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Set Collection Size discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
/// Set Token Standard discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_SET_TOKEN_STANDARD_DISCRIMINATOR;
|
||||
/// Sign Metadata discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_SIGN_METADATA_DISCRIMINATOR;
|
||||
/// Stable decoder surface code.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_SURFACE_CODE;
|
||||
/// Thaw Delegated Account discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_THAW_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
/// Canonical tracing target for this crate.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_TRACING_TARGET;
|
||||
/// Transfer discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_TRANSFER_DISCRIMINATOR;
|
||||
/// Transfer Out Of Escrow discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR;
|
||||
/// Unlock discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UNLOCK_DISCRIMINATOR;
|
||||
/// Unverify Collection discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UNVERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Modern Unverify discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UNVERIFY_DISCRIMINATOR;
|
||||
/// Unverify Sized Collection Item discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Modern Update discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UPDATE_DISCRIMINATOR;
|
||||
/// Historical Update Metadata Account discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
/// Update Metadata Account V2 discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
/// Update Primary Sale Happened Via Token discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Modern Use discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_USE_DISCRIMINATOR;
|
||||
/// Utilize discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_UTILIZE_DISCRIMINATOR;
|
||||
/// Verify Collection discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Modern Verify discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_VERIFY_DISCRIMINATOR;
|
||||
/// Verify Sized Collection Item discriminator.
|
||||
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Crate-root access to `decode` from `instruction`.
|
||||
pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode;
|
||||
/// Crate-root access to `entry_for_discriminator` from `instruction`.
|
||||
pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_entry_for_discriminator;
|
||||
/// Crate-root access to `payload_discriminator` from `instruction`.
|
||||
pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_payload_discriminator;
|
||||
|
||||
/// Exhaustive published Metaplex account-key inventory.
|
||||
pub use self::metaplex_token_metadata::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
|
||||
/// Exact decoder for the Metaplex Token Metadata program.
|
||||
pub use self::metaplex_token_metadata::MetadataMetaplexTokenMetadataDecoder;
|
||||
pub use self::metaplex_token_metadata::DcMetadataMetaplexTokenMetadataDecoder;
|
||||
/// Canonical projection shared by Collection and Use Authority records.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmAuthorityRecordAccountSnapshot;
|
||||
/// Stable identity and policy of one canonical account snapshot.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountIdentity;
|
||||
/// Lifecycle class of one canonical account layout.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountLifecycle;
|
||||
/// Provenance retained for one canonical account observation.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountProvenance;
|
||||
/// Execution policy separated from historical materialization.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalExecutionPolicy;
|
||||
/// Materialization policy for active or historical state.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMaterializationPolicy;
|
||||
/// Canonical account envelope used by materializers and replay.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMetadataAccountSnapshot;
|
||||
/// Typed canonical Metaplex account state.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMetadataAccountState;
|
||||
/// Origin of one canonical account observation.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalObservationSource;
|
||||
/// Canonical projection shared by Metadata and Holder delegate records.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmDelegateRecordAccountSnapshot;
|
||||
/// Supported edition account layout.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmEditionAccountKind;
|
||||
/// Canonical bounded projection of one edition or master-edition account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmEditionAccountSnapshot;
|
||||
/// Supported Edition Marker account layout.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmEditionMarkerAccountKind;
|
||||
/// Canonical bounded projection of one Edition Marker account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmEditionMarkerAccountSnapshot;
|
||||
/// Bounded error returned while decoding a Metadata account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountDecodeError;
|
||||
/// One entry in the exhaustive published account-key audit.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountLayoutAuditEntry;
|
||||
/// Canonical bounded projection of one Metadata account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountSnapshot;
|
||||
/// One bounded historical reservation entry.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmReservationEntrySnapshot;
|
||||
/// Historical Reservation List account generation.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmReservationListAccountKind;
|
||||
/// Canonical decode-only projection of a historical Reservation List account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmReservationListAccountSnapshot;
|
||||
/// Canonical projection of one Token Owned Escrow account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
|
||||
/// Authority form used by one Token Owned Escrow account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
|
||||
/// Canonical bounded projection of one programmable Token Record account.
|
||||
pub use self::metaplex_token_metadata::DcMetadataMtmTokenRecordAccountSnapshot;
|
||||
/// Decodes one Collection Authority Record account.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
|
||||
/// Decodes and validates one edition or master-edition account snapshot.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_edition_account;
|
||||
/// Decodes and validates one Edition Marker account snapshot.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
|
||||
/// Decodes one Holder Delegate Record account.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
|
||||
/// Decodes and validates one canonical Metadata account snapshot.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
|
||||
/// Decodes one Metadata Delegate Record account.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
|
||||
/// Decodes one historical Reservation List V1 or V2 account.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
|
||||
/// Decodes one Token Owned Escrow account.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
|
||||
/// Decodes and validates one programmable Token Record account snapshot.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
|
||||
/// Decodes one Use Authority Record account.
|
||||
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;
|
||||
|
||||
@@ -10,214 +10,212 @@ mod decoder;
|
||||
mod instruction;
|
||||
|
||||
/// Approve Collection Authority discriminator.
|
||||
pub(crate) use self::constants::APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
/// Approve Use Authority discriminator.
|
||||
pub(crate) use self::constants::APPROVE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_APPROVE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
/// Bubblegum Set Collection Size discriminator.
|
||||
pub(crate) use self::constants::BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
/// Burn discriminator.
|
||||
pub(crate) use self::constants::BURN_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_BURN_DISCRIMINATOR;
|
||||
/// Historical Burn Edition NFT discriminator.
|
||||
pub(crate) use self::constants::BURN_EDITION_NFT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_BURN_EDITION_NFT_DISCRIMINATOR;
|
||||
/// Historical Burn NFT discriminator.
|
||||
pub(crate) use self::constants::BURN_NFT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_BURN_NFT_DISCRIMINATOR;
|
||||
/// Close Accounts discriminator.
|
||||
pub(crate) use self::constants::CLOSE_ACCOUNTS_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CLOSE_ACCOUNTS_DISCRIMINATOR;
|
||||
/// Close Escrow Account discriminator.
|
||||
pub(crate) use self::constants::CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
/// Collect discriminator.
|
||||
pub(crate) use self::constants::COLLECT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_COLLECT_DISCRIMINATOR;
|
||||
/// Convert Master Edition V1 to V2 discriminator.
|
||||
pub(crate) use self::constants::CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR;
|
||||
/// Modern Create discriminator.
|
||||
pub(crate) use self::constants::CREATE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CREATE_DISCRIMINATOR;
|
||||
/// Create Escrow Account discriminator.
|
||||
pub(crate) use self::constants::CREATE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CREATE_ESCROW_ACCOUNT_DISCRIMINATOR;
|
||||
/// Historical Create Master Edition discriminator.
|
||||
pub(crate) use self::constants::CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
/// Create Master Edition V3 discriminator.
|
||||
pub(crate) use self::constants::CREATE_MASTER_EDITION_V3_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CREATE_MASTER_EDITION_V3_DISCRIMINATOR;
|
||||
/// Historical Create Metadata Account discriminator.
|
||||
pub(crate) use self::constants::CREATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
/// Historical Create Metadata Account V2 discriminator.
|
||||
pub(crate) use self::constants::CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
/// Create Metadata Account V3 discriminator.
|
||||
pub(crate) use self::constants::CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR;
|
||||
/// Delegate discriminator.
|
||||
pub(crate) use self::constants::DELEGATE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DELEGATE_DISCRIMINATOR;
|
||||
/// Deprecated Create Master Edition discriminator.
|
||||
pub(crate) use self::constants::DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR;
|
||||
/// Deprecated Create Reservation List discriminator.
|
||||
pub(crate) use self::constants::DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR;
|
||||
/// Deprecated printing-token mint-new-edition discriminator.
|
||||
pub(crate) use self::constants::DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR;
|
||||
/// Deprecated Mint Printing Tokens discriminator.
|
||||
pub(crate) use self::constants::DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR;
|
||||
/// Deprecated Mint Printing Tokens Via Token discriminator.
|
||||
pub(crate) use self::constants::DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Deprecated Set Reservation List discriminator.
|
||||
pub(crate) use self::constants::DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR;
|
||||
/// Number of bytes retained in malformed-wire diagnostics.
|
||||
pub(crate) use self::constants::DIAGNOSTIC_PREFIX_BYTES;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_DIAGNOSTIC_PREFIX_BYTES;
|
||||
/// Stable event payload contract version.
|
||||
pub(crate) use self::constants::EVENT_VERSION;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_EVENT_VERSION;
|
||||
/// Freeze Delegated Account discriminator.
|
||||
pub(crate) use self::constants::FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
/// Current pre-release instruction inventory.
|
||||
pub(crate) use self::constants::INSTRUCTION_ENTRIES;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_INSTRUCTION_ENTRIES;
|
||||
/// Lock discriminator.
|
||||
pub(crate) use self::constants::LOCK_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_LOCK_DISCRIMINATOR;
|
||||
/// Maximum encoded base64 instruction payload size.
|
||||
pub(crate) use self::constants::MAX_BASE64_BYTES;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_MAX_BASE64_BYTES;
|
||||
/// Maximum number of instruction accounts accepted by this decoder.
|
||||
pub(crate) use self::constants::MAX_INSTRUCTION_ACCOUNTS;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_MAX_INSTRUCTION_ACCOUNTS;
|
||||
/// Tracing target for this decoder.
|
||||
/// Maximum retained instruction payload size.
|
||||
pub(crate) use self::constants::MAX_INSTRUCTION_BYTES;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_MAX_INSTRUCTION_BYTES;
|
||||
/// Migrate discriminator.
|
||||
pub(crate) use self::constants::MIGRATE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_MIGRATE_DISCRIMINATOR;
|
||||
/// Modern Mint discriminator.
|
||||
pub(crate) use self::constants::MINT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_MINT_DISCRIMINATOR;
|
||||
/// Mint New Edition From Master Edition Via Token discriminator.
|
||||
pub(crate) use self::constants::MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Mint New Edition From Master Edition Via Vault Proxy discriminator.
|
||||
pub(crate) use self::constants::MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR;
|
||||
/// Modern Print discriminator.
|
||||
pub(crate) use self::constants::PRINT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_PRINT_DISCRIMINATOR;
|
||||
/// Puff Metadata discriminator.
|
||||
pub(crate) use self::constants::PUFF_METADATA_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_PUFF_METADATA_DISCRIMINATOR;
|
||||
/// Remove Creator Verification discriminator.
|
||||
pub(crate) use self::constants::REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR;
|
||||
/// Resize discriminator.
|
||||
pub(crate) use self::constants::RESIZE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_RESIZE_DISCRIMINATOR;
|
||||
/// Revoke Collection Authority discriminator.
|
||||
pub(crate) use self::constants::REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
/// Revoke discriminator.
|
||||
pub(crate) use self::constants::REVOKE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_REVOKE_DISCRIMINATOR;
|
||||
/// Revoke Use Authority discriminator.
|
||||
pub(crate) use self::constants::REVOKE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_REVOKE_USE_AUTHORITY_DISCRIMINATOR;
|
||||
/// Set And Verify Collection discriminator.
|
||||
pub(crate) use self::constants::SET_AND_VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_SET_AND_VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Set And Verify Sized Collection Item discriminator.
|
||||
pub(crate) use self::constants::SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Set Collection Size discriminator.
|
||||
pub(crate) use self::constants::SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_SET_COLLECTION_SIZE_DISCRIMINATOR;
|
||||
/// Set Token Standard discriminator.
|
||||
pub(crate) use self::constants::SET_TOKEN_STANDARD_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_SET_TOKEN_STANDARD_DISCRIMINATOR;
|
||||
/// Sign Metadata discriminator.
|
||||
pub(crate) use self::constants::SIGN_METADATA_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_SIGN_METADATA_DISCRIMINATOR;
|
||||
/// Stable decoder surface code.
|
||||
pub(crate) use self::constants::SURFACE_CODE;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_SURFACE_CODE;
|
||||
/// Thaw Delegated Account discriminator.
|
||||
pub(crate) use self::constants::THAW_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_THAW_DELEGATED_ACCOUNT_DISCRIMINATOR;
|
||||
/// Canonical tracing target for this crate.
|
||||
pub(crate) use self::constants::TRACING_TARGET;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_TRACING_TARGET;
|
||||
/// Transfer discriminator.
|
||||
pub(crate) use self::constants::TRANSFER_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_TRANSFER_DISCRIMINATOR;
|
||||
/// Transfer Out Of Escrow discriminator.
|
||||
pub(crate) use self::constants::TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR;
|
||||
/// Unlock discriminator.
|
||||
pub(crate) use self::constants::UNLOCK_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UNLOCK_DISCRIMINATOR;
|
||||
/// Unverify Collection discriminator.
|
||||
pub(crate) use self::constants::UNVERIFY_COLLECTION_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UNVERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Modern Unverify discriminator.
|
||||
pub(crate) use self::constants::UNVERIFY_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UNVERIFY_DISCRIMINATOR;
|
||||
/// Unverify Sized Collection Item discriminator.
|
||||
pub(crate) use self::constants::UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Modern Update discriminator.
|
||||
pub(crate) use self::constants::UPDATE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UPDATE_DISCRIMINATOR;
|
||||
/// Historical Update Metadata Account discriminator.
|
||||
pub(crate) use self::constants::UPDATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_DISCRIMINATOR;
|
||||
/// Update Metadata Account V2 discriminator.
|
||||
pub(crate) use self::constants::UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR;
|
||||
/// Update Primary Sale Happened Via Token discriminator.
|
||||
pub(crate) use self::constants::UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR;
|
||||
/// Modern Use discriminator.
|
||||
pub(crate) use self::constants::USE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_USE_DISCRIMINATOR;
|
||||
/// Utilize discriminator.
|
||||
pub(crate) use self::constants::UTILIZE_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_UTILIZE_DISCRIMINATOR;
|
||||
/// Verify Collection discriminator.
|
||||
pub(crate) use self::constants::VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_VERIFY_COLLECTION_DISCRIMINATOR;
|
||||
/// Modern Verify discriminator.
|
||||
pub(crate) use self::constants::VERIFY_DISCRIMINATOR;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_VERIFY_DISCRIMINATOR;
|
||||
/// Verify Sized Collection Item discriminator.
|
||||
pub(crate) use self::constants::VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Crate-root access to `ParsedInstruction` from `instruction`.
|
||||
pub(crate) use self::instruction::ParsedInstruction;
|
||||
pub(crate) use self::constants::DC_METADATA_MTM_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR;
|
||||
/// Crate-root access to `decode` from `instruction`.
|
||||
pub(crate) use self::instruction::decode;
|
||||
pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_decode;
|
||||
/// Crate-root access to `entry_for_discriminator` from `instruction`.
|
||||
pub(crate) use self::instruction::entry_for_discriminator;
|
||||
pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_entry_for_discriminator;
|
||||
/// Crate-root access to `payload_discriminator` from `instruction`.
|
||||
pub(crate) use self::instruction::payload_discriminator;
|
||||
pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_payload_discriminator;
|
||||
|
||||
/// Canonical projection shared by Collection and Use Authority records.
|
||||
pub use self::account::AuthorityRecordAccountSnapshot;
|
||||
/// Canonical projection shared by Metadata and Holder delegate records.
|
||||
pub use self::account::DelegateRecordAccountSnapshot;
|
||||
/// Supported edition account layout.
|
||||
pub use self::account::EditionAccountKind;
|
||||
/// Canonical bounded projection of one edition or master-edition account.
|
||||
pub use self::account::EditionAccountSnapshot;
|
||||
/// Supported Edition Marker account layout.
|
||||
pub use self::account::EditionMarkerAccountKind;
|
||||
/// Canonical bounded projection of one Edition Marker account.
|
||||
pub use self::account::EditionMarkerAccountSnapshot;
|
||||
/// Exhaustive published Metaplex account-key inventory.
|
||||
pub use self::account::METADATA_ACCOUNT_LAYOUT_AUDIT;
|
||||
pub use self::account::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
|
||||
/// Canonical projection shared by Collection and Use Authority records.
|
||||
pub use self::account::DcMetadataMtmAuthorityRecordAccountSnapshot;
|
||||
/// Canonical projection shared by Metadata and Holder delegate records.
|
||||
pub use self::account::DcMetadataMtmDelegateRecordAccountSnapshot;
|
||||
/// Supported edition account layout.
|
||||
pub use self::account::DcMetadataMtmEditionAccountKind;
|
||||
/// Canonical bounded projection of one edition or master-edition account.
|
||||
pub use self::account::DcMetadataMtmEditionAccountSnapshot;
|
||||
/// Supported Edition Marker account layout.
|
||||
pub use self::account::DcMetadataMtmEditionMarkerAccountKind;
|
||||
/// Canonical bounded projection of one Edition Marker account.
|
||||
pub use self::account::DcMetadataMtmEditionMarkerAccountSnapshot;
|
||||
/// Bounded error returned while decoding a Metadata account.
|
||||
pub use self::account::MetadataAccountDecodeError;
|
||||
pub use self::account::DcMetadataMtmMetadataAccountDecodeError;
|
||||
/// One entry in the exhaustive published account-key audit.
|
||||
pub use self::account::MetadataAccountLayoutAuditEntry;
|
||||
pub use self::account::DcMetadataMtmMetadataAccountLayoutAuditEntry;
|
||||
/// Canonical bounded projection of one Metadata account.
|
||||
pub use self::account::MetadataAccountSnapshot;
|
||||
pub use self::account::DcMetadataMtmMetadataAccountSnapshot;
|
||||
/// One bounded historical reservation entry.
|
||||
pub use self::account::ReservationEntrySnapshot;
|
||||
pub use self::account::DcMetadataMtmReservationEntrySnapshot;
|
||||
/// Historical Reservation List account generation.
|
||||
pub use self::account::ReservationListAccountKind;
|
||||
pub use self::account::DcMetadataMtmReservationListAccountKind;
|
||||
/// Canonical decode-only projection of a historical Reservation List account.
|
||||
pub use self::account::ReservationListAccountSnapshot;
|
||||
pub use self::account::DcMetadataMtmReservationListAccountSnapshot;
|
||||
/// Canonical projection of one Token Owned Escrow account.
|
||||
pub use self::account::TokenOwnedEscrowAccountSnapshot;
|
||||
pub use self::account::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
|
||||
/// Authority form used by one Token Owned Escrow account.
|
||||
pub use self::account::TokenOwnedEscrowAuthorityKind;
|
||||
pub use self::account::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
|
||||
/// Canonical bounded projection of one programmable Token Record account.
|
||||
pub use self::account::TokenRecordAccountSnapshot;
|
||||
pub use self::account::DcMetadataMtmTokenRecordAccountSnapshot;
|
||||
/// Decodes one Collection Authority Record account.
|
||||
pub use self::account::decode_collection_authority_record_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
|
||||
/// Decodes and validates one edition or master-edition account snapshot.
|
||||
pub use self::account::decode_edition_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_edition_account;
|
||||
/// Decodes and validates one Edition Marker account snapshot.
|
||||
pub use self::account::decode_edition_marker_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
|
||||
/// Decodes one Holder Delegate Record account.
|
||||
pub use self::account::decode_holder_delegate_record_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
|
||||
/// Decodes and validates one canonical Metadata account snapshot.
|
||||
pub use self::account::decode_metadata_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
|
||||
/// Decodes one Metadata Delegate Record account.
|
||||
pub use self::account::decode_metadata_delegate_record_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
|
||||
/// Decodes one historical Reservation List V1 or V2 account.
|
||||
pub use self::account::decode_reservation_list_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
|
||||
/// Decodes one Token Owned Escrow account.
|
||||
pub use self::account::decode_token_owned_escrow_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
|
||||
/// Decodes and validates one programmable Token Record account snapshot.
|
||||
pub use self::account::decode_token_record_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
|
||||
/// Decodes one Use Authority Record account.
|
||||
pub use self::account::decode_use_authority_record_account;
|
||||
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;
|
||||
/// Stable identity and policy of one canonical account snapshot.
|
||||
pub use self::canonical::CanonicalAccountIdentity;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalAccountIdentity;
|
||||
/// Lifecycle class of one canonical account layout.
|
||||
pub use self::canonical::CanonicalAccountLifecycle;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalAccountLifecycle;
|
||||
/// Provenance retained for one canonical account observation.
|
||||
pub use self::canonical::CanonicalAccountProvenance;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalAccountProvenance;
|
||||
/// Execution policy separated from historical materialization.
|
||||
pub use self::canonical::CanonicalExecutionPolicy;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalExecutionPolicy;
|
||||
/// Materialization policy for active or historical state.
|
||||
pub use self::canonical::CanonicalMaterializationPolicy;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalMaterializationPolicy;
|
||||
/// Canonical account envelope used by materializers and replay.
|
||||
pub use self::canonical::CanonicalMetadataAccountSnapshot;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalMetadataAccountSnapshot;
|
||||
/// Typed canonical Metaplex account state.
|
||||
pub use self::canonical::CanonicalMetadataAccountState;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalMetadataAccountState;
|
||||
/// Origin of one canonical account observation.
|
||||
pub use self::canonical::CanonicalObservationSource;
|
||||
pub use self::canonical::DcMetadataMtmCanonicalObservationSource;
|
||||
/// Exact Metaplex Token Metadata decoder.
|
||||
pub use self::decoder::MetadataMetaplexTokenMetadataDecoder;
|
||||
pub use self::decoder::DcMetadataMetaplexTokenMetadataDecoder;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@
|
||||
|
||||
/// Lifecycle class of one decoded Metaplex account layout.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub enum CanonicalAccountLifecycle {
|
||||
pub enum DcMetadataMtmCanonicalAccountLifecycle {
|
||||
/// Current account layout used by supported runtime flows.
|
||||
Active,
|
||||
/// Published account layout whose runtime surface is still experimental.
|
||||
@@ -16,7 +16,7 @@ pub enum CanonicalAccountLifecycle {
|
||||
|
||||
/// Materialization policy attached to one canonical account snapshot.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub enum CanonicalMaterializationPolicy {
|
||||
pub enum DcMetadataMtmCanonicalMaterializationPolicy {
|
||||
/// Materialize the latest committed state of an active account.
|
||||
ActiveState,
|
||||
/// Materialize historical state with explicit lifecycle provenance.
|
||||
@@ -25,7 +25,7 @@ pub enum CanonicalMaterializationPolicy {
|
||||
|
||||
/// Execution policy attached to one canonical account layout.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub enum CanonicalExecutionPolicy {
|
||||
pub enum DcMetadataMtmCanonicalExecutionPolicy {
|
||||
/// The layout belongs to current operations that may later be executable.
|
||||
CurrentCandidate,
|
||||
/// The layout belongs to an experimental operation requiring explicit activation.
|
||||
@@ -36,7 +36,7 @@ pub enum CanonicalExecutionPolicy {
|
||||
|
||||
/// Origin of one canonical account observation.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub enum CanonicalObservationSource {
|
||||
pub enum DcMetadataMtmCanonicalObservationSource {
|
||||
/// Account observed from a live subscription or direct live read.
|
||||
Live,
|
||||
/// Account reconstructed while replaying already stored transactions.
|
||||
@@ -51,9 +51,9 @@ pub enum CanonicalObservationSource {
|
||||
|
||||
/// Provenance retained for one canonical account observation.
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
pub struct CanonicalAccountProvenance {
|
||||
pub struct DcMetadataMtmCanonicalAccountProvenance {
|
||||
/// Observation source.
|
||||
pub source: CanonicalObservationSource,
|
||||
pub source: DcMetadataMtmCanonicalObservationSource,
|
||||
/// Slot associated with the account state when known.
|
||||
pub slot: std::option::Option<u64>,
|
||||
/// Provider write version when available.
|
||||
@@ -70,7 +70,7 @@ pub struct CanonicalAccountProvenance {
|
||||
|
||||
/// Stable identity and policy of one canonical Metaplex account snapshot.
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
pub struct CanonicalAccountIdentity {
|
||||
pub struct DcMetadataMtmCanonicalAccountIdentity {
|
||||
/// Stable identity formed from program id and canonical account address.
|
||||
pub stable_id: String,
|
||||
/// Canonical Metaplex Token Metadata program id.
|
||||
@@ -84,74 +84,73 @@ pub struct CanonicalAccountIdentity {
|
||||
/// Internal canonical-model version.
|
||||
pub canonical_version: u16,
|
||||
/// Published lifecycle class.
|
||||
pub lifecycle: CanonicalAccountLifecycle,
|
||||
pub lifecycle: DcMetadataMtmCanonicalAccountLifecycle,
|
||||
/// Materialization policy, including historical backfill state.
|
||||
pub materialization: CanonicalMaterializationPolicy,
|
||||
pub materialization: DcMetadataMtmCanonicalMaterializationPolicy,
|
||||
/// Execution policy separated from materialization.
|
||||
pub execution: CanonicalExecutionPolicy,
|
||||
pub execution: DcMetadataMtmCanonicalExecutionPolicy,
|
||||
}
|
||||
|
||||
/// Typed state carried by one canonical Metaplex account snapshot.
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub enum CanonicalMetadataAccountState {
|
||||
pub enum DcMetadataMtmCanonicalMetadataAccountState {
|
||||
/// Metadata account state.
|
||||
Metadata(crate::decoder::metadata::metaplex_token_metadata::MetadataAccountSnapshot),
|
||||
Metadata(crate::DcMetadataMtmMetadataAccountSnapshot),
|
||||
/// Master Edition or printed Edition state.
|
||||
Edition(crate::decoder::metadata::metaplex_token_metadata::EditionAccountSnapshot),
|
||||
Edition(crate::DcMetadataMtmEditionAccountSnapshot),
|
||||
/// Edition Marker state.
|
||||
EditionMarker(crate::decoder::metadata::metaplex_token_metadata::EditionMarkerAccountSnapshot),
|
||||
EditionMarker(crate::DcMetadataMtmEditionMarkerAccountSnapshot),
|
||||
/// Programmable Token Record state.
|
||||
TokenRecord(crate::decoder::metadata::metaplex_token_metadata::TokenRecordAccountSnapshot),
|
||||
TokenRecord(crate::DcMetadataMtmTokenRecordAccountSnapshot),
|
||||
/// Metadata or holder delegate state.
|
||||
DelegateRecord(
|
||||
crate::decoder::metadata::metaplex_token_metadata::DelegateRecordAccountSnapshot,
|
||||
),
|
||||
DelegateRecord(crate::DcMetadataMtmDelegateRecordAccountSnapshot),
|
||||
/// Collection or use authority state.
|
||||
AuthorityRecord(
|
||||
crate::decoder::metadata::metaplex_token_metadata::AuthorityRecordAccountSnapshot,
|
||||
),
|
||||
AuthorityRecord(crate::DcMetadataMtmAuthorityRecordAccountSnapshot),
|
||||
/// Token-owned escrow state.
|
||||
TokenOwnedEscrow(
|
||||
crate::decoder::metadata::metaplex_token_metadata::TokenOwnedEscrowAccountSnapshot,
|
||||
),
|
||||
TokenOwnedEscrow(crate::DcMetadataMtmTokenOwnedEscrowAccountSnapshot),
|
||||
/// Historical Reservation List state.
|
||||
ReservationList(
|
||||
crate::decoder::metadata::metaplex_token_metadata::ReservationListAccountSnapshot,
|
||||
),
|
||||
ReservationList(crate::DcMetadataMtmReservationListAccountSnapshot),
|
||||
}
|
||||
|
||||
/// Canonical envelope used by future materializers and stateful replay.
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub struct CanonicalMetadataAccountSnapshot {
|
||||
pub struct DcMetadataMtmCanonicalMetadataAccountSnapshot {
|
||||
/// Stable identity and lifecycle policy.
|
||||
pub identity: CanonicalAccountIdentity,
|
||||
pub identity: DcMetadataMtmCanonicalAccountIdentity,
|
||||
/// Observation provenance.
|
||||
pub provenance: CanonicalAccountProvenance,
|
||||
pub provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
/// Typed bounded state.
|
||||
pub state: CanonicalMetadataAccountState,
|
||||
pub state: DcMetadataMtmCanonicalMetadataAccountState,
|
||||
}
|
||||
|
||||
fn canonical_identity(
|
||||
account: &str,
|
||||
layout: &str,
|
||||
discriminant: u8,
|
||||
lifecycle: CanonicalAccountLifecycle,
|
||||
) -> CanonicalAccountIdentity {
|
||||
lifecycle: DcMetadataMtmCanonicalAccountLifecycle,
|
||||
) -> DcMetadataMtmCanonicalAccountIdentity {
|
||||
let program_id = kb_program_ids::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID.to_string();
|
||||
let materialization = match lifecycle {
|
||||
CanonicalAccountLifecycle::Historical => CanonicalMaterializationPolicy::HistoricalState,
|
||||
CanonicalAccountLifecycle::Active | CanonicalAccountLifecycle::ActiveExperimental => {
|
||||
CanonicalMaterializationPolicy::ActiveState
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Historical => {
|
||||
DcMetadataMtmCanonicalMaterializationPolicy::HistoricalState
|
||||
},
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active
|
||||
| DcMetadataMtmCanonicalAccountLifecycle::ActiveExperimental => {
|
||||
DcMetadataMtmCanonicalMaterializationPolicy::ActiveState
|
||||
},
|
||||
};
|
||||
let execution = match lifecycle {
|
||||
CanonicalAccountLifecycle::Historical => CanonicalExecutionPolicy::NeverHistorical,
|
||||
CanonicalAccountLifecycle::Active => CanonicalExecutionPolicy::CurrentCandidate,
|
||||
CanonicalAccountLifecycle::ActiveExperimental => {
|
||||
CanonicalExecutionPolicy::ExperimentalCandidate
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Historical => {
|
||||
DcMetadataMtmCanonicalExecutionPolicy::NeverHistorical
|
||||
},
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active => {
|
||||
DcMetadataMtmCanonicalExecutionPolicy::CurrentCandidate
|
||||
},
|
||||
DcMetadataMtmCanonicalAccountLifecycle::ActiveExperimental => {
|
||||
DcMetadataMtmCanonicalExecutionPolicy::ExperimentalCandidate
|
||||
},
|
||||
};
|
||||
return CanonicalAccountIdentity {
|
||||
return DcMetadataMtmCanonicalAccountIdentity {
|
||||
stable_id: format!("{program_id}:{account}"),
|
||||
program_id,
|
||||
account: account.to_string(),
|
||||
@@ -164,102 +163,102 @@ fn canonical_identity(
|
||||
};
|
||||
}
|
||||
|
||||
impl CanonicalMetadataAccountSnapshot {
|
||||
impl DcMetadataMtmCanonicalMetadataAccountSnapshot {
|
||||
/// Wraps one Metadata account snapshot with stable identity and provenance.
|
||||
pub fn from_metadata(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::MetadataAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmMetadataAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let identity = canonical_identity(
|
||||
&snapshot.account,
|
||||
"MetadataV1",
|
||||
mpl_token_metadata::types::Key::MetadataV1 as u8,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::Metadata(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::Metadata(snapshot),
|
||||
};
|
||||
}
|
||||
|
||||
/// Wraps one Edition or Master Edition snapshot with exact lifecycle policy.
|
||||
pub fn from_edition(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::EditionAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmEditionAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let (layout, discriminant, lifecycle) = match snapshot.kind {
|
||||
crate::decoder::metadata::metaplex_token_metadata::EditionAccountKind::MasterEditionV1 => (
|
||||
crate::DcMetadataMtmEditionAccountKind::MasterEditionV1 => (
|
||||
"MasterEditionV1",
|
||||
mpl_token_metadata::types::Key::MasterEditionV1 as u8,
|
||||
CanonicalAccountLifecycle::Historical,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Historical,
|
||||
),
|
||||
crate::decoder::metadata::metaplex_token_metadata::EditionAccountKind::MasterEditionV2 => (
|
||||
crate::DcMetadataMtmEditionAccountKind::MasterEditionV2 => (
|
||||
"MasterEditionV2",
|
||||
mpl_token_metadata::types::Key::MasterEditionV2 as u8,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
),
|
||||
crate::decoder::metadata::metaplex_token_metadata::EditionAccountKind::EditionV1 => (
|
||||
crate::DcMetadataMtmEditionAccountKind::EditionV1 => (
|
||||
"EditionV1",
|
||||
mpl_token_metadata::types::Key::EditionV1 as u8,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
),
|
||||
};
|
||||
let identity = canonical_identity(&snapshot.account, layout, discriminant, lifecycle);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::Edition(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::Edition(snapshot),
|
||||
};
|
||||
}
|
||||
|
||||
/// Wraps one Edition Marker snapshot with exact lifecycle policy.
|
||||
pub fn from_edition_marker(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::EditionMarkerAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmEditionMarkerAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let (layout, discriminant, lifecycle) = match snapshot.kind {
|
||||
crate::decoder::metadata::metaplex_token_metadata::EditionMarkerAccountKind::EditionMarkerV1 => (
|
||||
crate::DcMetadataMtmEditionMarkerAccountKind::EditionMarkerV1 => (
|
||||
"EditionMarker",
|
||||
mpl_token_metadata::types::Key::EditionMarker as u8,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
),
|
||||
crate::decoder::metadata::metaplex_token_metadata::EditionMarkerAccountKind::EditionMarkerV2 => (
|
||||
crate::DcMetadataMtmEditionMarkerAccountKind::EditionMarkerV2 => (
|
||||
"EditionMarkerV2",
|
||||
mpl_token_metadata::types::Key::EditionMarkerV2 as u8,
|
||||
CanonicalAccountLifecycle::ActiveExperimental,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::ActiveExperimental,
|
||||
),
|
||||
};
|
||||
let identity = canonical_identity(&snapshot.account, layout, discriminant, lifecycle);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::EditionMarker(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::EditionMarker(snapshot),
|
||||
};
|
||||
}
|
||||
|
||||
/// Wraps one Token Record snapshot.
|
||||
pub fn from_token_record(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::TokenRecordAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmTokenRecordAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let identity = canonical_identity(
|
||||
&snapshot.account,
|
||||
"TokenRecord",
|
||||
mpl_token_metadata::types::Key::TokenRecord as u8,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::TokenRecord(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::TokenRecord(snapshot),
|
||||
};
|
||||
}
|
||||
|
||||
/// Wraps one Metadata or Holder Delegate snapshot.
|
||||
pub fn from_delegate_record(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::DelegateRecordAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmDelegateRecordAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let (layout, discriminant) = if snapshot.kind == "MetadataDelegateRecord" {
|
||||
("MetadataDelegate", mpl_token_metadata::types::Key::MetadataDelegate as u8)
|
||||
@@ -270,19 +269,19 @@ impl CanonicalMetadataAccountSnapshot {
|
||||
&snapshot.account,
|
||||
layout,
|
||||
discriminant,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::DelegateRecord(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::DelegateRecord(snapshot),
|
||||
};
|
||||
}
|
||||
|
||||
/// Wraps one Collection or Use Authority snapshot.
|
||||
pub fn from_authority_record(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::AuthorityRecordAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmAuthorityRecordAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let (layout, discriminant) = if snapshot.kind == "CollectionAuthorityRecord" {
|
||||
(
|
||||
@@ -296,43 +295,43 @@ impl CanonicalMetadataAccountSnapshot {
|
||||
&snapshot.account,
|
||||
layout,
|
||||
discriminant,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::AuthorityRecord(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::AuthorityRecord(snapshot),
|
||||
};
|
||||
}
|
||||
|
||||
/// Wraps one Token Owned Escrow snapshot.
|
||||
pub fn from_token_owned_escrow(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::TokenOwnedEscrowAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmTokenOwnedEscrowAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let identity = canonical_identity(
|
||||
&snapshot.account,
|
||||
"TokenOwnedEscrow",
|
||||
mpl_token_metadata::types::Key::TokenOwnedEscrow as u8,
|
||||
CanonicalAccountLifecycle::Active,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Active,
|
||||
);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::TokenOwnedEscrow(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::TokenOwnedEscrow(snapshot),
|
||||
};
|
||||
}
|
||||
|
||||
/// Wraps one historical Reservation List snapshot as materializable historical state.
|
||||
pub fn from_reservation_list(
|
||||
snapshot: crate::decoder::metadata::metaplex_token_metadata::ReservationListAccountSnapshot,
|
||||
provenance: CanonicalAccountProvenance,
|
||||
snapshot: crate::DcMetadataMtmReservationListAccountSnapshot,
|
||||
provenance: DcMetadataMtmCanonicalAccountProvenance,
|
||||
) -> Self {
|
||||
let (layout, discriminant) = match snapshot.kind {
|
||||
crate::decoder::metadata::metaplex_token_metadata::ReservationListAccountKind::V1 => {
|
||||
crate::DcMetadataMtmReservationListAccountKind::V1 => {
|
||||
("ReservationListV1", mpl_token_metadata::types::Key::ReservationListV1 as u8)
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::ReservationListAccountKind::V2 => {
|
||||
crate::DcMetadataMtmReservationListAccountKind::V2 => {
|
||||
("ReservationListV2", mpl_token_metadata::types::Key::ReservationListV2 as u8)
|
||||
},
|
||||
};
|
||||
@@ -340,12 +339,12 @@ impl CanonicalMetadataAccountSnapshot {
|
||||
&snapshot.account,
|
||||
layout,
|
||||
discriminant,
|
||||
CanonicalAccountLifecycle::Historical,
|
||||
DcMetadataMtmCanonicalAccountLifecycle::Historical,
|
||||
);
|
||||
return Self {
|
||||
identity,
|
||||
provenance,
|
||||
state: CanonicalMetadataAccountState::ReservationList(snapshot),
|
||||
state: DcMetadataMtmCanonicalMetadataAccountState::ReservationList(snapshot),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -354,10 +353,10 @@ impl CanonicalMetadataAccountSnapshot {
|
||||
mod tests {
|
||||
#[test]
|
||||
fn historical_state_is_materializable_but_never_executable() {
|
||||
let snapshot = crate::decoder::metadata::metaplex_token_metadata::ReservationListAccountSnapshot {
|
||||
let snapshot = crate::DcMetadataMtmReservationListAccountSnapshot {
|
||||
account: "reservation-account".to_string(),
|
||||
bump: 1,
|
||||
kind: crate::decoder::metadata::metaplex_token_metadata::ReservationListAccountKind::V1,
|
||||
kind: crate::DcMetadataMtmReservationListAccountKind::V1,
|
||||
master_edition: "master-edition".to_string(),
|
||||
resource: "resource".to_string(),
|
||||
supply_snapshot: std::option::Option::Some(7),
|
||||
@@ -366,8 +365,8 @@ mod tests {
|
||||
current_reservation_spots: 0,
|
||||
payload_json: serde_json::json!({}),
|
||||
};
|
||||
let provenance = super::CanonicalAccountProvenance {
|
||||
source: super::CanonicalObservationSource::Backfill,
|
||||
let provenance = super::DcMetadataMtmCanonicalAccountProvenance {
|
||||
source: super::DcMetadataMtmCanonicalObservationSource::Backfill,
|
||||
slot: std::option::Option::Some(42),
|
||||
write_version: std::option::Option::None,
|
||||
signature: std::option::Option::Some("historical-signature".to_string()),
|
||||
@@ -375,21 +374,31 @@ mod tests {
|
||||
inner_instruction_index: std::option::Option::None,
|
||||
committed: true,
|
||||
};
|
||||
let canonical =
|
||||
super::CanonicalMetadataAccountSnapshot::from_reservation_list(snapshot, provenance);
|
||||
assert_eq!(canonical.identity.lifecycle, super::CanonicalAccountLifecycle::Historical);
|
||||
let canonical = super::DcMetadataMtmCanonicalMetadataAccountSnapshot::from_reservation_list(
|
||||
snapshot, provenance,
|
||||
);
|
||||
assert_eq!(
|
||||
canonical.identity.lifecycle,
|
||||
super::DcMetadataMtmCanonicalAccountLifecycle::Historical
|
||||
);
|
||||
assert_eq!(
|
||||
canonical.identity.materialization,
|
||||
super::CanonicalMaterializationPolicy::HistoricalState
|
||||
super::DcMetadataMtmCanonicalMaterializationPolicy::HistoricalState
|
||||
);
|
||||
assert_eq!(
|
||||
canonical.identity.execution,
|
||||
super::DcMetadataMtmCanonicalExecutionPolicy::NeverHistorical
|
||||
);
|
||||
assert_eq!(
|
||||
canonical.provenance.source,
|
||||
super::DcMetadataMtmCanonicalObservationSource::Backfill
|
||||
);
|
||||
assert_eq!(canonical.identity.execution, super::CanonicalExecutionPolicy::NeverHistorical);
|
||||
assert_eq!(canonical.provenance.source, super::CanonicalObservationSource::Backfill);
|
||||
assert!(canonical.identity.stable_id.ends_with(":reservation-account"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn active_and_experimental_layouts_keep_distinct_policies() {
|
||||
let metadata = crate::decoder::metadata::metaplex_token_metadata::MetadataAccountSnapshot {
|
||||
let metadata = crate::DcMetadataMtmMetadataAccountSnapshot {
|
||||
account: "metadata-account".to_string(),
|
||||
bump: 1,
|
||||
mint: "mint".to_string(),
|
||||
@@ -402,8 +411,8 @@ mod tests {
|
||||
is_mutable: true,
|
||||
payload_json: serde_json::json!({}),
|
||||
};
|
||||
let provenance = super::CanonicalAccountProvenance {
|
||||
source: super::CanonicalObservationSource::Live,
|
||||
let provenance = super::DcMetadataMtmCanonicalAccountProvenance {
|
||||
source: super::DcMetadataMtmCanonicalObservationSource::Live,
|
||||
slot: std::option::Option::Some(1),
|
||||
write_version: std::option::Option::Some(2),
|
||||
signature: std::option::Option::None,
|
||||
@@ -411,14 +420,21 @@ mod tests {
|
||||
inner_instruction_index: std::option::Option::None,
|
||||
committed: true,
|
||||
};
|
||||
let canonical =
|
||||
super::CanonicalMetadataAccountSnapshot::from_metadata(metadata, provenance);
|
||||
assert_eq!(canonical.identity.lifecycle, super::CanonicalAccountLifecycle::Active);
|
||||
let canonical = super::DcMetadataMtmCanonicalMetadataAccountSnapshot::from_metadata(
|
||||
metadata, provenance,
|
||||
);
|
||||
assert_eq!(
|
||||
canonical.identity.lifecycle,
|
||||
super::DcMetadataMtmCanonicalAccountLifecycle::Active
|
||||
);
|
||||
assert_eq!(
|
||||
canonical.identity.materialization,
|
||||
super::CanonicalMaterializationPolicy::ActiveState
|
||||
super::DcMetadataMtmCanonicalMaterializationPolicy::ActiveState
|
||||
);
|
||||
assert_eq!(
|
||||
canonical.identity.execution,
|
||||
super::DcMetadataMtmCanonicalExecutionPolicy::CurrentCandidate
|
||||
);
|
||||
assert_eq!(canonical.identity.execution, super::CanonicalExecutionPolicy::CurrentCandidate);
|
||||
assert_eq!(canonical.identity.discriminant, 4);
|
||||
assert_eq!(canonical.identity.canonical_version, 1);
|
||||
}
|
||||
|
||||
@@ -4,254 +4,325 @@
|
||||
//! Internal constants for Metaplex Token Metadata decoding.
|
||||
|
||||
/// Stable decoder surface code.
|
||||
pub(crate) const SURFACE_CODE: &str = "metadata_metaplex_token_metadata";
|
||||
pub(crate) const DC_METADATA_MTM_SURFACE_CODE: &str = "metadata_metaplex_token_metadata";
|
||||
/// Maximum retained instruction payload size.
|
||||
pub(crate) const MAX_INSTRUCTION_BYTES: usize = 16_384;
|
||||
pub(crate) const DC_METADATA_MTM_MAX_INSTRUCTION_BYTES: usize = 16_384;
|
||||
/// Maximum encoded base64 instruction payload size.
|
||||
pub(crate) const MAX_BASE64_BYTES: usize = 21_852;
|
||||
pub(crate) const DC_METADATA_MTM_MAX_BASE64_BYTES: usize = 21_852;
|
||||
/// Maximum number of instruction accounts accepted by this decoder.
|
||||
pub(crate) const MAX_INSTRUCTION_ACCOUNTS: usize = 64;
|
||||
pub(crate) const DC_METADATA_MTM_MAX_INSTRUCTION_ACCOUNTS: usize = 64;
|
||||
/// Number of bytes retained in malformed-wire diagnostics.
|
||||
pub(crate) const DIAGNOSTIC_PREFIX_BYTES: usize = 32;
|
||||
pub(crate) const DC_METADATA_MTM_DIAGNOSTIC_PREFIX_BYTES: usize = 32;
|
||||
/// Stable event payload contract version.
|
||||
pub(crate) const EVENT_VERSION: u32 = 1;
|
||||
pub(crate) const DC_METADATA_MTM_EVENT_VERSION: u32 = 1;
|
||||
/// Deprecated Create Master Edition discriminator.
|
||||
pub(crate) const DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR: u8 = 2;
|
||||
pub(crate) const DC_METADATA_MTM_DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR: u8 = 2;
|
||||
/// Deprecated Set Reservation List discriminator.
|
||||
pub(crate) const DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR: u8 = 5;
|
||||
pub(crate) const DC_METADATA_MTM_DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR: u8 = 5;
|
||||
/// Deprecated Create Reservation List discriminator.
|
||||
pub(crate) const DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR: u8 = 6;
|
||||
pub(crate) const DC_METADATA_MTM_DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR: u8 = 6;
|
||||
/// Deprecated Mint Printing Tokens Via Token discriminator.
|
||||
pub(crate) const DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR: u8 = 8;
|
||||
pub(crate) const DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR: u8 = 8;
|
||||
/// Deprecated Mint Printing Tokens discriminator.
|
||||
pub(crate) const DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR: u8 = 9;
|
||||
pub(crate) const DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR: u8 = 9;
|
||||
/// Historical Create Master Edition discriminator.
|
||||
pub(crate) const CREATE_MASTER_EDITION_DISCRIMINATOR: u8 = 10;
|
||||
pub(crate) const DC_METADATA_MTM_CREATE_MASTER_EDITION_DISCRIMINATOR: u8 = 10;
|
||||
/// Deprecated printing-token mint-new-edition discriminator.
|
||||
pub(crate) const DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR: u8 = 3;
|
||||
pub(crate) const DC_METADATA_MTM_DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR: u8 =
|
||||
3;
|
||||
/// Historical Create Metadata Account discriminator.
|
||||
pub(crate) const CREATE_METADATA_ACCOUNT_DISCRIMINATOR: u8 = 0;
|
||||
pub(crate) const DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_DISCRIMINATOR: u8 = 0;
|
||||
/// Historical Update Metadata Account discriminator.
|
||||
pub(crate) const UPDATE_METADATA_ACCOUNT_DISCRIMINATOR: u8 = 1;
|
||||
pub(crate) const DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_DISCRIMINATOR: u8 = 1;
|
||||
/// Historical Create Metadata Account V2 discriminator.
|
||||
pub(crate) const CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR: u8 = 16;
|
||||
pub(crate) const DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR: u8 = 16;
|
||||
/// Create Metadata Account V3 discriminator.
|
||||
pub(crate) const CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR: u8 = 33;
|
||||
pub(crate) const DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR: u8 = 33;
|
||||
/// Update Metadata Account V2 discriminator.
|
||||
pub(crate) const UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR: u8 = 15;
|
||||
pub(crate) const DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR: u8 = 15;
|
||||
/// Verify Collection discriminator.
|
||||
pub(crate) const VERIFY_COLLECTION_DISCRIMINATOR: u8 = 18;
|
||||
pub(crate) const DC_METADATA_MTM_VERIFY_COLLECTION_DISCRIMINATOR: u8 = 18;
|
||||
/// Unverify Collection discriminator.
|
||||
pub(crate) const UNVERIFY_COLLECTION_DISCRIMINATOR: u8 = 22;
|
||||
pub(crate) const DC_METADATA_MTM_UNVERIFY_COLLECTION_DISCRIMINATOR: u8 = 22;
|
||||
/// Set And Verify Collection discriminator.
|
||||
pub(crate) const SET_AND_VERIFY_COLLECTION_DISCRIMINATOR: u8 = 25;
|
||||
pub(crate) const DC_METADATA_MTM_SET_AND_VERIFY_COLLECTION_DISCRIMINATOR: u8 = 25;
|
||||
/// Approve Collection Authority discriminator.
|
||||
pub(crate) const APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR: u8 = 23;
|
||||
pub(crate) const DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR: u8 = 23;
|
||||
/// Revoke Collection Authority discriminator.
|
||||
pub(crate) const REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR: u8 = 24;
|
||||
pub(crate) const DC_METADATA_MTM_REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR: u8 = 24;
|
||||
/// Verify Sized Collection Item discriminator.
|
||||
pub(crate) const VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR: u8 = 30;
|
||||
pub(crate) const DC_METADATA_MTM_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR: u8 = 30;
|
||||
/// Unverify Sized Collection Item discriminator.
|
||||
pub(crate) const UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR: u8 = 31;
|
||||
pub(crate) const DC_METADATA_MTM_UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR: u8 = 31;
|
||||
/// Set And Verify Sized Collection Item discriminator.
|
||||
pub(crate) const SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR: u8 = 32;
|
||||
pub(crate) const DC_METADATA_MTM_SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR: u8 = 32;
|
||||
/// Sign Metadata discriminator.
|
||||
pub(crate) const SIGN_METADATA_DISCRIMINATOR: u8 = 7;
|
||||
pub(crate) const DC_METADATA_MTM_SIGN_METADATA_DISCRIMINATOR: u8 = 7;
|
||||
/// Update Primary Sale Happened Via Token discriminator.
|
||||
pub(crate) const UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR: u8 = 4;
|
||||
pub(crate) const DC_METADATA_MTM_UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR: u8 = 4;
|
||||
/// Utilize discriminator.
|
||||
pub(crate) const UTILIZE_DISCRIMINATOR: u8 = 19;
|
||||
pub(crate) const DC_METADATA_MTM_UTILIZE_DISCRIMINATOR: u8 = 19;
|
||||
/// Approve Use Authority discriminator.
|
||||
pub(crate) const APPROVE_USE_AUTHORITY_DISCRIMINATOR: u8 = 20;
|
||||
pub(crate) const DC_METADATA_MTM_APPROVE_USE_AUTHORITY_DISCRIMINATOR: u8 = 20;
|
||||
/// Revoke Use Authority discriminator.
|
||||
pub(crate) const REVOKE_USE_AUTHORITY_DISCRIMINATOR: u8 = 21;
|
||||
pub(crate) const DC_METADATA_MTM_REVOKE_USE_AUTHORITY_DISCRIMINATOR: u8 = 21;
|
||||
/// Puff Metadata discriminator.
|
||||
pub(crate) const PUFF_METADATA_DISCRIMINATOR: u8 = 14;
|
||||
pub(crate) const DC_METADATA_MTM_PUFF_METADATA_DISCRIMINATOR: u8 = 14;
|
||||
/// Freeze Delegated Account discriminator.
|
||||
pub(crate) const FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR: u8 = 26;
|
||||
pub(crate) const DC_METADATA_MTM_FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR: u8 = 26;
|
||||
/// Thaw Delegated Account discriminator.
|
||||
pub(crate) const THAW_DELEGATED_ACCOUNT_DISCRIMINATOR: u8 = 27;
|
||||
pub(crate) const DC_METADATA_MTM_THAW_DELEGATED_ACCOUNT_DISCRIMINATOR: u8 = 27;
|
||||
/// Remove Creator Verification discriminator.
|
||||
pub(crate) const REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR: u8 = 28;
|
||||
pub(crate) const DC_METADATA_MTM_REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR: u8 = 28;
|
||||
/// Set Token Standard discriminator.
|
||||
pub(crate) const SET_TOKEN_STANDARD_DISCRIMINATOR: u8 = 35;
|
||||
pub(crate) const DC_METADATA_MTM_SET_TOKEN_STANDARD_DISCRIMINATOR: u8 = 35;
|
||||
/// Mint New Edition From Master Edition Via Token discriminator.
|
||||
pub(crate) const MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR: u8 = 11;
|
||||
pub(crate) const DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR: u8 =
|
||||
11;
|
||||
/// Mint New Edition From Master Edition Via Vault Proxy discriminator.
|
||||
pub(crate) const MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR: u8 = 13;
|
||||
pub(crate) const DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR: u8 = 13;
|
||||
/// Convert Master Edition V1 to V2 discriminator.
|
||||
pub(crate) const CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR: u8 = 12;
|
||||
pub(crate) const DC_METADATA_MTM_CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR: u8 = 12;
|
||||
/// Create Master Edition V3 discriminator.
|
||||
pub(crate) const CREATE_MASTER_EDITION_V3_DISCRIMINATOR: u8 = 17;
|
||||
pub(crate) const DC_METADATA_MTM_CREATE_MASTER_EDITION_V3_DISCRIMINATOR: u8 = 17;
|
||||
/// Set Collection Size discriminator.
|
||||
pub(crate) const SET_COLLECTION_SIZE_DISCRIMINATOR: u8 = 34;
|
||||
pub(crate) const DC_METADATA_MTM_SET_COLLECTION_SIZE_DISCRIMINATOR: u8 = 34;
|
||||
/// Bubblegum Set Collection Size discriminator.
|
||||
pub(crate) const BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR: u8 = 36;
|
||||
pub(crate) const DC_METADATA_MTM_BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR: u8 = 36;
|
||||
/// Create Escrow Account discriminator.
|
||||
pub(crate) const CREATE_ESCROW_ACCOUNT_DISCRIMINATOR: u8 = 38;
|
||||
pub(crate) const DC_METADATA_MTM_CREATE_ESCROW_ACCOUNT_DISCRIMINATOR: u8 = 38;
|
||||
/// Close Escrow Account discriminator.
|
||||
pub(crate) const CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR: u8 = 39;
|
||||
pub(crate) const DC_METADATA_MTM_CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR: u8 = 39;
|
||||
/// Transfer Out Of Escrow discriminator.
|
||||
pub(crate) const TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR: u8 = 40;
|
||||
pub(crate) const DC_METADATA_MTM_TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR: u8 = 40;
|
||||
/// Collect discriminator.
|
||||
pub(crate) const COLLECT_DISCRIMINATOR: u8 = 54;
|
||||
pub(crate) const DC_METADATA_MTM_COLLECT_DISCRIMINATOR: u8 = 54;
|
||||
/// Historical Burn NFT discriminator.
|
||||
pub(crate) const BURN_NFT_DISCRIMINATOR: u8 = 29;
|
||||
pub(crate) const DC_METADATA_MTM_BURN_NFT_DISCRIMINATOR: u8 = 29;
|
||||
/// Historical Burn Edition NFT discriminator.
|
||||
pub(crate) const BURN_EDITION_NFT_DISCRIMINATOR: u8 = 37;
|
||||
pub(crate) const DC_METADATA_MTM_BURN_EDITION_NFT_DISCRIMINATOR: u8 = 37;
|
||||
/// Burn discriminator.
|
||||
pub(crate) const BURN_DISCRIMINATOR: u8 = 41;
|
||||
pub(crate) const DC_METADATA_MTM_BURN_DISCRIMINATOR: u8 = 41;
|
||||
/// Lock discriminator.
|
||||
pub(crate) const LOCK_DISCRIMINATOR: u8 = 46;
|
||||
pub(crate) const DC_METADATA_MTM_LOCK_DISCRIMINATOR: u8 = 46;
|
||||
/// Unlock discriminator.
|
||||
pub(crate) const UNLOCK_DISCRIMINATOR: u8 = 47;
|
||||
pub(crate) const DC_METADATA_MTM_UNLOCK_DISCRIMINATOR: u8 = 47;
|
||||
/// Transfer discriminator.
|
||||
pub(crate) const TRANSFER_DISCRIMINATOR: u8 = 49;
|
||||
pub(crate) const DC_METADATA_MTM_TRANSFER_DISCRIMINATOR: u8 = 49;
|
||||
/// Close Accounts discriminator.
|
||||
pub(crate) const CLOSE_ACCOUNTS_DISCRIMINATOR: u8 = 57;
|
||||
pub(crate) const DC_METADATA_MTM_CLOSE_ACCOUNTS_DISCRIMINATOR: u8 = 57;
|
||||
/// Modern Create discriminator.
|
||||
pub(crate) const CREATE_DISCRIMINATOR: u8 = 42;
|
||||
pub(crate) const DC_METADATA_MTM_CREATE_DISCRIMINATOR: u8 = 42;
|
||||
/// Modern Mint discriminator.
|
||||
pub(crate) const MINT_DISCRIMINATOR: u8 = 43;
|
||||
pub(crate) const DC_METADATA_MTM_MINT_DISCRIMINATOR: u8 = 43;
|
||||
/// Modern Print discriminator.
|
||||
pub(crate) const PRINT_DISCRIMINATOR: u8 = 55;
|
||||
pub(crate) const DC_METADATA_MTM_PRINT_DISCRIMINATOR: u8 = 55;
|
||||
/// Modern Update discriminator.
|
||||
pub(crate) const UPDATE_DISCRIMINATOR: u8 = 50;
|
||||
pub(crate) const DC_METADATA_MTM_UPDATE_DISCRIMINATOR: u8 = 50;
|
||||
/// Modern Use discriminator.
|
||||
pub(crate) const USE_DISCRIMINATOR: u8 = 51;
|
||||
pub(crate) const DC_METADATA_MTM_USE_DISCRIMINATOR: u8 = 51;
|
||||
/// Modern Verify discriminator.
|
||||
pub(crate) const VERIFY_DISCRIMINATOR: u8 = 52;
|
||||
pub(crate) const DC_METADATA_MTM_VERIFY_DISCRIMINATOR: u8 = 52;
|
||||
/// Modern Unverify discriminator.
|
||||
pub(crate) const UNVERIFY_DISCRIMINATOR: u8 = 53;
|
||||
pub(crate) const DC_METADATA_MTM_UNVERIFY_DISCRIMINATOR: u8 = 53;
|
||||
/// Migrate discriminator.
|
||||
pub(crate) const MIGRATE_DISCRIMINATOR: u8 = 48;
|
||||
pub(crate) const DC_METADATA_MTM_MIGRATE_DISCRIMINATOR: u8 = 48;
|
||||
/// Resize discriminator.
|
||||
pub(crate) const RESIZE_DISCRIMINATOR: u8 = 56;
|
||||
pub(crate) const DC_METADATA_MTM_RESIZE_DISCRIMINATOR: u8 = 56;
|
||||
/// Delegate discriminator.
|
||||
pub(crate) const DELEGATE_DISCRIMINATOR: u8 = 44;
|
||||
pub(crate) const DC_METADATA_MTM_DELEGATE_DISCRIMINATOR: u8 = 44;
|
||||
/// Revoke discriminator.
|
||||
pub(crate) const REVOKE_DISCRIMINATOR: u8 = 45;
|
||||
pub(crate) const DC_METADATA_MTM_REVOKE_DISCRIMINATOR: u8 = 45;
|
||||
/// Current pre-release instruction inventory.
|
||||
pub(crate) const INSTRUCTION_ENTRIES: &[(u8, &str, bool)] = &[
|
||||
(CREATE_METADATA_ACCOUNT_DISCRIMINATOR, "create_metadata_account", true),
|
||||
pub(crate) const DC_METADATA_MTM_INSTRUCTION_ENTRIES: &[(u8, &str, bool)] = &[
|
||||
(
|
||||
DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_DISCRIMINATOR,
|
||||
"create_metadata_account",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR,
|
||||
"deprecated_create_master_edition",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR,
|
||||
"deprecated_mint_new_edition_from_master_edition_via_printing_token",
|
||||
true,
|
||||
),
|
||||
(UPDATE_METADATA_ACCOUNT_DISCRIMINATOR, "update_metadata_account", true),
|
||||
(
|
||||
UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_DISCRIMINATOR,
|
||||
"update_metadata_account",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR,
|
||||
"update_primary_sale_happened_via_token",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR,
|
||||
"deprecated_set_reservation_list",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR,
|
||||
"deprecated_create_reservation_list",
|
||||
true,
|
||||
),
|
||||
(SIGN_METADATA_DISCRIMINATOR, "sign_metadata", false),
|
||||
(DC_METADATA_MTM_SIGN_METADATA_DISCRIMINATOR, "sign_metadata", false),
|
||||
(
|
||||
DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR,
|
||||
"deprecated_mint_printing_tokens_via_token",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR,
|
||||
"deprecated_mint_printing_tokens",
|
||||
true,
|
||||
),
|
||||
(CREATE_MASTER_EDITION_DISCRIMINATOR, "create_master_edition", true),
|
||||
(PUFF_METADATA_DISCRIMINATOR, "puff_metadata", false),
|
||||
(
|
||||
MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_CREATE_MASTER_EDITION_DISCRIMINATOR,
|
||||
"create_master_edition",
|
||||
true,
|
||||
),
|
||||
(DC_METADATA_MTM_PUFF_METADATA_DISCRIMINATOR, "puff_metadata", false),
|
||||
(
|
||||
DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR,
|
||||
"mint_new_edition_from_master_edition_via_token",
|
||||
false,
|
||||
),
|
||||
(
|
||||
MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR,
|
||||
"mint_new_edition_from_master_edition_via_vault_proxy",
|
||||
true,
|
||||
),
|
||||
(
|
||||
CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR,
|
||||
"convert_master_edition_v1_to_v2",
|
||||
true,
|
||||
),
|
||||
(UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR, "update_metadata_account_v2", false),
|
||||
(CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR, "create_metadata_account_v2", true),
|
||||
(CREATE_MASTER_EDITION_V3_DISCRIMINATOR, "create_master_edition_v3", false),
|
||||
(CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR, "create_metadata_account_v3", false),
|
||||
(VERIFY_COLLECTION_DISCRIMINATOR, "verify_collection", false),
|
||||
(UNVERIFY_COLLECTION_DISCRIMINATOR, "unverify_collection", false),
|
||||
(SET_AND_VERIFY_COLLECTION_DISCRIMINATOR, "set_and_verify_collection", false),
|
||||
(
|
||||
APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR,
|
||||
"update_metadata_account_v2",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR,
|
||||
"create_metadata_account_v2",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_CREATE_MASTER_EDITION_V3_DISCRIMINATOR,
|
||||
"create_master_edition_v3",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR,
|
||||
"create_metadata_account_v3",
|
||||
false,
|
||||
),
|
||||
(DC_METADATA_MTM_VERIFY_COLLECTION_DISCRIMINATOR, "verify_collection", false),
|
||||
(DC_METADATA_MTM_UNVERIFY_COLLECTION_DISCRIMINATOR, "unverify_collection", false),
|
||||
(
|
||||
DC_METADATA_MTM_SET_AND_VERIFY_COLLECTION_DISCRIMINATOR,
|
||||
"set_and_verify_collection",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR,
|
||||
"approve_collection_authority",
|
||||
false,
|
||||
),
|
||||
(REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR, "revoke_collection_authority", false),
|
||||
(
|
||||
VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR,
|
||||
"revoke_collection_authority",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR,
|
||||
"verify_sized_collection_item",
|
||||
false,
|
||||
),
|
||||
(
|
||||
UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR,
|
||||
"unverify_sized_collection_item",
|
||||
false,
|
||||
),
|
||||
(
|
||||
SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR,
|
||||
"set_and_verify_sized_collection_item",
|
||||
false,
|
||||
),
|
||||
(UTILIZE_DISCRIMINATOR, "utilize", false),
|
||||
(APPROVE_USE_AUTHORITY_DISCRIMINATOR, "approve_use_authority", false),
|
||||
(REVOKE_USE_AUTHORITY_DISCRIMINATOR, "revoke_use_authority", false),
|
||||
(FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR, "freeze_delegated_account", true),
|
||||
(THAW_DELEGATED_ACCOUNT_DISCRIMINATOR, "thaw_delegated_account", true),
|
||||
(REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR, "remove_creator_verification", false),
|
||||
(SET_TOKEN_STANDARD_DISCRIMINATOR, "set_token_standard", false),
|
||||
(SET_COLLECTION_SIZE_DISCRIMINATOR, "set_collection_size", false),
|
||||
(DC_METADATA_MTM_UTILIZE_DISCRIMINATOR, "utilize", false),
|
||||
(
|
||||
BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR,
|
||||
DC_METADATA_MTM_APPROVE_USE_AUTHORITY_DISCRIMINATOR,
|
||||
"approve_use_authority",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_REVOKE_USE_AUTHORITY_DISCRIMINATOR,
|
||||
"revoke_use_authority",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR,
|
||||
"freeze_delegated_account",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_THAW_DELEGATED_ACCOUNT_DISCRIMINATOR,
|
||||
"thaw_delegated_account",
|
||||
true,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR,
|
||||
"remove_creator_verification",
|
||||
false,
|
||||
),
|
||||
(DC_METADATA_MTM_SET_TOKEN_STANDARD_DISCRIMINATOR, "set_token_standard", false),
|
||||
(DC_METADATA_MTM_SET_COLLECTION_SIZE_DISCRIMINATOR, "set_collection_size", false),
|
||||
(
|
||||
DC_METADATA_MTM_BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR,
|
||||
"bubblegum_set_collection_size",
|
||||
false,
|
||||
),
|
||||
(CREATE_ESCROW_ACCOUNT_DISCRIMINATOR, "create_escrow_account", false),
|
||||
(CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR, "close_escrow_account", false),
|
||||
(TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR, "transfer_out_of_escrow", false),
|
||||
(BURN_NFT_DISCRIMINATOR, "burn_nft", true),
|
||||
(BURN_EDITION_NFT_DISCRIMINATOR, "burn_edition_nft", true),
|
||||
(BURN_DISCRIMINATOR, "burn", false),
|
||||
(CREATE_DISCRIMINATOR, "create", false),
|
||||
(MINT_DISCRIMINATOR, "mint", false),
|
||||
(LOCK_DISCRIMINATOR, "lock", false),
|
||||
(UNLOCK_DISCRIMINATOR, "unlock", false),
|
||||
(TRANSFER_DISCRIMINATOR, "transfer", false),
|
||||
(COLLECT_DISCRIMINATOR, "collect", false),
|
||||
(PRINT_DISCRIMINATOR, "print", false),
|
||||
(UPDATE_DISCRIMINATOR, "update", false),
|
||||
(USE_DISCRIMINATOR, "use", false),
|
||||
(VERIFY_DISCRIMINATOR, "verify", false),
|
||||
(UNVERIFY_DISCRIMINATOR, "unverify", false),
|
||||
(MIGRATE_DISCRIMINATOR, "migrate", false),
|
||||
(RESIZE_DISCRIMINATOR, "resize", false),
|
||||
(CLOSE_ACCOUNTS_DISCRIMINATOR, "close_accounts", false),
|
||||
(DELEGATE_DISCRIMINATOR, "delegate", false),
|
||||
(REVOKE_DISCRIMINATOR, "revoke", false),
|
||||
(
|
||||
DC_METADATA_MTM_CREATE_ESCROW_ACCOUNT_DISCRIMINATOR,
|
||||
"create_escrow_account",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR,
|
||||
"close_escrow_account",
|
||||
false,
|
||||
),
|
||||
(
|
||||
DC_METADATA_MTM_TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR,
|
||||
"transfer_out_of_escrow",
|
||||
false,
|
||||
),
|
||||
(DC_METADATA_MTM_BURN_NFT_DISCRIMINATOR, "burn_nft", true),
|
||||
(DC_METADATA_MTM_BURN_EDITION_NFT_DISCRIMINATOR, "burn_edition_nft", true),
|
||||
(DC_METADATA_MTM_BURN_DISCRIMINATOR, "burn", false),
|
||||
(DC_METADATA_MTM_CREATE_DISCRIMINATOR, "create", false),
|
||||
(DC_METADATA_MTM_MINT_DISCRIMINATOR, "mint", false),
|
||||
(DC_METADATA_MTM_LOCK_DISCRIMINATOR, "lock", false),
|
||||
(DC_METADATA_MTM_UNLOCK_DISCRIMINATOR, "unlock", false),
|
||||
(DC_METADATA_MTM_TRANSFER_DISCRIMINATOR, "transfer", false),
|
||||
(DC_METADATA_MTM_COLLECT_DISCRIMINATOR, "collect", false),
|
||||
(DC_METADATA_MTM_PRINT_DISCRIMINATOR, "print", false),
|
||||
(DC_METADATA_MTM_UPDATE_DISCRIMINATOR, "update", false),
|
||||
(DC_METADATA_MTM_USE_DISCRIMINATOR, "use", false),
|
||||
(DC_METADATA_MTM_VERIFY_DISCRIMINATOR, "verify", false),
|
||||
(DC_METADATA_MTM_UNVERIFY_DISCRIMINATOR, "unverify", false),
|
||||
(DC_METADATA_MTM_MIGRATE_DISCRIMINATOR, "migrate", false),
|
||||
(DC_METADATA_MTM_RESIZE_DISCRIMINATOR, "resize", false),
|
||||
(DC_METADATA_MTM_CLOSE_ACCOUNTS_DISCRIMINATOR, "close_accounts", false),
|
||||
(DC_METADATA_MTM_DELEGATE_DISCRIMINATOR, "delegate", false),
|
||||
(DC_METADATA_MTM_REVOKE_DISCRIMINATOR, "revoke", false),
|
||||
];
|
||||
|
||||
/// Canonical tracing target for this decoder.
|
||||
pub(crate) const TRACING_TARGET: &str = "kb-lib.decoder.metadata.metaplex_token_metadata";
|
||||
pub(crate) const DC_METADATA_MTM_TRACING_TARGET: &str =
|
||||
"kb-lib.decoder.metadata.metaplex_token_metadata";
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
||||
use base64::Engine; // rust-rules: trait-import
|
||||
use sha2::Digest; // rust-rules: trait-import
|
||||
|
||||
pub(crate) struct ParsedInstruction {
|
||||
struct ParsedInstruction {
|
||||
pub(crate) code: &'static str,
|
||||
pub(crate) discriminator: u8,
|
||||
pub(crate) parameters: serde_json::Value,
|
||||
@@ -23,22 +23,24 @@ struct ResolvedAccount {
|
||||
source: serde_json::Value,
|
||||
}
|
||||
|
||||
pub(crate) fn entry_for_discriminator(
|
||||
pub(crate) fn decoder_metadata_metaplex_token_metadata_entry_for_discriminator(
|
||||
discriminator: u8,
|
||||
) -> std::option::Option<(u8, &'static str, bool)> {
|
||||
return crate::decoder::metadata::metaplex_token_metadata::INSTRUCTION_ENTRIES
|
||||
return crate::DC_METADATA_MTM_INSTRUCTION_ENTRIES
|
||||
.iter()
|
||||
.copied()
|
||||
.find(|(candidate, _, _)| return *candidate == discriminator);
|
||||
}
|
||||
|
||||
pub(crate) fn payload_discriminator(
|
||||
input: &crate::CoreInstructionReplayInput,
|
||||
pub(crate) fn decoder_metadata_metaplex_token_metadata_payload_discriminator(
|
||||
input: &crate::MdCoreInstructionReplayInput,
|
||||
) -> std::option::Option<u8> {
|
||||
return decode_payload(input).ok().and_then(|value| return value.first().copied());
|
||||
}
|
||||
|
||||
pub(crate) fn decode(input: &crate::CoreInstructionReplayInput) -> crate::DecoderExecutionResult {
|
||||
pub(crate) fn decoder_metadata_metaplex_token_metadata_decode(
|
||||
input: &crate::MdCoreInstructionReplayInput,
|
||||
) -> crate::DcApiDecoderExecutionResult {
|
||||
let bytes = match decode_payload(input) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => {
|
||||
@@ -59,16 +61,16 @@ pub(crate) fn decode(input: &crate::CoreInstructionReplayInput) -> crate::Decode
|
||||
);
|
||||
},
|
||||
};
|
||||
let entry = match crate::decoder::metadata::metaplex_token_metadata::entry_for_discriminator(
|
||||
let entry = match crate::decoder_metadata_metaplex_token_metadata_entry_for_discriminator(
|
||||
discriminator,
|
||||
) {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => {
|
||||
return crate::DecoderExecutionResult {
|
||||
status: crate::DecoderOutcomeStatus::Unsupported,
|
||||
return crate::DcApiDecoderExecutionResult {
|
||||
status: crate::DcApiDecoderOutcomeStatus::Unsupported,
|
||||
recognized_entry_code: std::option::Option::None,
|
||||
observations: std::vec::Vec::new(),
|
||||
diagnostics: std::vec![crate::DecoderDiagnostic {
|
||||
diagnostics: std::vec![crate::DcApiDecoderDiagnostic {
|
||||
code: "unknown_metaplex_token_metadata_discriminator".to_string(),
|
||||
message: format!(
|
||||
"unknown Metaplex Token Metadata discriminator {discriminator}; payloadPrefixHex={}",
|
||||
@@ -121,15 +123,17 @@ pub(crate) fn decode(input: &crate::CoreInstructionReplayInput) -> crate::Decode
|
||||
project_accounts(parsed.code, accounts.as_slice()),
|
||||
bytes.as_slice(),
|
||||
);
|
||||
return crate::DecoderExecutionResult {
|
||||
status: crate::DecoderOutcomeStatus::Decoded,
|
||||
return crate::DcApiDecoderExecutionResult {
|
||||
status: crate::DcApiDecoderOutcomeStatus::Decoded,
|
||||
recognized_entry_code: std::option::Option::Some(parsed.code.to_string()),
|
||||
observations: std::vec![observation],
|
||||
diagnostics: std::vec::Vec::new(),
|
||||
};
|
||||
}
|
||||
|
||||
fn decode_payload(input: &crate::CoreInstructionReplayInput) -> kb_core::Result<std::vec::Vec<u8>> {
|
||||
fn decode_payload(
|
||||
input: &crate::MdCoreInstructionReplayInput,
|
||||
) -> kb_core::Result<std::vec::Vec<u8>> {
|
||||
let payload = match input.instruction_payload_json.as_ref() {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => {
|
||||
@@ -146,10 +150,10 @@ fn decode_payload(input: &crate::CoreInstructionReplayInput) -> kb_core::Result<
|
||||
));
|
||||
},
|
||||
};
|
||||
if encoded.len() > crate::decoder::metadata::metaplex_token_metadata::MAX_BASE64_BYTES {
|
||||
if encoded.len() > crate::DC_METADATA_MTM_MAX_BASE64_BYTES {
|
||||
return std::result::Result::Err(kb_core::Error::invalid_state(format!(
|
||||
"Metaplex Token Metadata base64 payload exceeds {} bytes",
|
||||
crate::decoder::metadata::metaplex_token_metadata::MAX_BASE64_BYTES
|
||||
crate::DC_METADATA_MTM_MAX_BASE64_BYTES
|
||||
)));
|
||||
}
|
||||
let decoded = match base64::engine::general_purpose::STANDARD.decode(encoded.as_bytes()) {
|
||||
@@ -160,21 +164,16 @@ fn decode_payload(input: &crate::CoreInstructionReplayInput) -> kb_core::Result<
|
||||
)));
|
||||
},
|
||||
};
|
||||
if decoded.len() > crate::decoder::metadata::metaplex_token_metadata::MAX_INSTRUCTION_BYTES {
|
||||
if decoded.len() > crate::DC_METADATA_MTM_MAX_INSTRUCTION_BYTES {
|
||||
return std::result::Result::Err(kb_core::Error::invalid_state(format!(
|
||||
"Metaplex Token Metadata payload exceeds {} decoded bytes",
|
||||
crate::decoder::metadata::metaplex_token_metadata::MAX_INSTRUCTION_BYTES
|
||||
crate::DC_METADATA_MTM_MAX_INSTRUCTION_BYTES
|
||||
)));
|
||||
}
|
||||
return std::result::Result::Ok(decoded);
|
||||
}
|
||||
|
||||
fn parse_instruction(
|
||||
bytes: &[u8],
|
||||
) -> std::result::Result<
|
||||
crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction,
|
||||
std::string::String,
|
||||
> {
|
||||
fn parse_instruction(bytes: &[u8]) -> std::result::Result<ParsedInstruction, std::string::String> {
|
||||
let discriminator = match bytes.first().copied() {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => {
|
||||
@@ -182,92 +181,92 @@ fn parse_instruction(
|
||||
},
|
||||
};
|
||||
return match discriminator {
|
||||
crate::decoder::metadata::metaplex_token_metadata::DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
crate::DC_METADATA_MTM_DEPRECATED_CREATE_MASTER_EDITION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "deprecated_create_master_edition",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_DEPRECATED_SET_RESERVATION_LIST_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "deprecated_set_reservation_list",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_DEPRECATED_CREATE_RESERVATION_LIST_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "deprecated_create_reservation_list",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_VIA_TOKEN_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "deprecated_mint_printing_tokens_via_token",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_DEPRECATED_MINT_PRINTING_TOKENS_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "deprecated_mint_printing_tokens",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CREATE_MASTER_EDITION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CREATE_MASTER_EDITION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "create_master_edition",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_DEPRECATED_MINT_NEW_EDITION_VIA_PRINTING_TOKEN_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "deprecated_mint_new_edition_from_master_edition_via_printing_token",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR
|
||||
| crate::decoder::metadata::metaplex_token_metadata::MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR
|
||||
| crate::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_VAULT_PROXY_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::MintNewEditionFromMasterEditionViaTokenArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(format!("MintNewEditionFromMasterEdition edition Borsh decode failed: {error}")),
|
||||
};
|
||||
let code = if discriminator
|
||||
== crate::decoder::metadata::metaplex_token_metadata::MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR
|
||||
== crate::DC_METADATA_MTM_MINT_NEW_EDITION_FROM_MASTER_EDITION_VIA_TOKEN_DISCRIMINATOR
|
||||
{
|
||||
"mint_new_edition_from_master_edition_via_token"
|
||||
} else {
|
||||
"mint_new_edition_from_master_edition_via_vault_proxy"
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code,
|
||||
discriminator,
|
||||
parameters: serde_json::json!({"edition": args.edition}),
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CONVERT_MASTER_EDITION_V1_TO_V2_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "convert_master_edition_v1_to_v2",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CREATE_MASTER_EDITION_V3_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CREATE_MASTER_EDITION_V3_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let max_supply =
|
||||
match <std::option::Option<u64> as borsh_0_10::BorshDeserialize>::deserialize(
|
||||
@@ -280,50 +279,50 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "create_master_edition_v3",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({"max_supply": max_supply}),
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UPDATE_PRIMARY_SALE_HAPPENED_VIA_TOKEN_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "update_primary_sale_happened_via_token",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::SIGN_METADATA_DISCRIMINATOR => std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_SIGN_METADATA_DISCRIMINATOR => std::result::Result::Ok(ParsedInstruction {
|
||||
code: "sign_metadata",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
}),
|
||||
crate::decoder::metadata::metaplex_token_metadata::PUFF_METADATA_DISCRIMINATOR => std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
crate::DC_METADATA_MTM_PUFF_METADATA_DISCRIMINATOR => std::result::Result::Ok(ParsedInstruction {
|
||||
code: "puff_metadata",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
}),
|
||||
crate::decoder::metadata::metaplex_token_metadata::REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
crate::DC_METADATA_MTM_REMOVE_CREATOR_VERIFICATION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "remove_creator_verification",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::SET_TOKEN_STANDARD_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_SET_TOKEN_STANDARD_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "set_token_standard",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CREATE_METADATA_ACCOUNT_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let data =
|
||||
match <mpl_token_metadata::types::Data as borsh_0_10::BorshDeserialize>::deserialize(
|
||||
@@ -357,14 +356,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "create_metadata_account",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({"data": data_json, "is_mutable": is_mutable}),
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UPDATE_METADATA_ACCOUNT_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let data = match <std::option::Option<mpl_token_metadata::types::Data> as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -407,14 +406,14 @@ fn parse_instruction(
|
||||
},
|
||||
};
|
||||
let authority_json = new_update_authority.map(|value| return hex_bytes(&value));
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "update_metadata_account",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({"data": data_json, "new_update_authority_hex": authority_json, "primary_sale_happened": primary_sale_happened}),
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V2_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let data = match <mpl_token_metadata::types::DataV2 as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -441,7 +440,7 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "create_metadata_account_v2",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({
|
||||
@@ -450,8 +449,8 @@ fn parse_instruction(
|
||||
}),
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::instructions::CreateMetadataAccountV3InstructionArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -469,14 +468,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "create_metadata_account_v3",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::TRANSFER_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_TRANSFER_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::TransferArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -490,14 +489,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "transfer",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::LOCK_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_LOCK_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::LockArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -511,14 +510,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "lock",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UNLOCK_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UNLOCK_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::UnlockArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -532,30 +531,30 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "unlock",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CREATE_ESCROW_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CREATE_ESCROW_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "create_escrow_account",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CLOSE_ESCROW_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "close_escrow_account",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_TRANSFER_OUT_OF_ESCROW_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let amount = match <u64 as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -565,34 +564,34 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "transfer_out_of_escrow",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({"amount": amount}),
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::COLLECT_DISCRIMINATOR => std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_COLLECT_DISCRIMINATOR => std::result::Result::Ok(ParsedInstruction {
|
||||
code: "collect",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
}),
|
||||
crate::decoder::metadata::metaplex_token_metadata::BURN_NFT_DISCRIMINATOR => std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
crate::DC_METADATA_MTM_BURN_NFT_DISCRIMINATOR => std::result::Result::Ok(ParsedInstruction {
|
||||
code: "burn_nft",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
}),
|
||||
crate::decoder::metadata::metaplex_token_metadata::BURN_EDITION_NFT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
crate::DC_METADATA_MTM_BURN_EDITION_NFT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "burn_edition_nft",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CREATE_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CREATE_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::CreateArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -606,14 +605,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "create",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::MINT_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_MINT_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::MintArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -627,14 +626,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "mint",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::PRINT_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_PRINT_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::PrintArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -648,26 +647,26 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "print",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::MIGRATE_DISCRIMINATOR => std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_MIGRATE_DISCRIMINATOR => std::result::Result::Ok(ParsedInstruction {
|
||||
code: "migrate",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
}),
|
||||
crate::decoder::metadata::metaplex_token_metadata::RESIZE_DISCRIMINATOR => std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
crate::DC_METADATA_MTM_RESIZE_DISCRIMINATOR => std::result::Result::Ok(ParsedInstruction {
|
||||
code: "resize",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
}),
|
||||
crate::decoder::metadata::metaplex_token_metadata::USE_DISCRIMINATOR => {
|
||||
crate::DC_METADATA_MTM_USE_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::UseArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -681,14 +680,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "use",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::VERIFY_DISCRIMINATOR | crate::decoder::metadata::metaplex_token_metadata::UNVERIFY_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_VERIFY_DISCRIMINATOR | crate::DC_METADATA_MTM_UNVERIFY_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::VerificationArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -703,15 +702,15 @@ fn parse_instruction(
|
||||
},
|
||||
};
|
||||
let code =
|
||||
if discriminator == crate::decoder::metadata::metaplex_token_metadata::VERIFY_DISCRIMINATOR { "verify" } else { "unverify" };
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
if discriminator == crate::DC_METADATA_MTM_VERIFY_DISCRIMINATOR { "verify" } else { "unverify" };
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code,
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UPDATE_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UPDATE_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::UpdateArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -725,14 +724,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "update",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::BURN_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_BURN_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::BurnArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -746,20 +745,20 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "burn",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::CLOSE_ACCOUNTS_DISCRIMINATOR => std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_CLOSE_ACCOUNTS_DISCRIMINATOR => std::result::Result::Ok(ParsedInstruction {
|
||||
code: "close_accounts",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
}),
|
||||
crate::decoder::metadata::metaplex_token_metadata::DELEGATE_DISCRIMINATOR => {
|
||||
crate::DC_METADATA_MTM_DELEGATE_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::DelegateArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -773,14 +772,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "delegate",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::REVOKE_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_REVOKE_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::RevokeArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -794,97 +793,97 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "revoke",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::SET_COLLECTION_SIZE_DISCRIMINATOR
|
||||
| crate::decoder::metadata::metaplex_token_metadata::BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_SET_COLLECTION_SIZE_DISCRIMINATOR
|
||||
| crate::DC_METADATA_MTM_BUBBLEGUM_SET_COLLECTION_SIZE_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::types::SetCollectionSizeArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(format!("SetCollectionSize Borsh decode failed: {error}")),
|
||||
};
|
||||
let code = if discriminator == crate::decoder::metadata::metaplex_token_metadata::SET_COLLECTION_SIZE_DISCRIMINATOR {
|
||||
let code = if discriminator == crate::DC_METADATA_MTM_SET_COLLECTION_SIZE_DISCRIMINATOR {
|
||||
"set_collection_size"
|
||||
} else {
|
||||
"bubblegum_set_collection_size"
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code,
|
||||
discriminator,
|
||||
parameters: serde_json::json!({"size": args.size}),
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::VERIFY_COLLECTION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_VERIFY_COLLECTION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "verify_collection",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UNVERIFY_COLLECTION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UNVERIFY_COLLECTION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "unverify_collection",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::SET_AND_VERIFY_COLLECTION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_SET_AND_VERIFY_COLLECTION_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "set_and_verify_collection",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "approve_collection_authority",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_REVOKE_COLLECTION_AUTHORITY_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "revoke_collection_authority",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "verify_sized_collection_item",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UNVERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "unverify_sized_collection_item",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_SET_AND_VERIFY_SIZED_COLLECTION_ITEM_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "set_and_verify_sized_collection_item",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UTILIZE_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UTILIZE_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::instructions::UtilizeInstructionArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -898,14 +897,14 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "utilize",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::APPROVE_USE_AUTHORITY_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_APPROVE_USE_AUTHORITY_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::instructions::ApproveUseAuthorityInstructionArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -919,38 +918,38 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "approve_use_authority",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::REVOKE_USE_AUTHORITY_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_REVOKE_USE_AUTHORITY_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "revoke_use_authority",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_FREEZE_DELEGATED_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "freeze_delegated_account",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::THAW_DELEGATED_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
}
|
||||
crate::DC_METADATA_MTM_THAW_DELEGATED_ACCOUNT_DISCRIMINATOR => {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "thaw_delegated_account",
|
||||
discriminator,
|
||||
parameters: serde_json::json!({}),
|
||||
consumed: 1,
|
||||
})
|
||||
},
|
||||
crate::decoder::metadata::metaplex_token_metadata::UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR => {
|
||||
}
|
||||
crate::DC_METADATA_MTM_UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR => {
|
||||
let mut remaining = &bytes[1..];
|
||||
let args = match <mpl_token_metadata::instructions::UpdateMetadataAccountV2InstructionArgs as borsh_0_10::BorshDeserialize>::deserialize(&mut remaining) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -970,13 +969,13 @@ fn parse_instruction(
|
||||
));
|
||||
},
|
||||
};
|
||||
std::result::Result::Ok(crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction {
|
||||
std::result::Result::Ok(ParsedInstruction {
|
||||
code: "update_metadata_account_v2",
|
||||
discriminator,
|
||||
parameters,
|
||||
consumed: bytes.len().saturating_sub(remaining.len()),
|
||||
})
|
||||
},
|
||||
}
|
||||
_ => std::result::Result::Err(format!("unsupported discriminator {discriminator}")),
|
||||
};
|
||||
}
|
||||
@@ -1032,7 +1031,7 @@ fn validate_data_v2(
|
||||
}
|
||||
|
||||
fn resolve_accounts(
|
||||
input: &crate::CoreInstructionReplayInput,
|
||||
input: &crate::MdCoreInstructionReplayInput,
|
||||
) -> kb_core::Result<std::vec::Vec<ResolvedAccount>> {
|
||||
let instruction_accounts = match input.instruction_accounts_json.as_array() {
|
||||
std::option::Option::Some(value) => value,
|
||||
@@ -1042,9 +1041,7 @@ fn resolve_accounts(
|
||||
));
|
||||
},
|
||||
};
|
||||
if instruction_accounts.len()
|
||||
> crate::decoder::metadata::metaplex_token_metadata::MAX_INSTRUCTION_ACCOUNTS
|
||||
{
|
||||
if instruction_accounts.len() > crate::DC_METADATA_MTM_MAX_INSTRUCTION_ACCOUNTS {
|
||||
return std::result::Result::Err(kb_core::Error::invalid_state(
|
||||
"Metaplex Token Metadata instruction account count exceeds bound",
|
||||
));
|
||||
@@ -2642,43 +2639,39 @@ fn project_accounts(code: &str, accounts: &[ResolvedAccount]) -> serde_json::Val
|
||||
}
|
||||
|
||||
fn observation(
|
||||
input: &crate::CoreInstructionReplayInput,
|
||||
parsed: &crate::decoder::metadata::metaplex_token_metadata::ParsedInstruction,
|
||||
input: &crate::MdCoreInstructionReplayInput,
|
||||
parsed: &ParsedInstruction,
|
||||
accounts: serde_json::Value,
|
||||
wire: &[u8],
|
||||
) -> crate::DecodedObservation {
|
||||
) -> crate::DcApiDecodedObservation {
|
||||
let wire_hash = hash(wire);
|
||||
let committed = !input.transaction_failed;
|
||||
let event = crate::DecodedProtocolEvent {
|
||||
signature: crate::Signature(input.signature.clone()),
|
||||
slot: crate::Slot(input.slot),
|
||||
instruction_path: crate::InstructionPath(input.instruction_path.clone()),
|
||||
program_id: crate::ProgramId(input.program_id.clone()),
|
||||
protocol_code: crate::ProtocolCode(
|
||||
crate::decoder::metadata::metaplex_token_metadata::SURFACE_CODE.to_string(),
|
||||
),
|
||||
surface_code: crate::SurfaceCode(
|
||||
crate::decoder::metadata::metaplex_token_metadata::SURFACE_CODE.to_string(),
|
||||
),
|
||||
event_code: crate::EventCode(format!(
|
||||
let event = crate::MdDecodedProtocolEvent {
|
||||
signature: crate::MdSignature(input.signature.clone()),
|
||||
slot: crate::MdSlot(input.slot),
|
||||
instruction_path: crate::MdInstructionPath(input.instruction_path.clone()),
|
||||
program_id: crate::MdProgramId(input.program_id.clone()),
|
||||
protocol_code: crate::MdProtocolCode(crate::DC_METADATA_MTM_SURFACE_CODE.to_string()),
|
||||
surface_code: crate::MdSurfaceCode(crate::DC_METADATA_MTM_SURFACE_CODE.to_string()),
|
||||
event_code: crate::MdEventCode(format!(
|
||||
"{}.{}",
|
||||
crate::decoder::metadata::metaplex_token_metadata::SURFACE_CODE,
|
||||
crate::DC_METADATA_MTM_SURFACE_CODE,
|
||||
parsed.code
|
||||
)),
|
||||
event_name: crate::EventName(parsed.code.to_string()),
|
||||
event_family: crate::EventFamily::Metadata,
|
||||
event_name: crate::MdEventName(parsed.code.to_string()),
|
||||
event_family: crate::MdEventFamily::Metadata,
|
||||
source_kind: if input.instruction_path.contains('/') {
|
||||
crate::EventSourceKind::InnerInstruction
|
||||
crate::MdEventSourceKind::InnerInstruction
|
||||
} else {
|
||||
crate::EventSourceKind::Instruction
|
||||
crate::MdEventSourceKind::Instruction
|
||||
},
|
||||
confidence: crate::DecoderConfidence::ManualExact,
|
||||
confidence: crate::MdDecoderConfidence::ManualExact,
|
||||
};
|
||||
return crate::DecodedObservation {
|
||||
return crate::DcApiDecodedObservation {
|
||||
event_key: format!("metaplex_token_metadata:{}:0", parsed.code),
|
||||
event,
|
||||
payload_json: serde_json::json!({
|
||||
"eventVersion": crate::decoder::metadata::metaplex_token_metadata::EVENT_VERSION,
|
||||
"eventVersion": crate::DC_METADATA_MTM_EVENT_VERSION,
|
||||
"programId": input.program_id,
|
||||
"instruction": parsed.code,
|
||||
"wireDiscriminator": parsed.discriminator,
|
||||
@@ -2695,9 +2688,9 @@ fn observation(
|
||||
transaction_failed: input.transaction_failed,
|
||||
transaction_error: input.transaction_err_json.clone(),
|
||||
observation_committed: committed,
|
||||
proof: crate::DecoderProof {
|
||||
kind: crate::DecoderProofKind::Manual,
|
||||
confidence: crate::DecoderConfidence::ManualExact,
|
||||
proof: crate::DcApiDecoderProof {
|
||||
kind: crate::DcApiDecoderProofKind::Manual,
|
||||
confidence: crate::MdDecoderConfidence::ManualExact,
|
||||
evidence: std::vec![
|
||||
"mpl_token_metadata_5_1_1_generated_wire".to_string(),
|
||||
format!("wire_discriminator:{}", parsed.discriminator),
|
||||
@@ -2717,10 +2710,7 @@ fn hash(bytes: &[u8]) -> std::string::String {
|
||||
}
|
||||
|
||||
fn hex_prefix(bytes: &[u8]) -> std::string::String {
|
||||
let length = std::cmp::min(
|
||||
bytes.len(),
|
||||
crate::decoder::metadata::metaplex_token_metadata::DIAGNOSTIC_PREFIX_BYTES,
|
||||
);
|
||||
let length = std::cmp::min(bytes.len(), crate::DC_METADATA_MTM_DIAGNOSTIC_PREFIX_BYTES);
|
||||
let mut output = std::string::String::with_capacity(length.saturating_mul(2));
|
||||
for byte in &bytes[..length] {
|
||||
output.push_str(format!("{byte:02x}").as_str());
|
||||
@@ -2732,12 +2722,12 @@ fn failed(
|
||||
entry_code: std::option::Option<&str>,
|
||||
code: &str,
|
||||
message: std::string::String,
|
||||
) -> crate::DecoderExecutionResult {
|
||||
return crate::DecoderExecutionResult {
|
||||
status: crate::DecoderOutcomeStatus::Failed,
|
||||
) -> crate::DcApiDecoderExecutionResult {
|
||||
return crate::DcApiDecoderExecutionResult {
|
||||
status: crate::DcApiDecoderOutcomeStatus::Failed,
|
||||
recognized_entry_code: entry_code.map(str::to_string),
|
||||
observations: std::vec::Vec::new(),
|
||||
diagnostics: std::vec![crate::DecoderDiagnostic {
|
||||
diagnostics: std::vec![crate::DcApiDecoderDiagnostic {
|
||||
code: code.to_string(),
|
||||
message,
|
||||
retriable: false
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_metadata_spl_name_service`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_metadata_spl_name_service";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_metadata_spl_name_service";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
//! `nft` decoder family.
|
||||
|
||||
pub mod metaplex_bubblegum;
|
||||
mod metaplex_bubblegum;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_nft_metaplex_bubblegum`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_nft_metaplex_bubblegum";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_nft_metaplex_bubblegum";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
//! `orderbook` decoder family.
|
||||
|
||||
pub mod jupiter_limit_order;
|
||||
pub mod jupiter_limit_order_v2;
|
||||
pub mod openbook_v2;
|
||||
mod jupiter_limit_order;
|
||||
mod jupiter_limit_order_v2;
|
||||
mod openbook_v2;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_orderbook_jupiter_limit_order`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_orderbook_jupiter_limit_order";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_orderbook_jupiter_limit_order";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_orderbook_jupiter_limit_order_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_orderbook_jupiter_limit_order_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_orderbook_jupiter_limit_order_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_orderbook_openbook_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_orderbook_openbook_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_orderbook_openbook_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
//! `perpetuals` decoder family.
|
||||
|
||||
pub mod drift_v2;
|
||||
pub mod jupiter;
|
||||
pub mod zeta;
|
||||
mod drift_v2;
|
||||
mod jupiter;
|
||||
mod zeta;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_perpetuals_drift_v2`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_perpetuals_drift_v2";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_perpetuals_drift_v2";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_perpetuals_jupiter`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_perpetuals_jupiter";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_perpetuals_jupiter";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_perpetuals_zeta`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_perpetuals_zeta";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_perpetuals_zeta";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
//! `router` decoder family.
|
||||
|
||||
pub mod dflow_aggregator_v4;
|
||||
pub mod jupiter_aggregator_v4;
|
||||
pub mod jupiter_aggregator_v6;
|
||||
pub mod jupiter_dca;
|
||||
pub mod okx_labs_v1;
|
||||
pub mod okx_labs_v2;
|
||||
mod dflow_aggregator_v4;
|
||||
mod jupiter_aggregator_v4;
|
||||
mod jupiter_aggregator_v6;
|
||||
mod jupiter_dca;
|
||||
mod okx_labs_v1;
|
||||
mod okx_labs_v2;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_router_dflow_aggregator_v4`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_router_dflow_aggregator_v4";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_router_dflow_aggregator_v4";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//! Migration boundary for legacy crate `kb_decoder_router_jupiter_aggregator_v4`.
|
||||
|
||||
/// Legacy crate name retained for migration and compatibility tracking.
|
||||
pub const LEGACY_CRATE: &str = "kb_decoder_router_jupiter_aggregator_v4";
|
||||
const LEGACY_CRATE: &str = "kb_decoder_router_jupiter_aggregator_v4";
|
||||
|
||||
/// Current porting status.
|
||||
pub const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
const MIGRATION_STATUS: &str = "source-preserved-pending-port";
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user