use derive_builder::Builder;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub enum Status {
Pending,
Complete,
Failed,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub enum HintCode {
OutstandingTransaction,
NoClient,
Started,
UserMRTD,
UserCallConfirm,
UserSign,
ExpiredTransaction,
CertificateErr,
UserCancel,
Cancelled,
StartFailed,
UserDeclinedCall,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Builder)]
#[serde(rename_all = "camelCase")]
#[builder(setter(strip_option))]
pub struct Collect {
pub order_ref: String,
pub status: Status,
pub hint_code: Option<HintCode>,
pub completion_data: Option<CompletionData>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Builder)]
#[serde(rename_all = "camelCase")]
pub struct CollectPayload {
pub order_ref: String,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CompletionData {
pub user: User,
pub device: Device,
pub bank_id_issue_date: String,
pub step_up: Option<bool>,
pub signature: String,
pub ocsp_response: String,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Builder)]
#[serde(rename_all = "camelCase")]
pub struct User {
pub personal_number: String,
pub name: String,
pub given_name: String,
pub surname: String,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Builder)]
#[serde(rename_all = "camelCase")]
pub struct Device {
pub ip_address: String,
pub uhi: String,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Builder)]
#[serde(rename_all = "camelCase")]
pub struct Cert {
pub not_before: String,
pub not_after: String,
}