use crate::params::{Object};
use crate::resources::{Currency};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructions {
pub bank_transfer: FundingInstructionsBankTransfer,
pub currency: Currency,
pub funding_type: FundingInstructionsFundingType,
pub livemode: bool,
}
impl Object for FundingInstructions {
type Id = ();
fn id(&self) -> Self::Id {}
fn object(&self) -> &'static str {
"funding_instructions"
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransfer {
pub country: String,
pub financial_addresses: Vec<FundingInstructionsBankTransferFinancialAddress>,
#[serde(rename = "type")]
pub type_: FundingInstructionsBankTransferType,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransferFinancialAddress {
#[serde(skip_serializing_if = "Option::is_none")]
pub aba: Option<FundingInstructionsBankTransferAbaRecord>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iban: Option<FundingInstructionsBankTransferIbanRecord>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_code: Option<FundingInstructionsBankTransferSortCodeRecord>,
#[serde(skip_serializing_if = "Option::is_none")]
pub spei: Option<FundingInstructionsBankTransferSpeiRecord>,
#[serde(skip_serializing_if = "Option::is_none")]
pub supported_networks: Option<Vec<FundingInstructionsBankTransferFinancialAddressSupportedNetworks>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub swift: Option<FundingInstructionsBankTransferSwiftRecord>,
#[serde(rename = "type")]
pub type_: FundingInstructionsBankTransferFinancialAddressType,
#[serde(skip_serializing_if = "Option::is_none")]
pub zengin: Option<FundingInstructionsBankTransferZenginRecord>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransferAbaRecord {
pub account_number: String,
pub bank_name: String,
pub routing_number: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransferIbanRecord {
pub account_holder_name: String,
pub bic: String,
pub country: String,
pub iban: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransferSortCodeRecord {
pub account_holder_name: String,
pub account_number: String,
pub sort_code: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransferSpeiRecord {
pub bank_code: String,
pub bank_name: String,
pub clabe: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransferSwiftRecord {
pub account_number: String,
pub bank_name: String,
pub swift_code: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct FundingInstructionsBankTransferZenginRecord {
pub account_holder_name: Option<String>,
pub account_number: Option<String>,
pub account_type: Option<String>,
pub bank_code: Option<String>,
pub bank_name: Option<String>,
pub branch_code: Option<String>,
pub branch_name: Option<String>,
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum FundingInstructionsBankTransferFinancialAddressSupportedNetworks {
Ach,
Bacs,
DomesticWireUs,
Fps,
Sepa,
Spei,
Swift,
Zengin,
}
impl FundingInstructionsBankTransferFinancialAddressSupportedNetworks {
pub fn as_str(self) -> &'static str {
match self {
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::Ach => "ach",
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::Bacs => "bacs",
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::DomesticWireUs => "domestic_wire_us",
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::Fps => "fps",
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::Sepa => "sepa",
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::Spei => "spei",
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::Swift => "swift",
FundingInstructionsBankTransferFinancialAddressSupportedNetworks::Zengin => "zengin",
}
}
}
impl AsRef<str> for FundingInstructionsBankTransferFinancialAddressSupportedNetworks {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for FundingInstructionsBankTransferFinancialAddressSupportedNetworks {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for FundingInstructionsBankTransferFinancialAddressSupportedNetworks {
fn default() -> Self {
Self::Ach
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum FundingInstructionsBankTransferFinancialAddressType {
Aba,
Iban,
SortCode,
Spei,
Swift,
Zengin,
}
impl FundingInstructionsBankTransferFinancialAddressType {
pub fn as_str(self) -> &'static str {
match self {
FundingInstructionsBankTransferFinancialAddressType::Aba => "aba",
FundingInstructionsBankTransferFinancialAddressType::Iban => "iban",
FundingInstructionsBankTransferFinancialAddressType::SortCode => "sort_code",
FundingInstructionsBankTransferFinancialAddressType::Spei => "spei",
FundingInstructionsBankTransferFinancialAddressType::Swift => "swift",
FundingInstructionsBankTransferFinancialAddressType::Zengin => "zengin",
}
}
}
impl AsRef<str> for FundingInstructionsBankTransferFinancialAddressType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for FundingInstructionsBankTransferFinancialAddressType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for FundingInstructionsBankTransferFinancialAddressType {
fn default() -> Self {
Self::Aba
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum FundingInstructionsBankTransferType {
EuBankTransfer,
JpBankTransfer,
}
impl FundingInstructionsBankTransferType {
pub fn as_str(self) -> &'static str {
match self {
FundingInstructionsBankTransferType::EuBankTransfer => "eu_bank_transfer",
FundingInstructionsBankTransferType::JpBankTransfer => "jp_bank_transfer",
}
}
}
impl AsRef<str> for FundingInstructionsBankTransferType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for FundingInstructionsBankTransferType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for FundingInstructionsBankTransferType {
fn default() -> Self {
Self::EuBankTransfer
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum FundingInstructionsFundingType {
BankTransfer,
}
impl FundingInstructionsFundingType {
pub fn as_str(self) -> &'static str {
match self {
FundingInstructionsFundingType::BankTransfer => "bank_transfer",
}
}
}
impl AsRef<str> for FundingInstructionsFundingType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for FundingInstructionsFundingType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for FundingInstructionsFundingType {
fn default() -> Self {
Self::BankTransfer
}
}