use crate::staking::Validator;
use crate::{proto, ErrorReport, Result};
use tendermint::block::Header;
#[derive(Clone, Debug, PartialEq)]
pub struct HistoricalInfo {
pub header: Option<Header>,
pub valset: Vec<Validator>,
}
impl TryFrom<proto::cosmos::staking::v1beta1::HistoricalInfo> for HistoricalInfo {
type Error = ErrorReport;
fn try_from(proto: cosmos_sdk_proto::cosmos::staking::v1beta1::HistoricalInfo) -> Result<Self> {
Ok(HistoricalInfo {
header: proto.header.map(TryInto::try_into).transpose()?,
valset: proto
.valset
.into_iter()
.map(TryInto::try_into)
.collect::<Result<_>>()?,
})
}
}
impl From<HistoricalInfo> for proto::cosmos::staking::v1beta1::HistoricalInfo {
fn from(historical_info: HistoricalInfo) -> Self {
proto::cosmos::staking::v1beta1::HistoricalInfo {
header: historical_info.header.map(Into::into),
valset: historical_info.valset.into_iter().map(Into::into).collect(),
}
}
}