1use {
10 crate::models,
11 serde::{Deserialize, Serialize},
12};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct ScreeningMetadataConfigV2 {
17 #[serde(rename = "direction")]
19 pub direction: Direction,
20 #[serde(
22 rename = "provider",
23 default,
24 with = "::serde_with::rust::double_option",
25 skip_serializing_if = "Option::is_none"
26 )]
27 pub provider: Option<Option<Provider>>,
28 #[serde(rename = "riskRating", skip_serializing_if = "Option::is_none")]
30 pub risk_rating: Option<RiskRating>,
31 #[serde(rename = "riskScore", skip_serializing_if = "Option::is_none")]
33 pub risk_score: Option<String>,
34 #[serde(rename = "exposureType", skip_serializing_if = "Option::is_none")]
36 pub exposure_type: Option<ExposureType>,
37 #[serde(rename = "category", skip_serializing_if = "Option::is_none")]
38 pub category: Option<Vec<String>>,
39 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
40 pub name: Option<Vec<String>>,
41 #[serde(rename = "categoryId", skip_serializing_if = "Option::is_none")]
42 pub category_id: Option<Vec<String>>,
43 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
45 pub status: Option<Status>,
46 #[serde(rename = "sourceAddress", skip_serializing_if = "Option::is_none")]
48 pub source_address: Option<String>,
49 #[serde(rename = "destAddress", skip_serializing_if = "Option::is_none")]
51 pub dest_address: Option<String>,
52}
53
54impl ScreeningMetadataConfigV2 {
55 pub fn new(direction: Direction) -> ScreeningMetadataConfigV2 {
57 ScreeningMetadataConfigV2 {
58 direction,
59 provider: None,
60 risk_rating: None,
61 risk_score: None,
62 exposure_type: None,
63 category: None,
64 name: None,
65 category_id: None,
66 status: None,
67 source_address: None,
68 dest_address: None,
69 }
70 }
71}
72#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
74pub enum Direction {
75 #[serde(rename = "INBOUND")]
76 Inbound,
77 #[serde(rename = "OUTBOUND")]
78 Outbound,
79 #[serde(rename = "ANY")]
80 Any,
81}
82
83impl Default for Direction {
84 fn default() -> Direction {
85 Self::Inbound
86 }
87}
88#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
90pub enum Provider {
91 #[serde(rename = "CHAINALYSIS")]
92 Chainalysis,
93 #[serde(rename = "CHAINALYSIS_V2")]
94 ChainalysisV2,
95 #[serde(rename = "ELLIPTIC")]
96 Elliptic,
97 #[serde(rename = "ELLIPTIC_HOLISTIC")]
98 EllipticHolistic,
99 #[serde(rename = "NOTABENE")]
100 Notabene,
101}
102
103impl Default for Provider {
104 fn default() -> Provider {
105 Self::Chainalysis
106 }
107}
108#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
110pub enum RiskRating {
111 #[serde(rename = "LOW")]
112 Low,
113 #[serde(rename = "MEDIUM")]
114 Medium,
115 #[serde(rename = "HIGH")]
116 High,
117 #[serde(rename = "SEVERE")]
118 Severe,
119 #[serde(rename = "ANY")]
120 Any,
121}
122
123impl Default for RiskRating {
124 fn default() -> RiskRating {
125 Self::Low
126 }
127}
128#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
130pub enum ExposureType {
131 #[serde(rename = "DIRECT")]
132 Direct,
133 #[serde(rename = "INDIRECT")]
134 Indirect,
135 #[serde(rename = "ANY")]
136 Any,
137}
138
139impl Default for ExposureType {
140 fn default() -> ExposureType {
141 Self::Direct
142 }
143}
144#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
146pub enum Status {
147 #[serde(rename = "COMPLETED")]
148 Completed,
149 #[serde(rename = "PENDING")]
150 Pending,
151 #[serde(rename = "REJECTED")]
152 Rejected,
153 #[serde(rename = "FAILED")]
154 Failed,
155 #[serde(rename = "CANCELED")]
156 Canceled,
157 #[serde(rename = "BLOCKING_TIME_EXPIRED")]
158 BlockingTimeExpired,
159}
160
161impl Default for Status {
162 fn default() -> Status {
163 Self::Completed
164 }
165}