kabu_core_components/
lib.rs

1mod builder;
2mod kabu_builder;
3mod kabu_node;
4mod node;
5mod traits;
6
7pub use builder::{BuilderContext, Components, ComponentsBuilder, MevComponentChannels, MevComponents, MevComponentsBuilder};
8pub use kabu_builder::{KabuBuilder, KabuBuiltNode, KabuHandle};
9pub use kabu_node::PlaceholderComponent;
10pub use node::{DefaultKabuNodeComponentsBuilder, KabuComponentsSet, KabuNode, KabuNodeComponentsBuilder, KabuNodeTypes, WithKabuNode};
11pub use traits::{
12    BroadcasterBuilder, ConsensusBuilder, EstimatorBuilder, ExecutorBuilder, HealthMonitorBuilder as HealthMonitorBuilderTrait,
13    InitializerBuilder, MarketBuilder, MergerBuilder, MevNodeComponentsBuilder, MonitoringBuilder, NetworkBuilder, NodeComponentsBuilder,
14    PayloadBuilder, PoolBuilder, SignerBuilder as SignerBuilderTrait, StrategyBuilder, WebServerBuilder,
15};
16
17use eyre::Result;
18use reth_tasks::TaskExecutor;
19
20/// A component is a long-running task that processes data
21pub trait Component: Send + 'static {
22    /// Spawn the component's tasks using the provided executor
23    fn spawn(self, executor: TaskExecutor) -> Result<()>
24    where
25        Self: Sized;
26
27    /// Name of the component for logging
28    fn name(&self) -> &'static str;
29
30    /// Check if component is ready to start (optional validation)
31    fn check_readiness(&self) -> Result<()> {
32        Ok(())
33    }
34}