use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ScreeningMetadataConfigV2 {
#[serde(rename = "direction")]
pub direction: Direction,
#[serde(
rename = "provider",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub provider: Option<Option<Provider>>,
#[serde(rename = "riskRating", skip_serializing_if = "Option::is_none")]
pub risk_rating: Option<RiskRating>,
#[serde(rename = "riskScore", skip_serializing_if = "Option::is_none")]
pub risk_score: Option<String>,
#[serde(rename = "exposureType", skip_serializing_if = "Option::is_none")]
pub exposure_type: Option<ExposureType>,
#[serde(rename = "category", skip_serializing_if = "Option::is_none")]
pub category: Option<Vec<String>>,
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<Vec<String>>,
#[serde(rename = "categoryId", skip_serializing_if = "Option::is_none")]
pub category_id: Option<Vec<String>>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<Status>,
#[serde(rename = "sourceAddress", skip_serializing_if = "Option::is_none")]
pub source_address: Option<String>,
#[serde(rename = "destAddress", skip_serializing_if = "Option::is_none")]
pub dest_address: Option<String>,
}
impl ScreeningMetadataConfigV2 {
pub fn new(direction: Direction) -> ScreeningMetadataConfigV2 {
ScreeningMetadataConfigV2 {
direction,
provider: None,
risk_rating: None,
risk_score: None,
exposure_type: None,
category: None,
name: None,
category_id: None,
status: None,
source_address: None,
dest_address: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Direction {
#[serde(rename = "INBOUND")]
Inbound,
#[serde(rename = "OUTBOUND")]
Outbound,
#[serde(rename = "ANY")]
Any,
}
impl Default for Direction {
fn default() -> Direction {
Self::Inbound
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Provider {
#[serde(rename = "CHAINALYSIS")]
Chainalysis,
#[serde(rename = "CHAINALYSIS_V2")]
ChainalysisV2,
#[serde(rename = "ELLIPTIC")]
Elliptic,
#[serde(rename = "ELLIPTIC_HOLISTIC")]
EllipticHolistic,
#[serde(rename = "NOTABENE")]
Notabene,
}
impl Default for Provider {
fn default() -> Provider {
Self::Chainalysis
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum RiskRating {
#[serde(rename = "LOW")]
Low,
#[serde(rename = "MEDIUM")]
Medium,
#[serde(rename = "HIGH")]
High,
#[serde(rename = "SEVERE")]
Severe,
#[serde(rename = "ANY")]
Any,
}
impl Default for RiskRating {
fn default() -> RiskRating {
Self::Low
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ExposureType {
#[serde(rename = "DIRECT")]
Direct,
#[serde(rename = "INDIRECT")]
Indirect,
#[serde(rename = "ANY")]
Any,
}
impl Default for ExposureType {
fn default() -> ExposureType {
Self::Direct
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "COMPLETED")]
Completed,
#[serde(rename = "PENDING")]
Pending,
#[serde(rename = "REJECTED")]
Rejected,
#[serde(rename = "FAILED")]
Failed,
#[serde(rename = "CANCELED")]
Canceled,
#[serde(rename = "BLOCKING_TIME_EXPIRED")]
BlockingTimeExpired,
}
impl Default for Status {
fn default() -> Status {
Self::Completed
}
}