Skip to main content

hotmint_api/
types.rs

1use serde::{Deserialize, Serialize};
2
3/// JSON-RPC request
4#[derive(Debug, Deserialize)]
5pub struct RpcRequest {
6    pub method: String,
7    pub params: serde_json::Value,
8    pub id: u64,
9}
10
11/// JSON-RPC response
12#[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/// Status info returned by the status endpoint
44#[derive(Debug, Serialize)]
45pub struct StatusInfo {
46    pub validator_id: u64,
47    pub current_view: u64,
48    pub last_committed_height: u64,
49    pub mempool_size: usize,
50}
51
52/// Transaction submission result
53#[derive(Debug, Serialize)]
54pub struct TxResult {
55    pub accepted: bool,
56}