1use crate::{execute::ExecutableTxFor, ConfigureEvm, EvmEnvFor, ExecutionCtxFor};
2
3pub trait ConfigureEngineEvm<ExecutionData>: ConfigureEvm {
5 fn evm_env_for_payload(&self, payload: &ExecutionData) -> EvmEnvFor<Self>;
7
8 fn context_for_payload<'a>(&self, payload: &'a ExecutionData) -> ExecutionCtxFor<'a, Self>;
10
11 fn tx_iterator_for_payload(&self, payload: &ExecutionData) -> impl ExecutableTxIterator<Self>;
13}
14
15pub trait ExecutableTxIterator<Evm: ConfigureEvm>:
17 Iterator<Item = Result<Self::Tx, Self::Error>> + Send + 'static
18{
19 type Tx: ExecutableTxFor<Evm> + Clone + Send + 'static;
21 type Error: core::error::Error + Send + Sync + 'static;
23}
24
25impl<Evm: ConfigureEvm, Tx, Err, T> ExecutableTxIterator<Evm> for T
26where
27 Tx: ExecutableTxFor<Evm> + Clone + Send + 'static,
28 Err: core::error::Error + Send + Sync + 'static,
29 T: Iterator<Item = Result<Tx, Err>> + Send + 'static,
30{
31 type Tx = Tx;
32 type Error = Err;
33}