use crate::VarOrBool;
use super::intent_filter::IntentFilter;
use super::meta_data::MetaData;
use super::resources::{MipmapOrDrawableResource, StringResourceOrString};
use serde::{Deserialize, Serialize};
#[derive(
Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Default, Clone,
)]
pub struct Receiver {
#[yaserde(attribute = true, prefix = "android", rename = "directBootAware")]
pub direct_boot_aware: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub enabled: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub exported: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub icon: Option<MipmapOrDrawableResource>,
#[yaserde(attribute = true, prefix = "android")]
pub label: Option<StringResourceOrString>,
#[yaserde(attribute = true, prefix = "android")]
pub name: String,
#[yaserde(attribute = true, prefix = "android")]
pub permission: Option<String>,
#[yaserde(attribute = true, prefix = "android")]
pub process: Option<String>,
#[serde(
rename = "intent-filter",
skip_serializing_if = "Vec::is_empty",
default
)]
#[yaserde(rename = "intent-filter")]
pub intent_filter: Vec<IntentFilter>,
#[serde(rename = "meta-data", skip_serializing_if = "Vec::is_empty", default)]
#[yaserde(rename = "meta-data")]
pub meta_data: Vec<MetaData>,
#[yaserde(attribute = true, prefix = "tools")]
pub replace: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub remove: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub node: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub ignore: Option<String>,
#[yaserde(attribute = true, prefix = "tools", rename = "targetApi")]
pub target_api: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub selector: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub strict: Option<String>,
}