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}