Skip to main content

pathfinder_common/
event.rs

1use fake::Dummy;
2use pathfinder_crypto::Felt;
3use pathfinder_tagged::Tagged;
4use pathfinder_tagged_debug_derive::TaggedDebug;
5use serde_with::serde_conv;
6
7use crate::{ContractAddress, EventData, EventKey};
8
9#[serde_with::serde_as]
10#[derive(Clone, serde::Deserialize, serde::Serialize, PartialEq, Eq, Dummy, TaggedDebug)]
11#[serde(deny_unknown_fields)]
12pub struct Event {
13    #[serde_as(as = "Vec<EventDataAsDecimalStr>")]
14    pub data: Vec<EventData>,
15    pub from_address: ContractAddress,
16    #[serde_as(as = "Vec<EventKeyAsDecimalStr>")]
17    pub keys: Vec<EventKey>,
18}
19
20#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
21pub struct EventIndex(pub u64);
22
23serde_conv!(
24    EventDataAsDecimalStr,
25    EventData,
26    |serialize_me: &EventData| serialize_me.0.to_dec_str(),
27    |s: &str| Felt::from_dec_str(s).map(EventData)
28);
29
30serde_conv!(
31    EventKeyAsDecimalStr,
32    EventKey,
33    |serialize_me: &EventKey| serialize_me.0.to_dec_str(),
34    |s: &str| Felt::from_dec_str(s).map(EventKey)
35);