use std::sync::Arc;
use crate::module::ModuleManager;
use crate::node::event_publisher::EventPublisher;
#[derive(Default)]
pub struct ModuleSubsystem {
pub module_registry: Option<Arc<crate::module::registry::client::ModuleRegistry>>,
pub module_manager: Option<Arc<tokio::sync::Mutex<ModuleManager>>>,
pub event_publisher: Option<Arc<EventPublisher>>,
}
#[derive(Default)]
pub struct PaymentSubsystem {
pub payment_processor: Option<Arc<crate::payment::processor::PaymentProcessor>>,
pub payment_state_machine: Option<Arc<crate::payment::state_machine::PaymentStateMachine>>,
#[cfg(feature = "ctv")]
pub payment_reorg_handler: Option<crate::payment::PaymentReorgHandler>,
}