cometbft_rpc/endpoint/
genesis.rs1use core::{fmt, marker::PhantomData};
4
5use cometbft::Genesis;
6use serde::{de::DeserializeOwned, Deserialize, Serialize};
7
8use crate::{dialect::Dialect, request::RequestMessage};
9
10#[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#[derive(Clone, Debug, Deserialize, Serialize)]
47pub struct Response<AppState> {
48 pub genesis: Genesis<AppState>,
50}
51
52impl<AppState> crate::Response for Response<AppState> where AppState: Serialize + DeserializeOwned {}