use serde::{Deserialize, Serialize};
pub type Access = String;
pub const Access_UNKNOWN: &str = "unknown";
pub const Access_NONE: &str = "none";
pub const Access_SAFE: &str = "safe";
pub const Access_FULL: &str = "full";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Config {
pub regions: Vec<ConfigRegion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegion {
pub country_code: String,
pub min_access_age: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub region_code: Option<String>,
pub rules: Vec<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleDefault {
pub access: Access,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAccountNewerThan {
pub access: Access,
pub date: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAccountOlderThan {
pub access: Access,
pub date: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAssuredOverAge {
pub access: Access,
pub age: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAssuredUnderAge {
pub access: Access,
pub age: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfDeclaredOverAge {
pub access: Access,
pub age: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfDeclaredUnderAge {
pub access: Access,
pub age: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Event {
pub access: String,
pub attempt_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub complete_ip: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub complete_ua: Option<String>,
pub country_code: String,
pub created_at: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub init_ip: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub init_ua: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region_code: Option<String>,
pub status: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct State {
pub access: Access,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_initiated_at: Option<String>,
pub status: Status,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StateMetadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub account_created_at: Option<String>,
}
pub type Status = String;
pub const Status_UNKNOWN: &str = "unknown";
pub const Status_PENDING: &str = "pending";
pub const Status_ASSURED: &str = "assured";
pub const Status_BLOCKED: &str = "blocked";