use super::utils::unix_date_formatting;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct PassportData {
pub data: Vec<EncryptedCredentials>,
pub credentials: EncryptedCredentials,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct PassportFile {
pub file_id: String,
pub file_unique_id: String,
pub file_size: i64,
#[serde(with = "unix_date_formatting")]
pub file_date: DateTime<Utc>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct EncryptedPassportElement {
pub element_type: TelegramPassportElement,
pub data: Option<String>,
pub phone_number: Option<String>,
pub files: Vec<PassportFile>,
pub front_side: PassportFile,
pub reverse_side: PassportFile,
pub selfie: PassportFile,
pub translation: Vec<PassportFile>,
pub hash: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct EncryptedCredentials {
pub data: String,
pub hash: String,
pub secret: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum TelegramPassportElement {
#[serde(rename = "personal_details")]
PersonalDetails,
#[serde(rename = "passport")]
Passport,
#[serde(rename = "driver_license")]
DriverLicense,
#[serde(rename = "identity_card")]
IdentityCard,
#[serde(rename = "internal_passport")]
InternalPassport,
#[serde(rename = "address")]
Address,
#[serde(rename = "utility_bill")]
UtilityBill,
#[serde(rename = "bank_statement")]
BankStatement,
#[serde(rename = "rental_agreement")]
RentalAgreement,
#[serde(rename = "passport_registration")]
PassportRegistration,
#[serde(rename = "temporary_registration")]
TemporaryRegistration,
#[serde(rename = "phone_number")]
PhoneNumber,
#[serde(rename = "email")]
Email,
}