Skip to main content

rustkernel_payments/
lib.rs

1//! # RustKernel Payment Processing
2//!
3//! GPU-accelerated payment processing kernels.
4//!
5//! ## Kernels
6//! - `PaymentProcessing` - Real-time transaction execution
7//! - `FlowAnalysis` - Payment flow network analysis and metrics
8
9#![warn(missing_docs)]
10
11pub mod flow;
12pub mod processing;
13pub mod types;
14
15pub use flow::{AccountFlowAnalysis, FlowAnalysis, FlowAnalysisConfig};
16pub use processing::{PaymentProcessing, PaymentRouting, ProcessingConfig};
17pub use types::*;
18
19/// Register all payment kernels.
20pub fn register_all(
21    registry: &rustkernel_core::registry::KernelRegistry,
22) -> rustkernel_core::error::Result<()> {
23    tracing::info!("Registering payment processing kernels");
24
25    // Processing kernel (1) - Ring
26    registry.register_ring_metadata_from(processing::PaymentProcessing::new)?;
27
28    // Flow analysis kernel (1) - Batch
29    registry.register_batch_metadata_from(flow::FlowAnalysis::new)?;
30
31    tracing::info!("Registered 2 payment processing kernels");
32    Ok(())
33}
34
35#[cfg(test)]
36mod tests {
37    use super::*;
38    use rustkernel_core::{domain::Domain, registry::KernelRegistry, traits::GpuKernel};
39
40    #[test]
41    fn test_register_all() {
42        let registry = KernelRegistry::new();
43        register_all(&registry).expect("Failed to register payments kernels");
44        assert_eq!(registry.total_count(), 2);
45    }
46
47    #[test]
48    fn test_payment_processing_metadata() {
49        let kernel = PaymentProcessing::new();
50        let metadata = kernel.metadata();
51        assert!(metadata.id.contains("processing"));
52        assert_eq!(metadata.domain, Domain::PaymentProcessing);
53    }
54
55    #[test]
56    fn test_flow_analysis_metadata() {
57        let kernel = FlowAnalysis::new();
58        let metadata = kernel.metadata();
59        assert!(metadata.id.contains("flow"));
60        assert_eq!(metadata.domain, Domain::PaymentProcessing);
61    }
62}