use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ComplianceScreeningResult {
#[serde(rename = "provider", skip_serializing_if = "Option::is_none")]
pub provider: Option<Provider>,
#[serde(rename = "payload", skip_serializing_if = "Option::is_none")]
pub payload: Option<serde_json::Value>,
#[serde(rename = "bypassReason", skip_serializing_if = "Option::is_none")]
pub bypass_reason: Option<BypassReason>,
#[serde(rename = "screeningStatus", skip_serializing_if = "Option::is_none")]
pub screening_status: Option<ScreeningStatus>,
#[serde(rename = "timestamp", skip_serializing_if = "Option::is_none")]
pub timestamp: Option<f64>,
}
impl ComplianceScreeningResult {
pub fn new() -> ComplianceScreeningResult {
ComplianceScreeningResult {
provider: None,
payload: None,
bypass_reason: None,
screening_status: None,
timestamp: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Provider {
#[serde(rename = "CHAINALYSIS")]
Chainalysis,
#[serde(rename = "ELLIPTIC")]
Elliptic,
#[serde(rename = "CHAINALYSIS_V2")]
ChainalysisV2,
#[serde(rename = "ELLIPTIC_HOLISTIC")]
EllipticHolistic,
#[serde(rename = "NONE")]
None,
}
impl Default for Provider {
fn default() -> Provider {
Self::Chainalysis
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum BypassReason {
#[serde(rename = "MANUAL")]
Manual,
#[serde(rename = "UNSUPPORTED_ASSET")]
UnsupportedAsset,
#[serde(rename = "BYPASSED_FAILURE")]
BypassedFailure,
#[serde(rename = "UNSUPPORTED_ROUTE")]
UnsupportedRoute,
#[serde(rename = "PASSED_BY_POLICY")]
PassedByPolicy,
#[serde(rename = "TIMED_OUT")]
TimedOut,
#[serde(rename = "BAD_CREDENTIALS")]
BadCredentials,
#[serde(rename = "CONFIGURATION_ERROR")]
ConfigurationError,
#[serde(rename = "DROPPED_BY_BLOCKCHAIN")]
DroppedByBlockchain,
#[serde(rename = "PROCESS_DISMISSED")]
ProcessDismissed,
}
impl Default for BypassReason {
fn default() -> BypassReason {
Self::Manual
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ScreeningStatus {
#[serde(rename = "COMPLETED")]
Completed,
#[serde(rename = "PENDING")]
Pending,
#[serde(rename = "BYPASSED")]
Bypassed,
#[serde(rename = "FAILED")]
Failed,
#[serde(rename = "FROZEN")]
Frozen,
}
impl Default for ScreeningStatus {
fn default() -> ScreeningStatus {
Self::Completed
}
}