signet_evm/orders/
mod.rs

1mod framed;
2pub use framed::{Framed, FramedFilleds, FramedOrders};
3
4mod inspector;
5pub use inspector::OrderDetector;
6
7use trevm::{
8    helpers::Ctx,
9    inspectors::Layered,
10    revm::{
11        interpreter::{interpreter::EthInterpreter, InterpreterTypes},
12        Database, Inspector,
13    },
14};
15
16/// Inspector containing an accessible [`OrderDetector`].
17pub trait SignetInspector<Ctx, Int = EthInterpreter>: Inspector<Ctx, Int>
18where
19    Int: InterpreterTypes,
20{
21    /// Get a reference to the inner [`OrderDetector`].
22    fn as_detector(&self) -> &OrderDetector;
23
24    /// Get a mutable reference to the inner [`OrderDetector`].
25    fn as_mut_detector(&mut self) -> &mut OrderDetector;
26}
27
28impl<Db, T, I, Int> SignetInspector<Ctx<Db>, Int> for Layered<T, I>
29where
30    Db: Database,
31    T: Inspector<Ctx<Db>, Int>,
32    I: SignetInspector<Ctx<Db>, Int>,
33    Int: InterpreterTypes,
34{
35    fn as_detector(&self) -> &OrderDetector {
36        self.inner().as_detector()
37    }
38
39    fn as_mut_detector(&mut self) -> &mut OrderDetector {
40        self.inner_mut().as_mut_detector()
41    }
42}
43
44impl<Db, Int> SignetInspector<Ctx<Db>, Int> for OrderDetector
45where
46    Int: InterpreterTypes,
47    Db: Database,
48{
49    fn as_detector(&self) -> &OrderDetector {
50        self
51    }
52
53    fn as_mut_detector(&mut self) -> &mut OrderDetector {
54        self
55    }
56}