hopr_chain_types/
chain_events.rs1use std::fmt::{Display, Formatter};
7
8use hopr_crypto_types::types::Hash;
9use hopr_internal_types::prelude::*;
10use hopr_primitive_types::prelude::*;
11use libp2p_identity::PeerId;
12use multiaddr::Multiaddr;
13
14#[derive(Debug, Clone, PartialEq)]
18pub struct SignificantChainEvent {
19 pub tx_hash: Hash,
21 pub event_type: ChainEventType,
23}
24
25impl Display for SignificantChainEvent {
26 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
27 write!(f, "{} @ tx {}", self.event_type, self.tx_hash)
28 }
29}
30
31#[derive(Debug, Clone, PartialEq, Eq)]
33pub enum NetworkRegistryStatus {
34 Allowed,
36 Denied,
38}
39
40#[allow(clippy::large_enum_variant)] #[derive(Debug, Clone, PartialEq)]
43pub enum ChainEventType {
44 Announcement {
46 peer: PeerId,
48 address: Address,
50 multiaddresses: Vec<Multiaddr>,
52 },
53 ChannelOpened(ChannelEntry),
55 ChannelClosureInitiated(ChannelEntry),
57 ChannelClosed(ChannelEntry),
59 ChannelBalanceIncreased(ChannelEntry, HoprBalance),
61 ChannelBalanceDecreased(ChannelEntry, HoprBalance),
63 TicketRedeemed(ChannelEntry, Option<AcknowledgedTicket>),
66 NodeSafeRegistered(Address),
68 NetworkRegistryUpdate(Address, NetworkRegistryStatus),
70}
71
72impl Display for ChainEventType {
73 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
74 match self {
75 ChainEventType::Announcement {
76 peer,
77 address,
78 multiaddresses,
79 } => write!(f, "announcement event of {peer} ({address}): {:?}", multiaddresses),
80 ChainEventType::ChannelOpened(c) => write!(f, "open channel event {}", c.get_id()),
81 ChainEventType::ChannelClosureInitiated(c) => write!(f, "close channel initiation event {}", c.get_id()),
82 ChainEventType::ChannelClosed(c) => write!(f, "close channel event {}", c.get_id()),
83 ChainEventType::ChannelBalanceIncreased(c, _) => write!(f, "channel increase balance event {}", c.get_id()),
84 ChainEventType::ChannelBalanceDecreased(c, _) => write!(f, "channel decrease balance event {}", c.get_id()),
85 ChainEventType::TicketRedeemed(c, _) => write!(f, "ticket redeem event in channel {}", c.get_id()),
86 ChainEventType::NodeSafeRegistered(s) => write!(f, "safe registered event {s}"),
87 ChainEventType::NetworkRegistryUpdate(a, s) => write!(f, "network registry update event {a}: {:?}", s),
88 }
89 }
90}