// file: kb-lib/tests/external_materializer_api.rs // version: 8 //! Downstream-style compilation contract for externally implemented materializers. const ACCEPTED_FAMILIES: &[kb_lib::MdEventFamily] = &[kb_lib::MdEventFamily::Audit]; struct ExternalAuditMaterializer; fn assert_event_materializer() {} fn assert_legacy_materializer() {} impl kb_lib::MtApiEventMaterializer for ExternalAuditMaterializer { fn identity(&self) -> kb_lib::MtApiMaterializerIdentity { return kb_lib::MtApiMaterializerIdentity { name: "materializer.external.audit".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, "materializer.external.audit"); assert_eq!(materializer.accepted_families(), ACCEPTED_FAMILIES); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_event_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); assert_legacy_materializer::(); 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; }