Files
khadhroony-bot3/kb-lib/tests/external_materializer_api.rs
2026-08-05 20:30:16 +02:00

95 lines
4.9 KiB
Rust

// file: kb-lib/tests/external_materializer_api.rs
// version: 6
//! Downstream-style compilation contract for externally implemented materializers.
const ACCEPTED_FAMILIES: &[kb_lib::MdEventFamily] = &[kb_lib::MdEventFamily::Audit];
struct ExternalAuditMaterializer;
fn assert_event_materializer<Materializer: kb_lib::MtApiEventMaterializer>() {}
fn assert_legacy_materializer<Materializer: kb_lib::MtMaterializer>() {}
impl kb_lib::MtApiEventMaterializer for ExternalAuditMaterializer {
fn identity(&self) -> kb_lib::MtApiMaterializerIdentity {
return kb_lib::MtApiMaterializerIdentity {
name: "external_audit_materializer".to_string(),
version: "1".to_string(),
};
}
fn accepted_families(&self) -> &'static [kb_lib::MdEventFamily] {
return ACCEPTED_FAMILIES;
}
fn transaction_policy(
&self,
_family: kb_lib::MdEventFamily,
) -> kb_lib::MtApiMaterializationTransactionPolicy {
return kb_lib::MtApiMaterializationTransactionPolicy::SuccessfulOrFailedAudit;
}
fn materialize(
&self,
_observation: &kb_lib::DcApiDecodedObservation,
) -> kb_lib::MtApiMaterializerExecutionResult {
return kb_lib::MtApiMaterializerExecutionResult::ignored();
}
}
#[test]
fn external_materializer_uses_only_the_public_kb_lib_contract() {
let materializer: &dyn kb_lib::MtApiEventMaterializer = &ExternalAuditMaterializer;
assert_eq!(materializer.identity().name, "external_audit_materializer");
assert_eq!(materializer.accepted_families(), ACCEPTED_FAMILIES);
assert_event_materializer::<kb_lib::MtAdminMaterializer>();
assert_event_materializer::<kb_lib::MtBridgeMaterializer>();
assert_event_materializer::<kb_lib::MtComplianceAuditMaterializer>();
assert_event_materializer::<kb_lib::MtFeesMaterializer>();
assert_event_materializer::<kb_lib::MtGovernanceMaterializer>();
assert_event_materializer::<kb_lib::MtLendingMaterializer>();
assert_event_materializer::<kb_lib::MtLifecycleMaterializer>();
assert_event_materializer::<kb_lib::MtMetadataMaterializer>();
assert_event_materializer::<kb_lib::MtLiquidityMaterializer>();
assert_event_materializer::<kb_lib::MtNftMaterializer>();
assert_event_materializer::<kb_lib::MtOracleMaterializer>();
assert_event_materializer::<kb_lib::MtOrderbookMaterializer>();
assert_event_materializer::<kb_lib::MtPerpetualsMaterializer>();
assert_event_materializer::<kb_lib::MtPoolStateMaterializer>();
assert_event_materializer::<kb_lib::MtRewardsMaterializer>();
assert_event_materializer::<kb_lib::MtRiskMaterializer>();
assert_event_materializer::<kb_lib::MtRoutingMaterializer>();
assert_event_materializer::<kb_lib::MtStakingMaterializer>();
assert_event_materializer::<kb_lib::MtTokenAccountsMaterializer>();
assert_event_materializer::<kb_lib::MtTokenMetadataRiskMaterializer>();
assert_event_materializer::<kb_lib::MtTradesMaterializer>();
assert_event_materializer::<kb_lib::MtTransactionAnnotationMaterializer>();
assert_event_materializer::<kb_lib::MtVaultMaterializer>();
assert_legacy_materializer::<kb_lib::MtBridgeMaterializer>();
assert_legacy_materializer::<kb_lib::MtGovernanceMaterializer>();
assert_legacy_materializer::<kb_lib::MtLendingMaterializer>();
assert_legacy_materializer::<kb_lib::MtLiquidityMaterializer>();
assert_legacy_materializer::<kb_lib::MtMetadataMaterializer>();
assert_legacy_materializer::<kb_lib::MtNftMaterializer>();
assert_legacy_materializer::<kb_lib::MtOracleMaterializer>();
assert_legacy_materializer::<kb_lib::MtOrderbookMaterializer>();
assert_legacy_materializer::<kb_lib::MtPerpetualsMaterializer>();
assert_legacy_materializer::<kb_lib::MtPoolStateMaterializer>();
assert_legacy_materializer::<kb_lib::MtRewardsMaterializer>();
assert_legacy_materializer::<kb_lib::MtRoutingMaterializer>();
assert_legacy_materializer::<kb_lib::MtTokenMetadataRiskMaterializer>();
assert_legacy_materializer::<kb_lib::MtTradesMaterializer>();
assert_legacy_materializer::<kb_lib::MtVaultMaterializer>();
let _ = kb_lib::materializer_admin_materialize_elgamal_registry_state_snapshot;
let _ = kb_lib::materializer_metadata_materialize_metaplex_account_snapshot;
let _ = kb_lib::materializer_metadata_materialize_metaplex_metadata_snapshot;
let _ = kb_lib::materializer_metadata_materialize_solana_program_metadata_account_snapshot;
let _ = kb_lib::materializer_metadata_materialize_solana_program_metadata_buffer_snapshot;
let _ = kb_lib::materializer_metadata_materialize_solana_program_metadata_metadata_snapshot;
let _ = kb_lib::materializer_admin_materialize_token_2022_state_snapshots;
let _ = kb_lib::materializer_fees_materialize_token_2022_state_snapshots;
let _ = kb_lib::materializer_metadata_materialize_token_2022_snapshot;
let _ = kb_lib::materializer_token_materialize_token_2022_state_snapshot;
}