zebra_rpc/methods/types/
unified_address.rs

1//! Types for unified addresses
2
3/// `z_listunifiedreceivers` response
4#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize)]
5pub struct Response {
6    #[serde(skip_serializing_if = "Option::is_none")]
7    orchard: Option<String>,
8    #[serde(skip_serializing_if = "Option::is_none")]
9    sapling: Option<String>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    p2pkh: Option<String>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    p2sh: Option<String>,
14}
15
16impl Default for Response {
17    fn default() -> Self {
18        Self {
19            orchard: Some("orchard address if any".to_string()),
20            sapling: Some("sapling address if any".to_string()),
21            p2pkh: Some("p2pkh address if any".to_string()),
22            p2sh: Some("p2sh address if any".to_string()),
23        }
24    }
25}
26
27impl Response {
28    /// Create a new response for z_listunifiedreceivers given individual addresses.
29    pub fn new(orchard: String, sapling: String, p2pkh: String, p2sh: String) -> Response {
30        Response {
31            orchard: if orchard.is_empty() {
32                None
33            } else {
34                Some(orchard)
35            },
36            sapling: if sapling.is_empty() {
37                None
38            } else {
39                Some(sapling)
40            },
41            p2pkh: if p2pkh.is_empty() { None } else { Some(p2pkh) },
42            p2sh: if p2sh.is_empty() { None } else { Some(p2sh) },
43        }
44    }
45
46    #[cfg(test)]
47    /// Return the orchard payment address from a response, if any.
48    pub fn orchard(&self) -> Option<String> {
49        self.orchard.clone()
50    }
51
52    #[cfg(test)]
53    /// Return the sapling payment address from a response, if any.
54    pub fn sapling(&self) -> Option<String> {
55        self.sapling.clone()
56    }
57
58    #[cfg(test)]
59    /// Return the p2pkh payment address from a response, if any.
60    pub fn p2pkh(&self) -> Option<String> {
61        self.p2pkh.clone()
62    }
63
64    #[cfg(test)]
65    /// Return the p2sh payment address from a response, if any.
66    pub fn p2sh(&self) -> Option<String> {
67        self.p2sh.clone()
68    }
69}