use cometbft::{
block::{self, Block},
Hash,
};
use serde::{Deserialize, Serialize};
use crate::{dialect::Dialect, request::RequestMessage};
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct Request {
#[serde(default)]
#[serde(with = "crate::serializers::opt_tm_hash_base64")]
pub hash: Option<Hash>,
}
impl Request {
pub fn new<H: Into<Hash>>(hash: H) -> Self {
Self {
hash: Some(hash.into()),
}
}
}
impl RequestMessage for Request {
fn method(&self) -> crate::Method {
crate::Method::BlockByHash
}
}
impl<S: Dialect> crate::Request<S> for Request {
type Response = Response;
}
impl<S: Dialect> crate::SimpleRequest<S> for Request {
type Output = Response;
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Response {
pub block_id: block::Id,
pub block: Option<Block>,
}
impl crate::Response for Response {}