use serde::{Deserialize, Serialize};
use crate::{
EditableField, EditableFieldConcealedString, EditableFieldCountryCode, EditableFieldDate,
EditableFieldString, EditableFieldSubdivisionCode, EditableFieldYearMonth,
};
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
pub struct AddressCredential<E = ()> {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub street_address: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub postal_code: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub city: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub territory: Option<EditableField<EditableFieldSubdivisionCode, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub country: Option<EditableField<EditableFieldCountryCode, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tel: Option<EditableField<EditableFieldString, E>>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
pub struct CreditCardCredential<E = ()> {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub number: Option<EditableField<EditableFieldConcealedString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub full_name: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub card_type: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub verification_number: Option<EditableField<EditableFieldConcealedString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pin: Option<EditableField<EditableFieldConcealedString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expiry_date: Option<EditableField<EditableFieldYearMonth, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub valid_from: Option<EditableField<EditableFieldYearMonth, E>>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
pub struct DriversLicenseCredential<E = ()> {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub full_name: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub birth_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issue_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expiry_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issuing_authority: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub territory: Option<EditableField<EditableFieldSubdivisionCode, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub country: Option<EditableField<EditableFieldCountryCode, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub license_number: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub license_class: Option<EditableField<EditableFieldString, E>>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
pub struct IdentityDocumentCredential<E = ()> {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issuing_country: Option<EditableField<EditableFieldCountryCode, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub document_number: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub identification_number: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nationality: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub full_name: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub birth_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub birth_place: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sex: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issue_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expiry_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issuing_authority: Option<EditableField<EditableFieldString, E>>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
pub struct PassportCredential<E = ()> {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issuing_country: Option<EditableField<EditableFieldCountryCode, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub passport_type: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub passport_number: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub national_identification_number: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nationality: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub full_name: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub birth_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub birth_place: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sex: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issue_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expiry_date: Option<EditableField<EditableFieldDate, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issuing_authority: Option<EditableField<EditableFieldString, E>>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
pub struct PersonNameCredential<E = ()> {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub given: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub given_informal: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub given2: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub surname_prefix: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub surname: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub surname2: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub credentials: Option<EditableField<EditableFieldString, E>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub generation: Option<EditableField<EditableFieldString, E>>,
}