agglayer_types/
network_info.rs1use agglayer_interop_types::aggchain_proof;
2use agglayer_primitives::Digest;
3use agglayer_tries::roots::LocalExitRoot;
4use serde::{Deserialize, Serialize};
5
6use crate::{CertificateId, CertificateStatus, CertificateStatusError, Height, NetworkId};
7
8#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
12pub enum NetworkStatus {
13 Unknown = 0,
15 Active = 1,
17 Syncing = 2,
19 Error = 3,
21 Disabled = 4,
23}
24
25#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
26pub enum DisabledBy {
27 Unknown = 0,
29 Admin = 1,
31}
32
33#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
35pub enum NetworkType {
36 Unspecified = 0,
37 Ecdsa = 1,
39 Generic = 2,
41 MultisigOnly = 3,
43 MultisigAndAggchainProof = 4,
45}
46
47impl From<&aggchain_proof::AggchainData> for NetworkType {
48 fn from(value: &aggchain_proof::AggchainData) -> Self {
49 match value {
50 aggchain_proof::AggchainData::ECDSA { .. } => NetworkType::Ecdsa,
51 aggchain_proof::AggchainData::Generic { .. } => NetworkType::Generic,
52 aggchain_proof::AggchainData::MultisigOnly { .. } => NetworkType::MultisigOnly,
53 aggchain_proof::AggchainData::MultisigAndAggchainProof { .. } => {
54 NetworkType::MultisigAndAggchainProof
55 }
56 }
57 }
58}
59
60#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
61pub struct SettledClaim {
62 pub global_index: Digest,
64 pub bridge_exit_hash: Digest,
66}
67
68#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
69pub struct NetworkInfo {
70 pub network_status: NetworkStatus,
72 pub network_type: NetworkType,
74 pub network_id: NetworkId,
76 pub settled_height: Option<Height>,
78 pub settled_certificate_id: Option<CertificateId>,
80 pub settled_pp_root: Option<Digest>,
82 pub settled_ler: Option<LocalExitRoot>,
84 pub settled_let_leaf_count: Option<u64>,
86 pub settled_claim: Option<SettledClaim>,
88 pub latest_pending_height: Option<Height>,
90 pub latest_pending_status: Option<CertificateStatus>,
92 pub latest_pending_error: Option<CertificateStatusError>,
94 pub latest_epoch_with_settlement: Option<u64>,
96}
97
98impl NetworkInfo {
99 pub const fn from_network_id(network_id: NetworkId) -> Self {
100 Self {
101 network_status: NetworkStatus::Unknown,
102 network_type: NetworkType::Unspecified,
103 network_id,
104 settled_height: None,
105 settled_certificate_id: None,
106 settled_pp_root: None,
107 settled_ler: None,
108 settled_let_leaf_count: None,
109 settled_claim: None,
110 latest_pending_height: None,
111 latest_pending_status: None,
112 latest_pending_error: None,
113 latest_epoch_with_settlement: None,
114 }
115 }
116}