// Copyright 2023 Emergent Financial, LLC - All Rights Reserved // // // This software is licensed under the Emergent Financial Limited Public License Version 1.0 // (EF-LPLv1). You may use, copy, modify, and distribute this software under the terms and // conditions of the EF-LPL. For more information, please refer to the full text of the license // at https://github.com/emergentfinancial/ef-lpl. // // // THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // See ISO-20022 Intellectual Property Rights Policy at // // for more information. use validator::Validate; ::lazy_static::lazy_static! { static ref ISIN_OCT_2015_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}[A-Z0-9]{9,9}[0-9]{1,1}"#).unwrap(); } ::lazy_static::lazy_static! { static ref MAX_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{1,4}"#).unwrap(); } ::lazy_static::lazy_static! { static ref RESTRICTED_FINX_MAX_30_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9a-zA-Z\-\?:\(\)\.,'\+ ]([0-9a-zA-Z\-\?:\(\)\.,'\+ ]*(/[0-9a-zA-Z\-\?:\(\)\.,'\+ ])?)*)"#).unwrap(); } ::lazy_static::lazy_static! { static ref EXACT_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{4}"#).unwrap(); } ::lazy_static::lazy_static! { static ref ANY_BIC_DEC_2014_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"#).unwrap(); } ::lazy_static::lazy_static! { static ref RESTRICTED_FINX_MAX_34_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9a-zA-Z\-\?:\(\)\.,'\+ ]([0-9a-zA-Z\-\?:\(\)\.,'\+ ]*(/[0-9a-zA-Z\-\?:\(\)\.,'\+ ])?)*)"#).unwrap(); } ::lazy_static::lazy_static! { static ref RESTRICTED_FINX_MAX_31_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,31}"#).unwrap(); } ::lazy_static::lazy_static! { static ref COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}"#).unwrap(); } ::lazy_static::lazy_static! { static ref RESTRICTED_FINX_MAX_35_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35}"#).unwrap(); } ::lazy_static::lazy_static! { static ref RESTRICTED_FIN_EXACT_2_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"XX|TS"#).unwrap(); } ::lazy_static::lazy_static! { static ref RESTRICTED_FINX_MAX_140_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[0-9a-zA-Z/\-\?:\(\)\.\n\r,'\+ ]{1,140}"#).unwrap(); } ::lazy_static::lazy_static! { static ref RESTRICTED_FINX_MAX_16_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"([0-9a-zA-Z\-\?:\(\)\.,'\+ ]([0-9a-zA-Z\-\?:\(\)\.,'\+ ]*(/[0-9a-zA-Z\-\?:\(\)\.,'\+ ])?)*)"#).unwrap(); } /// Returns the namespace of the schema pub fn namespace() -> String { "urn:iso:std:iso:20022:tech:xsd:seev.044.002.11".to_string() } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct IsinOct2015Identifier { #[validate(regex = "ISIN_OCT_2015_IDENTIFIER_REGEX")] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionGeneralInformation150 { #[validate] #[serde(rename = "CorpActnEvtId")] pub corp_actn_evt_id: RestrictedFinxMax16Text, #[serde(rename = "OffclCorpActnEvtId", skip_serializing_if = "Option::is_none")] pub offcl_corp_actn_evt_id: Option, #[serde(rename = "ClssActnNb", skip_serializing_if = "Option::is_none")] pub clss_actn_nb: Option, #[serde(rename = "EvtTp")] pub evt_tp: CorporateActionEventType97Choice, #[serde(rename = "MndtryVlntryEvtTp")] pub mndtry_vlntry_evt_tp: CorporateActionMandatoryVoluntary4Choice, #[validate] #[serde(rename = "FinInstrmId")] pub fin_instrm_id: SecurityIdentification20, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionEventType97ChoiceEnum { #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")] pub cd: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionEventType97Choice { #[serde(flatten)] pub value: CorporateActionEventType97ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct LotteryTypeFormat5ChoiceEnum { #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")] pub cd: Option, #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct LotteryTypeFormat5Choice { #[serde(flatten)] pub value: LotteryTypeFormat5ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct IsoDate { #[serde(rename = "$text")] pub value: ::chrono::NaiveDate, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum CorporateActionMandatoryVoluntary1Code { #[serde(rename = "MAND")] Mand, #[serde(rename = "CHOS")] Chos, #[serde(rename = "VOLU")] Volu, #[default] Unknown, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum CorporateActionEventType32Code { #[serde(rename = "ACTV")] Actv, #[serde(rename = "ATTI")] Atti, #[serde(rename = "BRUP")] Brup, #[serde(rename = "DFLT")] Dflt, #[serde(rename = "BONU")] Bonu, #[serde(rename = "EXRI")] Exri, #[serde(rename = "CAPD")] Capd, #[serde(rename = "CAPG")] Capg, #[serde(rename = "CAPI")] Capi, #[serde(rename = "DRCA")] Drca, #[serde(rename = "DVCA")] Dvca, #[serde(rename = "CHAN")] Chan, #[serde(rename = "COOP")] Coop, #[serde(rename = "CLSA")] Clsa, #[serde(rename = "CONS")] Cons, #[serde(rename = "CONV")] Conv, #[serde(rename = "CREV")] Crev, #[serde(rename = "DECR")] Decr, #[serde(rename = "DETI")] Deti, #[serde(rename = "DSCL")] Dscl, #[serde(rename = "DVOP")] Dvop, #[serde(rename = "DRIP")] Drip, #[serde(rename = "DRAW")] Draw, #[serde(rename = "DTCH")] Dtch, #[serde(rename = "EXOF")] Exof, #[serde(rename = "REDM")] Redm, #[serde(rename = "MCAL")] Mcal, #[serde(rename = "INCR")] Incr, #[serde(rename = "PPMT")] Ppmt, #[serde(rename = "INTR")] Intr, #[serde(rename = "RHDI")] Rhdi, #[serde(rename = "LIQU")] Liqu, #[serde(rename = "EXTM")] Extm, #[serde(rename = "MRGR")] Mrgr, #[serde(rename = "NOOF")] Noof, #[serde(rename = "CERT")] Cert, #[serde(rename = "ODLT")] Odlt, #[serde(rename = "OTHR")] Othr, #[serde(rename = "PARI")] Pari, #[serde(rename = "PCAL")] Pcal, #[serde(rename = "PRED")] Pred, #[serde(rename = "PINK")] Pink, #[serde(rename = "PLAC")] Plac, #[serde(rename = "PDEF")] Pdef, #[serde(rename = "PRIO")] Prio, #[serde(rename = "BPUT")] Bput, #[serde(rename = "REDO")] Redo, #[serde(rename = "REMK")] Remk, #[serde(rename = "BIDS")] Bids, #[serde(rename = "SPLR")] Splr, #[serde(rename = "RHTS")] Rhts, #[serde(rename = "DVSC")] Dvsc, #[serde(rename = "SHPR")] Shpr, #[serde(rename = "SMAL")] Smal, #[serde(rename = "SOFF")] Soff, #[serde(rename = "DVSE")] Dvse, #[serde(rename = "SPLF")] Splf, #[serde(rename = "TREC")] Trec, #[serde(rename = "TEND")] Tend, #[serde(rename = "DLST")] Dlst, #[serde(rename = "SUSP")] Susp, #[serde(rename = "EXWA")] Exwa, #[serde(rename = "WTRC")] Wtrc, #[serde(rename = "WRTH")] Wrth, #[serde(rename = "ACCU")] Accu, #[serde(rename = "TNDP")] Tndp, #[default] Unknown, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct Max4AlphaNumericText { #[validate(length(min = 1, max = 4,), regex = "MAX_4_ALPHA_NUMERIC_TEXT_REGEX")] #[serde(rename = "$text")] pub value: String, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum ProcessingPosition3Code { #[serde(rename = "AFTE")] Afte, #[serde(rename = "WITH")] With, #[serde(rename = "BEFO")] Befo, #[serde(rename = "INFO")] Info, #[default] Unknown, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum LotteryType1Code { #[serde(rename = "ORIG")] Orig, #[serde(rename = "SUPP")] Supp, #[default] Unknown, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct PartyIdentification136ChoiceEnum { #[serde(rename = "AnyBIC", skip_serializing_if = "Option::is_none")] pub any_bic: Option, #[serde(rename = "PrtryId", skip_serializing_if = "Option::is_none")] pub prtry_id: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct PartyIdentification136Choice { #[serde(flatten)] pub value: PartyIdentification136ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct RestrictedFinxMax30Text { #[validate( length(min = 1, max = 30,), regex = "RESTRICTED_FINX_MAX_30_TEXT_REGEX" )] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct OtherIdentification2 { #[validate] #[serde(rename = "Id")] pub id: RestrictedFinxMax31Text, #[serde(rename = "Sfx", skip_serializing_if = "Option::is_none")] pub sfx: Option, #[serde(rename = "Tp")] pub tp: IdentificationSource4Choice, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct SupplementaryData1< A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate, > { #[serde(rename = "PlcAndNm", skip_serializing_if = "Option::is_none")] pub plc_and_nm: Option, #[validate] #[serde(rename = "Envlp")] pub envlp: SupplementaryDataEnvelope1, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct GenericIdentification85 { #[validate] #[serde(rename = "Tp")] pub tp: GenericIdentification47, #[serde(rename = "Id", skip_serializing_if = "Option::is_none")] pub id: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct SafekeepingPlaceTypeAndText9 { #[serde(rename = "SfkpgPlcTp")] pub sfkpg_plc_tp: SafekeepingPlace2Code, #[serde(rename = "Id", skip_serializing_if = "Option::is_none")] pub id: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct SecurityIdentification20 { #[serde(rename = "ISIN", skip_serializing_if = "Option::is_none")] pub isin: Option, #[validate(length(min = 0,))] #[serde(rename = "OthrId", default)] pub othr_id: Vec, #[serde(rename = "Desc", skip_serializing_if = "Option::is_none")] pub desc: Option, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum SafekeepingPlace2Code { #[serde(rename = "SHHE")] Shhe, #[serde(rename = "ALLP")] Allp, #[default] Unknown, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct PartyIdentification137ChoiceEnum { #[serde(rename = "NmAndAdr", skip_serializing_if = "Option::is_none")] pub nm_and_adr: Option, #[serde(rename = "AnyBIC", skip_serializing_if = "Option::is_none")] pub any_bic: Option, #[serde(rename = "PrtryId", skip_serializing_if = "Option::is_none")] pub prtry_id: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct PartyIdentification137Choice { #[serde(flatten)] pub value: PartyIdentification137ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct Exact4AlphaNumericText { #[validate(regex = "EXACT_4_ALPHA_NUMERIC_TEXT_REGEX")] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionDate66 { #[serde(rename = "RcrdDt", skip_serializing_if = "Option::is_none")] pub rcrd_dt: Option, #[serde(rename = "ExDvddDt", skip_serializing_if = "Option::is_none")] pub ex_dvdd_dt: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct AccountIdentification61 { #[serde(rename = "SfkpgAcct", skip_serializing_if = "Option::is_none")] pub sfkpg_acct: Option, #[serde(rename = "BlckChainAdrOrWllt", skip_serializing_if = "Option::is_none")] pub blck_chain_adr_or_wllt: Option, #[serde(rename = "AcctOwnr", skip_serializing_if = "Option::is_none")] pub acct_ownr: Option, #[serde(rename = "SfkpgPlc", skip_serializing_if = "Option::is_none")] pub sfkpg_plc: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct AnyBicDec2014Identifier { #[validate(regex = "ANY_BIC_DEC_2014_IDENTIFIER_REGEX")] #[serde(rename = "$text")] pub value: String, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum DateType8Code { #[serde(rename = "UKWN")] Ukwn, #[serde(rename = "ONGO")] Ongo, #[default] Unknown, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct Max16Text { #[validate(length(min = 1, max = 16,))] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionMandatoryVoluntary4ChoiceEnum { #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")] pub cd: Option, #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionMandatoryVoluntary4Choice { #[serde(flatten)] pub value: CorporateActionMandatoryVoluntary4ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct DateCode22ChoiceEnum { #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")] pub cd: Option, #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct DateCode22Choice { #[serde(flatten)] pub value: DateCode22ChoiceEnum, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum SafekeepingPlace1Code { #[serde(rename = "CUST")] Cust, #[serde(rename = "ICSD")] Icsd, #[serde(rename = "NCSD")] Ncsd, #[serde(rename = "SHHE")] Shhe, #[default] Unknown, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct AccountIdentification50ChoiceEnum { #[serde(rename = "ForAllAccts", skip_serializing_if = "Option::is_none")] pub for_all_accts: Option, #[serde(rename = "AcctsList", skip_serializing_if = "Option::is_none")] pub accts_list: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct AccountIdentification50Choice { #[serde(flatten)] pub value: AccountIdentification50ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct DocumentIdentification37 { #[validate] #[serde(rename = "Id")] pub id: RestrictedFinxMax16Text, #[serde(rename = "LkgTp", skip_serializing_if = "Option::is_none")] pub lkg_tp: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct SupplementaryDataEnvelope1< A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate, > { #[validate] #[serde(flatten)] pub value: A, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct DateFormat49ChoiceEnum { #[serde(rename = "Dt", skip_serializing_if = "Option::is_none")] pub dt: Option, #[serde(rename = "DtCd", skip_serializing_if = "Option::is_none")] pub dt_cd: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct DateFormat49Choice { #[serde(flatten)] pub value: DateFormat49ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct DateAndDateTime2ChoiceEnum { #[serde(rename = "DtTm", skip_serializing_if = "Option::is_none")] pub dt_tm: Option, #[serde(rename = "Dt", skip_serializing_if = "Option::is_none")] pub dt: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct DateAndDateTime2Choice { #[serde(flatten)] pub value: DateAndDateTime2ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct RestrictedFinxMax34Text { #[validate( length(min = 1, max = 34,), regex = "RESTRICTED_FINX_MAX_34_TEXT_REGEX" )] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] #[serde(rename = "Document")] pub struct Document< A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate, > { #[serde(rename = "CorpActnMvmntPrlimryAdvcCxlAdvc")] pub corp_actn_mvmnt_prlimry_advc_cxl_advc: CorporateActionMovementPreliminaryAdviceCancellationAdvice002V11, #[serde(rename = "@xmlns", default = "namespace")] pub xmlns: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct GenericIdentification47 { #[validate] #[serde(rename = "Id")] pub id: Exact4AlphaNumericText, #[validate] #[serde(rename = "Issr")] pub issr: Max4AlphaNumericText, #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")] pub schme_nm: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct SafekeepingPlaceFormat32ChoiceEnum { #[serde(rename = "Id", skip_serializing_if = "Option::is_none")] pub id: Option, #[serde(rename = "TpAndId", skip_serializing_if = "Option::is_none")] pub tp_and_id: Option, #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")] pub ctry: Option, #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct SafekeepingPlaceFormat32Choice { #[serde(flatten)] pub value: SafekeepingPlaceFormat32ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct RestrictedFinxMax31Text { #[validate( length(min = 1, max = 31,), regex = "RESTRICTED_FINX_MAX_31_TEXT_REGEX" )] #[serde(rename = "$text")] pub value: String, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum SafekeepingAccountIdentification1Code { #[serde(rename = "GENR")] Genr, #[default] Unknown, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct NameAndAddress12 { #[validate] #[serde(rename = "Nm")] pub nm: RestrictedFinxMax140Text, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CountryCode { #[validate(regex = "COUNTRY_CODE_REGEX")] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct AccountIdentification10 { #[serde(rename = "IdCd")] pub id_cd: SafekeepingAccountIdentification1Code, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct IdentificationSource4ChoiceEnum { #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")] pub cd: Option, #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct IdentificationSource4Choice { #[serde(flatten)] pub value: IdentificationSource4ChoiceEnum, } #[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)] pub enum CorporateActionEventStage4Code { #[serde(rename = "FULL")] Full, #[serde(rename = "PART")] Part, #[serde(rename = "RESC")] Resc, #[default] Unknown, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct ExternalFinancialInstrumentIdentificationType1Code { #[validate(length(min = 1, max = 4,))] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct Max350Text { #[validate(length(min = 1, max = 350,))] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct ProcessingPosition10ChoiceEnum { #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")] pub cd: Option, #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct ProcessingPosition10Choice { #[serde(flatten)] pub value: ProcessingPosition10ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct SafekeepingPlaceTypeAndIdentification1 { #[serde(rename = "SfkpgPlcTp")] pub sfkpg_plc_tp: SafekeepingPlace1Code, #[validate] #[serde(rename = "Id")] pub id: AnyBicDec2014Identifier, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct IsoDateTime { #[serde(rename = "$text")] pub value: ::chrono::DateTime<::chrono::Utc>, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct RestrictedFinxMax35Text { #[validate( length(min = 1, max = 35,), regex = "RESTRICTED_FINX_MAX_35_TEXT_REGEX" )] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct RestrictedFinExact2Text { #[validate(regex = "RESTRICTED_FIN_EXACT_2_TEXT_REGEX")] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct RestrictedFinxMax140Text { #[validate( length(min = 1, max = 140,), regex = "RESTRICTED_FINX_MAX_140_TEXT_REGEX" )] #[serde(rename = "$text")] pub value: String, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateAction48 { #[serde(rename = "DtDtls", skip_serializing_if = "Option::is_none")] pub dt_dtls: Option, #[serde(rename = "EvtStag", skip_serializing_if = "Option::is_none")] pub evt_stag: Option, #[serde(rename = "LtryTp", skip_serializing_if = "Option::is_none")] pub ltry_tp: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionMovementPreliminaryAdviceCancellationAdvice002V11< A: std::fmt::Debug + Default + Clone + PartialEq + ::serde::Serialize + ::validator::Validate, > { #[validate] #[serde(rename = "MvmntPrlimryAdvcId")] pub mvmnt_prlimry_advc_id: DocumentIdentification37, #[validate] #[serde(rename = "CorpActnGnlInf")] pub corp_actn_gnl_inf: CorporateActionGeneralInformation150, #[serde(rename = "AcctDtls")] pub acct_dtls: AccountIdentification50Choice, #[serde(rename = "CorpActnDtls", skip_serializing_if = "Option::is_none")] pub corp_actn_dtls: Option, #[validate(length(min = 0,))] #[serde(rename = "IssrAgt", default)] pub issr_agt: Vec, #[validate(length(min = 0,))] #[serde(rename = "PngAgt", default)] pub png_agt: Vec, #[validate(length(min = 0,))] #[serde(rename = "SubPngAgt", default)] pub sub_png_agt: Vec, #[serde(rename = "Regar", skip_serializing_if = "Option::is_none")] pub regar: Option, #[validate(length(min = 0,))] #[serde(rename = "RsellngAgt", default)] pub rsellng_agt: Vec, #[serde(rename = "PhysSctiesAgt", skip_serializing_if = "Option::is_none")] pub phys_scties_agt: Option, #[serde(rename = "DrpAgt", skip_serializing_if = "Option::is_none")] pub drp_agt: Option, #[validate(length(min = 0,))] #[serde(rename = "SlctnAgt", default)] pub slctn_agt: Vec, #[serde(rename = "InfAgt", skip_serializing_if = "Option::is_none")] pub inf_agt: Option, #[validate(length(min = 0,))] #[serde(rename = "SplmtryData", default)] pub splmtry_data: Vec>, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionEventStageFormat15ChoiceEnum { #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")] pub prtry: Option, #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")] pub cd: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct CorporateActionEventStageFormat15Choice { #[serde(flatten)] pub value: CorporateActionEventStageFormat15ChoiceEnum, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct GenericIdentification84 { #[validate] #[serde(rename = "Id")] pub id: RestrictedFinxMax34Text, #[validate] #[serde(rename = "Issr")] pub issr: Max4AlphaNumericText, #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")] pub schme_nm: Option, } #[derive( Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize, ::derive_builder::Builder, ::validator::Validate, )] pub struct RestrictedFinxMax16Text { #[validate( length(min = 1, max = 16,), regex = "RESTRICTED_FINX_MAX_16_TEXT_REGEX" )] #[serde(rename = "$text")] pub value: String, }