use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PixAddress {
#[serde(rename = "accountHolder")]
pub account_holder: models::AccountHolderDetails,
#[serde(rename = "pixKey")]
pub pix_key: String,
#[serde(rename = "keyType")]
pub key_type: KeyType,
#[serde(rename = "bankName", skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(rename = "bankCode", skip_serializing_if = "Option::is_none")]
pub bank_code: Option<String>,
}
impl PixAddress {
pub fn new(
account_holder: models::AccountHolderDetails,
pix_key: String,
key_type: KeyType,
) -> PixAddress {
PixAddress {
account_holder,
pix_key,
key_type,
bank_name: None,
bank_code: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum KeyType {
#[serde(rename = "cpf")]
Cpf,
#[serde(rename = "cnpj")]
Cnpj,
#[serde(rename = "email")]
Email,
#[serde(rename = "phone")]
Phone,
#[serde(rename = "random")]
Random,
}
impl Default for KeyType {
fn default() -> KeyType {
Self::Cpf
}
}