use crate::address_validation::{AddressComponent, PostalAddress};
use getset::{CopyGetters, Getters, MutGetters, Setters};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize, CopyGetters, Getters, MutGetters, Setters)]
#[serde(rename_all = "camelCase")]
pub struct Address {
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub formatted_address: String,
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub postal_address: PostalAddress,
#[serde(default)]
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub address_components: Vec<AddressComponent>,
#[serde(default)]
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub missing_component_types: Vec<String>,
#[serde(default)]
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub unconfirmed_component_types: Vec<String>,
#[serde(default)]
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub unresolved_tokens: Vec<String>,
}