v0.1.0-pre.013
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer.rs
|
||||
// version: 4
|
||||
// version: 5
|
||||
|
||||
//! Consolidated materializer modules.
|
||||
|
||||
@@ -27,6 +27,91 @@ 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_token2022_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_token2022_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;
|
||||
/// Token-2022 and Metaplex metadata snapshot materializer.
|
||||
pub use self::metadata::MtMetadataMaterializer;
|
||||
/// 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 Token-2022 embedded metadata and group snapshots.
|
||||
pub use self::metadata::materializer_metadata_materialize_token2022_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_token2022_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;
|
||||
|
||||
/// Canonical processor name for the native and SPL administration materializer.
|
||||
pub(crate) use self::admin::MT_ADMIN_PROCESSOR_NAME;
|
||||
/// Canonical tracing target for the native and SPL administration materializer.
|
||||
@@ -58,59 +143,55 @@ pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_PROJECTION_VERSION;
|
||||
/// Canonical tracing target for transaction annotations.
|
||||
pub(crate) use self::transaction::MT_TRANSACTION_ANNOTATIONS_TRACING_TARGET;
|
||||
|
||||
/// 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_token2022_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;
|
||||
/// 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_token2022_state_snapshots;
|
||||
/// Stable native lifecycle materializer.
|
||||
pub use self::lifecycle::MtLifecycleMaterializer;
|
||||
/// Token-2022 and Metaplex metadata snapshot materializer.
|
||||
pub use self::metadata::MtMetadataMaterializer;
|
||||
/// 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 Token-2022 embedded metadata and group snapshots.
|
||||
pub use self::metadata::materializer_metadata_materialize_token2022_snapshot;
|
||||
/// Stable SPL Token and ATA risk materializer.
|
||||
pub use self::risk::MtRiskMaterializer;
|
||||
/// Stable native stake and vote materializer.
|
||||
pub use self::staking::MtStakingMaterializer;
|
||||
/// Stable Token, ATA and Token-2022 account materializer.
|
||||
pub use self::token::MtTokenAccountsMaterializer;
|
||||
/// Materializes one bounded Token-2022 account state snapshot.
|
||||
pub use self::token::materializer_token_materialize_token2022_state_snapshot;
|
||||
/// Stable committed Memo transaction annotation materializer.
|
||||
pub use self::transaction::MtTransactionAnnotationMaterializer;
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
#[test]
|
||||
fn reserved_materializers_expose_inactive_public_contracts() {
|
||||
let materializers: &[(&dyn crate::MtApiEventMaterializer, &str)] = &[
|
||||
(&crate::MtBridgeMaterializer, "kb_materializer_bridge"),
|
||||
(&crate::MtGovernanceMaterializer, "kb_materializer_governance"),
|
||||
(&crate::MtLendingMaterializer, "kb_materializer_lending"),
|
||||
(&crate::MtLiquidityMaterializer, "kb_materializer_liquidity"),
|
||||
(&crate::MtNftMaterializer, "kb_materializer_nft"),
|
||||
(&crate::MtOracleMaterializer, "kb_materializer_oracle"),
|
||||
(&crate::MtOrderbookMaterializer, "kb_materializer_orderbook"),
|
||||
(&crate::MtPerpetualsMaterializer, "kb_materializer_perpetuals"),
|
||||
(&crate::MtPoolStateMaterializer, "kb_materializer_pool_state"),
|
||||
(&crate::MtRewardsMaterializer, "kb_materializer_rewards"),
|
||||
(&crate::MtRoutingMaterializer, "kb_materializer_routing"),
|
||||
(&crate::MtTokenMetadataRiskMaterializer, "kb_materializer_token_metadata_risk"),
|
||||
(&crate::MtTradesMaterializer, "kb_materializer_trades"),
|
||||
(&crate::MtVaultMaterializer, "kb_materializer_vault"),
|
||||
];
|
||||
for (materializer, expected_name) in materializers {
|
||||
let identity = materializer.identity();
|
||||
assert_eq!(identity.name, *expected_name);
|
||||
assert!(!identity.version.is_empty());
|
||||
assert!(materializer.accepted_families().is_empty());
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reserved_materializers_preserve_legacy_trait_contracts() {
|
||||
let materializers: &[(&dyn crate::MtMaterializer, &str)] = &[
|
||||
(&crate::MtBridgeMaterializer, "kb_materializer_bridge"),
|
||||
(&crate::MtGovernanceMaterializer, "kb_materializer_governance"),
|
||||
(&crate::MtLendingMaterializer, "kb_materializer_lending"),
|
||||
(&crate::MtLiquidityMaterializer, "kb_materializer_liquidity"),
|
||||
(&crate::MtNftMaterializer, "kb_materializer_nft"),
|
||||
(&crate::MtOracleMaterializer, "kb_materializer_oracle"),
|
||||
(&crate::MtOrderbookMaterializer, "kb_materializer_orderbook"),
|
||||
(&crate::MtPerpetualsMaterializer, "kb_materializer_perpetuals"),
|
||||
(&crate::MtPoolStateMaterializer, "kb_materializer_pool_state"),
|
||||
(&crate::MtRewardsMaterializer, "kb_materializer_rewards"),
|
||||
(&crate::MtRoutingMaterializer, "kb_materializer_routing"),
|
||||
(&crate::MtTokenMetadataRiskMaterializer, "kb_materializer_token_metadata_risk"),
|
||||
(&crate::MtTradesMaterializer, "kb_materializer_trades"),
|
||||
(&crate::MtVaultMaterializer, "kb_materializer_vault"),
|
||||
];
|
||||
for (materializer, expected_name) in materializers {
|
||||
assert_eq!(materializer.materializer_name(), *expected_name);
|
||||
assert!(!materializer.materializer_version().is_empty());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user