openzeppelin_monitor/models/blockchain/
mod.rs1use serde::{Deserialize, Serialize};
8
9pub mod evm;
10pub mod midnight;
11pub mod stellar;
12
13#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
15#[serde(deny_unknown_fields)]
16pub enum BlockChainType {
17 EVM,
19 Stellar,
21 Midnight,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
27pub enum BlockType {
28 EVM(Box<evm::EVMBlock>),
33 Stellar(Box<stellar::StellarBlock>),
38 Midnight(Box<midnight::MidnightBlock>),
43}
44
45impl BlockType {
46 pub fn number(&self) -> Option<u64> {
47 match self {
48 BlockType::EVM(b) => b.number(),
49 BlockType::Stellar(b) => b.number(),
50 BlockType::Midnight(b) => b.number(),
51 }
52 }
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57#[allow(clippy::large_enum_variant)]
58pub enum TransactionType {
59 EVM(evm::EVMTransaction),
61 Stellar(Box<stellar::StellarTransaction>),
63 Midnight(midnight::MidnightTransaction),
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
69#[serde(untagged)]
70pub enum ContractSpec {
71 EVM(evm::EVMContractSpec),
73 Stellar(stellar::StellarContractSpec),
75 Midnight,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
81pub enum MonitorMatch {
82 EVM(Box<evm::EVMMonitorMatch>),
87 Stellar(Box<stellar::StellarMonitorMatch>),
92 Midnight(Box<midnight::MidnightMonitorMatch>),
97}
98
99#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Default)]
101pub struct ChainConfiguration {
102 #[serde(skip_serializing_if = "Option::is_none")]
104 pub midnight: Option<midnight::MidnightMonitorConfig>,
105
106 #[serde(skip_serializing_if = "Option::is_none")]
108 pub evm: Option<evm::EVMMonitorConfig>,
109
110 #[serde(skip_serializing_if = "Option::is_none")]
112 pub stellar: Option<stellar::StellarMonitorConfig>,
113}
114
115#[derive(Debug, Clone, Serialize, Deserialize)]
119pub struct ProcessedBlock {
120 pub block_number: u64,
121 pub network_slug: String,
122 pub processing_results: Vec<MonitorMatch>,
123}