celestia_grpc/grpc/
node.rs1use celestia_proto::cosmos::base::node::v1beta1::{
2 ConfigRequest, ConfigResponse as RawConfigResponse,
3};
4use celestia_types::state::BOND_DENOM;
5use serde::{Deserialize, Serialize};
6#[cfg(all(target_arch = "wasm32", feature = "wasm-bindgen"))]
7use wasm_bindgen::prelude::*;
8
9use crate::grpc::{FromGrpcResponse, make_empty_params};
10use crate::{Error, Result};
11
12#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)]
14#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
15#[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen"), wasm_bindgen)]
16pub struct ConfigResponse {
17 pub minimum_gas_price: Option<f64>,
19
20 pub pruning_keep_recent: u64,
22
23 pub pruning_interval: u64,
25
26 pub halt_height: u64,
28}
29
30impl FromGrpcResponse<ConfigResponse> for RawConfigResponse {
31 fn try_from_response(self) -> Result<ConfigResponse> {
32 let minimum_gas_price = if self.minimum_gas_price.is_empty() {
33 None
34 } else {
35 Some(
36 self.minimum_gas_price
37 .strip_suffix(BOND_DENOM)
38 .ok_or(Error::FailedToParseResponse)?
39 .parse()
40 .map_err(|_| Error::FailedToParseResponse)?,
41 )
42 };
43
44 Ok(ConfigResponse {
45 minimum_gas_price,
46 pruning_keep_recent: self
47 .pruning_keep_recent
48 .parse()
49 .map_err(|_| Error::FailedToParseResponse)?,
50 pruning_interval: self
51 .pruning_interval
52 .parse()
53 .map_err(|_| Error::FailedToParseResponse)?,
54 halt_height: self.halt_height,
55 })
56 }
57}
58
59make_empty_params!(ConfigRequest);