Files
khadhroony-bot3/kb-lib/src/materializer.rs
2026-08-06 06:12:54 +02:00

645 lines
35 KiB
Rust

// file: kb-lib/src/materializer.rs
// version: 15
//! Consolidated materializer modules.
mod admin;
mod api;
mod bridge;
mod compliance;
mod fees;
mod governance;
mod lending;
mod lifecycle;
mod liquidity;
mod metadata;
mod nft;
mod oracle;
mod orderbook;
mod perpetuals;
mod pool;
mod rewards;
mod risk;
mod routing;
mod staking;
mod token;
mod trades;
mod transaction;
mod vault;
/// Stable native and SPL administration materializer.
pub use self::admin::MtAdminMaterializer;
/// Materializes one exact SPL ElGamal registry account snapshot.
pub use self::admin::materializer_admin_materialize_elgamal_registry_state_snapshot;
/// Materializes exact Token-2022 administration account snapshots.
pub use self::admin::materializer_admin_materialize_token_2022_state_snapshots;
/// Stable decoded observation materializer contract used by the common pipeline.
pub use self::api::MtApiEventMaterializer;
/// Explicit policy applied to successful and failed source transactions.
pub use self::api::MtApiMaterializationTransactionPolicy;
/// Stable processor-owned business output derived from one decoded observation.
pub use self::api::MtApiMaterializedOutput;
/// Structured materializer diagnostic without generic error wrappers.
pub use self::api::MtApiMaterializerDiagnostic;
/// Complete explicit result produced by one materializer invocation.
pub use self::api::MtApiMaterializerExecutionResult;
/// Stable identity of one decoded event materializer.
pub use self::api::MtApiMaterializerIdentity;
/// Terminal materializer result status.
pub use self::api::MtApiMaterializerOutcomeStatus;
/// Exposes the legacy common business materializer trait.
pub use self::api::MtMaterializer;
/// Returns true when a materializer explicitly accepts one decoded family.
pub use self::api::materializer_api_accepts_family;
/// Returns true when a materializer accepts one exact decoded observation.
pub use self::api::materializer_api_accepts_observation;
/// Applies the mandatory source transaction policy before materialization.
pub use self::api::materializer_api_validate_materialization_policy;
/// Rejects mutable business outputs derived from failed or uncommitted observations.
pub use self::api::materializer_api_validate_materialized_output_policy;
/// Reserved bridge materializer.
pub use self::bridge::MtBridgeMaterializer;
/// Stable native compliance audit materializer.
pub use self::compliance::MtComplianceAuditMaterializer;
/// Fee materializer for committed Token-2022 fee observations.
pub use self::fees::MtFeesMaterializer;
/// Materializes authoritative Token-2022 fee extension snapshots.
pub use self::fees::materializer_fees_materialize_token_2022_state_snapshots;
/// Reserved governance materializer.
pub use self::governance::MtGovernanceMaterializer;
/// Reserved lending materializer.
pub use self::lending::MtLendingMaterializer;
/// Stable native lifecycle materializer.
pub use self::lifecycle::MtLifecycleMaterializer;
/// Reserved liquidity materializer.
pub use self::liquidity::MtLiquidityMaterializer;
/// Metaplex Token Metadata instruction materializer.
pub use self::metadata::MtMetadataMetaplexTokenMetadataMaterializer;
/// Solana Program Metadata instruction materializer.
pub use self::metadata::MtMetadataSolanaProgramMaterializer;
/// SPL Token-2022 embedded metadata and group instruction materializer.
pub use self::metadata::MtMetadataToken2022Materializer;
/// Materializes one canonical non-Metadata Metaplex account snapshot.
pub use self::metadata::materializer_metadata_materialize_metaplex_account_snapshot;
/// Materializes one canonical Metaplex Metadata account snapshot.
pub use self::metadata::materializer_metadata_materialize_metaplex_metadata_snapshot;
/// Materializes one decoded Solana Program Metadata account snapshot.
pub use self::metadata::materializer_metadata_materialize_solana_program_metadata_account_snapshot;
/// Materializes one bounded Solana Program Metadata Buffer account snapshot.
pub use self::metadata::materializer_metadata_materialize_solana_program_metadata_buffer_snapshot;
/// Materializes one bounded Solana Program Metadata Metadata account snapshot.
pub use self::metadata::materializer_metadata_materialize_solana_program_metadata_metadata_snapshot;
/// Materializes Token-2022 embedded metadata and group snapshots.
pub use self::metadata::materializer_metadata_materialize_token_2022_snapshot;
/// Reserved NFT materializer.
pub use self::nft::MtNftMaterializer;
/// Reserved oracle materializer.
pub use self::oracle::MtOracleMaterializer;
/// Reserved orderbook materializer.
pub use self::orderbook::MtOrderbookMaterializer;
/// Reserved perpetuals materializer.
pub use self::perpetuals::MtPerpetualsMaterializer;
/// Reserved pool-state materializer.
pub use self::pool::MtPoolStateMaterializer;
/// Reserved rewards materializer.
pub use self::rewards::MtRewardsMaterializer;
/// Stable SPL Token and ATA risk materializer.
pub use self::risk::MtRiskMaterializer;
/// Reserved routing materializer.
pub use self::routing::MtRoutingMaterializer;
/// Stable native stake and vote materializer.
pub use self::staking::MtStakingMaterializer;
/// Stable Token, ATA and Token-2022 account materializer.
pub use self::token::MtTokenAccountsMaterializer;
/// Reserved token-metadata risk materializer.
pub use self::token::MtTokenMetadataRiskMaterializer;
/// Materializes one bounded Token-2022 account state snapshot.
pub use self::token::materializer_token_materialize_token_2022_state_snapshot;
/// Reserved trades materializer.
pub use self::trades::MtTradesMaterializer;
/// Stable committed Memo transaction annotation materializer.
pub use self::transaction::MtTransactionAnnotationMaterializer;
/// Reserved vault materializer.
pub use self::vault::MtVaultMaterializer;
/// Crate-visible `MT_ADMIN_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::admin::MT_ADMIN_ACCEPTED_FAMILIES;
/// Crate-visible `MT_ADMIN_BPF_LOADER_UPGRADEABLE_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_BPF_LOADER_UPGRADEABLE_ENTRIES;
/// Crate-visible `MT_ADMIN_BPF_LOADER_UPGRADEABLE_SURFACE` component constant.
pub(crate) use self::admin::MT_ADMIN_BPF_LOADER_UPGRADEABLE_SURFACE;
/// Crate-visible `MT_ADMIN_COMPONENT_NAME` component constant.
pub(crate) use self::admin::MT_ADMIN_COMPONENT_NAME;
/// Crate-visible `MT_ADMIN_CONFIG_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_CONFIG_ENTRIES;
/// Crate-visible `MT_ADMIN_CONFIG_SURFACE` component constant.
pub(crate) use self::admin::MT_ADMIN_CONFIG_SURFACE;
/// Crate-visible `MT_ADMIN_LOADER_V4_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_LOADER_V4_ENTRIES;
/// Crate-visible `MT_ADMIN_LOADER_V4_SURFACE` component constant.
pub(crate) use self::admin::MT_ADMIN_LOADER_V4_SURFACE;
/// Crate-visible `MT_ADMIN_PROCESSOR_NAME` component constant.
pub(crate) use self::admin::MT_ADMIN_PROCESSOR_NAME;
/// Crate-visible `MT_ADMIN_PROJECTION_VERSION` component constant.
pub(crate) use self::admin::MT_ADMIN_PROJECTION_VERSION;
/// Crate-visible `MT_ADMIN_SPL_ELGAMAL_REGISTRY_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_SPL_ELGAMAL_REGISTRY_ENTRIES;
/// Crate-visible `MT_ADMIN_SPL_ELGAMAL_REGISTRY_SURFACE` component constant.
pub(crate) use self::admin::MT_ADMIN_SPL_ELGAMAL_REGISTRY_SURFACE;
/// Crate-visible `MT_ADMIN_SPL_TOKEN_2022_EXTENSION_ADMIN_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_SPL_TOKEN_2022_EXTENSION_ADMIN_ENTRIES;
/// Crate-visible `MT_ADMIN_SPL_TOKEN_2022_SURFACE` component constant.
pub(crate) use self::admin::MT_ADMIN_SPL_TOKEN_2022_SURFACE;
/// Crate-visible `MT_ADMIN_SPL_TOKEN_AUTHORITY_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_SPL_TOKEN_AUTHORITY_ENTRIES;
/// Crate-visible `MT_ADMIN_SPL_TOKEN_MULTISIG_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_SPL_TOKEN_MULTISIG_ENTRIES;
/// Crate-visible `MT_ADMIN_SPL_TOKEN_SURFACE` component constant.
pub(crate) use self::admin::MT_ADMIN_SPL_TOKEN_SURFACE;
/// Crate-visible `MT_ADMIN_SYSTEM_ENTRIES` component constant.
pub(crate) use self::admin::MT_ADMIN_SYSTEM_ENTRIES;
/// Crate-visible `MT_ADMIN_SYSTEM_SURFACE` component constant.
pub(crate) use self::admin::MT_ADMIN_SYSTEM_SURFACE;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_ADMIN` component constant.
pub(crate) use self::admin::TRACING_TARGET_MATERIALIZER_ADMIN;
/// Crate-visible `MT_BRIDGE_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::bridge::MT_BRIDGE_ACCEPTED_FAMILIES;
/// Crate-visible `MT_BRIDGE_COMPONENT_NAME` component constant.
pub(crate) use self::bridge::MT_BRIDGE_COMPONENT_NAME;
/// Crate-visible `MT_BRIDGE_PROCESSOR_NAME` component constant.
pub(crate) use self::bridge::MT_BRIDGE_PROCESSOR_NAME;
/// Crate-visible `MT_COMPLIANCE_AUDIT_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_ACCEPTED_FAMILIES;
/// Crate-visible `MT_COMPLIANCE_AUDIT_BPF_LOADER_DEPRECATED_SURFACE` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_BPF_LOADER_DEPRECATED_SURFACE;
/// Crate-visible `MT_COMPLIANCE_AUDIT_BPF_LOADER_SURFACE` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_BPF_LOADER_SURFACE;
/// Crate-visible `MT_COMPLIANCE_AUDIT_BPF_LOADER_UPGRADEABLE_SURFACE` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_BPF_LOADER_UPGRADEABLE_SURFACE;
/// Crate-visible `MT_COMPLIANCE_AUDIT_COMPONENT_NAME` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_COMPONENT_NAME;
/// Crate-visible `MT_COMPLIANCE_AUDIT_COMPUTE_BUDGET_ENTRIES` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_COMPUTE_BUDGET_ENTRIES;
/// Crate-visible `MT_COMPLIANCE_AUDIT_COMPUTE_BUDGET_SURFACE` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_COMPUTE_BUDGET_SURFACE;
/// Crate-visible `MT_COMPLIANCE_AUDIT_LOADER_V4_COPY_ENTRIES` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_LOADER_V4_COPY_ENTRIES;
/// Crate-visible `MT_COMPLIANCE_AUDIT_LOADER_V4_SURFACE` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_LOADER_V4_SURFACE;
/// Crate-visible `MT_COMPLIANCE_AUDIT_PROCESSOR_NAME` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_PROCESSOR_NAME;
/// Crate-visible `MT_COMPLIANCE_AUDIT_PROJECTION_VERSION` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_PROJECTION_VERSION;
/// Crate-visible `MT_COMPLIANCE_AUDIT_WRITE_ENTRIES` component constant.
pub(crate) use self::compliance::MT_COMPLIANCE_AUDIT_WRITE_ENTRIES;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_COMPLIANCE_AUDIT` component constant.
pub(crate) use self::compliance::TRACING_TARGET_MATERIALIZER_COMPLIANCE_AUDIT;
/// Crate-visible `MT_FEES_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::fees::MT_FEES_ACCEPTED_FAMILIES;
/// Crate-visible `MT_FEES_COMPONENT_NAME` component constant.
pub(crate) use self::fees::MT_FEES_COMPONENT_NAME;
/// Crate-visible `MT_FEES_PROCESSOR_NAME` component constant.
pub(crate) use self::fees::MT_FEES_PROCESSOR_NAME;
/// Crate-visible `MT_FEES_PROJECTION_VERSION` component constant.
pub(crate) use self::fees::MT_FEES_PROJECTION_VERSION;
/// Crate-visible `MT_FEES_SPL_TOKEN_2022_SURFACE` component constant.
pub(crate) use self::fees::MT_FEES_SPL_TOKEN_2022_SURFACE;
/// Crate-visible `MT_FEES_TOKEN_2022_FEE_ENTRIES` component constant.
pub(crate) use self::fees::MT_FEES_TOKEN_2022_FEE_ENTRIES;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_FEES` component constant.
pub(crate) use self::fees::TRACING_TARGET_MATERIALIZER_FEES;
/// Crate-visible `MT_GOVERNANCE_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::governance::MT_GOVERNANCE_ACCEPTED_FAMILIES;
/// Crate-visible `MT_GOVERNANCE_COMPONENT_NAME` component constant.
pub(crate) use self::governance::MT_GOVERNANCE_COMPONENT_NAME;
/// Crate-visible `MT_GOVERNANCE_PROCESSOR_NAME` component constant.
pub(crate) use self::governance::MT_GOVERNANCE_PROCESSOR_NAME;
/// Crate-visible `MT_LENDING_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::lending::MT_LENDING_ACCEPTED_FAMILIES;
/// Crate-visible `MT_LENDING_COMPONENT_NAME` component constant.
pub(crate) use self::lending::MT_LENDING_COMPONENT_NAME;
/// Crate-visible `MT_LENDING_PROCESSOR_NAME` component constant.
pub(crate) use self::lending::MT_LENDING_PROCESSOR_NAME;
/// Crate-visible `MT_LIFECYCLE_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_ACCEPTED_FAMILIES;
/// Crate-visible `MT_LIFECYCLE_ADDRESS_LOOKUP_TABLE_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_ADDRESS_LOOKUP_TABLE_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_ADDRESS_LOOKUP_TABLE_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_ADDRESS_LOOKUP_TABLE_SURFACE;
/// Crate-visible `MT_LIFECYCLE_BPF_LOADER_DEPRECATED_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_BPF_LOADER_DEPRECATED_SURFACE;
/// Crate-visible `MT_LIFECYCLE_BPF_LOADER_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_BPF_LOADER_SURFACE;
/// Crate-visible `MT_LIFECYCLE_BPF_LOADER_UPGRADEABLE_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_BPF_LOADER_UPGRADEABLE_SURFACE;
/// Crate-visible `MT_LIFECYCLE_COMPONENT_NAME` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_COMPONENT_NAME;
/// Crate-visible `MT_LIFECYCLE_FEATURE_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_FEATURE_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_FEATURE_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_FEATURE_SURFACE;
/// Crate-visible `MT_LIFECYCLE_IMMUTABLE_LOADER_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_IMMUTABLE_LOADER_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_LOADER_V4_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_LOADER_V4_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_LOADER_V4_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_LOADER_V4_SURFACE;
/// Crate-visible `MT_LIFECYCLE_PROCESSOR_NAME` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_PROCESSOR_NAME;
/// Crate-visible `MT_LIFECYCLE_PROJECTION_VERSION` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_PROJECTION_VERSION;
/// Crate-visible `MT_LIFECYCLE_SLASHING_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_SLASHING_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_SLASHING_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_SLASHING_SURFACE;
/// Crate-visible `MT_LIFECYCLE_SYSTEM_ACCOUNT_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_SYSTEM_ACCOUNT_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_SYSTEM_NONCE_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_SYSTEM_NONCE_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_SYSTEM_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_SYSTEM_SURFACE;
/// Crate-visible `MT_LIFECYCLE_UPGRADEABLE_LOADER_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_UPGRADEABLE_LOADER_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_ZK_ELGAMAL_CLOSE_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_ZK_ELGAMAL_CLOSE_ENTRIES;
/// Crate-visible `MT_LIFECYCLE_ZK_ELGAMAL_PROOF_SURFACE` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_ZK_ELGAMAL_PROOF_SURFACE;
/// Crate-visible `MT_LIFECYCLE_ZK_ELGAMAL_VERIFY_ENTRIES` component constant.
pub(crate) use self::lifecycle::MT_LIFECYCLE_ZK_ELGAMAL_VERIFY_ENTRIES;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_LIFECYCLE` component constant.
pub(crate) use self::lifecycle::TRACING_TARGET_MATERIALIZER_LIFECYCLE;
/// Crate-visible `MT_LIQUIDITY_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::liquidity::MT_LIQUIDITY_ACCEPTED_FAMILIES;
/// Crate-visible `MT_LIQUIDITY_COMPONENT_NAME` component constant.
pub(crate) use self::liquidity::MT_LIQUIDITY_COMPONENT_NAME;
/// Crate-visible `MT_LIQUIDITY_PROCESSOR_NAME` component constant.
pub(crate) use self::liquidity::MT_LIQUIDITY_PROCESSOR_NAME;
/// Crate-visible `MT_METADATA_METAPLEX_TOKEN_METADATA_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::metadata::MT_METADATA_METAPLEX_TOKEN_METADATA_ACCEPTED_FAMILIES;
/// Crate-visible `MT_METADATA_METAPLEX_TOKEN_METADATA_COMPONENT_NAME` component constant.
pub(crate) use self::metadata::MT_METADATA_METAPLEX_TOKEN_METADATA_COMPONENT_NAME;
/// Crate-visible `MT_METADATA_METAPLEX_TOKEN_METADATA_PROCESSOR_NAME` component constant.
pub(crate) use self::metadata::MT_METADATA_METAPLEX_TOKEN_METADATA_PROCESSOR_NAME;
/// Crate-visible `MT_METADATA_METAPLEX_TOKEN_METADATA_PROJECTION_VERSION` component constant.
pub(crate) use self::metadata::MT_METADATA_METAPLEX_TOKEN_METADATA_PROJECTION_VERSION;
/// Crate-visible `MT_METADATA_SOLANA_PROGRAM_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::metadata::MT_METADATA_SOLANA_PROGRAM_ACCEPTED_FAMILIES;
/// Crate-visible `MT_METADATA_SOLANA_PROGRAM_COMPONENT_NAME` component constant.
pub(crate) use self::metadata::MT_METADATA_SOLANA_PROGRAM_COMPONENT_NAME;
/// Crate-visible `MT_METADATA_SOLANA_PROGRAM_PROCESSOR_NAME` component constant.
pub(crate) use self::metadata::MT_METADATA_SOLANA_PROGRAM_PROCESSOR_NAME;
/// Crate-visible `MT_METADATA_SOLANA_PROGRAM_PROJECTION_VERSION` component constant.
pub(crate) use self::metadata::MT_METADATA_SOLANA_PROGRAM_PROJECTION_VERSION;
/// Crate-visible `MT_METADATA_TOKEN_2022_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::metadata::MT_METADATA_TOKEN_2022_ACCEPTED_FAMILIES;
/// Crate-visible `MT_METADATA_TOKEN_2022_COMPONENT_NAME` component constant.
pub(crate) use self::metadata::MT_METADATA_TOKEN_2022_COMPONENT_NAME;
/// Crate-visible `MT_METADATA_TOKEN_2022_INSTRUCTION_ENTRIES` component constant.
pub(crate) use self::metadata::MT_METADATA_TOKEN_2022_INSTRUCTION_ENTRIES;
/// Crate-visible `MT_METADATA_TOKEN_2022_PROCESSOR_NAME` component constant.
pub(crate) use self::metadata::MT_METADATA_TOKEN_2022_PROCESSOR_NAME;
/// Crate-visible `MT_METADATA_TOKEN_2022_PROJECTION_VERSION` component constant.
pub(crate) use self::metadata::MT_METADATA_TOKEN_2022_PROJECTION_VERSION;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_METADATA_METAPLEX_TOKEN_METADATA` component constant.
pub(crate) use self::metadata::TRACING_TARGET_MATERIALIZER_METADATA_METAPLEX_TOKEN_METADATA;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_METADATA_SOLANA_PROGRAM` component constant.
pub(crate) use self::metadata::TRACING_TARGET_MATERIALIZER_METADATA_SOLANA_PROGRAM;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_METADATA_TOKEN_2022` component constant.
pub(crate) use self::metadata::TRACING_TARGET_MATERIALIZER_METADATA_TOKEN_2022;
/// Crate-visible `MT_NFT_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::nft::MT_NFT_ACCEPTED_FAMILIES;
/// Crate-visible `MT_NFT_COMPONENT_NAME` component constant.
pub(crate) use self::nft::MT_NFT_COMPONENT_NAME;
/// Crate-visible `MT_NFT_PROCESSOR_NAME` component constant.
pub(crate) use self::nft::MT_NFT_PROCESSOR_NAME;
/// Crate-visible `MT_ORACLE_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::oracle::MT_ORACLE_ACCEPTED_FAMILIES;
/// Crate-visible `MT_ORACLE_COMPONENT_NAME` component constant.
pub(crate) use self::oracle::MT_ORACLE_COMPONENT_NAME;
/// Crate-visible `MT_ORACLE_PROCESSOR_NAME` component constant.
pub(crate) use self::oracle::MT_ORACLE_PROCESSOR_NAME;
/// Crate-visible `MT_ORDERBOOK_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::orderbook::MT_ORDERBOOK_ACCEPTED_FAMILIES;
/// Crate-visible `MT_ORDERBOOK_COMPONENT_NAME` component constant.
pub(crate) use self::orderbook::MT_ORDERBOOK_COMPONENT_NAME;
/// Crate-visible `MT_ORDERBOOK_PROCESSOR_NAME` component constant.
pub(crate) use self::orderbook::MT_ORDERBOOK_PROCESSOR_NAME;
/// Crate-visible `MT_PERPETUALS_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::perpetuals::MT_PERPETUALS_ACCEPTED_FAMILIES;
/// Crate-visible `MT_PERPETUALS_COMPONENT_NAME` component constant.
pub(crate) use self::perpetuals::MT_PERPETUALS_COMPONENT_NAME;
/// Crate-visible `MT_PERPETUALS_PROCESSOR_NAME` component constant.
pub(crate) use self::perpetuals::MT_PERPETUALS_PROCESSOR_NAME;
/// Crate-visible `MT_POOL_STATE_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::pool::MT_POOL_STATE_ACCEPTED_FAMILIES;
/// Crate-visible `MT_POOL_STATE_COMPONENT_NAME` component constant.
pub(crate) use self::pool::MT_POOL_STATE_COMPONENT_NAME;
/// Crate-visible `MT_POOL_STATE_PROCESSOR_NAME` component constant.
pub(crate) use self::pool::MT_POOL_STATE_PROCESSOR_NAME;
/// Crate-visible `MT_REWARDS_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::rewards::MT_REWARDS_ACCEPTED_FAMILIES;
/// Crate-visible `MT_REWARDS_COMPONENT_NAME` component constant.
pub(crate) use self::rewards::MT_REWARDS_COMPONENT_NAME;
/// Crate-visible `MT_REWARDS_PROCESSOR_NAME` component constant.
pub(crate) use self::rewards::MT_REWARDS_PROCESSOR_NAME;
/// Crate-visible `MT_RISK_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::risk::MT_RISK_ACCEPTED_FAMILIES;
/// Crate-visible `MT_RISK_COMPONENT_NAME` component constant.
pub(crate) use self::risk::MT_RISK_COMPONENT_NAME;
/// Crate-visible `MT_RISK_PROCESSOR_NAME` component constant.
pub(crate) use self::risk::MT_RISK_PROCESSOR_NAME;
/// Crate-visible `MT_RISK_PROJECTION_VERSION` component constant.
pub(crate) use self::risk::MT_RISK_PROJECTION_VERSION;
/// Crate-visible `MT_RISK_RISK_ENTRIES` component constant.
pub(crate) use self::risk::MT_RISK_RISK_ENTRIES;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_RISK` component constant.
pub(crate) use self::risk::TRACING_TARGET_MATERIALIZER_RISK;
/// Crate-visible `MT_ROUTING_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::routing::MT_ROUTING_ACCEPTED_FAMILIES;
/// Crate-visible `MT_ROUTING_COMPONENT_NAME` component constant.
pub(crate) use self::routing::MT_ROUTING_COMPONENT_NAME;
/// Crate-visible `MT_ROUTING_PROCESSOR_NAME` component constant.
pub(crate) use self::routing::MT_ROUTING_PROCESSOR_NAME;
/// Crate-visible `MT_STAKING_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::staking::MT_STAKING_ACCEPTED_FAMILIES;
/// Crate-visible `MT_STAKING_COMPONENT_NAME` component constant.
pub(crate) use self::staking::MT_STAKING_COMPONENT_NAME;
/// Crate-visible `MT_STAKING_PROCESSOR_NAME` component constant.
pub(crate) use self::staking::MT_STAKING_PROCESSOR_NAME;
/// Crate-visible `MT_STAKING_PROJECTION_VERSION` component constant.
pub(crate) use self::staking::MT_STAKING_PROJECTION_VERSION;
/// Crate-visible `MT_STAKING_STAKE_ACCOUNT_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_STAKE_ACCOUNT_ENTRIES;
/// Crate-visible `MT_STAKING_STAKE_AUTHORITY_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_STAKE_AUTHORITY_ENTRIES;
/// Crate-visible `MT_STAKING_STAKE_LOCKUP_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_STAKE_LOCKUP_ENTRIES;
/// Crate-visible `MT_STAKING_STAKE_SURFACE` component constant.
pub(crate) use self::staking::MT_STAKING_STAKE_SURFACE;
/// Crate-visible `MT_STAKING_STAKE_VALUE_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_STAKE_VALUE_ENTRIES;
/// Crate-visible `MT_STAKING_VOTE_ACCOUNT_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_VOTE_ACCOUNT_ENTRIES;
/// Crate-visible `MT_STAKING_VOTE_ADMIN_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_VOTE_ADMIN_ENTRIES;
/// Crate-visible `MT_STAKING_VOTE_AUTHORITY_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_VOTE_AUTHORITY_ENTRIES;
/// Crate-visible `MT_STAKING_VOTE_REWARD_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_VOTE_REWARD_ENTRIES;
/// Crate-visible `MT_STAKING_VOTE_STATE_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_VOTE_STATE_ENTRIES;
/// Crate-visible `MT_STAKING_VOTE_SURFACE` component constant.
pub(crate) use self::staking::MT_STAKING_VOTE_SURFACE;
/// Crate-visible `MT_STAKING_VOTE_VALUE_ENTRIES` component constant.
pub(crate) use self::staking::MT_STAKING_VOTE_VALUE_ENTRIES;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_STAKING` component constant.
pub(crate) use self::staking::TRACING_TARGET_MATERIALIZER_STAKING;
/// Crate-visible `MT_TOKEN_ACCOUNTS_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::token::MT_TOKEN_ACCOUNTS_ACCEPTED_FAMILIES;
/// Crate-visible `MT_TOKEN_ACCOUNTS_ATA_LIFECYCLE_ENTRIES` component constant.
pub(crate) use self::token::MT_TOKEN_ACCOUNTS_ATA_LIFECYCLE_ENTRIES;
/// Crate-visible `MT_TOKEN_ACCOUNTS_COMPONENT_NAME` component constant.
pub(crate) use self::token::MT_TOKEN_ACCOUNTS_COMPONENT_NAME;
/// Crate-visible `MT_TOKEN_ACCOUNTS_MUTATION_ENTRIES` component constant.
pub(crate) use self::token::MT_TOKEN_ACCOUNTS_MUTATION_ENTRIES;
/// Crate-visible `MT_TOKEN_ACCOUNTS_PROCESSOR_NAME` component constant.
pub(crate) use self::token::MT_TOKEN_ACCOUNTS_PROCESSOR_NAME;
/// Crate-visible `MT_TOKEN_ACCOUNTS_PROJECTION_VERSION` component constant.
pub(crate) use self::token::MT_TOKEN_ACCOUNTS_PROJECTION_VERSION;
/// Crate-visible `MT_TOKEN_METADATA_RISK_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::token::MT_TOKEN_METADATA_RISK_ACCEPTED_FAMILIES;
/// Crate-visible `MT_TOKEN_METADATA_RISK_COMPONENT_NAME` component constant.
pub(crate) use self::token::MT_TOKEN_METADATA_RISK_COMPONENT_NAME;
/// Crate-visible `MT_TOKEN_METADATA_RISK_PROCESSOR_NAME` component constant.
pub(crate) use self::token::MT_TOKEN_METADATA_RISK_PROCESSOR_NAME;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_TOKEN_ACCOUNTS` component constant.
pub(crate) use self::token::TRACING_TARGET_MATERIALIZER_TOKEN_ACCOUNTS;
/// Crate-visible `MT_TRADES_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::trades::MT_TRADES_ACCEPTED_FAMILIES;
/// Crate-visible `MT_TRADES_COMPONENT_NAME` component constant.
pub(crate) use self::trades::MT_TRADES_COMPONENT_NAME;
/// Crate-visible `MT_TRADES_PROCESSOR_NAME` component constant.
pub(crate) use self::trades::MT_TRADES_PROCESSOR_NAME;
/// Crate-visible `MT_TRANSACTION_ANNOTATIONS_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_ACCEPTED_FAMILIES;
/// Crate-visible `MT_TRANSACTION_ANNOTATIONS_COMPONENT_NAME` component constant.
pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_COMPONENT_NAME;
/// Crate-visible `MT_TRANSACTION_ANNOTATIONS_MAX_MEMO_PAYLOAD_BYTES` component constant.
pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_MAX_MEMO_PAYLOAD_BYTES;
/// Crate-visible `MT_TRANSACTION_ANNOTATIONS_MEMO_ENTRY_NAMES` component constant.
pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_MEMO_ENTRY_NAMES;
/// Crate-visible `MT_TRANSACTION_ANNOTATIONS_PROCESSOR_NAME` component constant.
pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_PROCESSOR_NAME;
/// Crate-visible `MT_TRANSACTION_ANNOTATIONS_PROJECTION_VERSION` component constant.
pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_PROJECTION_VERSION;
/// Crate-visible `TRACING_TARGET_MATERIALIZER_TRANSACTION_ANNOTATIONS` component constant.
pub(crate) use self::transaction::TRACING_TARGET_MATERIALIZER_TRANSACTION_ANNOTATIONS;
/// Crate-visible `MT_VAULT_ACCEPTED_FAMILIES` component constant.
pub(crate) use self::vault::MT_VAULT_ACCEPTED_FAMILIES;
/// Crate-visible `MT_VAULT_COMPONENT_NAME` component constant.
pub(crate) use self::vault::MT_VAULT_COMPONENT_NAME;
/// Crate-visible `MT_VAULT_PROCESSOR_NAME` component constant.
pub(crate) use self::vault::MT_VAULT_PROCESSOR_NAME;
#[cfg(test)]
mod tests {
fn materializer_contracts() -> &'static [(
&'static dyn crate::MtMaterializer,
&'static dyn crate::MtApiEventMaterializer,
&'static str,
&'static str,
)] {
return &[
(
&crate::MtAdminMaterializer,
&crate::MtAdminMaterializer,
crate::MT_ADMIN_COMPONENT_NAME,
crate::MT_ADMIN_PROCESSOR_NAME,
),
(
&crate::MtBridgeMaterializer,
&crate::MtBridgeMaterializer,
crate::MT_BRIDGE_COMPONENT_NAME,
crate::MT_BRIDGE_PROCESSOR_NAME,
),
(
&crate::MtComplianceAuditMaterializer,
&crate::MtComplianceAuditMaterializer,
crate::MT_COMPLIANCE_AUDIT_COMPONENT_NAME,
crate::MT_COMPLIANCE_AUDIT_PROCESSOR_NAME,
),
(
&crate::MtFeesMaterializer,
&crate::MtFeesMaterializer,
crate::MT_FEES_COMPONENT_NAME,
crate::MT_FEES_PROCESSOR_NAME,
),
(
&crate::MtGovernanceMaterializer,
&crate::MtGovernanceMaterializer,
crate::MT_GOVERNANCE_COMPONENT_NAME,
crate::MT_GOVERNANCE_PROCESSOR_NAME,
),
(
&crate::MtLendingMaterializer,
&crate::MtLendingMaterializer,
crate::MT_LENDING_COMPONENT_NAME,
crate::MT_LENDING_PROCESSOR_NAME,
),
(
&crate::MtLifecycleMaterializer,
&crate::MtLifecycleMaterializer,
crate::MT_LIFECYCLE_COMPONENT_NAME,
crate::MT_LIFECYCLE_PROCESSOR_NAME,
),
(
&crate::MtLiquidityMaterializer,
&crate::MtLiquidityMaterializer,
crate::MT_LIQUIDITY_COMPONENT_NAME,
crate::MT_LIQUIDITY_PROCESSOR_NAME,
),
(
&crate::MtMetadataMetaplexTokenMetadataMaterializer,
&crate::MtMetadataMetaplexTokenMetadataMaterializer,
crate::MT_METADATA_METAPLEX_TOKEN_METADATA_COMPONENT_NAME,
crate::MT_METADATA_METAPLEX_TOKEN_METADATA_PROCESSOR_NAME,
),
(
&crate::MtMetadataSolanaProgramMaterializer,
&crate::MtMetadataSolanaProgramMaterializer,
crate::MT_METADATA_SOLANA_PROGRAM_COMPONENT_NAME,
crate::MT_METADATA_SOLANA_PROGRAM_PROCESSOR_NAME,
),
(
&crate::MtMetadataToken2022Materializer,
&crate::MtMetadataToken2022Materializer,
crate::MT_METADATA_TOKEN_2022_COMPONENT_NAME,
crate::MT_METADATA_TOKEN_2022_PROCESSOR_NAME,
),
(
&crate::MtNftMaterializer,
&crate::MtNftMaterializer,
crate::MT_NFT_COMPONENT_NAME,
crate::MT_NFT_PROCESSOR_NAME,
),
(
&crate::MtOracleMaterializer,
&crate::MtOracleMaterializer,
crate::MT_ORACLE_COMPONENT_NAME,
crate::MT_ORACLE_PROCESSOR_NAME,
),
(
&crate::MtOrderbookMaterializer,
&crate::MtOrderbookMaterializer,
crate::MT_ORDERBOOK_COMPONENT_NAME,
crate::MT_ORDERBOOK_PROCESSOR_NAME,
),
(
&crate::MtPerpetualsMaterializer,
&crate::MtPerpetualsMaterializer,
crate::MT_PERPETUALS_COMPONENT_NAME,
crate::MT_PERPETUALS_PROCESSOR_NAME,
),
(
&crate::MtPoolStateMaterializer,
&crate::MtPoolStateMaterializer,
crate::MT_POOL_STATE_COMPONENT_NAME,
crate::MT_POOL_STATE_PROCESSOR_NAME,
),
(
&crate::MtRewardsMaterializer,
&crate::MtRewardsMaterializer,
crate::MT_REWARDS_COMPONENT_NAME,
crate::MT_REWARDS_PROCESSOR_NAME,
),
(
&crate::MtRiskMaterializer,
&crate::MtRiskMaterializer,
crate::MT_RISK_COMPONENT_NAME,
crate::MT_RISK_PROCESSOR_NAME,
),
(
&crate::MtRoutingMaterializer,
&crate::MtRoutingMaterializer,
crate::MT_ROUTING_COMPONENT_NAME,
crate::MT_ROUTING_PROCESSOR_NAME,
),
(
&crate::MtStakingMaterializer,
&crate::MtStakingMaterializer,
crate::MT_STAKING_COMPONENT_NAME,
crate::MT_STAKING_PROCESSOR_NAME,
),
(
&crate::MtTokenAccountsMaterializer,
&crate::MtTokenAccountsMaterializer,
crate::MT_TOKEN_ACCOUNTS_COMPONENT_NAME,
crate::MT_TOKEN_ACCOUNTS_PROCESSOR_NAME,
),
(
&crate::MtTokenMetadataRiskMaterializer,
&crate::MtTokenMetadataRiskMaterializer,
crate::MT_TOKEN_METADATA_RISK_COMPONENT_NAME,
crate::MT_TOKEN_METADATA_RISK_PROCESSOR_NAME,
),
(
&crate::MtTradesMaterializer,
&crate::MtTradesMaterializer,
crate::MT_TRADES_COMPONENT_NAME,
crate::MT_TRADES_PROCESSOR_NAME,
),
(
&crate::MtTransactionAnnotationMaterializer,
&crate::MtTransactionAnnotationMaterializer,
crate::MT_TRANSACTION_ANNOTATIONS_COMPONENT_NAME,
crate::MT_TRANSACTION_ANNOTATIONS_PROCESSOR_NAME,
),
(
&crate::MtVaultMaterializer,
&crate::MtVaultMaterializer,
crate::MT_VAULT_COMPONENT_NAME,
crate::MT_VAULT_PROCESSOR_NAME,
),
];
}
#[test]
fn every_materializer_uses_the_component_and_processor_name_convention() {
for (legacy, contextual, component_name, processor_name) in materializer_contracts() {
assert_eq!(legacy.materializer_name(), *component_name);
assert_eq!(contextual.identity().name, *processor_name);
assert!(component_name.starts_with("kb-lib.materializer."));
assert!(processor_name.starts_with("materializer."));
assert_eq!(
component_name.strip_prefix("kb-lib."),
std::option::Option::Some(*processor_name)
);
assert!(!legacy.materializer_version().is_empty());
assert!(!contextual.identity().version.is_empty());
}
}
#[test]
fn reserved_materializers_are_empty_shells() {
let materializers: &[&dyn crate::MtApiEventMaterializer] = &[
&crate::MtBridgeMaterializer,
&crate::MtGovernanceMaterializer,
&crate::MtLendingMaterializer,
&crate::MtLiquidityMaterializer,
&crate::MtNftMaterializer,
&crate::MtOracleMaterializer,
&crate::MtOrderbookMaterializer,
&crate::MtPerpetualsMaterializer,
&crate::MtPoolStateMaterializer,
&crate::MtRewardsMaterializer,
&crate::MtRoutingMaterializer,
&crate::MtTokenMetadataRiskMaterializer,
&crate::MtTradesMaterializer,
&crate::MtVaultMaterializer,
];
for materializer in materializers {
assert!(materializer.accepted_families().is_empty());
}
}
}