use crate::address_validation::{ComponentName, ConfirmationLevel};
use getset::{CopyGetters, Getters, MutGetters, Setters};
use serde::{Deserialize, Serialize};
#[allow(clippy::struct_excessive_bools)]
#[derive(Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize, CopyGetters, Getters, MutGetters, Setters)]
#[serde(rename_all = "camelCase")]
pub struct AddressComponent {
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub component_name: ComponentName,
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub component_type: String,
#[getset(get = "pub", get_mut = "pub", set = "pub")]
pub confirmation_level: ConfirmationLevel,
#[serde(default)]
#[getset(get_copy = "pub", get_mut = "pub", set = "pub")]
pub inferred: bool,
#[serde(default)]
#[getset(get_copy = "pub", get_mut = "pub", set = "pub")]
pub spell_corrected: bool,
#[serde(default)]
#[getset(get_copy = "pub", get_mut = "pub", set = "pub")]
pub replaced: bool,
#[serde(default)]
#[getset(get_copy = "pub", get_mut = "pub", set = "pub")]
pub unexpected: bool,
}