use cometbft::{evidence, Hash};
use serde::{Deserialize, Serialize};
use crate::{dialect::Dialect, request::RequestMessage, Method};
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Request<S: Dialect> {
pub evidence: S::Evidence,
}
impl<S: Dialect> Request<S> {
pub fn new(evidence: evidence::Evidence) -> Self {
Request {
evidence: evidence.into(),
}
}
}
impl<S: Dialect> RequestMessage for Request<S> {
fn method(&self) -> Method {
Method::BroadcastEvidence
}
}
impl<S: Dialect> crate::Request<S> for Request<S> {
type Response = Response;
}
impl<S: Dialect> crate::SimpleRequest<S> for Request<S> {
type Output = Response;
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Response {
#[serde(with = "crate::serializers::tm_hash_base64")]
pub hash: Hash,
}
impl crate::Response for Response {}