rustkernel_clearing/
lib.rs1#![warn(missing_docs)]
20
21pub mod dvp;
22pub mod efficiency;
23pub mod netting;
24pub mod settlement;
25pub mod types;
26pub mod validation;
27
28pub mod prelude {
30 pub use crate::dvp::*;
31 pub use crate::efficiency::*;
32 pub use crate::netting::*;
33 pub use crate::settlement::*;
34 pub use crate::types::*;
35 pub use crate::validation::*;
36}
37
38pub use dvp::DVPMatching;
40pub use efficiency::ZeroBalanceFrequency;
41pub use netting::NettingCalculation;
42pub use settlement::SettlementExecution;
43pub use validation::ClearingValidation;
44
45pub use types::{
47 DVPInstruction, DVPMatchResult, DVPStatus, ErrorSeverity, InstructionType, NetPosition,
48 NettingConfig, NettingResult, SettlementEfficiency, SettlementExecutionResult,
49 SettlementInstruction, SettlementStatus, Trade, TradeStatus, TradeType, ValidationConfig,
50 ValidationError, ValidationResult, ZeroBalanceMetrics,
51};
52
53pub fn register_all(
55 registry: &rustkernel_core::registry::KernelRegistry,
56) -> rustkernel_core::error::Result<()> {
57 use rustkernel_core::traits::GpuKernel;
58
59 tracing::info!("Registering clearing kernels");
60
61 registry.register_metadata(validation::ClearingValidation::new().metadata().clone())?;
63
64 registry.register_metadata(dvp::DVPMatching::new().metadata().clone())?;
66
67 registry.register_metadata(netting::NettingCalculation::new().metadata().clone())?;
69
70 registry.register_metadata(settlement::SettlementExecution::new().metadata().clone())?;
72
73 registry.register_metadata(efficiency::ZeroBalanceFrequency::new().metadata().clone())?;
75
76 tracing::info!("Registered 5 clearing kernels");
77 Ok(())
78}
79
80#[cfg(test)]
81mod tests {
82 use super::*;
83 use rustkernel_core::registry::KernelRegistry;
84
85 #[test]
86 fn test_register_all() {
87 let registry = KernelRegistry::new();
88 register_all(®istry).expect("Failed to register clearing kernels");
89 assert_eq!(registry.total_count(), 5);
90 }
91}