cometbft_rpc/endpoint/
genesis.rs

1//! `/genesis` endpoint JSON-RPC wrapper
2
3use core::{fmt, marker::PhantomData};
4
5use cometbft::Genesis;
6use serde::{de::DeserializeOwned, Deserialize, Serialize};
7
8use crate::{dialect::Dialect, request::RequestMessage};
9
10/// Get the genesis state for the current chain
11#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
12pub struct Request<AppState>(#[serde(skip)] PhantomData<AppState>);
13
14impl<AppState> Default for Request<AppState> {
15    fn default() -> Self {
16        Self(PhantomData)
17    }
18}
19
20impl<AppState> RequestMessage for Request<AppState>
21where
22    AppState: Serialize + DeserializeOwned,
23{
24    fn method(&self) -> crate::Method {
25        crate::Method::Genesis
26    }
27}
28
29impl<AppState, S> crate::Request<S> for Request<AppState>
30where
31    AppState: fmt::Debug + Serialize + DeserializeOwned + Send,
32    S: Dialect,
33{
34    type Response = Response<AppState>;
35}
36
37impl<AppState, S> crate::SimpleRequest<S> for Request<AppState>
38where
39    AppState: fmt::Debug + Serialize + DeserializeOwned + Send,
40    S: Dialect,
41{
42    type Output = Response<AppState>;
43}
44
45/// Block responses
46#[derive(Clone, Debug, Deserialize, Serialize)]
47pub struct Response<AppState> {
48    /// Genesis data
49    pub genesis: Genesis<AppState>,
50}
51
52impl<AppState> crate::Response for Response<AppState> where AppState: Serialize + DeserializeOwned {}