|
1 | 1 | use crate::contracts_data_store::ContractsDataStore; |
2 | 2 | use crate::trace::types::{ |
3 | | - CallerAddress, ContractAddress, ContractName, ContractTrace, Gas, Selector, TestName, |
4 | | - TraceInfo, TransformedCallResult, TransformedCalldata, |
| 3 | + CallerAddress, ContractAddress, ContractName, ContractTrace, Event, Events, Gas, Selector, |
| 4 | + TestName, TraceInfo, TransformedCallResult, TransformedCalldata, |
5 | 5 | }; |
6 | 6 | use crate::{Context, Trace}; |
| 7 | +use blockifier::execution::call_info::OrderedEvent; |
7 | 8 | use cheatnet::runtime_extensions::call_to_blockifier_runtime_extension::rpc::{ |
8 | 9 | CallFailure, CallSuccess, |
9 | 10 | }; |
@@ -53,6 +54,7 @@ impl<'a> Collector<'a> { |
53 | 54 | call_type: components.call_type(entry_point.call_type), |
54 | 55 | nested_calls, |
55 | 56 | call_result: components.call_result_lazy(|| self.collect_transformed_call_result(abi)), |
| 57 | + events: components.events_lazy(|| self.collect_events()), |
56 | 58 | gas: components.gas_lazy(|| self.collect_gas()), |
57 | 59 | }; |
58 | 60 |
|
@@ -150,6 +152,23 @@ impl<'a> Collector<'a> { |
150 | 152 | .l2_gas) |
151 | 153 | } |
152 | 154 |
|
| 155 | + fn collect_events(&self) -> Events { |
| 156 | + Events( |
| 157 | + self.call_trace |
| 158 | + .events |
| 159 | + .iter() |
| 160 | + .map(Self::collect_event) |
| 161 | + .collect(), |
| 162 | + ) |
| 163 | + } |
| 164 | + |
| 165 | + fn collect_event(event: &OrderedEvent) -> Event { |
| 166 | + Event { |
| 167 | + keys: event.event.keys.iter().map(|key| key.0).collect(), |
| 168 | + data: event.event.data.0.clone(), |
| 169 | + } |
| 170 | + } |
| 171 | + |
153 | 172 | fn class_hash(&self) -> &ClassHash { |
154 | 173 | self.call_trace |
155 | 174 | .entry_point |
|
0 commit comments