rustkernel_compliance/
lib.rs

1//! # RustKernel Compliance
2//!
3//! GPU-accelerated compliance kernels for AML, KYC, sanctions screening, and transaction monitoring.
4//!
5//! ## Kernels
6//!
7//! ### AML (6 kernels)
8//! - `CircularFlowRatio` - SCC detection for circular transactions
9//! - `ReciprocityFlowRatio` - Mutual transaction detection
10//! - `RapidMovement` - Velocity analysis for structuring
11//! - `AMLPatternDetection` - Multi-pattern FSM detection
12//! - `FlowReversalPattern` - Transaction reversal detection (wash trading, round-tripping)
13//! - `FlowSplitRatio` - Transaction splitting/structuring detection
14//!
15//! ### KYC (2 kernels)
16//! - `KYCScoring` - Risk factor aggregation
17//! - `EntityResolution` - Fuzzy entity matching
18//!
19//! ### Sanctions (2 kernels)
20//! - `SanctionsScreening` - OFAC/UN/EU list matching
21//! - `PEPScreening` - Politically exposed persons
22//!
23//! ### Monitoring (1 kernel)
24//! - `TransactionMonitoring` - Real-time threshold alerts
25
26#![warn(missing_docs)]
27
28pub mod aml;
29pub mod kyc;
30pub mod messages;
31pub mod monitoring;
32pub mod ring_messages;
33pub mod sanctions;
34pub mod types;
35
36/// Prelude for convenient imports.
37pub mod prelude {
38    pub use crate::aml::*;
39    pub use crate::kyc::*;
40    pub use crate::messages::*;
41    pub use crate::monitoring::*;
42    pub use crate::ring_messages::*;
43    pub use crate::sanctions::*;
44    pub use crate::types::*;
45}
46
47// Re-export main types for convenience
48pub use aml::{
49    AMLPatternDetection, CircularFlowRatio, FlowReversalConfig, FlowReversalPattern,
50    FlowSplitConfig, FlowSplitRatio, RapidMovement, ReciprocityFlowRatio,
51};
52pub use kyc::{EntityResolution, KYCScoring};
53pub use monitoring::TransactionMonitoring;
54pub use sanctions::{PEPScreening, SanctionsScreening};
55
56/// Register all compliance kernels with a registry.
57pub fn register_all(
58    registry: &rustkernel_core::registry::KernelRegistry,
59) -> rustkernel_core::error::Result<()> {
60    use rustkernel_core::traits::GpuKernel;
61
62    tracing::info!("Registering compliance kernels");
63
64    // AML kernels (6)
65    registry.register_metadata(aml::CircularFlowRatio::new().metadata().clone())?;
66    registry.register_metadata(aml::ReciprocityFlowRatio::new().metadata().clone())?;
67    registry.register_metadata(aml::RapidMovement::new().metadata().clone())?;
68    registry.register_metadata(aml::AMLPatternDetection::new().metadata().clone())?;
69    registry.register_metadata(aml::FlowReversalPattern::new().metadata().clone())?;
70    registry.register_metadata(aml::FlowSplitRatio::new().metadata().clone())?;
71
72    // KYC kernels (2)
73    registry.register_metadata(kyc::KYCScoring::new().metadata().clone())?;
74    registry.register_metadata(kyc::EntityResolution::new().metadata().clone())?;
75
76    // Sanctions kernels (2)
77    registry.register_metadata(sanctions::SanctionsScreening::new().metadata().clone())?;
78    registry.register_metadata(sanctions::PEPScreening::new().metadata().clone())?;
79
80    // Monitoring kernel (1)
81    registry.register_metadata(monitoring::TransactionMonitoring::new().metadata().clone())?;
82
83    tracing::info!("Registered 11 compliance kernels");
84    Ok(())
85}
86
87#[cfg(test)]
88mod tests {
89    use super::*;
90    use rustkernel_core::registry::KernelRegistry;
91
92    #[test]
93    fn test_register_all() {
94        let registry = KernelRegistry::new();
95        register_all(&registry).expect("Failed to register compliance kernels");
96        assert_eq!(registry.total_count(), 11);
97    }
98}