use bytes::Bytes;
use serde::{Deserialize, Serialize};
use cometbft::abci::{self, Code};
use crate::prelude::*;
use crate::serializers;
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
#[serde(default)]
pub struct CheckTx<Ev> {
pub code: Code,
#[serde(with = "serializers::nullable")]
pub data: Bytes,
pub log: String,
pub info: String,
#[serde(with = "serializers::from_str")]
pub gas_wanted: i64,
#[serde(with = "serializers::from_str")]
pub gas_used: i64,
pub events: Vec<Ev>,
pub codespace: String,
pub sender: String,
#[serde(with = "serializers::from_str")]
pub priority: i64,
pub mempool_error: String,
}
impl<Ev> Default for CheckTx<Ev> {
fn default() -> Self {
Self {
code: Default::default(),
data: Default::default(),
log: Default::default(),
info: Default::default(),
gas_wanted: Default::default(),
gas_used: Default::default(),
events: Default::default(),
codespace: Default::default(),
sender: Default::default(),
priority: Default::default(),
mempool_error: Default::default(),
}
}
}
impl<Ev> From<CheckTx<Ev>> for abci::response::CheckTx
where
Ev: Into<abci::Event>,
{
fn from(msg: CheckTx<Ev>) -> Self {
Self {
code: msg.code,
data: msg.data,
log: msg.log,
info: msg.info,
gas_wanted: msg.gas_wanted,
gas_used: msg.gas_used,
events: msg.events.into_iter().map(Into::into).collect(),
codespace: msg.codespace,
sender: msg.sender,
priority: msg.priority,
mempool_error: msg.mempool_error,
}
}
}