1use ethers::types::{Address, U256, H256};
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct SubnetInfo {
9 pub id: u32,
11 pub name: String,
13 pub owner: Address,
15 pub min_stake: U256,
17 pub validator_count: u32,
19 pub miner_count: u32,
21 pub status: SubnetStatus,
23 pub created_at: u64,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
29#[serde(rename_all = "lowercase")]
30pub enum SubnetStatus {
31 Active,
32 Paused,
33 Inactive,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct ValidatorInfo {
39 pub address: Address,
41 pub subnet_id: u32,
43 pub stake: U256,
45 pub status: ValidatorStatus,
47 pub uptime: u8,
49 pub last_active: u64,
51 pub total_rewards: U256,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
57#[serde(rename_all = "lowercase")]
58pub enum ValidatorStatus {
59 Active,
60 Inactive,
61 Slashed,
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize)]
66pub struct MinerInfo {
67 pub address: Address,
69 pub subnet_id: u32,
71 pub stake: U256,
73 pub status: MinerStatus,
75 pub power: U256,
77 pub total_rewards: U256,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
83#[serde(rename_all = "lowercase")]
84pub enum MinerStatus {
85 Active,
86 Inactive,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct BridgeDeposit {
92 pub l1_tx_hash: H256,
94 pub from: Address,
96 pub to: Address,
98 pub amount: U256,
100 pub token: Address,
102 pub status: BridgeStatus,
104 pub timestamp: u64,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
110pub struct BridgeWithdraw {
111 pub l2_tx_hash: H256,
113 pub from: Address,
115 pub to: Address,
117 pub amount: U256,
119 pub token: Address,
121 pub status: BridgeStatus,
123 pub timestamp: u64,
125}
126
127#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
129#[serde(rename_all = "lowercase")]
130pub enum BridgeStatus {
131 Pending,
132 Confirmed,
133 Finalized,
134 Failed,
135}
136
137#[derive(Debug, Clone, Serialize, Deserialize)]
139pub struct NetworkStats {
140 pub block_number: u64,
142 pub total_subnets: u32,
144 pub total_validators: u32,
146 pub total_miners: u32,
148 pub total_staked: U256,
150 pub tx_count_24h: u64,
152}
153
154#[derive(Debug, Clone, Serialize, Deserialize)]
156pub struct PaymasterQuote {
157 pub max_gas_price: U256,
159 pub max_gas: u64,
161 pub expires_at: u64,
163 pub signature: Vec<u8>,
165}
166
167#[derive(Debug, Clone, Serialize, Deserialize)]
169pub struct EpochInfo {
170 pub epoch: u64,
172 pub start_time: u64,
174 pub end_time: u64,
176 pub total_rewards: U256,
178 pub vrf_seed: H256,
180}
181
182pub mod chains {
184 pub const TENSORA_CHAIN_ID: u64 = 44444444;
186
187 pub const BSC_CHAIN_ID: u64 = 56;
189
190 pub const TENSORA_RPC: &str = "https://rpc.tensora.sh";
192
193 pub const BSC_RPC: &str = "https://bsc-dataseed.binance.org";
195}
196