|
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 | }; |
@@ -52,6 +53,7 @@ impl<'a> Collector<'a> { |
52 | 53 | call_type: components.call_type(entry_point.call_type), |
53 | 54 | nested_calls, |
54 | 55 | call_result: components.call_result_lazy(|| self.collect_transformed_call_result(abi)), |
| 56 | + events: components.events_lazy(|| self.collect_events()), |
55 | 57 | gas: components.gas_lazy(|| self.collect_gas()), |
56 | 58 | }; |
57 | 59 |
|
@@ -143,6 +145,23 @@ impl<'a> Collector<'a> { |
143 | 145 | .l2_gas) |
144 | 146 | } |
145 | 147 |
|
| 148 | + fn collect_events(&self) -> Events { |
| 149 | + Events( |
| 150 | + self.call_trace |
| 151 | + .events |
| 152 | + .iter() |
| 153 | + .map(Self::collect_event) |
| 154 | + .collect(), |
| 155 | + ) |
| 156 | + } |
| 157 | + |
| 158 | + fn collect_event(event: &OrderedEvent) -> Event { |
| 159 | + Event { |
| 160 | + keys: event.event.keys.iter().map(|key| key.0).collect(), |
| 161 | + data: event.event.data.0.clone(), |
| 162 | + } |
| 163 | + } |
| 164 | + |
146 | 165 | fn class_hash(&self) -> &ClassHash { |
147 | 166 | self.call_trace |
148 | 167 | .entry_point |
|
0 commit comments