use crate::slashing::{Params, SigningInfo, ValidatorMissedBlocks};
use crate::{proto, ErrorReport, Result};
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct GenesisState {
pub params: Option<Params>,
pub signing_infos: Vec<SigningInfo>,
pub missed_blocks: Vec<ValidatorMissedBlocks>,
}
impl TryFrom<proto::cosmos::slashing::v1beta1::GenesisState> for GenesisState {
type Error = ErrorReport;
fn try_from(proto: cosmos_sdk_proto::cosmos::slashing::v1beta1::GenesisState) -> Result<Self> {
Ok(GenesisState {
params: proto.params.map(TryInto::try_into).transpose()?,
signing_infos: proto
.signing_infos
.into_iter()
.map(TryInto::try_into)
.collect::<Result<_>>()?,
missed_blocks: proto.missed_blocks.into_iter().map(Into::into).collect(),
})
}
}
impl From<GenesisState> for cosmos_sdk_proto::cosmos::slashing::v1beta1::GenesisState {
fn from(genesis_state: GenesisState) -> Self {
cosmos_sdk_proto::cosmos::slashing::v1beta1::GenesisState {
params: genesis_state.params.map(Into::into),
signing_infos: genesis_state
.signing_infos
.into_iter()
.map(Into::into)
.collect(),
missed_blocks: genesis_state
.missed_blocks
.into_iter()
.map(Into::into)
.collect(),
}
}
}