use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct TransactionInitiationRequest {
#[serde(rename = "sourceAccountId")]
pub source_account_id: String,
#[serde(rename = "destinationAccountId", skip_serializing_if = "Option::is_none")]
pub destination_account_id: Option<String>,
#[serde(rename = "description")]
pub description: String,
#[serde(rename = "destinationTransactionInstrument")]
pub destination_transaction_instrument: Box<models::seller_wallet_2024_03_01::TransactionInstrumentDetails>,
#[serde(rename = "destinationAccountHolderAddress", skip_serializing_if = "Option::is_none")]
pub destination_account_holder_address: Option<Box<models::seller_wallet_2024_03_01::AccountHolderAddress>>,
#[serde(rename = "sourceAmount")]
pub source_amount: Box<models::seller_wallet_2024_03_01::Currency>,
#[serde(rename = "transferRateDetails", skip_serializing_if = "Option::is_none")]
pub transfer_rate_details: Option<Box<models::seller_wallet_2024_03_01::TransferRatePreview>>,
#[serde(rename = "requestTime")]
pub request_time: String,
}
impl TransactionInitiationRequest {
pub fn new(source_account_id: String, description: String, destination_transaction_instrument: models::seller_wallet_2024_03_01::TransactionInstrumentDetails, source_amount: models::seller_wallet_2024_03_01::Currency, request_time: String) -> TransactionInitiationRequest {
TransactionInitiationRequest {
source_account_id,
destination_account_id: None,
description,
destination_transaction_instrument: Box::new(destination_transaction_instrument),
destination_account_holder_address: None,
source_amount: Box::new(source_amount),
transfer_rate_details: None,
request_time,
}
}
}