v0.1.0-pre.012
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/decoder.rs
|
||||
// version: 7
|
||||
// version: 8
|
||||
|
||||
//! Consolidated decoder modules.
|
||||
|
||||
@@ -33,37 +33,338 @@ mod vesting;
|
||||
mod wallet;
|
||||
mod weighted;
|
||||
|
||||
/// Internal inventory of pending decoder migration boundaries.
|
||||
#[allow(dead_code)]
|
||||
pub(crate) const DC_MIGRATION_BOUNDARIES: &[&[(&str, &str)]] = &[
|
||||
self::adapter::DC_ADAPTER_MIGRATION_BOUNDARIES,
|
||||
self::admin::DC_ADMIN_MIGRATION_BOUNDARIES,
|
||||
self::amm::DC_AMM_MIGRATION_BOUNDARIES,
|
||||
self::anchor::DC_ANCHOR_MIGRATION_BOUNDARIES,
|
||||
self::bridge::DC_BRIDGE_MIGRATION_BOUNDARIES,
|
||||
self::clmm::DC_CLMM_MIGRATION_BOUNDARIES,
|
||||
self::cpmm::DC_CPMM_MIGRATION_BOUNDARIES,
|
||||
self::dlmm::DC_DLMM_MIGRATION_BOUNDARIES,
|
||||
self::fees::DC_FEES_MIGRATION_BOUNDARIES,
|
||||
self::governance::DC_GOVERNANCE_MIGRATION_BOUNDARIES,
|
||||
self::launchpad::DC_LAUNCHPAD_MIGRATION_BOUNDARIES,
|
||||
self::lending::DC_LENDING_MIGRATION_BOUNDARIES,
|
||||
self::lock::DC_LOCK_MIGRATION_BOUNDARIES,
|
||||
self::metadata::DC_METADATA_MIGRATION_BOUNDARIES,
|
||||
self::nft::DC_NFT_MIGRATION_BOUNDARIES,
|
||||
self::orderbook::DC_ORDERBOOK_MIGRATION_BOUNDARIES,
|
||||
self::perpetuals::DC_PERPETUALS_MIGRATION_BOUNDARIES,
|
||||
self::router::DC_ROUTER_MIGRATION_BOUNDARIES,
|
||||
self::rwa::DC_RWA_MIGRATION_BOUNDARIES,
|
||||
self::spl::DC_SPL_MIGRATION_BOUNDARIES,
|
||||
self::stable::DC_STABLE_MIGRATION_BOUNDARIES,
|
||||
self::staking::DC_STAKING_MIGRATION_BOUNDARIES,
|
||||
self::treasury::DC_TREASURY_MIGRATION_BOUNDARIES,
|
||||
self::vault::DC_VAULT_MIGRATION_BOUNDARIES,
|
||||
self::vesting::DC_VESTING_MIGRATION_BOUNDARIES,
|
||||
self::wallet::DC_WALLET_MIGRATION_BOUNDARIES,
|
||||
self::weighted::DC_WEIGHTED_MIGRATION_BOUNDARIES,
|
||||
];
|
||||
/// Reserved `kb_decoder_adapter_saber_decimal_wrapper` decoder.
|
||||
pub use self::adapter::DcAdapterSaberDecimalWrapperDecoder;
|
||||
/// Reserved `kb_decoder_admin_jupiter_lock` decoder.
|
||||
pub use self::admin::DcAdminJupiterLockDecoder;
|
||||
/// Reserved `kb_decoder_admin_pump_fees` decoder.
|
||||
pub use self::admin::DcAdminPumpFeesDecoder;
|
||||
/// Reserved `kb_decoder_amm_aldrin_v1` decoder.
|
||||
pub use self::amm::DcAmmAldrinV1Decoder;
|
||||
/// Reserved `kb_decoder_amm_aldrin_v2` decoder.
|
||||
pub use self::amm::DcAmmAldrinV2Decoder;
|
||||
/// Reserved `kb_decoder_amm_alphaq` decoder.
|
||||
pub use self::amm::DcAmmAlphaqDecoder;
|
||||
/// Reserved `kb_decoder_amm_believe` decoder.
|
||||
pub use self::amm::DcAmmBelieveDecoder;
|
||||
/// Reserved `kb_decoder_amm_bonk_swap` decoder.
|
||||
pub use self::amm::DcAmmBonkSwapDecoder;
|
||||
/// Reserved `kb_decoder_amm_fluxbeam` decoder.
|
||||
pub use self::amm::DcAmmFluxbeamDecoder;
|
||||
/// Reserved `kb_decoder_amm_goon_fi` decoder.
|
||||
pub use self::amm::DcAmmGoonFiDecoder;
|
||||
/// Reserved `kb_decoder_amm_goosefx_gamma` decoder.
|
||||
pub use self::amm::DcAmmGoosefxGammaDecoder;
|
||||
/// Reserved `kb_decoder_amm_goosefx_v2` decoder.
|
||||
pub use self::amm::DcAmmGoosefxV2Decoder;
|
||||
/// Reserved `kb_decoder_amm_guac_swap` decoder.
|
||||
pub use self::amm::DcAmmGuacSwapDecoder;
|
||||
/// Reserved `kb_decoder_amm_lifinity_swap_v2` decoder.
|
||||
pub use self::amm::DcAmmLifinitySwapV2Decoder;
|
||||
/// Reserved `kb_decoder_amm_metadao_futarchy_amm` decoder.
|
||||
pub use self::amm::DcAmmMetadaoFutarchyAmmDecoder;
|
||||
/// Reserved `kb_decoder_amm_metadao_v0_5` decoder.
|
||||
pub use self::amm::DcAmmMetadaoV05Decoder;
|
||||
/// Reserved `kb_decoder_amm_meteora_damm_v1` decoder.
|
||||
pub use self::amm::DcAmmMeteoraDammV1Decoder;
|
||||
/// Reserved `kb_decoder_amm_meteora_damm_v2` decoder.
|
||||
pub use self::amm::DcAmmMeteoraDammV2Decoder;
|
||||
/// Reserved `kb_decoder_amm_obric_v2` decoder.
|
||||
pub use self::amm::DcAmmObricV2Decoder;
|
||||
/// Reserved `kb_decoder_amm_one_dex` decoder.
|
||||
pub use self::amm::DcAmmOneDexDecoder;
|
||||
/// Reserved `kb_decoder_amm_pump_swap` decoder.
|
||||
pub use self::amm::DcAmmPumpSwapDecoder;
|
||||
/// Reserved `kb_decoder_amm_raydium_lp_v4` decoder.
|
||||
pub use self::amm::DcAmmRaydiumLpV4Decoder;
|
||||
/// Reserved `kb_decoder_amm_solfi` decoder.
|
||||
pub use self::amm::DcAmmSolfiDecoder;
|
||||
/// Reserved `kb_decoder_amm_solfi_v2` decoder.
|
||||
pub use self::amm::DcAmmSolfiV2Decoder;
|
||||
/// Reserved `kb_decoder_amm_vertigo` decoder.
|
||||
pub use self::amm::DcAmmVertigoDecoder;
|
||||
/// Reserved `kb_decoder_amm_virtuals` decoder.
|
||||
pub use self::amm::DcAmmVirtualsDecoder;
|
||||
/// Reserved `kb_decoder_amm_woofi` decoder.
|
||||
pub use self::amm::DcAmmWoofiDecoder;
|
||||
/// Reserved `kb_decoder_amm_zero_fi` decoder.
|
||||
pub use self::amm::DcAmmZeroFiDecoder;
|
||||
/// Reserved `kb_decoder_amm_zora` decoder.
|
||||
pub use self::amm::DcAmmZoraDecoder;
|
||||
/// Reserved `kb_decoder_anchor` decoder.
|
||||
pub use self::anchor::DcAnchorDecoder;
|
||||
/// 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;
|
||||
/// Reserved `kb_decoder_bridge_circle_cctp_token_messenger_minter` decoder.
|
||||
pub use self::bridge::DcBridgeCircleCctpTokenMessengerMinterDecoder;
|
||||
/// Reserved `kb_decoder_bridge_circle_cctp_token_messenger_minter_v2` decoder.
|
||||
pub use self::bridge::DcBridgeCircleCctpTokenMessengerMinterV2Decoder;
|
||||
/// Reserved `kb_decoder_bridge_layer_zero_endpoint` decoder.
|
||||
pub use self::bridge::DcBridgeLayerZeroEndpointDecoder;
|
||||
/// Reserved `kb_decoder_bridge_layer_zero_executor` decoder.
|
||||
pub use self::bridge::DcBridgeLayerZeroExecutorDecoder;
|
||||
/// Reserved `kb_decoder_clmm_byreal` decoder.
|
||||
pub use self::clmm::DcClmmByrealDecoder;
|
||||
/// Reserved `kb_decoder_clmm_fusion` decoder.
|
||||
pub use self::clmm::DcClmmFusionDecoder;
|
||||
/// Reserved `kb_decoder_clmm_orca_whirlpool` decoder.
|
||||
pub use self::clmm::DcClmmOrcaWhirlpoolDecoder;
|
||||
/// Reserved `kb_decoder_clmm_pancake_swap` decoder.
|
||||
pub use self::clmm::DcClmmPancakeSwapDecoder;
|
||||
/// Reserved `kb_decoder_clmm_raydium` decoder.
|
||||
pub use self::clmm::DcClmmRaydiumDecoder;
|
||||
/// Reserved `kb_decoder_clmm_stabble` decoder.
|
||||
pub use self::clmm::DcClmmStabbleDecoder;
|
||||
/// Reserved `kb_decoder_cpmm_raydium` decoder.
|
||||
pub use self::cpmm::DcCpmmRaydiumDecoder;
|
||||
/// Reserved `kb_decoder_dlmm_meteora` decoder.
|
||||
pub use self::dlmm::DcDlmmMeteoraDecoder;
|
||||
/// Reserved `kb_decoder_fees_bags_fee_share_v1` decoder.
|
||||
pub use self::fees::DcFeesBagsFeeShareV1Decoder;
|
||||
/// Reserved `kb_decoder_fees_bags_fee_share_v2` decoder.
|
||||
pub use self::fees::DcFeesBagsFeeShareV2Decoder;
|
||||
/// Reserved `kb_decoder_governance_metadao_bid_wall` decoder.
|
||||
pub use self::governance::DcGovernanceMetadaoBidWallDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_boop_fun` decoder.
|
||||
pub use self::launchpad::DcLaunchpadBoopFunDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_metadao_ico` decoder.
|
||||
pub use self::launchpad::DcLaunchpadMetadaoIcoDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_meteora_dbc` decoder.
|
||||
pub use self::launchpad::DcLaunchpadMeteoraDbcDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_moonit` decoder.
|
||||
pub use self::launchpad::DcLaunchpadMoonitDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_orca_wavebreak` decoder.
|
||||
pub use self::launchpad::DcLaunchpadOrcaWavebreakDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_printr` decoder.
|
||||
pub use self::launchpad::DcLaunchpadPrintrDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_pump_fun` decoder.
|
||||
pub use self::launchpad::DcLaunchpadPumpFunDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_pump_pumpup_ai` decoder.
|
||||
pub use self::launchpad::DcLaunchpadPumpPumpupAiDecoder;
|
||||
/// Reserved `kb_decoder_launchpad_raydium_launchlab` decoder.
|
||||
pub use self::launchpad::DcLaunchpadRaydiumLaunchlabDecoder;
|
||||
/// Reserved `kb_decoder_lending_clone` decoder.
|
||||
pub use self::lending::DcLendingCloneDecoder;
|
||||
/// Reserved `kb_decoder_lending_jupiter_lend_borrow` decoder.
|
||||
pub use self::lending::DcLendingJupiterLendBorrowDecoder;
|
||||
/// Reserved `kb_decoder_lending_jupiter_lend_earn` decoder.
|
||||
pub use self::lending::DcLendingJupiterLendEarnDecoder;
|
||||
/// Reserved `kb_decoder_lending_jupiter_lend_flash_loan` decoder.
|
||||
pub use self::lending::DcLendingJupiterLendFlashLoanDecoder;
|
||||
/// Reserved `kb_decoder_lending_jupiter_lend_liquidity` decoder.
|
||||
pub use self::lending::DcLendingJupiterLendLiquidityDecoder;
|
||||
/// Reserved `kb_decoder_lending_kamino` decoder.
|
||||
pub use self::lending::DcLendingKaminoDecoder;
|
||||
/// Reserved `kb_decoder_lending_marginfi_v2` decoder.
|
||||
pub use self::lending::DcLendingMarginfiV2Decoder;
|
||||
/// Reserved `kb_decoder_lock_raydium_lp` decoder.
|
||||
pub use self::lock::DcLockRaydiumLpDecoder;
|
||||
/// 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::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;
|
||||
/// Reserved `kb_decoder_metadata_spl_name_service` decoder.
|
||||
pub use self::metadata::DcMetadataSplNameServiceDecoder;
|
||||
/// 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;
|
||||
/// Reserved `kb_decoder_nft_metaplex_bubblegum` decoder.
|
||||
pub use self::nft::DcNftMetaplexBubblegumDecoder;
|
||||
/// Reserved `kb_decoder_orderbook_jupiter_limit_order` decoder.
|
||||
pub use self::orderbook::DcOrderbookJupiterLimitOrderDecoder;
|
||||
/// Reserved `kb_decoder_orderbook_jupiter_limit_order_v2` decoder.
|
||||
pub use self::orderbook::DcOrderbookJupiterLimitOrderV2Decoder;
|
||||
/// Reserved `kb_decoder_orderbook_openbook_v2` decoder.
|
||||
pub use self::orderbook::DcOrderbookOpenbookV2Decoder;
|
||||
/// Reserved `kb_decoder_perpetuals_drift_v2` decoder.
|
||||
pub use self::perpetuals::DcPerpetualsDriftV2Decoder;
|
||||
/// Reserved `kb_decoder_perpetuals_jupiter` decoder.
|
||||
pub use self::perpetuals::DcPerpetualsJupiterDecoder;
|
||||
/// Reserved `kb_decoder_perpetuals_zeta` decoder.
|
||||
pub use self::perpetuals::DcPerpetualsZetaDecoder;
|
||||
/// Reserved `kb_decoder_router_dflow_aggregator_v4` decoder.
|
||||
pub use self::router::DcRouterDflowAggregatorV4Decoder;
|
||||
/// Reserved `kb_decoder_router_jupiter_aggregator_v4` decoder.
|
||||
pub use self::router::DcRouterJupiterAggregatorV4Decoder;
|
||||
/// Reserved `kb_decoder_router_jupiter_aggregator_v6` decoder.
|
||||
pub use self::router::DcRouterJupiterAggregatorV6Decoder;
|
||||
/// Reserved `kb_decoder_router_jupiter_dca` decoder.
|
||||
pub use self::router::DcRouterJupiterDcaDecoder;
|
||||
/// Reserved `kb_decoder_router_okx_labs_v1` decoder.
|
||||
pub use self::router::DcRouterOkxLabsV1Decoder;
|
||||
/// Reserved `kb_decoder_router_okx_labs_v2` decoder.
|
||||
pub use self::router::DcRouterOkxLabsV2Decoder;
|
||||
pub use self::rwa::DcRwaOndoGlobalMarketsDecoder;
|
||||
/// 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::DC_SPL_ELGAMAL_REGISTRY_ACCOUNT_LEN;
|
||||
/// Reserved `kb_decoder_rwa_ondo_global_markets` decoder.
|
||||
/// Reserved `kb_decoder_spl_account_compression` decoder.
|
||||
pub use self::spl::DcSplAccountCompressionDecoder;
|
||||
/// Exact decoder for the SPL Associated Token Account program.
|
||||
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::DcSplElgamalRegistryDecoder;
|
||||
/// Exact decoder for the three registered SPL Memo generations.
|
||||
pub use self::spl::DcSplMemoDecoder;
|
||||
/// Reserved `kb_decoder_spl_noop` decoder.
|
||||
pub use self::spl::DcSplNoopDecoder;
|
||||
/// Reserved `kb_decoder_spl_single_pool` decoder.
|
||||
pub use self::spl::DcSplSinglePoolDecoder;
|
||||
/// Reserved `kb_decoder_spl_stake_pool` decoder.
|
||||
pub use self::spl::DcSplStakePoolDecoder;
|
||||
/// Exact decoder for the Token-2022 program.
|
||||
pub use self::spl::DcSplToken2022Decoder;
|
||||
/// Exact decoder for the classic SPL Token program.
|
||||
pub use self::spl::DcSplTokenDecoder;
|
||||
/// Parsed Token-2022 Mint, Account, or Multisig state.
|
||||
pub use self::spl::DcToken2022State;
|
||||
/// Exact Token-2022 base account state kind.
|
||||
pub use self::spl::DcToken2022StateKind;
|
||||
/// One exact Token-2022 TLV entry.
|
||||
pub use self::spl::DcToken2022TlvEntry;
|
||||
/// Parses one exact SPL ElGamal registry account.
|
||||
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::decoder_spl_token2022_parse_token2022_state;
|
||||
/// Reserved `kb_decoder_stable_swap_hylo_exchange` decoder.
|
||||
pub use self::stable::DcStableSwapHyloExchangeDecoder;
|
||||
/// Reserved `kb_decoder_stable_swap_jupiter_stable` decoder.
|
||||
pub use self::stable::DcStableSwapJupiterStableDecoder;
|
||||
/// Reserved `kb_decoder_stable_swap_numeraire` decoder.
|
||||
pub use self::stable::DcStableSwapNumeraireDecoder;
|
||||
/// Reserved `kb_decoder_stable_swap_stabble` decoder.
|
||||
pub use self::stable::DcStableSwapStabbleDecoder;
|
||||
/// Reserved `kb_decoder_staking_kamino_farm` decoder.
|
||||
pub use self::staking::DcStakingKaminoFarmDecoder;
|
||||
/// Reserved `kb_decoder_staking_marinade_finance` decoder.
|
||||
pub use self::staking::DcStakingMarinadeFinanceDecoder;
|
||||
/// Reserved `kb_decoder_staking_solayer` decoder.
|
||||
pub use self::staking::DcStakingSolayerDecoder;
|
||||
/// Reserved `kb_decoder_treasury_helium_treasury_management` decoder.
|
||||
pub use self::treasury::DcTreasuryHeliumTreasuryManagementDecoder;
|
||||
/// Reserved `kb_decoder_vault_carrot_defi` decoder.
|
||||
pub use self::vault::DcVaultCarrotDefiDecoder;
|
||||
/// Reserved `kb_decoder_vault_hylo_stability_pool` decoder.
|
||||
pub use self::vault::DcVaultHyloStabilityPoolDecoder;
|
||||
/// Reserved `kb_decoder_vault_kamino` decoder.
|
||||
pub use self::vault::DcVaultKaminoDecoder;
|
||||
/// Reserved `kb_decoder_vault_kamino_v2` decoder.
|
||||
pub use self::vault::DcVaultKaminoV2Decoder;
|
||||
/// Reserved `kb_decoder_vault_kamino_yvaults` decoder.
|
||||
pub use self::vault::DcVaultKaminoYvaultsDecoder;
|
||||
/// Reserved `kb_decoder_vault_meteora` decoder.
|
||||
pub use self::vault::DcVaultMeteoraDecoder;
|
||||
/// Reserved `kb_decoder_vesting_streamflow` decoder.
|
||||
pub use self::vesting::DcVestingStreamflowDecoder;
|
||||
/// Reserved `kb_decoder_wallet_jupiter_apepro_smart_wallet` decoder.
|
||||
pub use self::wallet::DcWalletJupiterApeproSmartWalletDecoder;
|
||||
/// Reserved `kb_decoder_weighted_swap_stabble` decoder.
|
||||
pub use self::weighted::DcWeightedSwapStabbleDecoder;
|
||||
|
||||
/// Approve Collection Authority discriminator.
|
||||
pub(crate) use self::metadata::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
|
||||
@@ -393,139 +694,139 @@ 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::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::DC_SPL_ELGAMAL_REGISTRY_ACCOUNT_LEN;
|
||||
/// Exact decoder for the SPL Associated Token Account program.
|
||||
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::DcSplElgamalRegistryDecoder;
|
||||
/// Exact decoder for the three registered SPL Memo generations.
|
||||
pub use self::spl::DcSplMemoDecoder;
|
||||
/// Exact decoder for the Token-2022 program.
|
||||
pub use self::spl::DcSplToken2022Decoder;
|
||||
/// Exact decoder for the classic SPL Token program.
|
||||
pub use self::spl::DcSplTokenDecoder;
|
||||
/// Parsed Token-2022 Mint, Account, or Multisig state.
|
||||
pub use self::spl::DcToken2022State;
|
||||
/// Exact Token-2022 base account state kind.
|
||||
pub use self::spl::DcToken2022StateKind;
|
||||
/// One exact Token-2022 TLV entry.
|
||||
pub use self::spl::DcToken2022TlvEntry;
|
||||
/// Parses one exact SPL ElGamal registry account.
|
||||
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::decoder_spl_token2022_parse_token2022_state;
|
||||
#[cfg(test)]
|
||||
mod reserved_decoder_tests {
|
||||
#[test]
|
||||
fn every_reserved_decoder_exposes_only_registered_program_ids() {
|
||||
let decoders: [&dyn crate::DcApiProtocolDecoder; 98] = [
|
||||
&crate::DcAdapterSaberDecimalWrapperDecoder,
|
||||
&crate::DcAdminJupiterLockDecoder,
|
||||
&crate::DcAdminPumpFeesDecoder,
|
||||
&crate::DcAmmAldrinV1Decoder,
|
||||
&crate::DcAmmAldrinV2Decoder,
|
||||
&crate::DcAmmAlphaqDecoder,
|
||||
&crate::DcAmmBelieveDecoder,
|
||||
&crate::DcAmmBonkSwapDecoder,
|
||||
&crate::DcAmmFluxbeamDecoder,
|
||||
&crate::DcAmmGoonFiDecoder,
|
||||
&crate::DcAmmGoosefxGammaDecoder,
|
||||
&crate::DcAmmGoosefxV2Decoder,
|
||||
&crate::DcAmmGuacSwapDecoder,
|
||||
&crate::DcAmmLifinitySwapV2Decoder,
|
||||
&crate::DcAmmMetadaoFutarchyAmmDecoder,
|
||||
&crate::DcAmmMetadaoV05Decoder,
|
||||
&crate::DcAmmMeteoraDammV1Decoder,
|
||||
&crate::DcAmmMeteoraDammV2Decoder,
|
||||
&crate::DcAmmObricV2Decoder,
|
||||
&crate::DcAmmOneDexDecoder,
|
||||
&crate::DcAmmPumpSwapDecoder,
|
||||
&crate::DcAmmRaydiumLpV4Decoder,
|
||||
&crate::DcAmmSolfiDecoder,
|
||||
&crate::DcAmmSolfiV2Decoder,
|
||||
&crate::DcAmmVertigoDecoder,
|
||||
&crate::DcAmmVirtualsDecoder,
|
||||
&crate::DcAmmWoofiDecoder,
|
||||
&crate::DcAmmZeroFiDecoder,
|
||||
&crate::DcAmmZoraDecoder,
|
||||
&crate::DcAnchorDecoder,
|
||||
&crate::DcBridgeCircleCctpTokenMessengerMinterDecoder,
|
||||
&crate::DcBridgeCircleCctpTokenMessengerMinterV2Decoder,
|
||||
&crate::DcBridgeLayerZeroEndpointDecoder,
|
||||
&crate::DcBridgeLayerZeroExecutorDecoder,
|
||||
&crate::DcClmmByrealDecoder,
|
||||
&crate::DcClmmFusionDecoder,
|
||||
&crate::DcClmmOrcaWhirlpoolDecoder,
|
||||
&crate::DcClmmPancakeSwapDecoder,
|
||||
&crate::DcClmmRaydiumDecoder,
|
||||
&crate::DcClmmStabbleDecoder,
|
||||
&crate::DcCpmmRaydiumDecoder,
|
||||
&crate::DcDlmmMeteoraDecoder,
|
||||
&crate::DcFeesBagsFeeShareV1Decoder,
|
||||
&crate::DcFeesBagsFeeShareV2Decoder,
|
||||
&crate::DcGovernanceMetadaoBidWallDecoder,
|
||||
&crate::DcLaunchpadBoopFunDecoder,
|
||||
&crate::DcLaunchpadMetadaoIcoDecoder,
|
||||
&crate::DcLaunchpadMeteoraDbcDecoder,
|
||||
&crate::DcLaunchpadMoonitDecoder,
|
||||
&crate::DcLaunchpadOrcaWavebreakDecoder,
|
||||
&crate::DcLaunchpadPrintrDecoder,
|
||||
&crate::DcLaunchpadPumpFunDecoder,
|
||||
&crate::DcLaunchpadPumpPumpupAiDecoder,
|
||||
&crate::DcLaunchpadRaydiumLaunchlabDecoder,
|
||||
&crate::DcLendingCloneDecoder,
|
||||
&crate::DcLendingJupiterLendBorrowDecoder,
|
||||
&crate::DcLendingJupiterLendEarnDecoder,
|
||||
&crate::DcLendingJupiterLendFlashLoanDecoder,
|
||||
&crate::DcLendingJupiterLendLiquidityDecoder,
|
||||
&crate::DcLendingKaminoDecoder,
|
||||
&crate::DcLendingMarginfiV2Decoder,
|
||||
&crate::DcLockRaydiumLpDecoder,
|
||||
&crate::DcMetadataSplNameServiceDecoder,
|
||||
&crate::DcNftMetaplexBubblegumDecoder,
|
||||
&crate::DcOrderbookJupiterLimitOrderDecoder,
|
||||
&crate::DcOrderbookJupiterLimitOrderV2Decoder,
|
||||
&crate::DcOrderbookOpenbookV2Decoder,
|
||||
&crate::DcPerpetualsDriftV2Decoder,
|
||||
&crate::DcPerpetualsJupiterDecoder,
|
||||
&crate::DcPerpetualsZetaDecoder,
|
||||
&crate::DcRouterDflowAggregatorV4Decoder,
|
||||
&crate::DcRouterJupiterAggregatorV4Decoder,
|
||||
&crate::DcRouterJupiterAggregatorV6Decoder,
|
||||
&crate::DcRouterJupiterDcaDecoder,
|
||||
&crate::DcRouterOkxLabsV1Decoder,
|
||||
&crate::DcRouterOkxLabsV2Decoder,
|
||||
&crate::DcRwaOndoGlobalMarketsDecoder,
|
||||
&crate::DcSplAccountCompressionDecoder,
|
||||
&crate::DcSplNoopDecoder,
|
||||
&crate::DcSplSinglePoolDecoder,
|
||||
&crate::DcSplStakePoolDecoder,
|
||||
&crate::DcStableSwapHyloExchangeDecoder,
|
||||
&crate::DcStableSwapJupiterStableDecoder,
|
||||
&crate::DcStableSwapNumeraireDecoder,
|
||||
&crate::DcStableSwapStabbleDecoder,
|
||||
&crate::DcStakingKaminoFarmDecoder,
|
||||
&crate::DcStakingMarinadeFinanceDecoder,
|
||||
&crate::DcStakingSolayerDecoder,
|
||||
&crate::DcTreasuryHeliumTreasuryManagementDecoder,
|
||||
&crate::DcVaultCarrotDefiDecoder,
|
||||
&crate::DcVaultHyloStabilityPoolDecoder,
|
||||
&crate::DcVaultKaminoDecoder,
|
||||
&crate::DcVaultKaminoV2Decoder,
|
||||
&crate::DcVaultKaminoYvaultsDecoder,
|
||||
&crate::DcVaultMeteoraDecoder,
|
||||
&crate::DcVestingStreamflowDecoder,
|
||||
&crate::DcWalletJupiterApeproSmartWalletDecoder,
|
||||
&crate::DcWeightedSwapStabbleDecoder,
|
||||
];
|
||||
let mut names = std::collections::BTreeSet::new();
|
||||
for decoder in decoders {
|
||||
assert!(names.insert(decoder.decoder_name()));
|
||||
if decoder.decoder_name() == "kb_decoder_anchor" {
|
||||
assert!(decoder.program_ids().is_empty());
|
||||
continue;
|
||||
}
|
||||
assert_eq!(decoder.program_ids().len(), 1);
|
||||
for program_id in decoder.program_ids() {
|
||||
assert!(kb_program_ids::find_registered_program_id(program_id).is_some());
|
||||
let observation = crate::MdProgramObservation {
|
||||
signature: crate::MdSignature("signature".to_string()),
|
||||
slot: crate::MdSlot(1),
|
||||
instruction_path: crate::MdInstructionPath("0".to_string()),
|
||||
program_id: crate::MdProgramId((*program_id).to_string()),
|
||||
discriminator_8: std::option::Option::None,
|
||||
data_len: 0,
|
||||
accounts_len: 0,
|
||||
failed: false,
|
||||
};
|
||||
assert_eq!(
|
||||
decoder.supports_observation(&observation),
|
||||
crate::DcApiDecoderSupport::Maybe
|
||||
);
|
||||
let decode_result = decoder.decode_observation(&observation);
|
||||
assert!(decode_result.is_ok());
|
||||
assert!(decode_result.is_ok_and(|events| return events.is_empty()));
|
||||
}
|
||||
}
|
||||
assert_eq!(names.len(), 98);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user