cardano_serialization_lib/protocol_types/certificates/
pool_registration.rs1use 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}