1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize)]
5pub struct RpcRequest {
6 pub method: String,
7 pub params: serde_json::Value,
8 pub id: u64,
9}
10
11#[derive(Debug, Serialize, Deserialize)]
13pub struct RpcResponse {
14 pub result: Option<serde_json::Value>,
15 pub error: Option<RpcError>,
16 pub id: u64,
17}
18
19#[derive(Debug, Serialize, Deserialize)]
20pub struct RpcError {
21 pub code: i32,
22 pub message: String,
23}
24
25impl RpcResponse {
26 pub fn ok(id: u64, result: serde_json::Value) -> Self {
27 Self {
28 result: Some(result),
29 error: None,
30 id,
31 }
32 }
33
34 pub fn err(id: u64, code: i32, message: String) -> Self {
35 Self {
36 result: None,
37 error: Some(RpcError { code, message }),
38 id,
39 }
40 }
41}
42
43#[derive(Debug, Clone, Serialize)]
45pub struct StatusInfo {
46 pub validator_id: u64,
47 pub current_view: u64,
48 pub last_committed_height: u64,
49 pub epoch: u64,
50 pub validator_count: usize,
51 pub mempool_size: usize,
52}
53
54#[derive(Debug, Serialize)]
56pub struct BlockInfo {
57 pub height: u64,
58 pub hash: String,
59 pub parent_hash: String,
60 pub view: u64,
61 pub proposer: u64,
62 pub payload_size: usize,
63}
64
65#[derive(Debug, Clone, Serialize)]
67pub struct ValidatorInfoResponse {
68 pub id: u64,
69 pub power: u64,
70 pub public_key: String,
71}
72
73#[derive(Debug, Serialize)]
75pub struct EpochInfo {
76 pub number: u64,
77 pub start_view: u64,
78 pub validator_count: usize,
79}
80
81#[derive(Debug, Serialize)]
83pub struct TxResult {
84 pub accepted: bool,
85}
86
87#[derive(Debug, Serialize)]
89pub struct HeaderInfo {
90 pub height: u64,
91 pub hash: String,
92 pub parent_hash: String,
93 pub view: u64,
94 pub proposer: u64,
95 pub app_hash: String,
96}
97
98#[derive(Debug, Serialize)]
100pub struct CommitQcInfo {
101 pub block_hash: String,
102 pub view: u64,
103 pub signer_count: usize,
104 pub epoch: u64,
105}
106
107#[derive(Serialize)]
109pub struct TxInfo {
110 pub tx_hash: String,
111 pub height: u64,
112 pub index: u32,
113 pub data: String,
115}
116
117#[derive(Serialize)]
119pub struct QueryResponseInfo {
120 pub data: String,
122 pub proof: Option<String>,
124 pub height: u64,
125}
126
127#[derive(Serialize)]
129pub struct VerifyHeaderResult {
130 pub valid: bool,
131 pub error: Option<String>,
132}
133#[derive(Serialize)]
134pub struct BlockResultsInfo {
135 pub height: u64,
136 pub tx_hashes: Vec<String>,
137 pub events: Vec<EventInfo>,
138 pub app_hash: String,
139}
140
141#[derive(Serialize)]
143pub struct EventInfo {
144 pub r#type: String,
145 pub attributes: Vec<EventAttributeInfo>,
146}
147
148#[derive(Serialize)]
149pub struct EventAttributeInfo {
150 pub key: String,
151 pub value: String,
152}