reth_optimism_txpool/
conditional.rs

1//! Additional support for pooled transactions with [`TransactionConditional`]
2
3use alloy_consensus::conditional::BlockConditionalAttributes;
4use alloy_rpc_types_eth::erc4337::TransactionConditional;
5
6/// Helper trait that allows attaching a [`TransactionConditional`].
7pub trait MaybeConditionalTransaction {
8    /// Attach a [`TransactionConditional`].
9    fn set_conditional(&mut self, conditional: TransactionConditional);
10
11    /// Get attached [`TransactionConditional`] if any.
12    fn conditional(&self) -> Option<&TransactionConditional>;
13
14    /// Check if the conditional has exceeded the block attributes.
15    fn has_exceeded_block_attributes(&self, block_attr: &BlockConditionalAttributes) -> bool {
16        self.conditional().map(|tc| tc.has_exceeded_block_attributes(block_attr)).unwrap_or(false)
17    }
18
19    /// Helper that sets the conditional and returns the instance again
20    fn with_conditional(mut self, conditional: TransactionConditional) -> Self
21    where
22        Self: Sized,
23    {
24        self.set_conditional(conditional);
25        self
26    }
27}