use codes_iso_3166::part_1::CountryCode;
use serde::{Deserialize, Serialize};
use serde_enum_str::{Deserialize_enum_str, Serialize_enum_str};
#[derive(Clone, Debug, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct TaxIdRequest<'a> {
#[serde(rename = "type")]
pub type_: TaxIdType,
pub value: &'a str,
pub country: CountryCode,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct TaxId {
#[serde(rename = "type")]
pub type_: TaxIdType,
pub value: String,
pub country: CountryCode,
}
#[non_exhaustive]
#[derive(Clone, Debug, PartialEq, Eq, Hash, Deserialize_enum_str, Serialize_enum_str)]
#[serde(rename_all = "snake_case")]
pub enum TaxIdType {
AeTrn,
AuAbn,
AuArn,
BgUic,
BrCnpj,
BrCpf,
CaBn,
CaGstHst,
CaPstBc,
CaPstMb,
CaPstSk,
CaQst,
ChVat,
ClTin,
EsCif,
EuOssVat,
EuVat,
GbVat,
GeVat,
HkBr,
HuTin,
IdNpwp,
IlVat,
InGst,
IsVat,
JpCn,
JpRn,
JpTrn,
KrBrn,
LiUid,
MxRfc,
MyFrp,
MyItn,
MySst,
NoVat,
NzGst,
RuInn,
RuKpp,
SaVat,
SgGst,
SgUen,
SiTin,
ThVat,
TwVat,
UaVat,
UsEin,
ZaVat,
#[serde(other)]
Other(String),
}