use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SmartTransferTicket {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "type")]
pub r#type: Type,
#[serde(rename = "direction", skip_serializing_if = "Option::is_none")]
pub direction: Option<Direction>,
#[serde(rename = "status")]
pub status: Status,
#[serde(rename = "terms", skip_serializing_if = "Option::is_none")]
pub terms: Option<Vec<models::SmartTransferTicketTerm>>,
#[serde(rename = "expiresIn", skip_serializing_if = "Option::is_none")]
pub expires_in: Option<f64>,
#[serde(rename = "expiresAt", skip_serializing_if = "Option::is_none")]
pub expires_at: Option<String>,
#[serde(rename = "submittedAt", skip_serializing_if = "Option::is_none")]
pub submitted_at: Option<String>,
#[serde(rename = "expiredAt", skip_serializing_if = "Option::is_none")]
pub expired_at: Option<String>,
#[serde(rename = "canceledAt", skip_serializing_if = "Option::is_none")]
pub canceled_at: Option<String>,
#[serde(rename = "fulfilledAt", skip_serializing_if = "Option::is_none")]
pub fulfilled_at: Option<String>,
#[serde(rename = "externalRefId", skip_serializing_if = "Option::is_none")]
pub external_ref_id: Option<String>,
#[serde(rename = "note", skip_serializing_if = "Option::is_none")]
pub note: Option<String>,
#[serde(rename = "createdByNetworkId")]
pub created_by_network_id: String,
#[serde(rename = "createdByNetworkIdName")]
pub created_by_network_id_name: String,
#[serde(
rename = "canceledByNetworkIdName",
skip_serializing_if = "Option::is_none"
)]
pub canceled_by_network_id_name: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(rename = "canceledByMe", skip_serializing_if = "Option::is_none")]
pub canceled_by_me: Option<bool>,
#[serde(rename = "createdByMe", skip_serializing_if = "Option::is_none")]
pub created_by_me: Option<bool>,
}
impl SmartTransferTicket {
pub fn new(
id: String,
r#type: Type,
status: Status,
created_by_network_id: String,
created_by_network_id_name: String,
created_at: String,
updated_at: String,
) -> SmartTransferTicket {
SmartTransferTicket {
id,
r#type,
direction: None,
status,
terms: None,
expires_in: None,
expires_at: None,
submitted_at: None,
expired_at: None,
canceled_at: None,
fulfilled_at: None,
external_ref_id: None,
note: None,
created_by_network_id,
created_by_network_id_name,
canceled_by_network_id_name: None,
created_at,
updated_at,
canceled_by_me: None,
created_by_me: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "ASYNC")]
Async,
}
impl Default for Type {
fn default() -> Type {
Self::Async
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Direction {
#[serde(rename = "EXCHANGE")]
Exchange,
#[serde(rename = "SEND")]
Send,
#[serde(rename = "RECEIVE")]
Receive,
#[serde(rename = "INTERMEDIATE")]
Intermediate,
}
impl Default for Direction {
fn default() -> Direction {
Self::Exchange
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "DRAFT")]
Draft,
#[serde(rename = "PENDING_APPROVAL")]
PendingApproval,
#[serde(rename = "OPEN")]
Open,
#[serde(rename = "IN_SETTLEMENT")]
InSettlement,
#[serde(rename = "FULFILLED")]
Fulfilled,
#[serde(rename = "EXPIRED")]
Expired,
#[serde(rename = "CANCELED")]
Canceled,
}
impl Default for Status {
fn default() -> Status {
Self::Draft
}
}