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
16pub trait SignetInspector<Ctx, Int = EthInterpreter>: Inspector<Ctx, Int>
18where
19 Int: InterpreterTypes,
20{
21 fn as_detector(&self) -> &OrderDetector;
23
24 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}