1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
use crate::prelude::*;
use ibc_proto::google::protobuf::Any as ProtoAny;
use ibc_proto::ibc::core::client::v1::MsgSubmitMisbehaviour as RawMsgSubmitMisbehaviour;
use ibc_proto::protobuf::Protobuf;
use crate::core::ics02_client::error::Error;
use crate::core::ics24_host::identifier::ClientId;
use crate::signer::Signer;
use crate::tx_msg::Msg;
pub const TYPE_URL: &str = "/ibc.core.client.v1.MsgSubmitMisbehaviour";
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct MsgSubmitMisbehaviour {
pub client_id: ClientId,
pub misbehaviour: ProtoAny,
pub signer: Signer,
}
impl Msg for MsgSubmitMisbehaviour {
type ValidationError = crate::core::ics24_host::error::ValidationError;
type Raw = RawMsgSubmitMisbehaviour;
fn route(&self) -> String {
crate::keys::ROUTER_KEY.to_string()
}
fn type_url(&self) -> String {
TYPE_URL.to_string()
}
}
impl Protobuf<RawMsgSubmitMisbehaviour> for MsgSubmitMisbehaviour {}
impl TryFrom<RawMsgSubmitMisbehaviour> for MsgSubmitMisbehaviour {
type Error = Error;
fn try_from(raw: RawMsgSubmitMisbehaviour) -> Result<Self, Self::Error> {
let raw_misbehaviour = raw
.misbehaviour
.ok_or_else(Error::missing_raw_misbehaviour)?;
Ok(MsgSubmitMisbehaviour {
client_id: raw
.client_id
.parse()
.map_err(Error::invalid_raw_misbehaviour)?,
misbehaviour: raw_misbehaviour,
signer: raw.signer.parse().map_err(Error::signer)?,
})
}
}
impl From<MsgSubmitMisbehaviour> for RawMsgSubmitMisbehaviour {
fn from(ics_msg: MsgSubmitMisbehaviour) -> Self {
RawMsgSubmitMisbehaviour {
client_id: ics_msg.client_id.to_string(),
misbehaviour: Some(ics_msg.misbehaviour),
signer: ics_msg.signer.to_string(),
}
}
}