use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct BusinessCustomerPrefill {
#[serde(rename = "Type")]
pub r#type: Type,
#[serde(
rename = "RegistrationCountry",
skip_serializing_if = "Option::is_none"
)]
pub registration_country: Option<String>,
#[serde(rename = "CompanyName", skip_serializing_if = "Option::is_none")]
pub company_name: Option<String>,
#[serde(rename = "RegistrationNumber", skip_serializing_if = "Option::is_none")]
pub registration_number: Option<String>,
#[serde(rename = "LegalAddress", skip_serializing_if = "Option::is_none")]
pub legal_address: Option<Box<models::StreetAddress>>,
#[serde(rename = "IncorporationDate", skip_serializing_if = "Option::is_none")]
pub incorporation_date: Option<String>,
#[serde(rename = "EntityType", skip_serializing_if = "Option::is_none")]
pub entity_type: Option<models::EntityEnum>,
#[serde(rename = "TaxID", skip_serializing_if = "Option::is_none")]
pub tax_id: Option<String>,
#[serde(rename = "PrimaryWebsite", skip_serializing_if = "Option::is_none")]
pub primary_website: Option<String>,
#[serde(rename = "TradeName", skip_serializing_if = "Option::is_none")]
pub trade_name: Option<String>,
#[serde(
rename = "RegisteredForeignBranches",
skip_serializing_if = "Option::is_none"
)]
pub registered_foreign_branches: Option<Vec<models::RegisteredForeignBranchesInput>>,
#[serde(
rename = "PrimaryPhysicalAddress",
skip_serializing_if = "Option::is_none"
)]
pub primary_physical_address: Option<Box<models::StreetAddress>>,
#[serde(rename = "OwnershipType", skip_serializing_if = "Option::is_none")]
pub ownership_type: Option<OwnershipType>,
#[serde(
rename = "LegalEntityIdentifier",
skip_serializing_if = "Option::is_none"
)]
pub legal_entity_identifier: Option<String>,
#[serde(rename = "NAICSCode", skip_serializing_if = "Option::is_none")]
pub naics_code: Option<String>,
#[serde(rename = "SourceOfFunds", skip_serializing_if = "Option::is_none")]
pub source_of_funds: Option<SourceOfFunds>,
#[serde(rename = "FinancialsUsd", skip_serializing_if = "Option::is_none")]
pub financials_usd: Option<Box<models::BusinessFinancialsInput>>,
#[serde(
rename = "MonthlyTransactionFrequency",
skip_serializing_if = "Option::is_none"
)]
pub monthly_transaction_frequency: Option<MonthlyTransactionFrequency>,
#[serde(rename = "Associates", skip_serializing_if = "Option::is_none")]
pub associates: Option<Vec<models::AssociateInformationInput>>,
#[serde(rename = "BusinessAssociates", skip_serializing_if = "Option::is_none")]
pub business_associates: Option<Vec<models::BusinessAssociateInformationInput>>,
#[serde(rename = "AMLCTFRegulated", skip_serializing_if = "Option::is_none")]
pub amlctf_regulated: Option<Box<models::BusinessCustomerPrefillAmlctfRegulated>>,
}
impl BusinessCustomerPrefill {
pub fn new(r#type: Type) -> BusinessCustomerPrefill {
BusinessCustomerPrefill {
r#type,
registration_country: None,
company_name: None,
registration_number: None,
legal_address: None,
incorporation_date: None,
entity_type: None,
tax_id: None,
primary_website: None,
trade_name: None,
registered_foreign_branches: None,
primary_physical_address: None,
ownership_type: None,
legal_entity_identifier: None,
naics_code: None,
source_of_funds: None,
financials_usd: None,
monthly_transaction_frequency: None,
associates: None,
business_associates: None,
amlctf_regulated: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "BusinessCustomerPrefill")]
BusinessCustomerPrefill,
}
impl Default for Type {
fn default() -> Type {
Self::BusinessCustomerPrefill
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum OwnershipType {
#[serde(rename = "Private")]
Private,
#[serde(rename = "PublicListed")]
PublicListed,
#[serde(rename = "GovernmentOwned")]
GovernmentOwned,
#[serde(rename = "Partnership")]
Partnership,
#[serde(rename = "SoleProprietorship")]
SoleProprietorship,
#[serde(rename = "NonProfit")]
NonProfit,
#[serde(rename = "Cooperative")]
Cooperative,
#[serde(rename = "JointVenture")]
JointVenture,
#[serde(rename = "ForeignOwned")]
ForeignOwned,
#[serde(rename = "Subsidiary")]
Subsidiary,
#[serde(rename = "TrustOwned")]
TrustOwned,
#[serde(rename = "CommunityOwned")]
CommunityOwned,
#[serde(rename = "FoundationOwned")]
FoundationOwned,
#[serde(rename = "LLC")]
Llc,
}
impl Default for OwnershipType {
fn default() -> OwnershipType {
Self::Private
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum SourceOfFunds {
#[serde(rename = "Revenue")]
Revenue,
#[serde(rename = "Investments")]
Investments,
#[serde(rename = "LoansCredits")]
LoansCredits,
#[serde(rename = "TradingIncome")]
TradingIncome,
#[serde(rename = "CryptoMining")]
CryptoMining,
#[serde(rename = "ClientFunds")]
ClientFunds,
}
impl Default for SourceOfFunds {
fn default() -> SourceOfFunds {
Self::Revenue
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum MonthlyTransactionFrequency {
#[serde(rename = "UpTo10")]
UpTo10,
#[serde(rename = "UpTo20")]
UpTo20,
#[serde(rename = "UpTo50")]
UpTo50,
#[serde(rename = "Above50")]
Above50,
}
impl Default for MonthlyTransactionFrequency {
fn default() -> MonthlyTransactionFrequency {
Self::UpTo10
}
}