cardano_serialization_lib/protocol_types/certificates/
pool_registration.rs

1use crate::*;
2
3#[wasm_bindgen]
4#[derive(
5    Clone,
6    Debug,
7    Hash,
8    Eq,
9    Ord,
10    PartialEq,
11    PartialOrd,
12    serde::Serialize,
13    serde::Deserialize,
14    JsonSchema,
15)]
16pub struct PoolRegistration {
17    pub(crate) pool_params: PoolParams,
18}
19
20impl_to_from!(PoolRegistration);
21
22#[wasm_bindgen]
23impl PoolRegistration {
24    pub fn pool_params(&self) -> PoolParams {
25        self.pool_params.clone()
26    }
27
28    pub fn new(pool_params: &PoolParams) -> Self {
29        Self {
30            pool_params: pool_params.clone(),
31        }
32    }
33}
34
35#[wasm_bindgen]
36#[derive(
37    Clone,
38    Debug,
39    Hash,
40    Eq,
41    Ord,
42    PartialEq,
43    PartialOrd,
44    serde::Serialize,
45    serde::Deserialize,
46    JsonSchema,
47)]
48pub struct Relays(pub(crate) Vec<Relay>);
49
50impl_to_from!(Relays);
51
52#[wasm_bindgen]
53impl Relays {
54    pub fn new() -> Self {
55        Self(Vec::new())
56    }
57
58    pub fn len(&self) -> usize {
59        self.0.len()
60    }
61
62    pub fn get(&self, index: usize) -> Relay {
63        self.0[index].clone()
64    }
65
66    pub fn add(&mut self, elem: &Relay) {
67        self.0.push(elem.clone());
68    }
69}
70
71#[wasm_bindgen]
72#[derive(
73    Clone,
74    Debug,
75    Hash,
76    Eq,
77    Ord,
78    PartialEq,
79    PartialOrd,
80    serde::Serialize,
81    serde::Deserialize,
82    JsonSchema,
83)]
84pub struct PoolParams {
85    pub(crate) operator: Ed25519KeyHash,
86    pub(crate) vrf_keyhash: VRFKeyHash,
87    pub(crate) pledge: Coin,
88    pub(crate) cost: Coin,
89    pub(crate) margin: UnitInterval,
90    pub(crate) reward_account: RewardAddress,
91    pub(crate) pool_owners: Ed25519KeyHashes,
92    pub(crate) relays: Relays,
93    pub(crate) pool_metadata: Option<PoolMetadata>,
94}
95
96impl_to_from!(PoolParams);
97
98#[wasm_bindgen]
99impl PoolParams {
100    pub fn operator(&self) -> Ed25519KeyHash {
101        self.operator.clone()
102    }
103
104    pub fn vrf_keyhash(&self) -> VRFKeyHash {
105        self.vrf_keyhash.clone()
106    }
107
108    pub fn pledge(&self) -> Coin {
109        self.pledge.clone()
110    }
111
112    pub fn cost(&self) -> Coin {
113        self.cost.clone()
114    }
115
116    pub fn margin(&self) -> UnitInterval {
117        self.margin.clone()
118    }
119
120    pub fn reward_account(&self) -> RewardAddress {
121        self.reward_account.clone()
122    }
123
124    pub fn pool_owners(&self) -> Ed25519KeyHashes {
125        self.pool_owners.clone()
126    }
127
128    pub fn relays(&self) -> Relays {
129        self.relays.clone()
130    }
131
132    pub fn pool_metadata(&self) -> Option<PoolMetadata> {
133        self.pool_metadata.clone()
134    }
135
136    pub fn new(
137        operator: &Ed25519KeyHash,
138        vrf_keyhash: &VRFKeyHash,
139        pledge: &Coin,
140        cost: &Coin,
141        margin: &UnitInterval,
142        reward_account: &RewardAddress,
143        pool_owners: &Ed25519KeyHashes,
144        relays: &Relays,
145        pool_metadata: Option<PoolMetadata>,
146    ) -> Self {
147        Self {
148            operator: operator.clone(),
149            vrf_keyhash: vrf_keyhash.clone(),
150            pledge: pledge.clone(),
151            cost: cost.clone(),
152            margin: margin.clone(),
153            reward_account: reward_account.clone(),
154            pool_owners: pool_owners.clone(),
155            relays: relays.clone(),
156            pool_metadata: pool_metadata.clone(),
157        }
158    }
159}