ibc_relayer_types/
signer.rs1use std::str::FromStr;
2
3use derive_more::Display;
4use flex_error::define_error;
5use serde::{Deserialize, Serialize};
6
7define_error! {
8 #[derive(Debug, PartialEq, Eq)]
9 SignerError {
10 EmptySigner
11 | _ | { "signer cannot be empty" },
12 }
13}
14
15#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, Display)]
16pub struct Signer(String);
17
18impl Signer {
19 pub fn dummy() -> Self {
20 Self("cosmos000000000000000000000000000000000000000".to_string())
21 }
22}
23
24impl FromStr for Signer {
25 type Err = SignerError;
26
27 fn from_str(s: &str) -> Result<Self, Self::Err> {
28 let s = s.to_string();
29 if s.trim().is_empty() {
30 return Err(SignerError::empty_signer());
31 }
32 Ok(Self(s))
33 }
34}
35
36impl AsRef<str> for Signer {
37 fn as_ref(&self) -> &str {
38 self.0.as_str()
39 }
40}