|
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::outer_call_runtime_extension::rpc::{CallFailure, CallSuccess}; |
8 | 9 | use cheatnet::trace_data::{CallTrace, CallTraceNode}; |
9 | 10 | use data_transformer::{ReverseTransformError, reverse_transform_input, reverse_transform_output}; |
@@ -51,6 +52,7 @@ impl<'a> Collector<'a> { |
51 | 52 | call_type: components.call_type(entry_point.call_type), |
52 | 53 | nested_calls, |
53 | 54 | call_result: components.call_result_lazy(|| self.collect_transformed_call_result(abi)), |
| 55 | + events: components.events_lazy(|| self.collect_events()), |
54 | 56 | gas: components.gas_lazy(|| self.collect_gas()), |
55 | 57 | }; |
56 | 58 |
|
@@ -148,6 +150,23 @@ impl<'a> Collector<'a> { |
148 | 150 | .l2_gas) |
149 | 151 | } |
150 | 152 |
|
| 153 | + fn collect_events(&self) -> Events { |
| 154 | + Events( |
| 155 | + self.call_trace |
| 156 | + .events |
| 157 | + .iter() |
| 158 | + .map(Self::collect_event) |
| 159 | + .collect(), |
| 160 | + ) |
| 161 | + } |
| 162 | + |
| 163 | + fn collect_event(event: &OrderedEvent) -> Event { |
| 164 | + Event { |
| 165 | + keys: event.event.keys.iter().map(|key| key.0).collect(), |
| 166 | + data: event.event.data.0.clone(), |
| 167 | + } |
| 168 | + } |
| 169 | + |
151 | 170 | fn class_hash(&self) -> &ClassHash { |
152 | 171 | self.call_trace |
153 | 172 | .entry_point |
|
0 commit comments