use crate::types::{ChallengeWindowSize, MessageVersion};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ChallengeRequest {
pub message_type: MessageType,
pub message_version: MessageVersion,
#[serde(rename = "threeDSServerTransID")]
pub three_ds_server_trans_id: String,
#[serde(rename = "acsTransID")]
pub acs_trans_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub challenge_data_entry: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub challenge_window_size: Option<ChallengeWindowSize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub challenge_completion_ind: Option<CompletionIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_trans_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resend_challenge: Option<ResendChallenge>,
#[serde(skip_serializing_if = "Option::is_none")]
pub whitelist_status_source: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum MessageType {
CReq,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum CompletionIndicator {
#[serde(rename = "Y")]
Completed,
#[serde(rename = "N")]
NotCompleted,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum ResendChallenge {
#[serde(rename = "Y")]
Yes,
}