use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SmartTransferTicketTerm {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "ticketId")]
pub ticket_id: String,
#[serde(rename = "asset")]
pub asset: String,
#[serde(rename = "amount")]
pub amount: String,
#[serde(rename = "amountUsd", skip_serializing_if = "Option::is_none")]
pub amount_usd: Option<String>,
#[serde(rename = "fromNetworkId")]
pub from_network_id: String,
#[serde(rename = "fromNetworkIdName")]
pub from_network_id_name: String,
#[serde(rename = "toNetworkId")]
pub to_network_id: String,
#[serde(rename = "toNetworkIdName")]
pub to_network_id_name: String,
#[serde(rename = "txHash", deserialize_with = "Option::deserialize")]
pub tx_hash: Option<String>,
#[serde(rename = "fbTxId", deserialize_with = "Option::deserialize")]
pub fb_tx_id: Option<String>,
#[serde(rename = "txStatus", deserialize_with = "Option::deserialize")]
pub tx_status: Option<TxStatus>,
#[serde(rename = "status")]
pub status: Status,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
impl SmartTransferTicketTerm {
pub fn new(
id: String,
ticket_id: String,
asset: String,
amount: String,
from_network_id: String,
from_network_id_name: String,
to_network_id: String,
to_network_id_name: String,
tx_hash: Option<String>,
fb_tx_id: Option<String>,
tx_status: Option<TxStatus>,
status: Status,
created_at: String,
updated_at: String,
) -> SmartTransferTicketTerm {
SmartTransferTicketTerm {
id,
ticket_id,
asset,
amount,
amount_usd: None,
from_network_id,
from_network_id_name,
to_network_id,
to_network_id_name,
tx_hash,
fb_tx_id,
tx_status,
status,
created_at,
updated_at,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TxStatus {
#[serde(rename = "queued")]
Queued,
#[serde(rename = "submitted")]
Submitted,
#[serde(rename = "pendingSignature")]
PendingSignature,
#[serde(rename = "pendingAuthorization")]
PendingAuthorization,
#[serde(rename = "broadcasting")]
Broadcasting,
#[serde(rename = "confirming")]
Confirming,
#[serde(rename = "pendingAmlScreening")]
PendingAmlScreening,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "rejected")]
Rejected,
#[serde(rename = "blocked")]
Blocked,
#[serde(rename = "thirdPartyPendingManualApproval")]
ThirdPartyPendingManualApproval,
#[serde(rename = "thirdPartyPending")]
ThirdPartyPending,
#[serde(rename = "partiallyCompleted")]
PartiallyCompleted,
#[serde(rename = "cancelling")]
Cancelling,
}
impl Default for TxStatus {
fn default() -> TxStatus {
Self::Queued
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "CREATED")]
Created,
#[serde(rename = "FUNDING")]
Funding,
#[serde(rename = "FUNDING_FAILED")]
FundingFailed,
#[serde(rename = "FUNDED")]
Funded,
#[serde(rename = "REJECTED")]
Rejected,
}
impl Default for Status {
fn default() -> Status {
Self::Created
}
}