use crate::types::PipelineResult;
use alloc::boxed::Box;
use async_trait::async_trait;
use kona_protocol::Frame;
pub(crate) mod channel_provider;
pub use channel_provider::ChannelProvider;
pub(crate) mod channel_bank;
pub use channel_bank::ChannelBank;
pub(crate) mod channel_assembler;
pub use channel_assembler::ChannelAssembler;
pub(crate) mod channel_reader;
pub use channel_reader::{ChannelReader, ChannelReaderProvider};
#[async_trait]
pub trait NextFrameProvider {
async fn next_frame(&mut self) -> PipelineResult<Frame>;
}