use massa_channel::sender::MassaSender;
use massa_execution_exports::ExecutionController;
use massa_models::block::{FilledBlock, SecureShareBlock};
use massa_models::block_header::BlockHeader;
use massa_models::block_id::BlockId;
use massa_models::secure_share::SecureShare;
use massa_pool_exports::PoolController;
use massa_pos_exports::SelectorController;
use massa_protocol_exports::ProtocolController;
use crate::events::ConsensusEvent;
#[derive(Clone)]
pub struct ConsensusChannels {
pub execution_controller: Box<dyn ExecutionController>,
pub selector_controller: Box<dyn SelectorController>,
pub pool_controller: Box<dyn PoolController>,
pub protocol_controller: Box<dyn ProtocolController>,
pub controller_event_tx: MassaSender<ConsensusEvent>,
pub broadcasts: ConsensusBroadcasts,
}
#[derive(Clone)]
pub struct ConsensusBroadcasts {
pub block_sender: tokio::sync::broadcast::Sender<SecureShareBlock>,
pub block_header_sender: tokio::sync::broadcast::Sender<SecureShare<BlockHeader, BlockId>>,
pub filled_block_sender: tokio::sync::broadcast::Sender<FilledBlock>,
}