1use serde::{Deserialize, Serialize};
2#[derive(Clone, Debug, Serialize, Deserialize)]
20#[serde(tag = "type", rename_all = "snake_case")]
21pub enum EncryptedPassportElement {
22 PersonalDetails(crate::types::EncryptedPassportElementPersonalDetails),
23 Passport(crate::types::EncryptedPassportElementPassport),
24 DriverLicense(crate::types::EncryptedPassportElementDriverLicense),
25 IdentityCard(crate::types::EncryptedPassportElementIdentityCard),
26 InternalPassport(crate::types::EncryptedPassportElementInternalPassport),
27 Address(crate::types::EncryptedPassportElementAddress),
28 UtilityBill(crate::types::EncryptedPassportElementUtilityBill),
29 BankStatement(crate::types::EncryptedPassportElementBankStatement),
30 RentalAgreement(crate::types::EncryptedPassportElementRentalAgreement),
31 PassportRegistration(crate::types::EncryptedPassportElementPassportRegistration),
32 TemporaryRegistration(crate::types::EncryptedPassportElementTemporaryRegistration),
33 PhoneNumber(crate::types::EncryptedPassportElementPhoneNumber),
34 Email(crate::types::EncryptedPassportElementEmail),
35}
36impl EncryptedPassportElement {
37 #[must_use]
41 pub fn data(&self) -> Option<&str> {
42 match self {
43 Self::PersonalDetails(val) => Some(val.data.as_ref()),
44 Self::Passport(val) => Some(val.data.as_ref()),
45 Self::DriverLicense(val) => Some(val.data.as_ref()),
46 Self::IdentityCard(val) => Some(val.data.as_ref()),
47 Self::InternalPassport(val) => Some(val.data.as_ref()),
48 Self::Address(val) => Some(val.data.as_ref()),
49 _ => None,
50 }
51 }
52
53 #[must_use]
57 pub fn email(&self) -> Option<&str> {
58 match self {
59 Self::Email(val) => Some(val.email.as_ref()),
60 _ => None,
61 }
62 }
63
64 #[must_use]
68 pub fn files(&self) -> Option<&[crate::types::PassportFile]> {
69 match self {
70 Self::UtilityBill(val) => Some(val.files.as_ref()),
71 Self::BankStatement(val) => Some(val.files.as_ref()),
72 Self::RentalAgreement(val) => Some(val.files.as_ref()),
73 Self::PassportRegistration(val) => Some(val.files.as_ref()),
74 Self::TemporaryRegistration(val) => Some(val.files.as_ref()),
75 _ => None,
76 }
77 }
78
79 #[must_use]
83 pub fn front_side(&self) -> Option<&crate::types::PassportFile> {
84 match self {
85 Self::Passport(val) => Some(&val.front_side),
86 Self::DriverLicense(val) => Some(&val.front_side),
87 Self::IdentityCard(val) => Some(&val.front_side),
88 Self::InternalPassport(val) => Some(&val.front_side),
89 _ => None,
90 }
91 }
92
93 #[must_use]
97 pub fn hash(&self) -> &str {
98 match self {
99 Self::PersonalDetails(val) => val.hash.as_ref(),
100 Self::Passport(val) => val.hash.as_ref(),
101 Self::DriverLicense(val) => val.hash.as_ref(),
102 Self::IdentityCard(val) => val.hash.as_ref(),
103 Self::InternalPassport(val) => val.hash.as_ref(),
104 Self::Address(val) => val.hash.as_ref(),
105 Self::UtilityBill(val) => val.hash.as_ref(),
106 Self::BankStatement(val) => val.hash.as_ref(),
107 Self::RentalAgreement(val) => val.hash.as_ref(),
108 Self::PassportRegistration(val) => val.hash.as_ref(),
109 Self::TemporaryRegistration(val) => val.hash.as_ref(),
110 Self::PhoneNumber(val) => val.hash.as_ref(),
111 Self::Email(val) => val.hash.as_ref(),
112 }
113 }
114
115 #[must_use]
119 pub fn phone_number(&self) -> Option<&str> {
120 match self {
121 Self::PhoneNumber(val) => Some(val.phone_number.as_ref()),
122 _ => None,
123 }
124 }
125
126 #[must_use]
130 pub fn reverse_side(&self) -> Option<&crate::types::PassportFile> {
131 match self {
132 Self::DriverLicense(val) => Some(&val.reverse_side),
133 Self::IdentityCard(val) => Some(&val.reverse_side),
134 _ => None,
135 }
136 }
137
138 #[must_use]
142 pub fn selfie(&self) -> Option<&crate::types::PassportFile> {
143 match self {
144 Self::Passport(val) => Some(&val.selfie),
145 Self::DriverLicense(val) => Some(&val.selfie),
146 Self::IdentityCard(val) => Some(&val.selfie),
147 Self::InternalPassport(val) => Some(&val.selfie),
148 _ => None,
149 }
150 }
151
152 #[must_use]
156 pub fn translation(&self) -> Option<&[crate::types::PassportFile]> {
157 match self {
158 Self::Passport(val) => Some(val.translation.as_ref()),
159 Self::DriverLicense(val) => Some(val.translation.as_ref()),
160 Self::IdentityCard(val) => Some(val.translation.as_ref()),
161 Self::InternalPassport(val) => Some(val.translation.as_ref()),
162 Self::UtilityBill(val) => Some(val.translation.as_ref()),
163 Self::BankStatement(val) => Some(val.translation.as_ref()),
164 Self::RentalAgreement(val) => Some(val.translation.as_ref()),
165 Self::PassportRegistration(val) => Some(val.translation.as_ref()),
166 Self::TemporaryRegistration(val) => Some(val.translation.as_ref()),
167 _ => None,
168 }
169 }
170}
171impl From<crate::types::EncryptedPassportElementPersonalDetails> for EncryptedPassportElement {
172 fn from(val: crate::types::EncryptedPassportElementPersonalDetails) -> Self {
173 Self::PersonalDetails(val)
174 }
175}
176impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementPersonalDetails {
177 type Error = crate::errors::ConvertToTypeError;
178
179 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
180 if let EncryptedPassportElement::PersonalDetails(inner) = val {
181 Ok(inner)
182 } else {
183 Err(Self::Error::new(
184 stringify!(EncryptedPassportElement),
185 stringify!(EncryptedPassportElementPersonalDetails),
186 ))
187 }
188 }
189}
190impl From<crate::types::EncryptedPassportElementPassport> for EncryptedPassportElement {
191 fn from(val: crate::types::EncryptedPassportElementPassport) -> Self {
192 Self::Passport(val)
193 }
194}
195impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementPassport {
196 type Error = crate::errors::ConvertToTypeError;
197
198 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
199 if let EncryptedPassportElement::Passport(inner) = val {
200 Ok(inner)
201 } else {
202 Err(Self::Error::new(
203 stringify!(EncryptedPassportElement),
204 stringify!(EncryptedPassportElementPassport),
205 ))
206 }
207 }
208}
209impl From<crate::types::EncryptedPassportElementDriverLicense> for EncryptedPassportElement {
210 fn from(val: crate::types::EncryptedPassportElementDriverLicense) -> Self {
211 Self::DriverLicense(val)
212 }
213}
214impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementDriverLicense {
215 type Error = crate::errors::ConvertToTypeError;
216
217 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
218 if let EncryptedPassportElement::DriverLicense(inner) = val {
219 Ok(inner)
220 } else {
221 Err(Self::Error::new(
222 stringify!(EncryptedPassportElement),
223 stringify!(EncryptedPassportElementDriverLicense),
224 ))
225 }
226 }
227}
228impl From<crate::types::EncryptedPassportElementIdentityCard> for EncryptedPassportElement {
229 fn from(val: crate::types::EncryptedPassportElementIdentityCard) -> Self {
230 Self::IdentityCard(val)
231 }
232}
233impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementIdentityCard {
234 type Error = crate::errors::ConvertToTypeError;
235
236 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
237 if let EncryptedPassportElement::IdentityCard(inner) = val {
238 Ok(inner)
239 } else {
240 Err(Self::Error::new(
241 stringify!(EncryptedPassportElement),
242 stringify!(EncryptedPassportElementIdentityCard),
243 ))
244 }
245 }
246}
247impl From<crate::types::EncryptedPassportElementInternalPassport> for EncryptedPassportElement {
248 fn from(val: crate::types::EncryptedPassportElementInternalPassport) -> Self {
249 Self::InternalPassport(val)
250 }
251}
252impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementInternalPassport {
253 type Error = crate::errors::ConvertToTypeError;
254
255 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
256 if let EncryptedPassportElement::InternalPassport(inner) = val {
257 Ok(inner)
258 } else {
259 Err(Self::Error::new(
260 stringify!(EncryptedPassportElement),
261 stringify!(EncryptedPassportElementInternalPassport),
262 ))
263 }
264 }
265}
266impl From<crate::types::EncryptedPassportElementAddress> for EncryptedPassportElement {
267 fn from(val: crate::types::EncryptedPassportElementAddress) -> Self {
268 Self::Address(val)
269 }
270}
271impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementAddress {
272 type Error = crate::errors::ConvertToTypeError;
273
274 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
275 if let EncryptedPassportElement::Address(inner) = val {
276 Ok(inner)
277 } else {
278 Err(Self::Error::new(
279 stringify!(EncryptedPassportElement),
280 stringify!(EncryptedPassportElementAddress),
281 ))
282 }
283 }
284}
285impl From<crate::types::EncryptedPassportElementUtilityBill> for EncryptedPassportElement {
286 fn from(val: crate::types::EncryptedPassportElementUtilityBill) -> Self {
287 Self::UtilityBill(val)
288 }
289}
290impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementUtilityBill {
291 type Error = crate::errors::ConvertToTypeError;
292
293 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
294 if let EncryptedPassportElement::UtilityBill(inner) = val {
295 Ok(inner)
296 } else {
297 Err(Self::Error::new(
298 stringify!(EncryptedPassportElement),
299 stringify!(EncryptedPassportElementUtilityBill),
300 ))
301 }
302 }
303}
304impl From<crate::types::EncryptedPassportElementBankStatement> for EncryptedPassportElement {
305 fn from(val: crate::types::EncryptedPassportElementBankStatement) -> Self {
306 Self::BankStatement(val)
307 }
308}
309impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementBankStatement {
310 type Error = crate::errors::ConvertToTypeError;
311
312 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
313 if let EncryptedPassportElement::BankStatement(inner) = val {
314 Ok(inner)
315 } else {
316 Err(Self::Error::new(
317 stringify!(EncryptedPassportElement),
318 stringify!(EncryptedPassportElementBankStatement),
319 ))
320 }
321 }
322}
323impl From<crate::types::EncryptedPassportElementRentalAgreement> for EncryptedPassportElement {
324 fn from(val: crate::types::EncryptedPassportElementRentalAgreement) -> Self {
325 Self::RentalAgreement(val)
326 }
327}
328impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementRentalAgreement {
329 type Error = crate::errors::ConvertToTypeError;
330
331 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
332 if let EncryptedPassportElement::RentalAgreement(inner) = val {
333 Ok(inner)
334 } else {
335 Err(Self::Error::new(
336 stringify!(EncryptedPassportElement),
337 stringify!(EncryptedPassportElementRentalAgreement),
338 ))
339 }
340 }
341}
342impl From<crate::types::EncryptedPassportElementPassportRegistration> for EncryptedPassportElement {
343 fn from(val: crate::types::EncryptedPassportElementPassportRegistration) -> Self {
344 Self::PassportRegistration(val)
345 }
346}
347impl TryFrom<EncryptedPassportElement>
348 for crate::types::EncryptedPassportElementPassportRegistration
349{
350 type Error = crate::errors::ConvertToTypeError;
351
352 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
353 if let EncryptedPassportElement::PassportRegistration(inner) = val {
354 Ok(inner)
355 } else {
356 Err(Self::Error::new(
357 stringify!(EncryptedPassportElement),
358 stringify!(EncryptedPassportElementPassportRegistration),
359 ))
360 }
361 }
362}
363impl From<crate::types::EncryptedPassportElementTemporaryRegistration>
364 for EncryptedPassportElement
365{
366 fn from(val: crate::types::EncryptedPassportElementTemporaryRegistration) -> Self {
367 Self::TemporaryRegistration(val)
368 }
369}
370impl TryFrom<EncryptedPassportElement>
371 for crate::types::EncryptedPassportElementTemporaryRegistration
372{
373 type Error = crate::errors::ConvertToTypeError;
374
375 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
376 if let EncryptedPassportElement::TemporaryRegistration(inner) = val {
377 Ok(inner)
378 } else {
379 Err(Self::Error::new(
380 stringify!(EncryptedPassportElement),
381 stringify!(EncryptedPassportElementTemporaryRegistration),
382 ))
383 }
384 }
385}
386impl From<crate::types::EncryptedPassportElementPhoneNumber> for EncryptedPassportElement {
387 fn from(val: crate::types::EncryptedPassportElementPhoneNumber) -> Self {
388 Self::PhoneNumber(val)
389 }
390}
391impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementPhoneNumber {
392 type Error = crate::errors::ConvertToTypeError;
393
394 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
395 if let EncryptedPassportElement::PhoneNumber(inner) = val {
396 Ok(inner)
397 } else {
398 Err(Self::Error::new(
399 stringify!(EncryptedPassportElement),
400 stringify!(EncryptedPassportElementPhoneNumber),
401 ))
402 }
403 }
404}
405impl From<crate::types::EncryptedPassportElementEmail> for EncryptedPassportElement {
406 fn from(val: crate::types::EncryptedPassportElementEmail) -> Self {
407 Self::Email(val)
408 }
409}
410impl TryFrom<EncryptedPassportElement> for crate::types::EncryptedPassportElementEmail {
411 type Error = crate::errors::ConvertToTypeError;
412
413 fn try_from(val: EncryptedPassportElement) -> Result<Self, Self::Error> {
414 if let EncryptedPassportElement::Email(inner) = val {
415 Ok(inner)
416 } else {
417 Err(Self::Error::new(
418 stringify!(EncryptedPassportElement),
419 stringify!(EncryptedPassportElementEmail),
420 ))
421 }
422 }
423}